From fbe1a460182241cd962656c735f9f99491db5674 Mon Sep 17 00:00:00 2001
From: Tony
Date: Thu, 4 Jun 2026 05:25:46 +0800
Subject: [PATCH 001/670] fix(route/twitter): throw exception on invalid user
---
lib/routes/twitter/api/web-api/api.ts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/lib/routes/twitter/api/web-api/api.ts b/lib/routes/twitter/api/web-api/api.ts
index b412517badef..d6801babbd17 100644
--- a/lib/routes/twitter/api/web-api/api.ts
+++ b/lib/routes/twitter/api/web-api/api.ts
@@ -164,6 +164,13 @@ const getList = async (id: string, params?: Record) =>
const getUser = async (id: string) => {
const userData: any = await getUserData(id);
+
+ if (!userData.data.user) {
+ throw new InvalidParameterError("This account doesn't exist");
+ } else if (userData.data.user.result.__typename === 'UserUnavailable') {
+ throw new InvalidParameterError(userData.data.user.result.message || 'User is unavailable');
+ }
+
return {
profile_image_url: userData.data?.user?.result?.avatar?.image_url,
...userData.data?.user?.result?.core,
From f5dc400cb2b6655623e57d665fdb723141e6ee4a Mon Sep 17 00:00:00 2001
From: CaoMeiYouRen233 <87434371+CaoMeiYouRen233@users.noreply.github.com>
Date: Thu, 4 Jun 2026 05:30:53 +0800
Subject: [PATCH 002/670] =?UTF-8?q?fix(route/iwara):=20=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=20apiRootUrl=20=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF=20(#22176)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/routes/iwara/ranking.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/routes/iwara/ranking.ts b/lib/routes/iwara/ranking.ts
index fe2aef5abb10..f08a0c90ef0d 100644
--- a/lib/routes/iwara/ranking.ts
+++ b/lib/routes/iwara/ranking.ts
@@ -4,7 +4,7 @@ import cache from '@/utils/cache';
import { parseDate } from '@/utils/parse-date';
import { getPlaywrightPage } from '@/utils/playwright';
-import { apiqRootUrl, parseThumbnail, rootUrl, typeMap } from './utils';
+import { apiRootUrl, parseThumbnail, rootUrl, typeMap } from './utils';
const sortMap = {
date: 'Latest',
@@ -53,7 +53,7 @@ async function handler(ctx) {
const { type = 'video', sort = 'date', rating = 'ecchi' } = ctx.req.param();
const limit = ctx.req.query('limit') || 32;
- const url = `${apiqRootUrl}/${type === 'video' ? 'videos' : 'images'}?sort=${sort}&rating=${rating}&limit=${limit}`;
+ const url = `${apiRootUrl}/${type === 'video' ? 'videos' : 'images'}?sort=${sort}&rating=${rating}&limit=${limit}`;
const items = await cache.tryGet(
`iwara:ranking:${type}:${sort}:${rating}`,
From 2fa4fd6d582297eb584ee54934d6e6cc3a0d7dfc Mon Sep 17 00:00:00 2001
From: Tony
Date: Thu, 4 Jun 2026 05:45:02 +0800
Subject: [PATCH 003/670] revert: "chore: workaround playwright install hangs
in node 26.1.0"
This reverts commit f20edaf7c7191ff2d525e9d0cf88dbcea79be159.
refs: https://github.com/microsoft/playwright/issues/40724
---
.github/workflows/test.yml | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index aedd27b554ed..7efaa00416dd 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -27,8 +27,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- # playwright install hangs in node v26.1.0, https://github.com/microsoft/playwright/issues/40724
- node-version: [26.0.0, lts/*, lts/-1]
+ node-version: [latest, lts/*, lts/-1]
name: Vitest on Node ${{ matrix.node-version }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -63,7 +62,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- node-version: [26.0.0, lts/*, lts/-1]
+ node-version: [latest, lts/*, lts/-1]
chromium:
- name: bundled Chromium
dependency: ''
From 7a8c5c6c62bb7b7342d0f7a9eb40e30edf95a34d Mon Sep 17 00:00:00 2001
From: Jiamin
Date: Thu, 4 Jun 2026 06:03:31 +0800
Subject: [PATCH 004/670] feat(route): add Henan Museum exhibition route
(#22138)
* feat(route): add Henan Museum exhibition route
* fix: remove trim for title
---
lib/routes/chnmus/exhibition.tsx | 210 +++++++++++++++++++++++++++++++
lib/routes/chnmus/namespace.ts | 10 ++
2 files changed, 220 insertions(+)
create mode 100644 lib/routes/chnmus/exhibition.tsx
create mode 100644 lib/routes/chnmus/namespace.ts
diff --git a/lib/routes/chnmus/exhibition.tsx b/lib/routes/chnmus/exhibition.tsx
new file mode 100644
index 000000000000..96bf680ef668
--- /dev/null
+++ b/lib/routes/chnmus/exhibition.tsx
@@ -0,0 +1,210 @@
+import { load } from 'cheerio';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+// format the date to YYYY-MM-DD and handle missing year or month
+const extractDates = (durationStr: string) => {
+ let startDate: string | undefined;
+ let endDate: string | undefined;
+
+ if (!durationStr) {
+ return { startDate, endDate };
+ }
+
+ const parts = durationStr.split(/——|-|—|~/).map((p) => p.trim()); // currently ——and- is used, add — or ~ for redundency
+ const startStr = parts[0];
+ const endStr = parts[1];
+
+ let startYear: string | undefined;
+ let startMonth: string | undefined;
+
+ const startRegex = /(\d{4})年(\d{1,2})月(\d{1,2})日/;
+ const startMatch = startStr.match(startRegex);
+
+ if (startMatch) {
+ startYear = startMatch[1];
+ startMonth = startMatch[2].padStart(2, '0');
+ const startDay = startMatch[3].padStart(2, '0');
+ startDate = `${startYear}-${startMonth}-${startDay}`;
+ }
+
+ if (endStr && startDate) {
+ const endRegex = /(?:(\d{4})年)?(?:(\d{1,2})月)?(\d{1,2})日/;
+ const endMatch = endStr.match(endRegex);
+
+ if (endMatch) {
+ const matchYear = endMatch[1];
+ const matchMonth = endMatch[2]?.padStart(2, '0');
+ const matchDay = endMatch[3].padStart(2, '0');
+
+ const finalEndYear = matchYear || startYear;
+ const finalEndMonth = matchMonth || startMonth;
+ const finalEndDay = matchDay;
+ endDate = `${finalEndYear}-${finalEndMonth}-${finalEndDay}`;
+ }
+ }
+
+ return { startDate, endDate };
+};
+
+export const route: Route = {
+ path: '/information/exhibition/:type?',
+ categories: ['travel'],
+ example: '/chnmus/information/exhibition/special',
+ parameters: {
+ type: 'Exhibition type, supported values: special(特展详情). Default: All.',
+ },
+ name: 'Special Exhibitions',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.chnmus.net/ch/information/exhibition/index.html'],
+ target: '/information/exhibition',
+ },
+ ],
+
+ handler: async (ctx) => {
+ const type = ctx.req.param('type');
+ const isSpecial = type === 'special';
+
+ const baseUrl = 'https://www.chnmus.net';
+ const apiUrl = `${baseUrl}/ch/information/exhibition/index.html`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: apiUrl,
+ });
+
+ const $ = load(response.data);
+
+ const list = $('.col-md-6.d-flex.fadeInBottom')
+ .toArray()
+ .map((item) => {
+ const $item = $(item);
+ const link = $item.attr('href');
+ const imgUrlRaw = $item.find('.lazyload').attr('data-bg');
+ const listTitle = $item.find('.common-component-box-title').text();
+
+ return {
+ title: listTitle,
+ itemLink: `https:${link}`,
+ imgUrl: `https:${imgUrlRaw}`,
+ };
+ });
+
+ const items = await Promise.all(
+ list.map((item) => {
+ // use seperate cache key for special path
+ const cacheKey = isSpecial ? `${item.itemLink}-special` : item.itemLink;
+
+ return cache.tryGet(cacheKey, async (): Promise> => {
+ const detailResponse = await got({
+ method: 'get',
+ url: item.itemLink,
+ });
+ const content = load(detailResponse.data);
+
+ const pubDateRaw = content('.common-component-content-attribute-item')
+ .toArray()
+ .map((el) => content(el).text())
+ .find((text) => text.includes('发布日期'))!
+ .replaceAll('发布日期:', '')
+ .trim();
+ const pubDate = parseDate(pubDateRaw);
+
+ // Default path: return as news, no detail information for return
+ if (!isSpecial) {
+ return {
+ title: item.title,
+ link: item.itemLink,
+ pubDate,
+ description: renderToString(
+
+

+
+ ),
+ } as Record;
+ }
+
+ // Special path to return detail exhibition information
+ const texts = content('.common-component-content-text p')
+ .toArray()
+ .map((el) => content(el).text());
+
+ const title = texts.find((text) => text.includes('展览名称:'))?.replaceAll('展览名称:', '');
+
+ // filter out items without title, for example: https://www.chnmus.net/ch/information/exhibition/details.html?id=7400076083917230080#list
+ if (!title) {
+ return {} as Record;
+ }
+
+ const location = texts
+ .find((text) => text.includes('展览地点:'))!
+ .replaceAll('展览地点:', '')
+ .trim();
+
+ const fullDuration = texts
+ .find((text) => text.includes('展览时间:') || text.includes('开展时间:'))
+ ?.replaceAll(/(展览|开展)时间:/g, '')
+ ?.trim();
+
+ const { startDate, endDate } = extractDates(fullDuration || '');
+ const { imgUrl, itemLink } = item;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location}
+
+
+ 开展:
+ {startDate ?? '未定/常设'}
+
+
+ 闭展:
+ {endDate ?? '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title,
+ link: itemLink,
+ pubDate,
+ description,
+ _extra: {
+ museumName,
+ title,
+ location,
+ startDate,
+ endDate,
+ itemLink,
+ },
+ } as Record;
+ }) as Promise;
+ })
+ );
+
+ return {
+ title: `${museumName} - 展览资讯${isSpecial ? ' - 特展详情' : ''}`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: items.filter((item) => item.title) as DataItem[],
+ };
+ },
+};
diff --git a/lib/routes/chnmus/namespace.ts b/lib/routes/chnmus/namespace.ts
new file mode 100644
index 000000000000..e5fe10c6228f
--- /dev/null
+++ b/lib/routes/chnmus/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Henan Museum',
+ url: 'www.chnmus.net',
+
+ zh: {
+ name: '河南博物院',
+ },
+};
From 0a2e5b91db4c3b8686c6486c52597f1d874afbca Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Wed, 3 Jun 2026 22:50:26 +0000
Subject: [PATCH 005/670] fix: fromCodePoint RangeError error
#22172
---
lib/routes/toutiao/a-bogus.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/routes/toutiao/a-bogus.ts b/lib/routes/toutiao/a-bogus.ts
index e3b916232b62..adf82161a7ce 100644
--- a/lib/routes/toutiao/a-bogus.ts
+++ b/lib/routes/toutiao/a-bogus.ts
@@ -304,7 +304,7 @@ function generate_rc4_bb_str(url_search_params, user_agent, window_env_str, suff
// 对后缀两次sm3之的结果
const cus = sm3.sum(sm3.sum(suffix));
// 对ua处理之后的结果
- const ua = sm3.sum(result_encrypt(rc4_encrypt(user_agent, Reflect.apply(String.fromCodePoint, null, [0.003_906_25, 1, 14])), 's3'));
+ const ua = sm3.sum(result_encrypt(rc4_encrypt(user_agent, Reflect.apply(String.fromCodePoint, null, [Math.floor(0.003_906_25), 1, 14])), 's3'));
//
const end_time = Date.now();
// b
From 3ce8fda699cd6246f6150144d436a28b742b9950 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 3 Jun 2026 23:13:31 +0000
Subject: [PATCH 006/670] chore(deps): bump actions/checkout from 6.0.2 to
6.0.3 (#22177)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/build-assets.yml | 4 ++--
.github/workflows/codeql.yml | 2 +-
.github/workflows/comment-on-issue.yml | 4 ++--
.github/workflows/dependabot-fork.yml | 2 +-
.github/workflows/docker-release.yml | 4 ++--
.github/workflows/docker-test-cont.yml | 2 +-
.github/workflows/docker-test.yml | 2 +-
.github/workflows/format.yml | 2 +-
.github/workflows/issue-command.yml | 8 ++++----
.github/workflows/lint.yml | 4 ++--
.github/workflows/npm-publish.yml | 2 +-
.github/workflows/pr-review.yml | 2 +-
.github/workflows/semgrep.yml | 2 +-
.github/workflows/similar-issues.yml | 2 +-
.github/workflows/test-full-routes.yml | 2 +-
.github/workflows/test.yml | 6 +++---
.github/workflows/update-nix-hash.yml | 2 +-
17 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml
index 44e45a852264..1b7a88b6a84d 100644
--- a/.github/workflows/build-assets.yml
+++ b/.github/workflows/build-assets.yml
@@ -18,7 +18,7 @@ jobs:
contents: write
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- name: Use Node.js Active LTS
@@ -51,7 +51,7 @@ jobs:
if: ${{ env.DOCS_API_TOKEN != '' }}
run: echo "defined=true" >> $GITHUB_OUTPUT
- name: Checkout docs
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
if: steps.check-docs-env.outputs.defined == 'true'
with:
repository: 'RSSNext/rsshub-docs'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index a870789efa99..1b1c81be83f4 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -48,7 +48,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# Initializes the CodeQL tools for scanning.
# TODO: use hash pinning when https://github.com/dependabot/dependabot-core/pull/13007 pass
diff --git a/.github/workflows/comment-on-issue.yml b/.github/workflows/comment-on-issue.yml
index 06d6825c0088..f39a8c99dee1 100644
--- a/.github/workflows/comment-on-issue.yml
+++ b/.github/workflows/comment-on-issue.yml
@@ -26,7 +26,7 @@ jobs:
outputs:
closed: ${{ steps.check.outputs.closed }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
@@ -60,7 +60,7 @@ jobs:
(needs.checkIssue.result == 'success' || needs.checkIssue.result == 'skipped') &&
needs.checkIssue.outputs.closed != 'true'
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
diff --git a/.github/workflows/dependabot-fork.yml b/.github/workflows/dependabot-fork.yml
index 40494f4e0b40..48b76b399419 100644
--- a/.github/workflows/dependabot-fork.yml
+++ b/.github/workflows/dependabot-fork.yml
@@ -10,7 +10,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Comment Dependabot PR
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index 9c542fad47ad..d0775bcc611e 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -61,7 +61,7 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Extract repository name
id: repo-name
@@ -277,7 +277,7 @@ jobs:
if: needs.check-env.outputs.check-docker == 'true'
timeout-minutes: 5
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5.0.0
diff --git a/.github/workflows/docker-test-cont.yml b/.github/workflows/docker-test-cont.yml
index 71de05f45bbe..3bf00faeb22d 100644
--- a/.github/workflows/docker-test-cont.yml
+++ b/.github/workflows/docker-test-cont.yml
@@ -13,7 +13,7 @@ jobs:
pull-requests: write
if: ${{ github.event.workflow_run.conclusion == 'success' }} # skip if unsuccessful
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# https://github.com/orgs/community/discussions/25220#discussioncomment-11316244
- name: Search the PR that triggered this workflow
diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml
index 80e317c45364..71f5dc94965f 100644
--- a/.github/workflows/docker-test.yml
+++ b/.github/workflows/docker-test.yml
@@ -27,7 +27,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Set up Docker Buildx # needed by `cache-from`
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index 776717f4fc1c..254304d1204d 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -14,7 +14,7 @@ jobs:
timeout-minutes: 15
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
diff --git a/.github/workflows/issue-command.yml b/.github/workflows/issue-command.yml
index 87e7edd967d4..e56334150310 100644
--- a/.github/workflows/issue-command.yml
+++ b/.github/workflows/issue-command.yml
@@ -15,7 +15,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout the latest code
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 0
- name: Automatic Rebase
@@ -49,7 +49,7 @@ jobs:
group: vouch-manage
cancel-in-progress: false
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- id: vouch
uses: mitchellh/vouch/action/manage-by-issue@c6d80ead49839655b61b422700b7a3bc9d0804a9 # v1.4.2
@@ -102,11 +102,11 @@ jobs:
- name: Checkout
if: ${{ !github.event.issue.pull_request }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Checkout PR
if: github.event.issue.pull_request
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ fromJson(steps.pr-data.outputs.data).head.ref }}
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index c269b1497144..fd649a1ffcb0 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -20,7 +20,7 @@ jobs:
permissions:
security-events: write
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
@@ -80,7 +80,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Check if PR author is denounced
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index 5dcd201dc749..c81a75ce1f53 100644
--- a/.github/workflows/npm-publish.yml
+++ b/.github/workflows/npm-publish.yml
@@ -22,7 +22,7 @@ jobs:
env:
HUSKY: 0
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml
index 512b7b734d51..eb21a98f0b30 100644
--- a/.github/workflows/pr-review.yml
+++ b/.github/workflows/pr-review.yml
@@ -22,7 +22,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
# https://github.com/orgs/community/discussions/25220#discussioncomment-11316244
- name: Search the PR that triggered this workflow
diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml
index b7bda03ddc4f..be4068a3bdc5 100644
--- a/.github/workflows/semgrep.yml
+++ b/.github/workflows/semgrep.yml
@@ -22,7 +22,7 @@ jobs:
permissions:
security-events: write
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- run: semgrep ci --sarif > semgrep.sarif
env:
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
diff --git a/.github/workflows/similar-issues.yml b/.github/workflows/similar-issues.yml
index 95372a91e63f..496219130867 100644
--- a/.github/workflows/similar-issues.yml
+++ b/.github/workflows/similar-issues.yml
@@ -18,7 +18,7 @@ jobs:
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Set up Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
diff --git a/.github/workflows/test-full-routes.yml b/.github/workflows/test-full-routes.yml
index bf306839795d..27efbe25c481 100644
--- a/.github/workflows/test-full-routes.yml
+++ b/.github/workflows/test-full-routes.yml
@@ -14,7 +14,7 @@ jobs:
contents: write
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- name: Use Node.js Active LTS
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 7efaa00416dd..05b04ca7ad2e 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -30,7 +30,7 @@ jobs:
node-version: [latest, lts/*, lts/-1]
name: Vitest on Node ${{ matrix.node-version }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
@@ -75,7 +75,7 @@ jobs:
environment: '{ "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD": "1" }'
name: Vitest Playwright on Node ${{ matrix.node-version }} with ${{ matrix.chromium.name }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
@@ -124,7 +124,7 @@ jobs:
node-version: [26, 24, 22]
name: Build radar and maintainer on Node ${{ matrix.node-version }}
steps:
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
diff --git a/.github/workflows/update-nix-hash.yml b/.github/workflows/update-nix-hash.yml
index 51f1f97812c6..01828d0303ac 100644
--- a/.github/workflows/update-nix-hash.yml
+++ b/.github/workflows/update-nix-hash.yml
@@ -18,7 +18,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install Nix
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
From 5b1c0c0b275d32e45c64d1af671bdf2a23564d1c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 3 Jun 2026 23:21:03 +0000
Subject: [PATCH 007/670] chore(deps): bump @scalar/hono-api-reference from
0.10.19 to 0.10.20 (#22180)
Bumps [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono) from 0.10.19 to 0.10.20.
- [Release notes](https://github.com/scalar/scalar/releases)
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md)
- [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono)
---
updated-dependencies:
- dependency-name: "@scalar/hono-api-reference"
dependency-version: 0.10.20
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 46 +++++++++++++++++++++++-----------------------
2 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/package.json b/package.json
index b868841f9c6c..5570491d9a02 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"@opentelemetry/sdk-trace-base": "2.7.1",
"@opentelemetry/semantic-conventions": "1.41.1",
"@rss3/sdk": "0.0.25",
- "@scalar/hono-api-reference": "0.10.19",
+ "@scalar/hono-api-reference": "0.10.20",
"@sentry/node": "10.55.0",
"aes-js": "3.1.2",
"cheerio": "1.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1718807cf95e..d66e50226a2a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,8 +80,8 @@ importers:
specifier: 0.0.25
version: 0.0.25
'@scalar/hono-api-reference':
- specifier: 0.10.19
- version: 0.10.19(hono@4.12.23)
+ specifier: 0.10.20
+ version: 0.10.20(hono@4.12.23)
'@sentry/node':
specifier: 10.55.0
version: 10.55.0(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))
@@ -2496,26 +2496,26 @@ packages:
'@rss3/sdk@0.0.25':
resolution: {integrity: sha512-jyXT4YTwefxxRZ0tt5xjbnw8e7zPg2OGdo/0xb+h/7qWnMNhLtWpc95DsYs/1C/I0rIyiDpZBhLI2DieQ9y+tw==}
- '@scalar/client-side-rendering@0.1.12':
- resolution: {integrity: sha512-prwHK4ozTU268BHZ/5OstoKB23JSidDuvddAOp0bVz9c29ZxsyzzxPtPcVgF7X16LiZnS1OzY030FoDCM+iC9Q==}
+ '@scalar/client-side-rendering@0.1.13':
+ resolution: {integrity: sha512-p8V4HgEWjaCpqsnhclg1pTfjE9JA0AWRr0ocBQHexoHo+pqnSs1d83Mv9rjH7R0FZJrlCSandZZeY3DMX2gYXQ==}
engines: {node: '>=22'}
- '@scalar/helpers@0.8.0':
- resolution: {integrity: sha512-gmOC6VravNB9VDl6wnt/GOj4K/hn48tj5bpW4AM4MhH8Ubil6uu7g1DSoKHwltu8Ks79KEtR6JmOrROi9R7jaQ==}
+ '@scalar/helpers@0.8.1':
+ resolution: {integrity: sha512-yuiuBCadP5bjAnIv23QvifVN/NaMi9xBF6b8Wdk4QOzwzLPJmp699MAdf33J0A5i2qKcvnu32iz/VkEJmQRe5g==}
engines: {node: '>=22'}
- '@scalar/hono-api-reference@0.10.19':
- resolution: {integrity: sha512-6EfwN/lfPvePzAxe9UE8fr/ZuAAqS6ttUwQu9JTgk2Xl/clicaVVSOc0gyGt+8GLXdysoNinjZ74we8xqNWyCA==}
+ '@scalar/hono-api-reference@0.10.20':
+ resolution: {integrity: sha512-/Ae0M9rOpsJJb5b121G8LX4vvBo1t2qFX1ffRKkTgCS9VWfpsfq11r0yBcYy1fmAn1x8YLO21Ls1/9h8LzHuDw==}
engines: {node: '>=22'}
peerDependencies:
hono: ^4.12.5
- '@scalar/schemas@0.3.2':
- resolution: {integrity: sha512-iadXBgJ02XUU5C5s6/xh/PmGLzUPd7X8upXIvPWBXDcQ4FHACNgkG8PPZ/beYM8UPDDkTUPM3ygEs0G6jKwGjQ==}
+ '@scalar/schemas@0.3.3':
+ resolution: {integrity: sha512-qDcgFu6ta5Z90L9D2P6DFKzYesU+FW5+m55SGmdI4iRMRCwj5umHpec2Y2W/SJcCF6bbUZawMxuOH2Ja6rUNpQ==}
engines: {node: '>=22'}
- '@scalar/types@0.12.2':
- resolution: {integrity: sha512-EzLkubCb7xioiTm9eYnmn/032akaq4kkrrdclgV2uezwtniR8ErQICjhMl2AjBWL6nstHiFZ9RnPZm2Z2/KM0Q==}
+ '@scalar/types@0.12.3':
+ resolution: {integrity: sha512-7zaXafbgTFmsJ/9AwYeExUWzXoZNyKOL0SEVAUWRaOndcjxpFCtwzuPrc1elMEWdHopWbY1Qe5pWKbE2aqG2HA==}
engines: {node: '>=22'}
'@scalar/validation@0.6.0':
@@ -3394,7 +3394,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.48:
@@ -7563,27 +7563,27 @@ snapshots:
'@rss3/api-core': 0.0.25
'@rss3/api-utils': 0.0.25
- '@scalar/client-side-rendering@0.1.12':
+ '@scalar/client-side-rendering@0.1.13':
dependencies:
- '@scalar/schemas': 0.3.2
- '@scalar/types': 0.12.2
+ '@scalar/schemas': 0.3.3
+ '@scalar/types': 0.12.3
'@scalar/validation': 0.6.0
- '@scalar/helpers@0.8.0': {}
+ '@scalar/helpers@0.8.1': {}
- '@scalar/hono-api-reference@0.10.19(hono@4.12.23)':
+ '@scalar/hono-api-reference@0.10.20(hono@4.12.23)':
dependencies:
- '@scalar/client-side-rendering': 0.1.12
+ '@scalar/client-side-rendering': 0.1.13
hono: 4.12.23
- '@scalar/schemas@0.3.2':
+ '@scalar/schemas@0.3.3':
dependencies:
- '@scalar/helpers': 0.8.0
+ '@scalar/helpers': 0.8.1
'@scalar/validation': 0.6.0
- '@scalar/types@0.12.2':
+ '@scalar/types@0.12.3':
dependencies:
- '@scalar/helpers': 0.8.0
+ '@scalar/helpers': 0.8.1
nanoid: 5.1.11
type-fest: 5.7.0
zod: 4.4.3
From 9a02b25b9d7fedc575ee672f38a9267ecc06c8fc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 08:39:33 +0800
Subject: [PATCH 008/670] chore(deps-dev): bump the cloudflare group with 2
updates (#22178)
Bumps the cloudflare group with 2 updates: [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/workers-types` from 4.20260602.1 to 4.20260603.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.96.0 to 4.97.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.97.0/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 4.20260603.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.97.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +--
pnpm-lock.yaml | 88 +++++++++++++++++++++++++-------------------------
2 files changed, 46 insertions(+), 46 deletions(-)
diff --git a/package.json b/package.json
index 5570491d9a02..942305e2a7c6 100644
--- a/package.json
+++ b/package.json
@@ -147,7 +147,7 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.6",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/workers-types": "4.20260602.1",
+ "@cloudflare/workers-types": "4.20260603.1",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.68.0",
@@ -204,7 +204,7 @@
"unified": "11.0.5",
"vite-tsconfig-paths": "6.1.1",
"vitest": "4.1.8",
- "wrangler": "4.96.0",
+ "wrangler": "4.97.0",
"yaml-eslint-parser": "2.0.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d66e50226a2a..1440481d931f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -297,8 +297,8 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/workers-types':
- specifier: 4.20260602.1
- version: 4.20260602.1
+ specifier: 4.20260603.1
+ version: 4.20260603.1
'@eslint/eslintrc':
specifier: 3.3.5
version: 3.3.5
@@ -468,8 +468,8 @@ importers:
specifier: 4.1.8
version: 4.1.8(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.13.4(@types/node@25.9.1)(typescript@5.9.3))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(tsx@4.22.4)(yaml@2.9.0))
wrangler:
- specifier: 4.96.0
- version: 4.96.0(@cloudflare/workers-types@4.20260602.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.97.0
+ version: 4.97.0(@cloudflare/workers-types@4.20260603.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.0.0
version: 2.0.0
@@ -624,38 +624,38 @@ packages:
workerd:
optional: true
- '@cloudflare/workerd-darwin-64@1.20260529.1':
- resolution: {integrity: sha512-gxh5sXw0CsBxNCNj8uJnrAxqFM7+R8SZI9WIqYMKz6uaPxgg+eTcBDTxjKczMs6bS21FkTEF6ohIzB5+UvxwKw==}
+ '@cloudflare/workerd-darwin-64@1.20260601.1':
+ resolution: {integrity: sha512-iXZBVuRbvuVqQ/63wul01hHCv/3R8G5S8zbkjfoHvyPZFynmlKTV59Hk+H8whyGwFAZuB71UJGLr+G5mJKfjWA==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260529.1':
- resolution: {integrity: sha512-B8xOwqd8ok8oaWBPhrpmNVSYou6AejFrYf3VzsJF6pg6TEA2tYbdThAGXgtLPQ8d1RD7GXYjVth2dSMg9napDA==}
+ '@cloudflare/workerd-darwin-arm64@1.20260601.1':
+ resolution: {integrity: sha512-veGpZQGBw07Twt+Y4z3oyo+/obKHt0iWUwvDV5GOiDAYjC/zW+YGstgVzg4SHq+k1sLH3ElqL2TXx20I5WBv3Q==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260529.1':
- resolution: {integrity: sha512-M1EKzsfoKmmno7MNPkuIc8iOdHLhFnE7ltEYaGGEoOj1MTJfMBK/JkIrhdkzc/06wpyPZPiBfBBmUppbeaMqUg==}
+ '@cloudflare/workerd-linux-64@1.20260601.1':
+ resolution: {integrity: sha512-n/9hDz7fPGpYF0J684+Xr5zgjcS2jdmY2Of5m6e+eQ/M9+RfR+UaU8Ee/tkA1dDC0LYQB13hfPafZG66Ff1CsA==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260529.1':
- resolution: {integrity: sha512-Mn/Qpl1FAHDLtPthw6ti5gsHRj582jJdtK4OMUlW1CN0v+pmmxaav3KSqq7CS6a+5W0o2e8o9fKnjVilBxVVmQ==}
+ '@cloudflare/workerd-linux-arm64@1.20260601.1':
+ resolution: {integrity: sha512-VHRZZbexATS+n+1j3x/CZaYbIJEye0J3iIHgG0Wp+l+NrZCKQ8qi8Lq1uTV0dLJQ67FuZtJtWdQ95mm9F7Fc+A==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260529.1':
- resolution: {integrity: sha512-78xgJJeXxkKYumWdKGH1pybUsEjTreSvbJqirW9cth7ZGonqdv5pzAVt+WWcbu0OFcSHrtQFX6zWioPNFp0/xQ==}
+ '@cloudflare/workerd-windows-64@1.20260601.1':
+ resolution: {integrity: sha512-ye0C7MFLkeH16iTo8Tcjv2KiFmp23+sZGvUzSQa4xhP0QMe6EoJ+H/4SqqvnZ5nfN54slqKvx2VnXceENWe2CQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@4.20260602.1':
- resolution: {integrity: sha512-0VssYYXHUn4VR1BaV+GXfhFpI53P2f6AIi17qyA9lQFyTs/u5ZF6IDPda2enDTIPFz/02872RM8CYVlXvRKtUA==}
+ '@cloudflare/workers-types@4.20260603.1':
+ resolution: {integrity: sha512-TLeVHoBbcYv35S5TdRWUoj3IJ56BhHtrsuci+O7ithU8yz7ttNdCk6rAl1QUSGNVEWSIp54bWOuV/xmX1zu79g==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -4594,8 +4594,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260529.0:
- resolution: {integrity: sha512-4pj7WZQR/uYqVMa0cpAmmPBKEb0JegSocuystaXCubY455iqWdPUqgVD9R6N28oneWyPiUyAu5N8QpLbK+MU/Q==}
+ miniflare@4.20260601.0:
+ resolution: {integrity: sha512-56TFiulSEQu43cYxdXgCiA3U3i+Ls0NoXwJXd6DmpNsx8yl/1Il2T3DQ4CMXjR6yfE7CSvC5MuXaqcSAMREjgw==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -5963,17 +5963,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260529.1:
- resolution: {integrity: sha512-G1rurOKEdzCtFE0yUPR9J9mUnPzMU8NdsD7NKM1/oMyCr1j3VEtWJzc5VbhgFQHNBVWrHzCL0JgVPuBirRW31g==}
+ workerd@1.20260601.1:
+ resolution: {integrity: sha512-Bg4+HF3B8TW0urAv8chiz25HSQ/aJxMBjgheUzu/nB1NQa+CaKGrUPv+Z3bf0np/WxLHYW1kcseVEtzZVPbX4g==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.96.0:
- resolution: {integrity: sha512-8WuiMutalyfBB74wwRyy4VKKJEHjQuEnwcvdUav1M5AfQ8VaTYY5ZQnzvVZPOVXap40k5Mntz1LY3SPWpPukTg==}
+ wrangler@4.97.0:
+ resolution: {integrity: sha512-jzW/aNvjerV+4TmwbvwGY6lpcuBk7EFUTonMDNfci45wSmMTj2/OJN+83cc/CeepKdb+6ZjGJw9NRjmcQoxqRg==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^4.20260529.1
+ '@cloudflare/workers-types': ^4.20260601.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6278,28 +6278,28 @@ snapshots:
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260529.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
- '@cloudflare/workerd-darwin-64@1.20260529.1':
+ '@cloudflare/workerd-darwin-64@1.20260601.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260529.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260601.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260529.1':
+ '@cloudflare/workerd-linux-64@1.20260601.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260529.1':
+ '@cloudflare/workerd-linux-arm64@1.20260601.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260529.1':
+ '@cloudflare/workerd-windows-64@1.20260601.1':
optional: true
- '@cloudflare/workers-types@4.20260602.1': {}
+ '@cloudflare/workers-types@4.20260603.1': {}
'@colors/colors@1.6.0': {}
@@ -10044,12 +10044,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260529.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260601.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.24.8
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -11504,26 +11504,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260529.1:
+ workerd@1.20260601.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260529.1
- '@cloudflare/workerd-darwin-arm64': 1.20260529.1
- '@cloudflare/workerd-linux-64': 1.20260529.1
- '@cloudflare/workerd-linux-arm64': 1.20260529.1
- '@cloudflare/workerd-windows-64': 1.20260529.1
+ '@cloudflare/workerd-darwin-64': 1.20260601.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260601.1
+ '@cloudflare/workerd-linux-64': 1.20260601.1
+ '@cloudflare/workerd-linux-arm64': 1.20260601.1
+ '@cloudflare/workerd-windows-64': 1.20260601.1
- wrangler@4.96.0(@cloudflare/workers-types@4.20260602.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.97.0(@cloudflare/workers-types@4.20260603.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260529.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)
blake3-wasm: 2.1.5
esbuild: 0.27.3
- miniflare: 4.20260529.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260601.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
optionalDependencies:
- '@cloudflare/workers-types': 4.20260602.1
+ '@cloudflare/workers-types': 4.20260603.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 527577627b0b898b59e4e549e68c3215da9c62d6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 09:24:26 +0800
Subject: [PATCH 009/670] chore(deps): bump devenv from `d5e9138` to `57f7e43`
(#22181)
Bumps [devenv](https://github.com/cachix/devenv) from `d5e9138` to `57f7e43`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/d5e9138bae90fe199fbe5de7675014d76d28873b...57f7e43b3c8adb43a7f3df0d393a87e6939d5141)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 57f7e43b3c8adb43a7f3df0d393a87e6939d5141
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index cef7e05c4f14..0570de84d449 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1780316214,
- "narHash": "sha256-X3EG0oxt03MegwC/MnQv1saoq9nphEGSSGEAj8mZQOg=",
+ "lastModified": 1780511534,
+ "narHash": "sha256-AFc1M/svHCsGWO+tA/t7ZeWckFIuJpML0vJpxGW65Us=",
"owner": "cachix",
"repo": "devenv",
- "rev": "d5e9138bae90fe199fbe5de7675014d76d28873b",
+ "rev": "57f7e43b3c8adb43a7f3df0d393a87e6939d5141",
"type": "github"
},
"original": {
From 0ab40d02a4869f7fa739e5c59e4ae3ced434fc30 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 09:39:17 +0800
Subject: [PATCH 010/670] chore(deps): bump @sentry/node from 10.55.0 to
10.56.0 (#22179)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 10.55.0 to 10.56.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.55.0...10.56.0)
---
updated-dependencies:
- dependency-name: "@sentry/node"
dependency-version: 10.56.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 49 +++++++++++++++++++++++++++++--------------------
2 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/package.json b/package.json
index 942305e2a7c6..96942334f4c3 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,7 @@
"@opentelemetry/semantic-conventions": "1.41.1",
"@rss3/sdk": "0.0.25",
"@scalar/hono-api-reference": "0.10.20",
- "@sentry/node": "10.55.0",
+ "@sentry/node": "10.56.0",
"aes-js": "3.1.2",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1440481d931f..a6274638bba8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -83,8 +83,8 @@ importers:
specifier: 0.10.20
version: 0.10.20(hono@4.12.23)
'@sentry/node':
- specifier: 10.55.0
- version: 10.55.0(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))
+ specifier: 10.56.0
+ version: 10.56.0(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))
aes-js:
specifier: 3.1.2
version: 3.1.2
@@ -2533,12 +2533,16 @@ packages:
peerDependencies:
selderee: ~0.12.0
- '@sentry/core@10.55.0':
- resolution: {integrity: sha512-XUyoNtDSYCvgJnoNzlh+YeAXfIPhCRIXbhWqqM3GQ3AFtZICi85lkyfsrwXEl9wzlPGYnU+Eg8F4tOfScx+FcQ==}
+ '@sentry-internal/server-utils@10.56.0':
+ resolution: {integrity: sha512-6kuZI/vAjyVKMm1cTzc2pdUmVR4Px4etMG6wnCPyFnwEaGbUKQnTynUBFpTuo/q6Js6QBQvhLNoAnO4YsOfW4w==}
engines: {node: '>=18'}
- '@sentry/node-core@10.55.0':
- resolution: {integrity: sha512-M8XMMIk9Y0PGZoEt37Oe5dQCdqDdJlBcwLXidpz/s5k4QtJvCO/BbtcivcuKI2htw5FwxJkSrHUzRvT36tlDpg==}
+ '@sentry/core@10.56.0':
+ resolution: {integrity: sha512-L+u1dIz5SANrmST5jhIwETtt4apILgKrylv12X4hKJU0PvZl+NorjeV/ty3MwzpKQPg6b6q6qMOSLc1rLpy3iQ==}
+ engines: {node: '>=18'}
+
+ '@sentry/node-core@10.56.0':
+ resolution: {integrity: sha512-61lD2Wjtv5Lw2F3lJarcD0ORjR4GlVxrEd6w6Of/uF3DH73dD6K3n/3wXEeCIRfV/kgiCFIrCIq76nz0LVgE5g==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
@@ -2561,12 +2565,12 @@ packages:
'@opentelemetry/semantic-conventions':
optional: true
- '@sentry/node@10.55.0':
- resolution: {integrity: sha512-+fB/ByoHVWPLGgoafYciiMatTNyX1FHj1bsqZBN+Pw3McbuEU1nwCPLt9zuyZZiWlQtXKsyuACS4ZhXnID5l8A==}
+ '@sentry/node@10.56.0':
+ resolution: {integrity: sha512-qvgtXHkcR4CH3fh0VEVyw4Ysc6MMiAnm727NdTTm0yU5e53erCeo2521+yfJkqmRTGiOSgwA7B5Bs+ot9j0vFQ==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.55.0':
- resolution: {integrity: sha512-0+YrNmVNrttki4rWP4DW+UTt5MziepwDLNBde39tgc3cGCcy5fLSdDfhb4JfTaE5TXt4kd5XrkgvS/sDgm3RZg==}
+ '@sentry/opentelemetry@10.56.0':
+ resolution: {integrity: sha512-PtMudApHMHvttjos3b7JZ2gJ+nstHAOYE3vKPYB5o0WQO95ldiaYnpLKMCRIGZWF3Dk7ynrqqnBpn8LZLt+Mrg==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
@@ -7600,12 +7604,16 @@ snapshots:
domhandler: 5.0.3
selderee: 0.12.0
- '@sentry/core@10.55.0': {}
+ '@sentry-internal/server-utils@10.56.0':
+ dependencies:
+ '@sentry/core': 10.56.0
+
+ '@sentry/core@10.56.0': {}
- '@sentry/node-core@10.55.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)':
+ '@sentry/node-core@10.56.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)':
dependencies:
- '@sentry/core': 10.55.0
- '@sentry/opentelemetry': 10.55.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
+ '@sentry/core': 10.56.0
+ '@sentry/opentelemetry': 10.56.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
import-in-the-middle: 3.0.1
optionalDependencies:
'@opentelemetry/api': 1.9.1
@@ -7615,28 +7623,29 @@ snapshots:
'@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.41.1
- '@sentry/node@10.55.0(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node@10.56.0(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.41.1
- '@sentry/core': 10.55.0
- '@sentry/node-core': 10.55.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
- '@sentry/opentelemetry': 10.55.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
+ '@sentry-internal/server-utils': 10.56.0
+ '@sentry/core': 10.56.0
+ '@sentry/node-core': 10.56.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
+ '@sentry/opentelemetry': 10.56.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)
import-in-the-middle: 3.0.1
transitivePeerDependencies:
- '@opentelemetry/exporter-trace-otlp-http'
- supports-color
- '@sentry/opentelemetry@10.55.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)':
+ '@sentry/opentelemetry@10.56.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.41.1)':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.41.1
- '@sentry/core': 10.55.0
+ '@sentry/core': 10.56.0
'@sindresorhus/is@4.6.0': {}
From 42e99cb1c5ddf08563c8836cdf30fe9b69964b08 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 10:00:47 +0800
Subject: [PATCH 011/670] chore(deps): bump undici from 7.25.0 to 8.3.0
(#22032)
Bumps [undici](https://github.com/nodejs/undici) from 7.25.0 to 8.3.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.25.0...v8.3.0)
---
updated-dependencies:
- dependency-name: undici
dependency-version: 8.3.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 34 ++++++++++++++++++++--------------
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index 96942334f4c3..b659c748d1dc 100644
--- a/package.json
+++ b/package.json
@@ -133,7 +133,7 @@
"tsx": "4.22.4",
"twitter-api-v2": "1.29.0",
"ufo": "1.6.4",
- "undici": "7.25.0",
+ "undici": "8.3.0",
"uuid": "14.0.0",
"winston": "3.19.0",
"xxhash-wasm": "1.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a6274638bba8..1f49f909bd1d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -138,7 +138,7 @@ importers:
version: 10.0.0
http-cookie-agent:
specifier: 8.0.0
- version: 8.0.0(tough-cookie@6.0.1)(undici@7.25.0)
+ version: 8.0.0(tough-cookie@6.0.1)(undici@8.3.0)
https-proxy-agent:
specifier: 9.0.0
version: 9.0.0
@@ -260,8 +260,8 @@ importers:
specifier: 1.6.4
version: 1.6.4
undici:
- specifier: 7.25.0
- version: 7.25.0
+ specifier: 8.3.0
+ version: 8.3.0
uuid:
specifier: 14.0.0
version: 14.0.0
@@ -427,7 +427,7 @@ importers:
version: 2.13.4(@types/node@25.9.1)(typescript@5.9.3)
node-network-devtools:
specifier: 1.0.30
- version: 1.0.30(undici@7.25.0)(utf-8-validate@5.0.10)
+ version: 1.0.30(undici@8.3.0)(utf-8-validate@5.0.10)
oxfmt:
specifier: 0.53.0
version: 0.53.0
@@ -5691,8 +5691,8 @@ packages:
undici-types@7.25.0:
resolution: {integrity: sha512-AXNgS1Byr27fTI+2bsPEkV9CxkT8H6xNyRI68b3TatlZo3RkzlqQBLL+w7SmGPVpokjHbcuNVQUWE7FRTg+LRA==}
- undici@6.25.0:
- resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==}
+ undici@6.26.0:
+ resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==}
engines: {node: '>=18.17'}
undici@7.24.8:
@@ -5703,6 +5703,10 @@ packages:
resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==}
engines: {node: '>=20.18.1'}
+ undici@8.3.0:
+ resolution: {integrity: sha512-TkUDgb6tl7KOGZ+7e8E3d2FYgUQgF6z5YypqjWmixVQSQERFcVrVg0ySADm2LVLRh5ljAaHTCR5Fmz3Q34rB7Q==}
+ engines: {node: '>=22.19.0'}
+
unenv@2.0.0-rc.24:
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
@@ -6142,17 +6146,17 @@ snapshots:
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
'@octokit/request': 10.0.8
'@octokit/request-error': 7.1.0
- undici: 6.25.0
+ undici: 6.26.0
'@actions/http-client@3.0.2':
dependencies:
tunnel: 0.0.6
- undici: 6.25.0
+ undici: 6.26.0
'@actions/http-client@4.0.1':
dependencies:
tunnel: 0.0.6
- undici: 6.25.0
+ undici: 6.26.0
'@actions/io@3.0.2': {}
@@ -9244,12 +9248,12 @@ snapshots:
http-cache-semantics@4.2.0: {}
- http-cookie-agent@8.0.0(tough-cookie@6.0.1)(undici@7.25.0):
+ http-cookie-agent@8.0.0(tough-cookie@6.0.1)(undici@8.3.0):
dependencies:
agent-base: 9.0.0
tough-cookie: 6.0.1
optionalDependencies:
- undici: 7.25.0
+ undici: 8.3.0
http-proxy-agent@9.0.0:
dependencies:
@@ -10159,13 +10163,13 @@ snapshots:
dependencies:
write-file-atomic: 1.3.4
- node-network-devtools@1.0.30(undici@7.25.0)(utf-8-validate@5.0.10):
+ node-network-devtools@1.0.30(undici@8.3.0)(utf-8-validate@5.0.10):
dependencies:
bufferutil: 4.1.0
iconv-lite: 0.7.2
inspector: 0.5.0
open: 8.4.2
- undici: 7.25.0
+ undici: 8.3.0
ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- utf-8-validate
@@ -11257,12 +11261,14 @@ snapshots:
undici-types@7.25.0: {}
- undici@6.25.0: {}
+ undici@6.26.0: {}
undici@7.24.8: {}
undici@7.25.0: {}
+ undici@8.3.0: {}
+
unenv@2.0.0-rc.24:
dependencies:
pathe: 2.0.3
From 6c037dd734e5b94cebc9c9ba445fe65733efe3fc Mon Sep 17 00:00:00 2001
From: Andvari <31068367+dzx-dzx@users.noreply.github.com>
Date: Thu, 4 Jun 2026 21:15:03 +0800
Subject: [PATCH 012/670] fix(route/apnews): Change default path for mobile API
(#22105)
* fix(route/apnews): Change default path for mobile API
* Update mobile-api.ts
* Update mobile-api.ts
---
lib/routes/apnews/mobile-api.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/routes/apnews/mobile-api.ts b/lib/routes/apnews/mobile-api.ts
index 3c894ca3a36e..ac182d98c7bc 100644
--- a/lib/routes/apnews/mobile-api.ts
+++ b/lib/routes/apnews/mobile-api.ts
@@ -10,12 +10,12 @@ import { fetchArticle } from './utils';
export const route: Route = {
path: '/mobile/:path{.+}?',
categories: ['traditional-media'],
- example: '/apnews/mobile/ap-top-news',
+ example: '/apnews/mobile',
view: ViewType.Articles,
parameters: {
path: {
description: 'Corresponding path from AP News website',
- default: 'ap-top-news',
+ default: '/',
},
},
features: {
@@ -37,7 +37,7 @@ export const route: Route = {
};
async function handler(ctx) {
- const path = ctx.req.param('path') ? `/${ctx.req.param('path')}` : '/hub/ap-top-news';
+ const path = ctx.req.param('path') ? `/${ctx.req.param('path')}` : '/';
const apiRootUrl = 'https://apnews.com/graphql/delivery/ap/v1';
const res = await ofetch(apiRootUrl, {
query: {
From 3173ff1d5c93869df805676e2f7526dab5c654c9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 21:23:09 +0800
Subject: [PATCH 013/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22182)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 4.20260603.1 to 4.20260604.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 4.20260604.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 236 ++++++++++++++++++++++++-------------------------
2 files changed, 119 insertions(+), 119 deletions(-)
diff --git a/package.json b/package.json
index b659c748d1dc..109a1564f554 100644
--- a/package.json
+++ b/package.json
@@ -147,7 +147,7 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.6",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/workers-types": "4.20260603.1",
+ "@cloudflare/workers-types": "4.20260604.1",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.68.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1f49f909bd1d..b536ceaf922e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -297,8 +297,8 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/workers-types':
- specifier: 4.20260603.1
- version: 4.20260603.1
+ specifier: 4.20260604.1
+ version: 4.20260604.1
'@eslint/eslintrc':
specifier: 3.3.5
version: 3.3.5
@@ -367,7 +367,7 @@ importers:
version: 8.60.1(eslint@10.4.1(jiti@2.6.1))(typescript@5.9.3)
'@vercel/nft':
specifier: 1.10.2
- version: 1.10.2(rollup@4.61.0)
+ version: 1.10.2(rollup@4.61.1)
'@vitest/coverage-v8':
specifier: 4.1.8
version: 4.1.8(vitest@4.1.8)
@@ -469,7 +469,7 @@ importers:
version: 4.1.8(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.13.4(@types/node@25.9.1)(typescript@5.9.3))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(tsx@4.22.4)(yaml@2.9.0))
wrangler:
specifier: 4.97.0
- version: 4.97.0(@cloudflare/workers-types@4.20260603.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.97.0(@cloudflare/workers-types@4.20260604.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.0.0
version: 2.0.0
@@ -654,8 +654,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@4.20260603.1':
- resolution: {integrity: sha512-TLeVHoBbcYv35S5TdRWUoj3IJ56BhHtrsuci+O7ithU8yz7ttNdCk6rAl1QUSGNVEWSIp54bWOuV/xmX1zu79g==}
+ '@cloudflare/workers-types@4.20260604.1':
+ resolution: {integrity: sha512-nVTydUwPcz9WfwZ/6xAmqs8uUVeGbDVmyPvSYrYAo4CQTyi0122SoE1Suw8RvqnN60XXHPChAjDqSIjnr/mbmg==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -2349,141 +2349,141 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.61.0':
- resolution: {integrity: sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==}
+ '@rollup/rollup-android-arm-eabi@4.61.1':
+ resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.61.0':
- resolution: {integrity: sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==}
+ '@rollup/rollup-android-arm64@4.61.1':
+ resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.61.0':
- resolution: {integrity: sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==}
+ '@rollup/rollup-darwin-arm64@4.61.1':
+ resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.61.0':
- resolution: {integrity: sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==}
+ '@rollup/rollup-darwin-x64@4.61.1':
+ resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.61.0':
- resolution: {integrity: sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==}
+ '@rollup/rollup-freebsd-arm64@4.61.1':
+ resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.61.0':
- resolution: {integrity: sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==}
+ '@rollup/rollup-freebsd-x64@4.61.1':
+ resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.61.0':
- resolution: {integrity: sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.61.1':
+ resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.61.0':
- resolution: {integrity: sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.61.1':
+ resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-arm64-gnu@4.61.0':
- resolution: {integrity: sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==}
+ '@rollup/rollup-linux-arm64-gnu@4.61.1':
+ resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.61.0':
- resolution: {integrity: sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==}
+ '@rollup/rollup-linux-arm64-musl@4.61.1':
+ resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.61.0':
- resolution: {integrity: sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==}
+ '@rollup/rollup-linux-loong64-gnu@4.61.1':
+ resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==}
cpu: [loong64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-loong64-musl@4.61.0':
- resolution: {integrity: sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==}
+ '@rollup/rollup-linux-loong64-musl@4.61.1':
+ resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==}
cpu: [loong64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-ppc64-gnu@4.61.0':
- resolution: {integrity: sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==}
+ '@rollup/rollup-linux-ppc64-gnu@4.61.1':
+ resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.61.0':
- resolution: {integrity: sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==}
+ '@rollup/rollup-linux-ppc64-musl@4.61.1':
+ resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==}
cpu: [ppc64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-riscv64-gnu@4.61.0':
- resolution: {integrity: sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.61.1':
+ resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-riscv64-musl@4.61.0':
- resolution: {integrity: sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==}
+ '@rollup/rollup-linux-riscv64-musl@4.61.1':
+ resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-s390x-gnu@4.61.0':
- resolution: {integrity: sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==}
+ '@rollup/rollup-linux-s390x-gnu@4.61.1':
+ resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.61.0':
- resolution: {integrity: sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==}
+ '@rollup/rollup-linux-x64-gnu@4.61.1':
+ resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.61.0':
- resolution: {integrity: sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==}
+ '@rollup/rollup-linux-x64-musl@4.61.1':
+ resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.61.0':
- resolution: {integrity: sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==}
+ '@rollup/rollup-openbsd-x64@4.61.1':
+ resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.61.0':
- resolution: {integrity: sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==}
+ '@rollup/rollup-openharmony-arm64@4.61.1':
+ resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.61.0':
- resolution: {integrity: sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==}
+ '@rollup/rollup-win32-arm64-msvc@4.61.1':
+ resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.61.0':
- resolution: {integrity: sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==}
+ '@rollup/rollup-win32-ia32-msvc@4.61.1':
+ resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.61.0':
- resolution: {integrity: sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==}
+ '@rollup/rollup-win32-x64-gnu@4.61.1':
+ resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.61.0':
- resolution: {integrity: sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==}
+ '@rollup/rollup-win32-x64-msvc@4.61.1':
+ resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==}
cpu: [x64]
os: [win32]
@@ -3398,7 +3398,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.48:
@@ -5193,8 +5193,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rollup@4.61.0:
- resolution: {integrity: sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==}
+ rollup@4.61.1:
+ resolution: {integrity: sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -6307,7 +6307,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260601.1':
optional: true
- '@cloudflare/workers-types@4.20260603.1': {}
+ '@cloudflare/workers-types@4.20260604.1': {}
'@colors/colors@1.6.0': {}
@@ -7473,87 +7473,87 @@ snapshots:
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/pluginutils@5.3.0(rollup@4.61.0)':
+ '@rollup/pluginutils@5.3.0(rollup@4.61.1)':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.4
optionalDependencies:
- rollup: 4.61.0
+ rollup: 4.61.1
- '@rollup/rollup-android-arm-eabi@4.61.0':
+ '@rollup/rollup-android-arm-eabi@4.61.1':
optional: true
- '@rollup/rollup-android-arm64@4.61.0':
+ '@rollup/rollup-android-arm64@4.61.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.61.0':
+ '@rollup/rollup-darwin-arm64@4.61.1':
optional: true
- '@rollup/rollup-darwin-x64@4.61.0':
+ '@rollup/rollup-darwin-x64@4.61.1':
optional: true
- '@rollup/rollup-freebsd-arm64@4.61.0':
+ '@rollup/rollup-freebsd-arm64@4.61.1':
optional: true
- '@rollup/rollup-freebsd-x64@4.61.0':
+ '@rollup/rollup-freebsd-x64@4.61.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.61.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.61.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.61.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.61.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.61.0':
+ '@rollup/rollup-linux-arm64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.61.0':
+ '@rollup/rollup-linux-arm64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.61.0':
+ '@rollup/rollup-linux-loong64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.61.0':
+ '@rollup/rollup-linux-loong64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.61.0':
+ '@rollup/rollup-linux-ppc64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.61.0':
+ '@rollup/rollup-linux-ppc64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.61.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.61.0':
+ '@rollup/rollup-linux-riscv64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.61.0':
+ '@rollup/rollup-linux-s390x-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.61.0':
+ '@rollup/rollup-linux-x64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.61.0':
+ '@rollup/rollup-linux-x64-musl@4.61.1':
optional: true
- '@rollup/rollup-openbsd-x64@4.61.0':
+ '@rollup/rollup-openbsd-x64@4.61.1':
optional: true
- '@rollup/rollup-openharmony-arm64@4.61.0':
+ '@rollup/rollup-openharmony-arm64@4.61.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.61.0':
+ '@rollup/rollup-win32-arm64-msvc@4.61.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.61.0':
+ '@rollup/rollup-win32-ia32-msvc@4.61.1':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.61.0':
+ '@rollup/rollup-win32-x64-gnu@4.61.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.61.0':
+ '@rollup/rollup-win32-x64-msvc@4.61.1':
optional: true
'@rss3/api-core@0.0.25':
@@ -7937,10 +7937,10 @@ snapshots:
'@typescript-eslint/types': 8.60.1
eslint-visitor-keys: 5.0.1
- '@vercel/nft@1.10.2(rollup@4.61.0)':
+ '@vercel/nft@1.10.2(rollup@4.61.1)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3
- '@rollup/pluginutils': 5.3.0(rollup@4.61.0)
+ '@rollup/pluginutils': 5.3.0(rollup@4.61.1)
acorn: 8.16.0
acorn-import-attributes: 1.9.5(acorn@8.16.0)
async-sema: 3.1.1
@@ -10758,35 +10758,35 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.0.3
'@rolldown/binding-win32-x64-msvc': 1.0.3
- rollup@4.61.0:
+ rollup@4.61.1:
dependencies:
'@types/estree': 1.0.9
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.61.0
- '@rollup/rollup-android-arm64': 4.61.0
- '@rollup/rollup-darwin-arm64': 4.61.0
- '@rollup/rollup-darwin-x64': 4.61.0
- '@rollup/rollup-freebsd-arm64': 4.61.0
- '@rollup/rollup-freebsd-x64': 4.61.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.61.0
- '@rollup/rollup-linux-arm-musleabihf': 4.61.0
- '@rollup/rollup-linux-arm64-gnu': 4.61.0
- '@rollup/rollup-linux-arm64-musl': 4.61.0
- '@rollup/rollup-linux-loong64-gnu': 4.61.0
- '@rollup/rollup-linux-loong64-musl': 4.61.0
- '@rollup/rollup-linux-ppc64-gnu': 4.61.0
- '@rollup/rollup-linux-ppc64-musl': 4.61.0
- '@rollup/rollup-linux-riscv64-gnu': 4.61.0
- '@rollup/rollup-linux-riscv64-musl': 4.61.0
- '@rollup/rollup-linux-s390x-gnu': 4.61.0
- '@rollup/rollup-linux-x64-gnu': 4.61.0
- '@rollup/rollup-linux-x64-musl': 4.61.0
- '@rollup/rollup-openbsd-x64': 4.61.0
- '@rollup/rollup-openharmony-arm64': 4.61.0
- '@rollup/rollup-win32-arm64-msvc': 4.61.0
- '@rollup/rollup-win32-ia32-msvc': 4.61.0
- '@rollup/rollup-win32-x64-gnu': 4.61.0
- '@rollup/rollup-win32-x64-msvc': 4.61.0
+ '@rollup/rollup-android-arm-eabi': 4.61.1
+ '@rollup/rollup-android-arm64': 4.61.1
+ '@rollup/rollup-darwin-arm64': 4.61.1
+ '@rollup/rollup-darwin-x64': 4.61.1
+ '@rollup/rollup-freebsd-arm64': 4.61.1
+ '@rollup/rollup-freebsd-x64': 4.61.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.61.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.61.1
+ '@rollup/rollup-linux-arm64-gnu': 4.61.1
+ '@rollup/rollup-linux-arm64-musl': 4.61.1
+ '@rollup/rollup-linux-loong64-gnu': 4.61.1
+ '@rollup/rollup-linux-loong64-musl': 4.61.1
+ '@rollup/rollup-linux-ppc64-gnu': 4.61.1
+ '@rollup/rollup-linux-ppc64-musl': 4.61.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.61.1
+ '@rollup/rollup-linux-riscv64-musl': 4.61.1
+ '@rollup/rollup-linux-s390x-gnu': 4.61.1
+ '@rollup/rollup-linux-x64-gnu': 4.61.1
+ '@rollup/rollup-linux-x64-musl': 4.61.1
+ '@rollup/rollup-openbsd-x64': 4.61.1
+ '@rollup/rollup-openharmony-arm64': 4.61.1
+ '@rollup/rollup-win32-arm64-msvc': 4.61.1
+ '@rollup/rollup-win32-ia32-msvc': 4.61.1
+ '@rollup/rollup-win32-x64-gnu': 4.61.1
+ '@rollup/rollup-win32-x64-msvc': 4.61.1
fsevents: 2.3.3
rss-parser@3.13.0(patch_hash=afac79a31a3db94c953d49680bc5528468f051957d461e913d2e2dbf5cd22a8d):
@@ -11406,7 +11406,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
postcss: 8.5.15
- rollup: 4.61.0
+ rollup: 4.61.1
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 25.9.1
@@ -11527,7 +11527,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260601.1
'@cloudflare/workerd-windows-64': 1.20260601.1
- wrangler@4.97.0(@cloudflare/workers-types@4.20260603.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)
@@ -11538,7 +11538,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260601.1
optionalDependencies:
- '@cloudflare/workers-types': 4.20260603.1
+ '@cloudflare/workers-types': 4.20260604.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 4eeb5ae4ec0172d0e50722d654c79baeb9dd1628 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 4 Jun 2026 21:33:21 +0800
Subject: [PATCH 014/670] chore(deps): bump devenv from `57f7e43` to `f693b47`
(#22183)
Bumps [devenv](https://github.com/cachix/devenv) from `57f7e43` to `f693b47`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/57f7e43b3c8adb43a7f3df0d393a87e6939d5141...f693b472c731e7dda69402daa88c06369d54fd3a)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: f693b472c731e7dda69402daa88c06369d54fd3a
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 0570de84d449..fd1d053b5677 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1780511534,
- "narHash": "sha256-AFc1M/svHCsGWO+tA/t7ZeWckFIuJpML0vJpxGW65Us=",
+ "lastModified": 1780543372,
+ "narHash": "sha256-FCGxk82Lc4koWcFw5xgr+W5vbwLVFLCnSMwm2gQOgr0=",
"owner": "cachix",
"repo": "devenv",
- "rev": "57f7e43b3c8adb43a7f3df0d393a87e6939d5141",
+ "rev": "f693b472c731e7dda69402daa88c06369d54fd3a",
"type": "github"
},
"original": {
From 6135a6db71f55abf39c2d973a561eb789b8e8707 Mon Sep 17 00:00:00 2001
From: Andvari <31068367+dzx-dzx@users.noreply.github.com>
Date: Thu, 4 Jun 2026 21:50:02 +0800
Subject: [PATCH 015/670] fix(route/apnews): Adapt to new author format
(#22184)
---
lib/routes/apnews/utils.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/routes/apnews/utils.ts b/lib/routes/apnews/utils.ts
index 083c19fb9aa7..6ccca1098359 100644
--- a/lib/routes/apnews/utils.ts
+++ b/lib/routes/apnews/utils.ts
@@ -45,7 +45,7 @@ export function fetchArticle(item) {
description: $('div.RichTextStoryBody').html() || $(':is(.VideoLead, .VideoPage-pageSubHeading)').html(),
category: [...(section ? [section] : []), ...(ldjson.keywords ?? [])],
guid: $("meta[name='brightspot.contentId']").attr('content'),
- author: ldjson.author?.map((e) => e.mainEntity),
+ author: ldjson.author,
};
} else {
// Live
From 3567ced4d2a6646311f5f8667933689a2acc63ba Mon Sep 17 00:00:00 2001
From: Cod1doc
Date: Fri, 5 Jun 2026 03:51:04 +0800
Subject: [PATCH 016/670] fix: transform json number item link (#22168)
* fix: transform json number item link
* docs(route/rsshub): use concrete json transform example
* Revert "docs(route/rsshub): use concrete json transform example"
This reverts commit e4d916451afa2207959312d999dfbc6c71919e55.
---------
Co-authored-by: jack
Co-authored-by: jack
---
lib/routes/rsshub/transform/json.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/routes/rsshub/transform/json.ts b/lib/routes/rsshub/transform/json.ts
index 0786c8f172ae..c39e979e4f95 100644
--- a/lib/routes/rsshub/transform/json.ts
+++ b/lib/routes/rsshub/transform/json.ts
@@ -93,7 +93,7 @@ async function handler(ctx) {
}
const items = jsonGet(response.data, routeParams.get('item')).map((item) => {
- let link = jsonGet(item, routeParams.get('itemLink')).trim();
+ let link = String(jsonGet(item, routeParams.get('itemLink')) ?? '').trim();
const linkPrefix = routeParams.get('itemLinkPrefix');
if (link && linkPrefix) {
From 08c3ba83f9dae83c2b16a24fce8519994dae6a99 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Jun 2026 08:12:37 +0000
Subject: [PATCH 017/670] chore(deps): bump ioredis from 5.11.0 to 5.11.1
(#22191)
Bumps [ioredis](https://github.com/luin/ioredis) from 5.11.0 to 5.11.1.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/redis/ioredis/blob/main/CHANGELOG.md)
- [Commits](https://github.com/luin/ioredis/compare/v5.11.0...v5.11.1)
---
updated-dependencies:
- dependency-name: ioredis
dependency-version: 5.11.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 109a1564f554..e212440bb395 100644
--- a/package.json
+++ b/package.json
@@ -97,7 +97,7 @@
"iconv-lite": "0.7.2",
"imapflow": "1.3.5",
"instagram-private-api": "1.46.1",
- "ioredis": "5.11.0",
+ "ioredis": "5.11.1",
"ip-regex": "5.0.0",
"jsdom": "29.1.1",
"json-bigint": "1.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b536ceaf922e..eb3c5febb771 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -152,8 +152,8 @@ importers:
specifier: 1.46.1
version: 1.46.1
ioredis:
- specifier: 5.11.0
- version: 5.11.0
+ specifier: 5.11.1
+ version: 5.11.1
ip-regex:
specifier: 5.0.0
version: 5.0.0
@@ -3398,7 +3398,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.48:
@@ -4101,8 +4101,8 @@ packages:
re2:
optional: true
- ioredis@5.11.0:
- resolution: {integrity: sha512-EZBErytyVovD8f6pDfG3Kb37N6Y3lmDA9NNj+4+IP13CzzHGeX+OyeRM2Um13khRzoBSzzL+5lVnCX8V2RLeMg==}
+ ioredis@5.11.1:
+ resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==}
engines: {node: '>=12.22.0'}
ip-address@10.2.0:
@@ -9378,7 +9378,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ioredis@5.11.0:
+ ioredis@5.11.1:
dependencies:
'@ioredis/commands': 1.10.0
cluster-key-slot: 1.1.1
From 7ab88a5059e7b031712fc45c1ab334fcdfe9f48d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Jun 2026 08:15:10 +0000
Subject: [PATCH 018/670] chore(deps-dev): bump tsdown from 0.22.1 to 0.22.2
(#22192)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.1 to 0.22.2.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.1...v0.22.2)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 246 ++++++++++++++++++++++---------------------------
2 files changed, 112 insertions(+), 136 deletions(-)
diff --git a/package.json b/package.json
index e212440bb395..716836e24639 100644
--- a/package.json
+++ b/package.json
@@ -199,7 +199,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.1",
+ "tsdown": "0.22.2",
"typescript": "5.9.3",
"unified": "11.0.5",
"vite-tsconfig-paths": "6.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index eb3c5febb771..7afdb4e7851f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -453,8 +453,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.1
- version: 0.22.1(tsx@4.22.4)(typescript@5.9.3)(unrun@0.2.37(synckit@0.11.12))
+ specifier: 0.22.2
+ version: 0.22.2(tsx@4.22.4)(typescript@5.9.3)(unrun@0.2.37(synckit@0.11.12))
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -518,8 +518,8 @@ packages:
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
engines: {node: '>=6.9.0'}
- '@babel/generator@8.0.0-rc.5':
- resolution: {integrity: sha512-nFZPWz3FHIS7y6rMIVoa/WBwjdutfIaRJIBQjzn+t3RnecZoRNlGmGcyR2wb0T/IgSd50Kz/6dG8/LvMCRunjg==}
+ '@babel/generator@8.0.0-rc.6':
+ resolution: {integrity: sha512-6mIzgVK8DgEzvIapoQwhXTMnnkuE4STQmVv9H03i/tZ2ml8oev3TRvZJgTenK2Bsq0YWNtzOrFdTyNzCMFtjJQ==}
engines: {node: ^22.18.0 || >=24.11.0}
'@babel/helper-string-parser@7.29.7':
@@ -538,10 +538,6 @@ packages:
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@8.0.0-rc.5':
- resolution: {integrity: sha512-ehJDxHvtbZ85RtX/L2fi0h9AGsBNqB5Euv1EB8RMAvGYvD+2X+QbpzzOpbklnNXO+WSZJNOaetw2BBj27xsWVg==}
- engines: {node: ^22.18.0 || >=24.11.0}
-
'@babel/helper-validator-identifier@8.0.0-rc.6':
resolution: {integrity: sha512-nVJ+1JcCgntv8d78rRo++o2wuODT0Irknx2BF8Np4Ft2CRgjLqIs4qzSZ8b66yGbBdMWGmZBO9WEZv1hhNiSpg==}
engines: {node: ^22.18.0 || >=24.11.0}
@@ -551,11 +547,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/parser@8.0.0-rc.4':
- resolution: {integrity: sha512-0S/1yefMa15N4i2v3t8Fw9pgMHhf2gF6Lc1UEXI96Ls6FNAjqvHHZouZ2ZS/deqLhbMFtmfVeFac6iTsvFbLwA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
'@babel/parser@8.0.0-rc.6':
resolution: {integrity: sha512-rOS8IpdO7mQELkTPlCsTgPejO0bFuZdEDCGQJouYbYf9e1FLTym7Fei2pEjq8q7MWbX0ravcd7QQYKs1TxOuog==}
engines: {node: ^22.18.0 || >=24.11.0}
@@ -1796,8 +1787,8 @@ packages:
'@oxc-project/types@0.127.0':
resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==}
- '@oxc-project/types@0.133.0':
- resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
+ '@oxc-project/types@0.134.0':
+ resolution: {integrity: sha512-T0xuRRKrQFmocH8y+jGfpmSkGcheaJExY9lEihmR1Gm2aH+75B8CzgU2rABRQSzzDxLjZ15Sc0bRVLj5lVeNXQ==}
'@oxfmt/binding-android-arm-eabi@0.53.0':
resolution: {integrity: sha512-XfVM8AmIovBTKXCt14Op5wbfcoM8418nttd+nhMgM3RAVaJg1MtJc73FyWfUt0oxLyBGVwfniNVUsbV/b3VmPg==}
@@ -2150,8 +2141,8 @@ packages:
cpu: [arm64]
os: [android]
- '@rolldown/binding-android-arm64@1.0.3':
- resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==}
+ '@rolldown/binding-android-arm64@1.1.0':
+ resolution: {integrity: sha512-gCYzGOSkYY6Z034suzd20euvds7lPzMEEla62DJGE/ZAlR4OMBnNbvnBSsIGUCAr52gaWMsloGxP4tVGtN5aCA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
@@ -2162,8 +2153,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-arm64@1.0.3':
- resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==}
+ '@rolldown/binding-darwin-arm64@1.1.0':
+ resolution: {integrity: sha512-JQBD77MNgu+4Z6RAyg69acugdrhhVoWesr3l47zohYZ2YV2fwkWMArkN/2p4l6Ei+Sno7W5q+UsKdVWq5Ens0w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
@@ -2174,8 +2165,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.3':
- resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==}
+ '@rolldown/binding-darwin-x64@1.1.0':
+ resolution: {integrity: sha512-p/8cXUTK4Sob604e+xxPhVSbDFf29E6J0l/xESM9rdCfn3aDai3nEs6TnMHUsdD5aNlFz0+gDbiGlozLKGa2YA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
@@ -2186,8 +2177,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-freebsd-x64@1.0.3':
- resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==}
+ '@rolldown/binding-freebsd-x64@1.1.0':
+ resolution: {integrity: sha512-KbtOSlVv6fElujiZWMcC3aQYhEwLVVf073RcwlSmpGQvIsKZFUqc0ef4sjUuurRwfbiI6JJXji9DQn+86hawmQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
@@ -2198,8 +2189,8 @@ packages:
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
- resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.1.0':
+ resolution: {integrity: sha512-9fZ9i0o0/MQaw7om6Z6TsT7tfCk0jtbEFtC+aPqZL5RNsGWNcHvn6EHgL3dAprjq+AZzPTAQjg2JtpJaMt+6pg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
@@ -2211,8 +2202,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-gnu@1.0.3':
- resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==}
+ '@rolldown/binding-linux-arm64-gnu@1.1.0':
+ resolution: {integrity: sha512-+tog7T66i+yFyIuuAnjL6xmW182W/qTBOUt6BtQ6lBIM1Eikh/fSMz4HGgvuCp5uU0zuIVWng7kDYthjCMOHcg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -2225,8 +2216,8 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-arm64-musl@1.0.3':
- resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
+ '@rolldown/binding-linux-arm64-musl@1.1.0':
+ resolution: {integrity: sha512-4b7yruLIIj/oZ3GpcLOvxcLCLDMraohn3IhQfN2hBP4w9UekG0DTIajWguJosRGfySf/+h/NwRUiMKoCpxCrqQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -2239,8 +2230,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-ppc64-gnu@1.0.3':
- resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
+ '@rolldown/binding-linux-ppc64-gnu@1.1.0':
+ resolution: {integrity: sha512-QRDOVZd0bhQ5jLsUsCC3dUxDWdTSVY9WMznowZgCGOrZfLLgctWpelhUASEiBwsXfat/JwYnVd1EaxMhqyT+UQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
@@ -2253,8 +2244,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.0.3':
- resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
+ '@rolldown/binding-linux-s390x-gnu@1.1.0':
+ resolution: {integrity: sha512-ypxT+Hq76NFG7woFbNbySnGEajFuYuIXeKz/jfCU+lXUoxfi3zLE6OG/ZQNeK3RpZSYJlAe2bokpsQ046CaieQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
@@ -2267,8 +2258,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.3':
- resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
+ '@rolldown/binding-linux-x64-gnu@1.1.0':
+ resolution: {integrity: sha512-IdovCmfROFmpTLahdecTDFL74aLERVYN68F/mLZjfVh6LfoplPfI6deyHNMTcVujbokDV5k05XrFO22zfv+qjg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -2281,8 +2272,8 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-x64-musl@1.0.3':
- resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
+ '@rolldown/binding-linux-x64-musl@1.1.0':
+ resolution: {integrity: sha512-pcA8xlFp2tyk9T2R6Fi/rPe3bQ1MA+sSMDNUU5Ogu80GHOatkE4P8YCreGAvZErm5Ho2YRXnyvNrWiRncfVysQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -2294,8 +2285,8 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-openharmony-arm64@1.0.3':
- resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
+ '@rolldown/binding-openharmony-arm64@1.1.0':
+ resolution: {integrity: sha512-4+fexHayrLCWpriPh4c6dNvL4an34DEZCG7zOM/FD5QNF6h8DT+bDXzyB/kfC8lDJbaFb7jKShtnjDQFXVQEjg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
@@ -2305,8 +2296,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-wasm32-wasi@1.0.3':
- resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==}
+ '@rolldown/binding-wasm32-wasi@1.1.0':
+ resolution: {integrity: sha512-SbL++MNmOw6QamrwIGDMSSfM4ceTzFr+RjbOExJSLLBinScU4WI5OdA413h1qwPw2yH7lVF1+H4svQ+6mSXKTQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
@@ -2316,8 +2307,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-arm64-msvc@1.0.3':
- resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==}
+ '@rolldown/binding-win32-arm64-msvc@1.1.0':
+ resolution: {integrity: sha512-+xTE6XC7wBgk0VKRXGG+QAnyW5S9b8vfsFpiMjf0waQTmSQSU8onsH/beyZ8X4aXVveJnotiy7VDjLOaW8bTrg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
@@ -2328,8 +2319,8 @@ packages:
cpu: [x64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.3':
- resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==}
+ '@rolldown/binding-win32-x64-msvc@1.1.0':
+ resolution: {integrity: sha512-Ogji1TQNqH3ACLnYr+1Ns1nyrJ0CO2P585u9Hsh02pXvtFiFpgtgT2b3P4PnCOU86VVCvqtAeCN4OftMT8KU4w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -2934,8 +2925,8 @@ packages:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
- ansis@4.3.0:
- resolution: {integrity: sha512-44mvgtPvohuU/70DdY5Oz2AIrLJ9k6/5x4KmoSvPwO+5Moijo0+N9D0fKbbYZQWP1hNm5CpOf+E01jhxG/r8xg==}
+ ansis@4.3.1:
+ resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==}
engines: {node: '>=14'}
arg@5.0.2:
@@ -4757,6 +4748,10 @@ packages:
obug@2.1.1:
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+ obug@2.1.2:
+ resolution: {integrity: sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg==}
+ engines: {node: '>=12.20.0'}
+
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
@@ -5164,8 +5159,8 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
- rolldown-plugin-dts@0.25.1:
- resolution: {integrity: sha512-zK82aC/8z1iVW+g0bCnlQZq04Y5bNeL/RcRwTYBwsnU6wH0N+6vpIFkN7JC0kYRS5qKA+pxQyfIPvXJ6Q5xSpQ==}
+ rolldown-plugin-dts@0.25.2:
+ resolution: {integrity: sha512-nMhN/R+vmR8GM45ZW1FWMSjRTSDDn/6w4GTf8RNrEFCBdl8B1kySWrU1ixPtbwzXoRlcO+R/S88VgXuJQwfdDg==}
engines: {node: ^22.18.0 || >=24.0.0}
peerDependencies:
'@ts-macro/tsc': ^0.3.6
@@ -5188,8 +5183,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rolldown@1.0.3:
- resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==}
+ rolldown@1.1.0:
+ resolution: {integrity: sha512-zpMvlJhs5PkXRTtKc0CaLBVI9AR/VDiJFpM+kx//hgToEca7FgMlGjaRIisXBcb19T76LswgmKECSQ96hjWr5A==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -5228,8 +5223,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- semver@7.8.1:
- resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==}
+ semver@7.8.2:
+ resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==}
engines: {node: '>=10'}
hasBin: true
@@ -5454,18 +5449,10 @@ packages:
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- tinyexec@1.2.2:
- resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==}
- engines: {node: '>=18'}
-
tinyexec@1.2.4:
resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==}
engines: {node: '>=18'}
- tinyglobby@0.2.16:
- resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
- engines: {node: '>=12.0.0'}
-
tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
@@ -5568,14 +5555,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.1:
- resolution: {integrity: sha512-Ldx1jLyDFEzsN/fMBi2TBVaZe4fuEJhIiHjQhX0pV7oa5uYz5Imdivs5mNzEXOrMEtFRR6C9BQ2YqLoroffB+Q==}
+ tsdown@0.22.2:
+ resolution: {integrity: sha512-VX9gsyKXsTnBZjnIM4jsHl9aRv+GfgkE/k1hQslilaBfZMlaw3JuGR+6yhiU0QxWBtOCDnTjwOSoXzgB7Rr50g==}
engines: {node: ^22.18.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.1
- '@tsdown/exe': 0.22.1
+ '@tsdown/css': 0.22.2
+ '@tsdown/exe': 0.22.2
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6191,7 +6178,7 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/generator@8.0.0-rc.5':
+ '@babel/generator@8.0.0-rc.6':
dependencies:
'@babel/parser': 8.0.0-rc.6
'@babel/types': 8.0.0-rc.6
@@ -6208,18 +6195,12 @@ snapshots:
'@babel/helper-validator-identifier@7.29.7': {}
- '@babel/helper-validator-identifier@8.0.0-rc.5': {}
-
'@babel/helper-validator-identifier@8.0.0-rc.6': {}
'@babel/parser@7.29.7':
dependencies:
'@babel/types': 7.29.7
- '@babel/parser@8.0.0-rc.4':
- dependencies:
- '@babel/types': 8.0.0-rc.6
-
'@babel/parser@8.0.0-rc.6':
dependencies:
'@babel/types': 8.0.0-rc.6
@@ -6947,7 +6928,7 @@ snapshots:
https-proxy-agent: 7.0.6
node-fetch: 2.7.0
nopt: 8.1.0
- semver: 7.8.1
+ semver: 7.8.2
tar: 7.5.15
transitivePeerDependencies:
- encoding
@@ -7168,7 +7149,7 @@ snapshots:
'@oxc-project/types@0.127.0':
optional: true
- '@oxc-project/types@0.133.0': {}
+ '@oxc-project/types@0.134.0': {}
'@oxfmt/binding-android-arm-eabi@0.53.0':
optional: true
@@ -7373,73 +7354,73 @@ snapshots:
'@rolldown/binding-android-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-android-arm64@1.0.3':
+ '@rolldown/binding-android-arm64@1.1.0':
optional: true
'@rolldown/binding-darwin-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.3':
+ '@rolldown/binding-darwin-arm64@1.1.0':
optional: true
'@rolldown/binding-darwin-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-x64@1.0.3':
+ '@rolldown/binding-darwin-x64@1.1.0':
optional: true
'@rolldown/binding-freebsd-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.3':
+ '@rolldown/binding-freebsd-x64@1.1.0':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
+ '@rolldown/binding-linux-arm-gnueabihf@1.1.0':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.3':
+ '@rolldown/binding-linux-arm64-gnu@1.1.0':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.3':
+ '@rolldown/binding-linux-arm64-musl@1.1.0':
optional: true
'@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.0.3':
+ '@rolldown/binding-linux-ppc64-gnu@1.1.0':
optional: true
'@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.0.3':
+ '@rolldown/binding-linux-s390x-gnu@1.1.0':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.3':
+ '@rolldown/binding-linux-x64-gnu@1.1.0':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.3':
+ '@rolldown/binding-linux-x64-musl@1.1.0':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.3':
+ '@rolldown/binding-openharmony-arm64@1.1.0':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
@@ -7449,7 +7430,7 @@ snapshots:
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.3':
+ '@rolldown/binding-wasm32-wasi@1.1.0':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
@@ -7459,13 +7440,13 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.3':
+ '@rolldown/binding-win32-arm64-msvc@1.1.0':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.3':
+ '@rolldown/binding-win32-x64-msvc@1.1.0':
optional: true
'@rolldown/pluginutils@1.0.0-rc.17':
@@ -7914,7 +7895,7 @@ snapshots:
'@typescript-eslint/visitor-keys': 8.60.1
debug: 4.4.3
minimatch: 10.2.5
- semver: 7.8.1
+ semver: 7.8.2
tinyglobby: 0.2.17
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
@@ -8068,7 +8049,7 @@ snapshots:
ansi-styles@6.2.3: {}
- ansis@4.3.0: {}
+ ansis@4.3.1: {}
arg@5.0.2: {}
@@ -8084,7 +8065,7 @@ snapshots:
ast-kit@3.0.0-beta.1:
dependencies:
- '@babel/parser': 8.0.0-rc.4
+ '@babel/parser': 8.0.0-rc.6
estree-walker: 3.0.3
pathe: 2.0.3
@@ -8550,7 +8531,7 @@ snapshots:
'@one-ini/wasm': 0.1.1
commander: 10.0.1
minimatch: 9.0.9
- semver: 7.8.1
+ semver: 7.8.2
electron-to-chromium@1.5.330: {}
@@ -8727,7 +8708,7 @@ snapshots:
eslint-compat-utils@0.5.1(eslint@10.4.1(jiti@2.6.1)):
dependencies:
eslint: 10.4.1(jiti@2.6.1)
- semver: 7.7.4
+ semver: 7.8.2
eslint-filtered-fix@0.3.0(eslint@10.4.1(jiti@2.6.1)):
dependencies:
@@ -9710,7 +9691,7 @@ snapshots:
make-dir@4.0.0:
dependencies:
- semver: 7.8.1
+ semver: 7.8.2
map-obj@4.3.0: {}
@@ -10209,6 +10190,8 @@ snapshots:
obug@2.1.1: {}
+ obug@2.1.2: {}
+
ofetch@1.5.1:
dependencies:
destr: 2.0.5
@@ -10699,17 +10682,17 @@ snapshots:
rfdc@1.4.1: {}
- rolldown-plugin-dts@0.25.1(rolldown@1.0.3)(typescript@5.9.3):
+ rolldown-plugin-dts@0.25.2(rolldown@1.1.0)(typescript@5.9.3):
dependencies:
- '@babel/generator': 8.0.0-rc.5
- '@babel/helper-validator-identifier': 8.0.0-rc.5
- '@babel/parser': 8.0.0-rc.4
+ '@babel/generator': 8.0.0-rc.6
+ '@babel/helper-validator-identifier': 8.0.0-rc.6
+ '@babel/parser': 8.0.0-rc.6
ast-kit: 3.0.0-beta.1
birpc: 4.0.0
dts-resolver: 3.0.0
get-tsconfig: 5.0.0-beta.5
- obug: 2.1.1
- rolldown: 1.0.3
+ obug: 2.1.2
+ rolldown: 1.1.0
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
@@ -10737,26 +10720,26 @@ snapshots:
'@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17
optional: true
- rolldown@1.0.3:
+ rolldown@1.1.0:
dependencies:
- '@oxc-project/types': 0.133.0
+ '@oxc-project/types': 0.134.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.3
- '@rolldown/binding-darwin-arm64': 1.0.3
- '@rolldown/binding-darwin-x64': 1.0.3
- '@rolldown/binding-freebsd-x64': 1.0.3
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.3
- '@rolldown/binding-linux-arm64-gnu': 1.0.3
- '@rolldown/binding-linux-arm64-musl': 1.0.3
- '@rolldown/binding-linux-ppc64-gnu': 1.0.3
- '@rolldown/binding-linux-s390x-gnu': 1.0.3
- '@rolldown/binding-linux-x64-gnu': 1.0.3
- '@rolldown/binding-linux-x64-musl': 1.0.3
- '@rolldown/binding-openharmony-arm64': 1.0.3
- '@rolldown/binding-wasm32-wasi': 1.0.3
- '@rolldown/binding-win32-arm64-msvc': 1.0.3
- '@rolldown/binding-win32-x64-msvc': 1.0.3
+ '@rolldown/binding-android-arm64': 1.1.0
+ '@rolldown/binding-darwin-arm64': 1.1.0
+ '@rolldown/binding-darwin-x64': 1.1.0
+ '@rolldown/binding-freebsd-x64': 1.1.0
+ '@rolldown/binding-linux-arm-gnueabihf': 1.1.0
+ '@rolldown/binding-linux-arm64-gnu': 1.1.0
+ '@rolldown/binding-linux-arm64-musl': 1.1.0
+ '@rolldown/binding-linux-ppc64-gnu': 1.1.0
+ '@rolldown/binding-linux-s390x-gnu': 1.1.0
+ '@rolldown/binding-linux-x64-gnu': 1.1.0
+ '@rolldown/binding-linux-x64-musl': 1.1.0
+ '@rolldown/binding-openharmony-arm64': 1.1.0
+ '@rolldown/binding-wasm32-wasi': 1.1.0
+ '@rolldown/binding-win32-arm64-msvc': 1.1.0
+ '@rolldown/binding-win32-x64-msvc': 1.1.0
rollup@4.61.1:
dependencies:
@@ -10822,7 +10805,7 @@ snapshots:
semver@7.7.4: {}
- semver@7.8.1: {}
+ semver@7.8.2: {}
set-cookie-parser@3.1.0: {}
@@ -10830,7 +10813,7 @@ snapshots:
dependencies:
'@img/colour': 1.1.0
detect-libc: 2.1.2
- semver: 7.8.1
+ semver: 7.8.2
optionalDependencies:
'@img/sharp-darwin-arm64': 0.34.5
'@img/sharp-darwin-x64': 0.34.5
@@ -11076,15 +11059,8 @@ snapshots:
tinybench@2.9.0: {}
- tinyexec@1.2.2: {}
-
tinyexec@1.2.4: {}
- tinyglobby@0.2.16:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.4)
- picomatch: 4.0.4
-
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
@@ -11163,21 +11139,21 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- tsdown@0.22.1(tsx@4.22.4)(typescript@5.9.3)(unrun@0.2.37(synckit@0.11.12)):
+ tsdown@0.22.2(tsx@4.22.4)(typescript@5.9.3)(unrun@0.2.37(synckit@0.11.12)):
dependencies:
- ansis: 4.3.0
+ ansis: 4.3.1
cac: 7.0.0
defu: 6.1.7
empathic: 2.0.1
hookable: 6.1.1
import-without-cache: 0.4.0
- obug: 2.1.1
+ obug: 2.1.2
picomatch: 4.0.4
- rolldown: 1.0.3
- rolldown-plugin-dts: 0.25.1(rolldown@1.0.3)(typescript@5.9.3)
- semver: 7.8.1
- tinyexec: 1.2.2
- tinyglobby: 0.2.16
+ rolldown: 1.1.0
+ rolldown-plugin-dts: 0.25.2(rolldown@1.1.0)(typescript@5.9.3)
+ semver: 7.8.2
+ tinyexec: 1.2.4
+ tinyglobby: 0.2.17
tree-kill: 1.2.2
unconfig-core: 7.5.0
optionalDependencies:
From 742f49e61d0ad60f206d7c8762beefc93ca5a345 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Jun 2026 19:33:48 +0800
Subject: [PATCH 019/670] chore(deps-dev): bump the cloudflare group with 3
updates (#22190)
Bumps the cloudflare group with 3 updates: [@cloudflare/containers](https://github.com/cloudflare/containers), [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/containers` from 0.3.6 to 0.3.7
- [Release notes](https://github.com/cloudflare/containers/releases)
- [Changelog](https://github.com/cloudflare/containers/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/containers/compare/v0.3.6...v0.3.7)
Updates `@cloudflare/workers-types` from 4.20260604.1 to 4.20260605.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.97.0 to 4.98.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/HEAD/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/containers"
dependency-version: 0.3.7
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: cloudflare
- dependency-name: "@cloudflare/workers-types"
dependency-version: 4.20260605.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.98.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +--
pnpm-lock.yaml | 105 ++++++++++++++++++++++++++-----------------------
2 files changed, 59 insertions(+), 52 deletions(-)
diff --git a/package.json b/package.json
index 716836e24639..7098c691f57e 100644
--- a/package.json
+++ b/package.json
@@ -145,9 +145,9 @@
"@actions/core": "3.0.1",
"@actions/github": "9.1.1",
"@bbob/types": "4.3.1",
- "@cloudflare/containers": "0.3.6",
+ "@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/workers-types": "4.20260604.1",
+ "@cloudflare/workers-types": "4.20260605.1",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.68.0",
@@ -204,7 +204,7 @@
"unified": "11.0.5",
"vite-tsconfig-paths": "6.1.1",
"vitest": "4.1.8",
- "wrangler": "4.97.0",
+ "wrangler": "4.98.0",
"yaml-eslint-parser": "2.0.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7afdb4e7851f..565988640ae9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -291,14 +291,14 @@ importers:
specifier: 4.3.1
version: 4.3.1
'@cloudflare/containers':
- specifier: 0.3.6
- version: 0.3.6
+ specifier: 0.3.7
+ version: 0.3.7
'@cloudflare/playwright':
specifier: 1.3.0
version: 1.3.0
'@cloudflare/workers-types':
- specifier: 4.20260604.1
- version: 4.20260604.1
+ specifier: 4.20260605.1
+ version: 4.20260605.1
'@eslint/eslintrc':
specifier: 3.3.5
version: 3.3.5
@@ -468,8 +468,8 @@ importers:
specifier: 4.1.8
version: 4.1.8(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.13.4(@types/node@25.9.1)(typescript@5.9.3))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(tsx@4.22.4)(yaml@2.9.0))
wrangler:
- specifier: 4.97.0
- version: 4.97.0(@cloudflare/workers-types@4.20260604.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.98.0
+ version: 4.98.0(@cloudflare/workers-types@4.20260605.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.0.0
version: 2.0.0
@@ -596,8 +596,8 @@ packages:
'@bufbuild/protobuf@2.11.0':
resolution: {integrity: sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==}
- '@cloudflare/containers@0.3.6':
- resolution: {integrity: sha512-8RrbK/Et165gjvXccui3pgkUuySVWysTC6bJRXfgqmbCA2vAmh8pm7cAKDh2nZFR/GSjW4BgxeKpffCTD8SJEg==}
+ '@cloudflare/containers@0.3.7':
+ resolution: {integrity: sha512-DM9dm3FnIBSyiSJ1FLavKwl/lk3oAmTaynCzZQ9pZR0ncRPquSxkxd8Nu2MFILxmDDsPkxKsSNEh9mHHMty4Fw==}
'@cloudflare/kv-asset-handler@0.5.0':
resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==}
@@ -615,38 +615,38 @@ packages:
workerd:
optional: true
- '@cloudflare/workerd-darwin-64@1.20260601.1':
- resolution: {integrity: sha512-iXZBVuRbvuVqQ/63wul01hHCv/3R8G5S8zbkjfoHvyPZFynmlKTV59Hk+H8whyGwFAZuB71UJGLr+G5mJKfjWA==}
+ '@cloudflare/workerd-darwin-64@1.20260603.1':
+ resolution: {integrity: sha512-cEXDWu6V3ZrpmwWkM4OJE9AeXjdAgOY5rh8EHhcBVCuP5rxnzUbPzLtrVOHx0UUUAcCrFq0Xsa6mZKL1VUZsKQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260601.1':
- resolution: {integrity: sha512-veGpZQGBw07Twt+Y4z3oyo+/obKHt0iWUwvDV5GOiDAYjC/zW+YGstgVzg4SHq+k1sLH3ElqL2TXx20I5WBv3Q==}
+ '@cloudflare/workerd-darwin-arm64@1.20260603.1':
+ resolution: {integrity: sha512-uBPK4LaWJNbbCYwPnUAehlHbbVulhVZPZsdcAhBPfZhHb3QAuAEPAQepO/P67R3V6Cni4YGx1fLbL8A5wwoaNA==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260601.1':
- resolution: {integrity: sha512-n/9hDz7fPGpYF0J684+Xr5zgjcS2jdmY2Of5m6e+eQ/M9+RfR+UaU8Ee/tkA1dDC0LYQB13hfPafZG66Ff1CsA==}
+ '@cloudflare/workerd-linux-64@1.20260603.1':
+ resolution: {integrity: sha512-ht9l6/8Tk7Rp6kA4S9oFZ4X8u0VjnnFdmU/6B3fnABYKREYTKh2RdOqXqXxcp5eNJseireKnWik/hQOPK1CutQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260601.1':
- resolution: {integrity: sha512-VHRZZbexATS+n+1j3x/CZaYbIJEye0J3iIHgG0Wp+l+NrZCKQ8qi8Lq1uTV0dLJQ67FuZtJtWdQ95mm9F7Fc+A==}
+ '@cloudflare/workerd-linux-arm64@1.20260603.1':
+ resolution: {integrity: sha512-LJZ6x00rAjSrobV4m0ZW0TpH5ilBbKcWBzlH+y+KOUsIE/CpTuhAzKV43TbSnFLRX5+jrWKiz2v0hO91lPXy6A==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260601.1':
- resolution: {integrity: sha512-ye0C7MFLkeH16iTo8Tcjv2KiFmp23+sZGvUzSQa4xhP0QMe6EoJ+H/4SqqvnZ5nfN54slqKvx2VnXceENWe2CQ==}
+ '@cloudflare/workerd-windows-64@1.20260603.1':
+ resolution: {integrity: sha512-DvwqkXMAJRPoDN4PxapAwhlz/6ouD+6R1ttbAEK3cWD/QBvFF5STx7Ds/9Irf+rBly3np3uHWkeX+wZnNFEuzA==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@4.20260604.1':
- resolution: {integrity: sha512-nVTydUwPcz9WfwZ/6xAmqs8uUVeGbDVmyPvSYrYAo4CQTyi0122SoE1Suw8RvqnN60XXHPChAjDqSIjnr/mbmg==}
+ '@cloudflare/workers-types@4.20260605.1':
+ resolution: {integrity: sha512-9YJaGPQwuQYFHoElVhJP40ZmUO/Z2OiBon58sKpHjgwq5btC/B2BZLC45AQ14k+1I+hjcY2z2t2R6uUxU9AqwQ==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -4589,8 +4589,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260601.0:
- resolution: {integrity: sha512-56TFiulSEQu43cYxdXgCiA3U3i+Ls0NoXwJXd6DmpNsx8yl/1Il2T3DQ4CMXjR6yfE7CSvC5MuXaqcSAMREjgw==}
+ miniflare@4.20260603.0:
+ resolution: {integrity: sha512-+kMQYB82gC8MPOuojHur3icQsUeZUEJ+Sphuo5rVC3Ri9txBLAW/mH33b9OVrpmkogQeaaqPS4tPtugJZhk5Kw==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -5228,6 +5228,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.8.2:
+ resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+
set-cookie-parser@3.1.0:
resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
@@ -5958,17 +5963,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260601.1:
- resolution: {integrity: sha512-Bg4+HF3B8TW0urAv8chiz25HSQ/aJxMBjgheUzu/nB1NQa+CaKGrUPv+Z3bf0np/WxLHYW1kcseVEtzZVPbX4g==}
+ workerd@1.20260603.1:
+ resolution: {integrity: sha512-NPcbhI1++CS+fnELyXtsIR52en+5kwr/OrKeiQeYXGy10HxmPdsQBv9N+DU7hJIOOmBHhOGAAsoGDjyiQ2YCaA==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.97.0:
- resolution: {integrity: sha512-jzW/aNvjerV+4TmwbvwGY6lpcuBk7EFUTonMDNfci45wSmMTj2/OJN+83cc/CeepKdb+6ZjGJw9NRjmcQoxqRg==}
+ wrangler@4.98.0:
+ resolution: {integrity: sha512-cXfFUuF4rMIvE0hiMnXjEAB27ERryaCgquBJdUoPIjFzYYE1rbRdMUkEdQ18qDPUtsPvhJdqxLntixT9OfSzQw==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^4.20260601.1
+ '@cloudflare/workers-types': ^4.20260603.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6261,34 +6266,34 @@ snapshots:
'@bufbuild/protobuf@2.11.0': {}
- '@cloudflare/containers@0.3.6': {}
+ '@cloudflare/containers@0.3.7': {}
'@cloudflare/kv-asset-handler@0.5.0': {}
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260603.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260601.1
+ workerd: 1.20260603.1
- '@cloudflare/workerd-darwin-64@1.20260601.1':
+ '@cloudflare/workerd-darwin-64@1.20260603.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260601.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260603.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260601.1':
+ '@cloudflare/workerd-linux-64@1.20260603.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260601.1':
+ '@cloudflare/workerd-linux-arm64@1.20260603.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260601.1':
+ '@cloudflare/workerd-windows-64@1.20260603.1':
optional: true
- '@cloudflare/workers-types@4.20260604.1': {}
+ '@cloudflare/workers-types@4.20260605.1': {}
'@colors/colors@1.6.0': {}
@@ -10038,12 +10043,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260601.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260603.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.24.8
- workerd: 1.20260601.1
+ workerd: 1.20260603.1
ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -10807,6 +10812,8 @@ snapshots:
semver@7.8.2: {}
+ semver@7.8.2: {}
+
set-cookie-parser@3.1.0: {}
sharp@0.34.5:
@@ -11495,26 +11502,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260601.1:
+ workerd@1.20260603.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260601.1
- '@cloudflare/workerd-darwin-arm64': 1.20260601.1
- '@cloudflare/workerd-linux-64': 1.20260601.1
- '@cloudflare/workerd-linux-arm64': 1.20260601.1
- '@cloudflare/workerd-windows-64': 1.20260601.1
+ '@cloudflare/workerd-darwin-64': 1.20260603.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260603.1
+ '@cloudflare/workerd-linux-64': 1.20260603.1
+ '@cloudflare/workerd-linux-arm64': 1.20260603.1
+ '@cloudflare/workerd-windows-64': 1.20260603.1
- wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.98.0(@cloudflare/workers-types@4.20260605.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260603.1)
blake3-wasm: 2.1.5
esbuild: 0.27.3
- miniflare: 4.20260601.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260603.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260601.1
+ workerd: 1.20260603.1
optionalDependencies:
- '@cloudflare/workers-types': 4.20260604.1
+ '@cloudflare/workers-types': 4.20260605.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 433c3ad12d938b14d17ae71426d69b69fa1d764f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Jun 2026 19:36:37 +0800
Subject: [PATCH 020/670] chore(deps): bump devenv from `f693b47` to `90ed622`
(#22193)
Bumps [devenv](https://github.com/cachix/devenv) from `f693b47` to `90ed622`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/f693b472c731e7dda69402daa88c06369d54fd3a...90ed6227ab389dd4e874a69a724f25dba312b754)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 90ed6227ab389dd4e874a69a724f25dba312b754
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index fd1d053b5677..dbe055057f10 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1780543372,
- "narHash": "sha256-FCGxk82Lc4koWcFw5xgr+W5vbwLVFLCnSMwm2gQOgr0=",
+ "lastModified": 1780630679,
+ "narHash": "sha256-hhQyVAYmNKziZ0T+T4Gsk0PYmnz4vdzOzpkJAmDASKM=",
"owner": "cachix",
"repo": "devenv",
- "rev": "f693b472c731e7dda69402daa88c06369d54fd3a",
+ "rev": "90ed6227ab389dd4e874a69a724f25dba312b754",
"type": "github"
},
"original": {
From bedeb4edaac3b7628e6f45bcf614e024cf8ac6ec Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Fri, 5 Jun 2026 12:01:56 +0000
Subject: [PATCH 021/670] chore: fix pnpm lock
---
pnpm-lock.yaml | 183 +++++++------------------------------------------
1 file changed, 25 insertions(+), 158 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 565988640ae9..1d66ca14c9a9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -530,10 +530,6 @@ packages:
resolution: {integrity: sha512-BCkFy+zN6kXQed3YOT7aJl93NfDSzQc3pBfsvTVPs9gU9X3V0aefEF5kwBT0E+mDWH9QgKaZstYUQN9VdQZT4g==}
engines: {node: ^22.18.0 || >=24.11.0}
- '@babel/helper-validator-identifier@7.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
@@ -1225,10 +1221,6 @@ packages:
resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/plugin-kit@0.7.1':
- resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
'@eslint/plugin-kit@0.7.2':
resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
@@ -2117,9 +2109,6 @@ packages:
'@protobufjs/float@1.0.2':
resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
- '@protobufjs/inquire@1.1.0':
- resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
-
'@protobufjs/inquire@1.1.1':
resolution: {integrity: sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==}
@@ -2641,9 +2630,6 @@ packages:
'@types/esrecurse@4.3.1':
resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
@@ -2790,10 +2776,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/types@8.58.0':
- resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/types@8.60.1':
resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2899,9 +2881,6 @@ packages:
resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==}
engines: {node: '>= 20'}
- ajv@6.14.0:
- resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
-
ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
@@ -3082,10 +3061,6 @@ packages:
resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
engines: {node: '>=14.16'}
- cacheable-request@13.0.18:
- resolution: {integrity: sha512-rFWadDRKJs3s2eYdXlGggnBZKG7MTblkFBB0YllFds+UYnfogDp2wcR6JN97FhRkHTvq59n2vhNoHNZn29dh/Q==}
- engines: {node: '>=18'}
-
cacheable-request@13.0.19:
resolution: {integrity: sha512-SVXGH037+Mo1aIMO5B2UcleR43FGjFdN+M8JObSyEoQ2Mn4CODRWx28gN5jiTF0n5ItsgtIZfyargMNs8GX4kg==}
engines: {node: '>=18'}
@@ -4745,9 +4720,6 @@ packages:
oauth-sign@0.9.0:
resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
- obug@2.1.1:
- resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
-
obug@2.1.2:
resolution: {integrity: sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg==}
engines: {node: '>=12.20.0'}
@@ -4959,10 +4931,6 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
- postcss@8.5.14:
- resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.5.15:
resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -5218,16 +5186,6 @@ packages:
selderee@0.12.0:
resolution: {integrity: sha512-b1YMh3+DHZp59DLna3qVwQ5iOla/nrI6mLBNW02XxU77M3046Df6VLkoaJyFz20VsGIG5kkp+FK0kg4K4HnUFw==}
- semver@7.7.4:
- resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
- engines: {node: '>=10'}
- hasBin: true
-
- semver@7.8.2:
- resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==}
- engines: {node: '>=10'}
- hasBin: true
-
semver@7.8.2:
resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==}
engines: {node: '>=10'}
@@ -5285,10 +5243,6 @@ packages:
resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
engines: {node: '>= 14'}
- socks@2.8.7:
- resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
- engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
-
socks@2.8.9:
resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
@@ -5638,14 +5592,6 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- type-fest@5.5.0:
- resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==}
- engines: {node: '>=20'}
-
- type-fest@5.6.0:
- resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==}
- engines: {node: '>=20'}
-
type-fest@5.7.0:
resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==}
engines: {node: '>=20'}
@@ -5683,8 +5629,8 @@ packages:
undici-types@7.25.0:
resolution: {integrity: sha512-AXNgS1Byr27fTI+2bsPEkV9CxkT8H6xNyRI68b3TatlZo3RkzlqQBLL+w7SmGPVpokjHbcuNVQUWE7FRTg+LRA==}
- undici@6.26.0:
- resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==}
+ undici@6.25.0:
+ resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==}
engines: {node: '>=18.17'}
undici@7.24.8:
@@ -6004,18 +5950,6 @@ packages:
ws@0.7.2:
resolution: {integrity: sha512-8mJ1Ku743qD/PKmO9Dg+y7BXTwzUgKdXguecfIyOVHFmez4JMqMF+V+M684btmQXHlwzyrJqRl3NYDltGDf6CQ==}
- ws@8.20.0:
- resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
ws@8.20.1:
resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==}
engines: {node: '>=10.0.0'}
@@ -6066,11 +6000,6 @@ packages:
resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- yaml@2.8.3:
- resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==}
- engines: {node: '>= 14.6'}
- hasBin: true
-
yaml@2.9.0:
resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
engines: {node: '>= 14.6'}
@@ -6138,17 +6067,17 @@ snapshots:
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
'@octokit/request': 10.0.8
'@octokit/request-error': 7.1.0
- undici: 6.26.0
+ undici: 6.25.0
'@actions/http-client@3.0.2':
dependencies:
tunnel: 0.0.6
- undici: 6.26.0
+ undici: 6.25.0
'@actions/http-client@4.0.1':
dependencies:
tunnel: 0.0.6
- undici: 6.26.0
+ undici: 6.25.0
'@actions/io@3.0.2': {}
@@ -6179,7 +6108,7 @@ snapshots:
'@babel/code-frame@7.29.0':
dependencies:
- '@babel/helper-validator-identifier': 7.28.5
+ '@babel/helper-validator-identifier': 7.29.7
js-tokens: 4.0.0
picocolors: 1.1.1
@@ -6196,8 +6125,6 @@ snapshots:
'@babel/helper-string-parser@8.0.0-rc.6': {}
- '@babel/helper-validator-identifier@7.28.5': {}
-
'@babel/helper-validator-identifier@7.29.7': {}
'@babel/helper-validator-identifier@8.0.0-rc.6': {}
@@ -6618,7 +6545,7 @@ snapshots:
'@eslint/eslintrc@3.3.5':
dependencies:
- ajv: 6.14.0
+ ajv: 6.15.0
debug: 4.4.3
espree: 10.4.0
globals: 14.0.0
@@ -6636,11 +6563,6 @@ snapshots:
'@eslint/object-schema@3.0.5': {}
- '@eslint/plugin-kit@0.7.1':
- dependencies:
- '@eslint/core': 1.2.1
- levn: 0.4.1
-
'@eslint/plugin-kit@0.7.2':
dependencies:
'@eslint/core': 1.2.1
@@ -7338,12 +7260,10 @@ snapshots:
'@protobufjs/fetch@1.1.0':
dependencies:
'@protobufjs/aspromise': 1.1.2
- '@protobufjs/inquire': 1.1.0
+ '@protobufjs/inquire': 1.1.1
'@protobufjs/float@1.0.2': {}
- '@protobufjs/inquire@1.1.0': {}
-
'@protobufjs/inquire@1.1.1': {}
'@protobufjs/path@1.1.2': {}
@@ -7655,7 +7575,7 @@ snapshots:
'@stylistic/eslint-plugin@5.10.0(eslint@10.4.1(jiti@2.6.1))':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.6.1))
- '@typescript-eslint/types': 8.58.0
+ '@typescript-eslint/types': 8.60.1
eslint: 10.4.1(jiti@2.6.1)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
@@ -7703,13 +7623,11 @@ snapshots:
'@types/eslint@9.6.1':
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/json-schema': 7.0.15
'@types/esrecurse@4.3.1': {}
- '@types/estree@1.0.8': {}
-
'@types/estree@1.0.9': {}
'@types/etag@1.8.4':
@@ -7888,8 +7806,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.58.0': {}
-
'@typescript-eslint/types@8.60.1': {}
'@typescript-eslint/typescript-estree@8.60.1(typescript@5.9.3)':
@@ -7951,7 +7867,7 @@ snapshots:
istanbul-lib-report: 3.0.1
istanbul-reports: 3.2.0
magicast: 0.5.3
- obug: 2.1.1
+ obug: 2.1.2
std-env: 4.1.0
tinyrainbow: 3.1.0
vitest: 4.1.8(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/coverage-v8@4.1.8)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.13.4(@types/node@25.9.1)(typescript@5.9.3))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(tsx@4.22.4)(yaml@2.9.0))
@@ -8026,13 +7942,6 @@ snapshots:
agent-base@9.0.0: {}
- ajv@6.14.0:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
ajv@6.15.0:
dependencies:
fast-deep-equal: 3.1.3
@@ -8189,16 +8098,6 @@ snapshots:
cacheable-lookup@7.0.0: {}
- cacheable-request@13.0.18:
- dependencies:
- '@types/http-cache-semantics': 4.2.0
- get-stream: 9.0.1
- http-cache-semantics: 4.2.0
- keyv: 5.6.0
- mimic-response: 4.0.0
- normalize-url: 8.1.1
- responselike: 4.0.2
-
cacheable-request@13.0.19:
dependencies:
'@types/http-cache-semantics': 4.2.0
@@ -8751,7 +8650,7 @@ snapshots:
globals: 15.15.0
globrex: 0.1.2
ignore: 5.3.2
- semver: 7.7.4
+ semver: 7.8.2
optionalDependencies:
ts-declaration-location: 1.0.7(typescript@5.9.3)
typescript: 5.9.3
@@ -8762,7 +8661,7 @@ snapshots:
eslint-plugin-unicorn@64.0.0(eslint@10.4.1(jiti@2.6.1)):
dependencies:
- '@babel/helper-validator-identifier': 7.28.5
+ '@babel/helper-validator-identifier': 7.29.7
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.1(jiti@2.6.1))
change-case: 5.4.4
ci-info: 4.4.0
@@ -8777,13 +8676,13 @@ snapshots:
pluralize: 8.0.0
regexp-tree: 0.1.27
regjsparser: 0.13.0
- semver: 7.7.4
+ semver: 7.8.2
strip-indent: 4.1.1
eslint-plugin-yml@3.4.0(eslint@10.4.1(jiti@2.6.1)):
dependencies:
'@eslint/core': 1.2.1
- '@eslint/plugin-kit': 0.7.1
+ '@eslint/plugin-kit': 0.7.2
'@ota-meshi/ast-token-store': 0.3.0
diff-sequences: 29.6.3
escape-string-regexp: 5.0.0
@@ -9157,14 +9056,14 @@ snapshots:
'@sindresorhus/is': 8.0.0
byte-counter: 0.1.0
cacheable-lookup: 7.0.0
- cacheable-request: 13.0.18
+ cacheable-request: 13.0.19
chunk-data: 0.1.0
decompress-response: 10.0.0
http2-wrapper: 2.2.1
keyv: 5.6.0
lowercase-keys: 4.0.1
responselike: 4.0.2
- type-fest: 5.6.0
+ type-fest: 5.7.0
uint8array-extras: 1.5.0
graceful-fs@4.2.11: {}
@@ -10102,7 +10001,7 @@ snapshots:
statuses: 2.0.2
strict-event-emitter: 0.5.1
tough-cookie: 6.0.1
- type-fest: 5.5.0
+ type-fest: 5.7.0
until-async: 3.0.2
yargs: 17.7.2
optionalDependencies:
@@ -10156,7 +10055,7 @@ snapshots:
inspector: 0.5.0
open: 8.4.2
undici: 8.3.0
- ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- utf-8-validate
@@ -10193,8 +10092,6 @@ snapshots:
oauth-sign@0.9.0: {}
- obug@2.1.1: {}
-
obug@2.1.2: {}
ofetch@1.5.1:
@@ -10446,12 +10343,6 @@ snapshots:
pluralize@8.0.0: {}
- postcss@8.5.14:
- dependencies:
- nanoid: 3.3.12
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.5.15:
dependencies:
nanoid: 3.3.12
@@ -10796,7 +10687,7 @@ snapshots:
is-plain-object: 5.0.0
launder: 1.7.1
parse-srcset: 1.0.2
- postcss: 8.5.14
+ postcss: 8.5.15
sax@1.6.0: {}
@@ -10808,10 +10699,6 @@ snapshots:
dependencies:
parseley: 0.13.1
- semver@7.7.4: {}
-
- semver@7.8.2: {}
-
semver@7.8.2: {}
set-cookie-parser@3.1.0: {}
@@ -10882,7 +10769,7 @@ snapshots:
dependencies:
agent-base: 9.0.0
debug: 4.4.3
- socks: 2.8.7
+ socks: 2.8.9
transitivePeerDependencies:
- supports-color
@@ -10894,11 +10781,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- socks@2.8.7:
- dependencies:
- ip-address: 10.2.0
- smart-buffer: 4.2.0
-
socks@2.8.9:
dependencies:
ip-address: 10.2.0
@@ -11041,7 +10923,7 @@ snapshots:
pako: 2.1.0
path-browserify: 1.0.1
real-cancellable-promise: 1.2.3
- socks: 2.8.7
+ socks: 2.8.9
store2: 2.14.4
ts-custom-error: 3.3.1
websocket: 1.0.35
@@ -11207,14 +11089,6 @@ snapshots:
type-fest@4.41.0: {}
- type-fest@5.5.0:
- dependencies:
- tagged-tag: 1.0.0
-
- type-fest@5.6.0:
- dependencies:
- tagged-tag: 1.0.0
-
type-fest@5.7.0:
dependencies:
tagged-tag: 1.0.0
@@ -11244,7 +11118,7 @@ snapshots:
undici-types@7.25.0: {}
- undici@6.26.0: {}
+ undici@6.25.0: {}
undici@7.24.8: {}
@@ -11410,7 +11284,7 @@ snapshots:
es-module-lexer: 2.1.0
expect-type: 1.3.0
magic-string: 0.30.21
- obug: 2.1.1
+ obug: 2.1.2
pathe: 2.0.3
picomatch: 4.0.4
std-env: 4.1.0
@@ -11571,11 +11445,6 @@ snapshots:
bufferutil: 1.1.0
utf-8-validate: 1.1.0
- ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
- optionalDependencies:
- bufferutil: 4.1.0
- utf-8-validate: 5.0.10
-
ws@8.20.1(bufferutil@4.1.0)(utf-8-validate@5.0.10):
optionalDependencies:
bufferutil: 4.1.0
@@ -11607,9 +11476,7 @@ snapshots:
yaml-eslint-parser@2.0.0:
dependencies:
eslint-visitor-keys: 5.0.1
- yaml: 2.8.3
-
- yaml@2.8.3: {}
+ yaml: 2.9.0
yaml@2.9.0: {}
From 75d43dd0868d3a169cb0bc94eabf354d26af5e9c Mon Sep 17 00:00:00 2001
From: Tony
Date: Fri, 5 Jun 2026 20:04:39 +0800
Subject: [PATCH 022/670] chore: add eslint-plugin-regexp (#22189)
* chore: add eslint-plugin-regexp
* chore: autofix
* chore: fix no-useless-flag
* chore: fix optimal-lookaround-quantifier
* chore: fix no-lazy-ends
* chore: fix no-contradiction-with-assertion
* chore: fix no-useless-assertions
* chore: fix no-useless-quantifier
* chore: fix remaining regexp issues
* fix: regex for WFU news link validation
---
.oxlintrc.json | 73 +++++++++++++++++--
lib/middleware/anti-hotlink.ts | 4 +-
lib/middleware/template.tsx | 5 +-
lib/routes/12371/zxfb.ts | 2 +-
lib/routes/163/news/special.ts | 4 +-
lib/routes/163/open/vip.tsx | 2 +-
lib/routes/2048/index.tsx | 2 +-
lib/routes/36kr/hot-list.ts | 2 +-
lib/routes/36kr/index.ts | 4 +-
lib/routes/36kr/utils.ts | 2 +-
lib/routes/3dmgame/utils.ts | 2 +-
lib/routes/4ksj/forum.tsx | 2 +-
lib/routes/69shu/article.ts | 6 +-
lib/routes/6park/index.ts | 2 +-
lib/routes/6park/news.ts | 2 +-
lib/routes/9to5/utils.ts | 2 +-
lib/routes/abc/index.ts | 4 +-
lib/routes/acfun/video.ts | 2 +-
lib/routes/aip/journal.ts | 2 +-
lib/routes/altotrain/news.ts | 2 +-
lib/routes/anthropic/research.ts | 2 +-
lib/routes/aqara/news.ts | 2 +-
lib/routes/arcteryx/regear-new-arrivals.tsx | 2 +-
lib/routes/bbc/utils.tsx | 2 +-
lib/routes/bilibili/cache.ts | 4 +-
lib/routes/bjsk/index.ts | 3 +-
lib/routes/bjtu/gs.ts | 2 +-
lib/routes/bjwxdxh/index.ts | 2 +-
lib/routes/bloomberg/utils.ts | 2 +-
lib/routes/booru/mmda.ts | 2 +-
lib/routes/bse/index.ts | 2 +-
lib/routes/caixin/category.ts | 2 +-
lib/routes/caixin/utils-fulltext.ts | 2 +-
lib/routes/cas/sim/kyjz.ts | 2 +-
lib/routes/chinaratings/credit-research.ts | 2 +-
lib/routes/chnmus/exhibition.tsx | 2 +-
lib/routes/cih-index/report.ts | 2 +-
lib/routes/cisia/index.ts | 2 +-
lib/routes/cline/blog.ts | 2 +-
lib/routes/cool18/index.ts | 2 +-
lib/routes/ctinews/topic.ts | 2 +-
lib/routes/dailypush/utils.ts | 2 +-
lib/routes/daum/potplayer.ts | 6 +-
lib/routes/dayanzai/index.ts | 2 +-
lib/routes/dcard/utils.ts | 2 +-
lib/routes/dealstreetasia/home.ts | 2 +-
lib/routes/dedao/knowledge.tsx | 2 +-
lib/routes/dedao/user.tsx | 2 +-
lib/routes/dehenglaw/index.ts | 2 +-
lib/routes/dianping/user.ts | 2 +-
lib/routes/dlnews/category.tsx | 2 +-
lib/routes/dnaindia/common.ts | 2 +-
lib/routes/domp4/detail.ts | 2 +-
lib/routes/dongqiudi/utils.ts | 2 +-
lib/routes/dora-world/article.ts | 2 +-
lib/routes/douban/other/replied.ts | 2 +-
lib/routes/douban/other/replies.ts | 2 +-
lib/routes/dribbble/utils.tsx | 2 +-
lib/routes/ehentai/ehapi.ts | 2 +-
lib/routes/fanqienovel/page.ts | 2 +-
lib/routes/flashcat/blog.ts | 34 ++++-----
lib/routes/gamer/ani/anime.ts | 2 +-
lib/routes/getitfree/index.ts | 2 +-
lib/routes/gigazine/en.ts | 2 +-
lib/routes/globallawreview/index.ts | 2 +-
lib/routes/google/album.ts | 2 +-
lib/routes/google/scholar.ts | 2 +-
lib/routes/gov/beijing/kw/index.ts | 4 +-
lib/routes/gov/cac/index.ts | 2 +-
lib/routes/gov/ccdi/utils.ts | 2 +-
lib/routes/gov/cn/news/index.ts | 8 +-
lib/routes/gov/general/general.ts | 4 +-
lib/routes/gov/guangdong/tqyb/tfxtq.tsx | 2 +-
lib/routes/gov/miit/wjfb.ts | 2 +-
lib/routes/gov/miit/yjzj.ts | 2 +-
lib/routes/gov/mofcom/article.ts | 2 +-
lib/routes/gov/nrta/news.ts | 2 +-
lib/routes/gov/nsfc/index.ts | 2 +-
lib/routes/gov/stats/index.tsx | 2 +-
lib/routes/gov/zhengce/govall.ts | 2 +-
lib/routes/gov/zj/ningbogzw-notice.ts | 2 +-
lib/routes/gov/zj/ningborsjnotice.ts | 2 +-
lib/routes/guancha/personalpage.ts | 2 +-
lib/routes/hk01/utils.tsx | 2 +-
lib/routes/hkej/index.tsx | 2 +-
lib/routes/hongkong/chp.ts | 2 +-
lib/routes/hpoi/utils.ts | 4 +-
lib/routes/hupu/utils.ts | 4 +-
lib/routes/hypergryph/arknights/arktca.ts | 2 +-
lib/routes/ifeng/feng.ts | 2 +-
lib/routes/ifeng/news.tsx | 6 +-
lib/routes/inewsweek/index.ts | 2 +-
lib/routes/iwara/utils.ts | 2 +-
lib/routes/ixigua/user-video.tsx | 2 +-
lib/routes/jandan/utils.ts | 2 +-
lib/routes/javbus/index.tsx | 4 +-
lib/routes/jiemian/common.tsx | 2 +-
lib/routes/jike/user.ts | 2 +-
lib/routes/jike/utils.ts | 2 +-
lib/routes/jimmyspa/books.ts | 2 +-
lib/routes/kunchengblog/essay.ts | 2 +-
.../leetcode/dailyquestion-solution-cn.ts | 2 +-
lib/routes/lfsyd/utils.tsx | 2 +-
lib/routes/line/utils.ts | 2 +-
lib/routes/lorientlejour/index.tsx | 2 +-
lib/routes/luolei/index.tsx | 2 +-
lib/routes/magazinelib/latest-magazine.tsx | 2 +-
lib/routes/mastodon/utils.ts | 4 +-
lib/routes/maven/central.ts | 2 +-
lib/routes/metacritic/index.tsx | 2 +-
lib/routes/meteor/utils.ts | 2 +-
lib/routes/mirror/index.ts | 2 +-
lib/routes/modelscope/community.tsx | 2 +-
lib/routes/mrinalxdev/blog.ts | 2 +-
lib/routes/mydrivers/index.tsx | 2 +-
lib/routes/mydrivers/rank.ts | 2 +-
lib/routes/natgeo/dailyphoto.tsx | 2 +-
.../nationalgeographic/latest-stories.tsx | 2 +-
lib/routes/nature/utils.ts | 2 +-
lib/routes/ncpssd/newlist.ts | 2 +-
lib/routes/neu/yz.ts | 2 +-
lib/routes/nga/forum.ts | 4 +-
lib/routes/nga/post.ts | 36 ++++-----
lib/routes/nhentai/util.tsx | 2 +-
lib/routes/nikkei/cn/index.ts | 2 +-
lib/routes/nintendo/eshop-hk.ts | 4 +-
lib/routes/nintendo/system-update.ts | 2 +-
lib/routes/nowcoder/discuss.ts | 2 +-
lib/routes/odaily/activity.ts | 2 +-
lib/routes/odaily/post.ts | 2 +-
lib/routes/oeeee/utils.ts | 2 +-
lib/routes/outagereport/index.ts | 4 +-
lib/routes/papers/category.ts | 2 +-
lib/routes/parliament/section77.ts | 4 +-
lib/routes/patreon/feed.tsx | 2 +-
lib/routes/pixiv/novel-api/content/utils.ts | 4 +-
lib/routes/playno1/av.ts | 2 +-
lib/routes/qingting/channel.ts | 2 +-
lib/routes/qingting/podcast.ts | 2 +-
lib/routes/quantamagazine/archive.ts | 6 +-
lib/routes/rawkuma/manga.tsx | 2 +-
lib/routes/readhub/index.ts | 2 +-
lib/routes/readhub/util.ts | 2 +-
lib/routes/reuters/common.tsx | 4 +-
lib/routes/runyeah/posts.ts | 2 +-
lib/routes/shisu/en.ts | 4 +-
lib/routes/sina/utils.tsx | 2 +-
lib/routes/sis001/common.ts | 4 +-
lib/routes/smartlink/index.ts | 2 +-
lib/routes/sohu/mobile.ts | 2 +-
lib/routes/sohu/mp.tsx | 2 +-
lib/routes/solidot/_article.ts | 2 +-
lib/routes/sony/downloads.ts | 2 +-
lib/routes/steam/curator.tsx | 2 +-
lib/routes/steam/news.ts | 6 +-
lib/routes/steam/workshop-search.tsx | 2 +-
lib/routes/supchina/index.ts | 4 +-
lib/routes/swjtu/gsee/yjs.ts | 2 +-
lib/routes/swjtu/scai.ts | 2 +-
lib/routes/swjtu/sports.ts | 2 +-
lib/routes/swpu/utils.ts | 2 +-
lib/routes/szse/disclosure/listed-notice.ts | 2 +-
lib/routes/tass/news.ts | 2 +-
lib/routes/tencent/news/author.tsx | 2 +-
lib/routes/tesla/cx.ts | 2 +-
lib/routes/threads/utils.ts | 2 +-
lib/routes/transcriptforest/index.ts | 2 +-
.../twitter/api/web-api/gql-id-resolver.ts | 2 +-
lib/routes/twitter/utils.ts | 2 +-
lib/routes/txrjy/fornumtopic.tsx | 4 +-
lib/routes/udn/breaking-news.tsx | 4 +-
lib/routes/upc/jwc.ts | 2 +-
lib/routes/ups/track.ts | 4 +-
lib/routes/uptimerobot/rss.tsx | 2 +-
lib/routes/vcb-s/category.ts | 2 +-
lib/routes/vcb-s/index.ts | 2 +-
lib/routes/weibo/utils.ts | 6 +-
lib/routes/wenku8/volume.ts | 2 +-
lib/routes/wfu/news.ts | 2 +-
lib/routes/wikipedia/current-events.ts | 8 +-
lib/routes/wmc-bj/publish.tsx | 2 +-
lib/routes/wnacg/common.tsx | 2 +-
lib/routes/wordpress/index.ts | 4 +-
lib/routes/wsj/news.ts | 2 +-
lib/routes/xaufe/jiaowu.ts | 2 +-
lib/routes/xhamster/index.ts | 2 +-
lib/routes/xinpianchang/index.ts | 2 +-
lib/routes/xueqiu/snb.ts | 2 +-
lib/routes/xueqiu/user.ts | 2 +-
lib/routes/xys/new.tsx | 2 +-
lib/routes/yamibo/utils.ts | 6 +-
lib/routes/yicai/utils.ts | 2 +-
lib/routes/ynet/list.ts | 2 +-
lib/routes/youtube/api/google.ts | 2 +-
lib/routes/youtube/community.tsx | 2 +-
lib/routes/youtube/custom.ts | 2 +-
lib/routes/zaker/utils.ts | 2 +-
lib/routes/zaobao/util.tsx | 2 +-
lib/routes/zhihu/utils.ts | 4 +-
lib/routes/zhonglun/index.ts | 2 +-
lib/utils/camelcase-keys.ts | 2 +-
lib/utils/common-config.ts | 2 +-
lib/utils/parse-date.ts | 12 +--
lib/utils/valid-host.ts | 2 +-
lib/utils/wechat-mp.ts | 2 +-
package.json | 1 +
pnpm-lock.yaml | 59 +++++++++++++++
scripts/workflow/format-description.ts | 2 +-
208 files changed, 418 insertions(+), 295 deletions(-)
diff --git a/.oxlintrc.json b/.oxlintrc.json
index 85967256d352..f3a91894a809 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -14,6 +14,7 @@
"jsPlugins": [
{ "name": "n", "specifier": "eslint-plugin-n" },
{ "name": "unicorn-js", "specifier": "eslint-plugin-unicorn" },
+ { "name": "regexp", "specifier": "eslint-plugin-regexp" },
"@stylistic/eslint-plugin",
"eslint-plugin-simple-import-sort",
"oxlint-plugin-eslint",
@@ -32,19 +33,19 @@
"no-const-assign": "error",
"no-constant-binary-expression": "error",
"no-constant-condition": "error",
- // "no-control-regex": "error", -> off
+ "no-control-regex": "error",
"no-debugger": "error",
"no-dupe-class-members": "error",
"no-dupe-else-if": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
- "no-empty-character-class": "error",
+ // "no-empty-character-class": "error", -> off, handled by eslint-plugin-regexp
"no-empty-pattern": "error",
"no-ex-assign": "error",
"no-fallthrough": "error",
"no-func-assign": "error",
"no-import-assign": "error",
- "no-invalid-regexp": "error",
+ // "no-invalid-regexp": "error", -> off, handled by eslint-plugin-regexp
"no-irregular-whitespace": "error",
"no-loss-of-precision": "error",
"no-misleading-character-class": "error",
@@ -65,7 +66,7 @@
"no-unsafe-optional-chaining": "error",
"no-unused-private-class-members": "error",
// "no-unused-vars": "error", -> off for @typescript-eslint/no-unused-vars
- "no-useless-backreference": "error",
+ // "no-useless-backreference": "error", -> off, handled by eslint-plugin-regexp
"use-isnan": "error",
"valid-typeof": "error",
// #endregion
@@ -289,12 +290,74 @@
"unicorn/throw-new-error": "error",
// #endregion
+ // #region --- regexp recommended ---
+ "regexp/confusing-quantifier": "warn",
+ "regexp/control-character-escape": "error",
+ "regexp/match-any": "error",
+ "regexp/negation": "error",
+ "regexp/no-contradiction-with-assertion": "error",
+ "regexp/no-dupe-characters-character-class": "error",
+ "regexp/no-dupe-disjunctions": "error",
+ "regexp/no-empty-alternative": "warn",
+ "regexp/no-empty-capturing-group": "error",
+ "regexp/no-empty-character-class": "error",
+ "regexp/no-empty-group": "error",
+ "regexp/no-empty-lookarounds-assertion": "error",
+ "regexp/no-empty-string-literal": "error",
+ "regexp/no-escape-backspace": "error",
+ "regexp/no-extra-lookaround-assertions": "error",
+ "regexp/no-invalid-regexp": "error",
+ "regexp/no-invisible-character": "error",
+ "regexp/no-lazy-ends": "warn",
+ "regexp/no-legacy-features": "error",
+ "regexp/no-misleading-capturing-group": "error",
+ "regexp/no-misleading-unicode-character": "error",
+ "regexp/no-missing-g-flag": "error",
+ "regexp/no-non-standard-flag": "error",
+ "regexp/no-obscure-range": "error",
+ "regexp/no-optional-assertion": "error",
+ "regexp/no-potentially-useless-backreference": "warn",
+ "regexp/no-super-linear-backtracking": "error",
+ "regexp/no-trivially-nested-assertion": "error",
+ "regexp/no-trivially-nested-quantifier": "error",
+ "regexp/no-unused-capturing-group": "error",
+ "regexp/no-useless-assertions": "error",
+ "regexp/no-useless-backreference": "error",
+ "regexp/no-useless-character-class": "error",
+ "regexp/no-useless-dollar-replacements": "error",
+ "regexp/no-useless-escape": "error",
+ "regexp/no-useless-flag": "warn",
+ "regexp/no-useless-lazy": "error",
+ "regexp/no-useless-non-capturing-group": "error",
+ "regexp/no-useless-quantifier": "error",
+ "regexp/no-useless-range": "error",
+ "regexp/no-useless-set-operand": "error",
+ "regexp/no-useless-string-literal": "error",
+ "regexp/no-useless-two-nums-quantifier": "error",
+ "regexp/no-zero-quantifier": "error",
+ "regexp/optimal-lookaround-quantifier": "warn",
+ "regexp/optimal-quantifier-concatenation": "error",
+ "regexp/prefer-character-class": "error",
+ "regexp/prefer-d": "error",
+ "regexp/prefer-plus-quantifier": "error",
+ "regexp/prefer-predefined-assertion": "error",
+ "regexp/prefer-question-quantifier": "error",
+ "regexp/prefer-range": "error",
+ "regexp/prefer-set-operation": "error",
+ "regexp/prefer-star-quantifier": "error",
+ "regexp/prefer-unicode-codepoint-escapes": "error",
+ "regexp/prefer-w": "error",
+ "regexp/simplify-set-operations": "error",
+ "regexp/sort-flags": "error",
+ "regexp/strict": "error",
+ "regexp/use-ignore-case": "error",
+ // #endregion
+
// --- custom rules ---
// #region --- possible problems ---
"array-callback-return": ["error", { "allowImplicit": true }],
"no-await-in-loop": "error",
- "no-control-regex": "off",
"no-prototype-builtins": "off",
"no-undef": "off", // typescript/eslint-recommended, ts(2552)
// #endregion
diff --git a/lib/middleware/anti-hotlink.ts b/lib/middleware/anti-hotlink.ts
index 49a849570b04..7dd6e897661d 100644
--- a/lib/middleware/anti-hotlink.ts
+++ b/lib/middleware/anti-hotlink.ts
@@ -6,7 +6,7 @@ import { config } from '@/config';
import type { Data } from '@/types';
import logger from '@/utils/logger';
-const templateRegex = /\${([^{}]+)}/g;
+const templateRegex = /\$\{([^{}]+)\}/g;
const allowedUrlProperties = new Set(['hash', 'host', 'hostname', 'href', 'origin', 'password', 'pathname', 'port', 'protocol', 'search', 'searchParams', 'username']);
// match path or sub-path
@@ -150,7 +150,7 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
if (item.enclosure_url && item.enclosure_type) {
if (item.enclosure_type.startsWith('image/')) {
item.enclosure_url = replaceUrl(imageHotlinkTemplate, item.enclosure_url);
- } else if (/^(video|audio)\//.test(item.enclosure_type)) {
+ } else if (/^(?:video|audio)\//.test(item.enclosure_type)) {
item.enclosure_url = replaceUrl(multimediaHotlinkTemplate, item.enclosure_url);
}
}
diff --git a/lib/middleware/template.tsx b/lib/middleware/template.tsx
index d9f5ed98655c..78673a9504a5 100644
--- a/lib/middleware/template.tsx
+++ b/lib/middleware/template.tsx
@@ -28,7 +28,7 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
return ctx.json(ctx.get('json') || { message: 'plugin does not set debug json' });
}
- if (/(\d+)\.debug\.html$/.test(outputType)) {
+ if (/\d+\.debug\.html$/.test(outputType)) {
const index = Number.parseInt(outputType.match(/(\d+)\.debug\.html$/)?.[1] || '0');
return ctx.html(data?.item?.[index]?.description || `data.item[${index}].description not found`);
}
@@ -58,7 +58,8 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
// https://stackoverflow.com/questions/1497885/remove-control-characters-from-php-string/1497928#1497928
// remove unicode control characters
// see #14940 #14943 #15262
- item.description = item.description.replaceAll(/[\u0000-\u0009\u000B\u000C\u000E-\u001F\u007F\u200B\uFFFF]/g, '');
+ // oxlint-disable-next-line no-control-regex
+ item.description = item.description.replaceAll(/[\u0000-\u0009\v\f\u000E-\u001F\u007F\u200B\uFFFF]/g, '');
}
if (typeof item.author === 'string') {
diff --git a/lib/routes/12371/zxfb.ts b/lib/routes/12371/zxfb.ts
index e5049220597f..b6b521b9254a 100644
--- a/lib/routes/12371/zxfb.ts
+++ b/lib/routes/12371/zxfb.ts
@@ -16,7 +16,7 @@ const handler = async (ctx) => {
const $ = cheerio.load(response.data);
- const pattern = /item=(\[{.*?}]);/;
+ const pattern = /item=(\[\{.*?\}\]);/;
const newsList = JSON.parse($('script[language="javascript"]').text().match(pattern)?.[1].replaceAll("'", '"') || '[]');
const topNewsList = newsList.slice(0, limit).map((item) => ({
diff --git a/lib/routes/163/news/special.ts b/lib/routes/163/news/special.ts
index ea7d1948c278..86f93caba8df 100644
--- a/lib/routes/163/news/special.ts
+++ b/lib/routes/163/news/special.ts
@@ -102,7 +102,7 @@ async function handler(ctx) {
const url = `https://3g.163.com/touch/reconstruct/article/list/${type}/0-20.html`;
const response = await got(url);
const data = response.data;
- const matches = data.replaceAll(/\s/g, '').match(/artiList\((.*?)]}\)/);
+ const matches = data.replaceAll(/\s/g, '').match(/artiList\((.*?)\]\}\)/);
const articlelist0 = matches[1].replace(/".*?wangning/, '"articles') + ']}';
const articlelist = JSON.parse(articlelist0);
const articles = articlelist.articles;
@@ -112,7 +112,7 @@ async function handler(ctx) {
let url = article.url;
if (url === null || article.skipType === 'video') {
const skipurl = article.skipURL;
- const vid = skipurl.match(/vid=(.*?)$/);
+ const vid = skipurl.match(/vid=(.*)$/);
if (vid !== null) {
url = `https://3g.163.com/exclusive/video/${vid[1]}.html`;
}
diff --git a/lib/routes/163/open/vip.tsx b/lib/routes/163/open/vip.tsx
index 4ee699dbc0dd..e34a1da598a2 100644
--- a/lib/routes/163/open/vip.tsx
+++ b/lib/routes/163/open/vip.tsx
@@ -65,7 +65,7 @@ async function handler() {
const initialState = JSON.parse(
$('script')
.text()
- .match(/window\.__INITIAL_STATE__=(.*);\(function\(\){var/)[1]
+ .match(/window\.__INITIAL_STATE__=(.*);\(function\(\)\{var/)[1]
);
const list = Object.values(initialState.courseindex.myModules).flatMap((mod) =>
diff --git a/lib/routes/2048/index.tsx b/lib/routes/2048/index.tsx
index 46c1e53563c2..4cf967857835 100644
--- a/lib/routes/2048/index.tsx
+++ b/lib/routes/2048/index.tsx
@@ -164,7 +164,7 @@ async function handler(ctx) {
}
}
if (!item.enclosure_url) {
- const hashMatch = readTpcHtml.match(/哈希校验[^;]*;\s*([a-fA-F0-9]{40})\s*[;;]/);
+ const hashMatch = readTpcHtml.match(/哈希校验[^;]*;\s*([a-f0-9]{40})\s*[;;]/i);
const magnetFromHash = hashMatch ? `magnet:?xt=urn:btih:${hashMatch[1]}` : null;
const magnetFromText = magnetText.match(/magnet:\?xt=urn:btih:[^\s"'<>]+/)?.[0];
const magnetLink = magnetFromText ?? readTpcHtml.match(/magnet:\?xt=urn:btih:[^\s"'<>]+/)?.[0] ?? magnetFromHash ?? copyLink;
diff --git a/lib/routes/36kr/hot-list.ts b/lib/routes/36kr/hot-list.ts
index c28b4f287e81..61825e4e6b3e 100644
--- a/lib/routes/36kr/hot-list.ts
+++ b/lib/routes/36kr/hot-list.ts
@@ -79,7 +79,7 @@ async function handler(ctx) {
},
});
- const data = getProperty(JSON.parse(response.data.match(/window.initialState=({.*})/)[1]), categories[category].key);
+ const data = getProperty(JSON.parse(response.data.match(/window.initialState=(\{.*\})/)[1]), categories[category].key);
let items = data
.slice(0, ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit')) : 10)
diff --git a/lib/routes/36kr/index.ts b/lib/routes/36kr/index.ts
index 6c24a1d83726..e3b085f41cec 100644
--- a/lib/routes/36kr/index.ts
+++ b/lib/routes/36kr/index.ts
@@ -48,7 +48,7 @@ async function handler(ctx) {
const $ = load(response.data);
- const data = JSON.parse(response.data.match(/"itemList":(\[.*?])/)[1]);
+ const data = JSON.parse(response.data.match(/"itemList":(\[.*?\])/)[1]);
let items = data
.slice(0, ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit')) : 30)
@@ -64,7 +64,7 @@ async function handler(ctx) {
};
});
- if (!/^\/(search|newsflashes)/.test(path)) {
+ if (!/^\/(?:search|newsflashes)/.test(path)) {
items = await Promise.all(items.map((item) => ProcessItem(item, cache.tryGet)));
}
diff --git a/lib/routes/36kr/utils.ts b/lib/routes/36kr/utils.ts
index 5149e1ae2864..a909ece47841 100644
--- a/lib/routes/36kr/utils.ts
+++ b/lib/routes/36kr/utils.ts
@@ -11,7 +11,7 @@ export const ProcessItem = (item, tryGet) =>
tryGet(item.link, async () => {
const detailResponse = await ofetch(item.link);
- const cipherTextList = detailResponse.match(/{"state":"(.*)","isEncrypt":true}/) ?? [];
+ const cipherTextList = detailResponse.match(/\{"state":"(.*)","isEncrypt":true\}/) ?? [];
if (cipherTextList.length === 0) {
const $ = load(detailResponse);
diff --git a/lib/routes/3dmgame/utils.ts b/lib/routes/3dmgame/utils.ts
index 37bda824243a..e714f989c81b 100644
--- a/lib/routes/3dmgame/utils.ts
+++ b/lib/routes/3dmgame/utils.ts
@@ -11,7 +11,7 @@ const parseArticle = (item, tryGet) =>
if (item.link.startsWith('https://dl.3dmgame.com/')) {
const lis = $('.patchtop .lis');
- const [, category, pubDate, author] = lis.text().match(/补丁类型:(.*?)\n.*整理时间:(.*?)\n.*补丁制作:(.*?)\n/s);
+ const [, category, pubDate, author] = lis.text().match(/补丁类型:([^\n]*)\n.*整理时间:([^\n]*)\n.*补丁制作:([^\n]*)\n/s);
item.description = lis.html() + $('.L_title').html() + $('.GmL_1').html();
item.category = category;
diff --git a/lib/routes/4ksj/forum.tsx b/lib/routes/4ksj/forum.tsx
index 4762c3e87bb8..ae514a5d4c10 100644
--- a/lib/routes/4ksj/forum.tsx
+++ b/lib/routes/4ksj/forum.tsx
@@ -114,7 +114,7 @@ async function handler(ctx) {
const scriptUrl = new URL(scriptPath, rootUrl).href;
const scriptResponse = await ofetch(scriptUrl);
- const key = scriptResponse.match(/{var key="(.*?)"/)?.[1];
+ const key = scriptResponse.match(/\{var key="(.*?)"/)?.[1];
const value = scriptResponse.match(/",value="(.*?)"/)?.[1];
const getPath = scriptResponse.match(/\.get\("(.*?&key=)"/)?.[1];
diff --git a/lib/routes/69shu/article.ts b/lib/routes/69shu/article.ts
index bc13b6c30ce7..39ca17180054 100644
--- a/lib/routes/69shu/article.ts
+++ b/lib/routes/69shu/article.ts
@@ -54,8 +54,8 @@ const createItem = (url: string) =>
cache.tryGet(url, async () => {
const html = await get(url);
const $ = load(html);
- const { articleid, chapterid, chaptername } = parseObject(/bookinfo\s?=\s?{[\S\s]+?}/, $('head>script:not([src])').text());
- const decryptionMap = parseObject(/_\d+\s?=\s?{[\S\s]+?}/, $('.txtnav+script').text());
+ const { articleid, chapterid, chaptername } = parseObject(/bookinfo\s?=\s?\{[\s\S]+?\}/, $('head>script:not([src])').text());
+ const decryptionMap = parseObject(/_\d+\s?=\s?\{[\s\S]+?\}/, $('.txtnav+script').text());
return {
title: chaptername,
@@ -70,7 +70,7 @@ const parseObject = (reg: RegExp, str: string): Record => {
const obj = {};
const match = reg.exec(str);
if (match) {
- for (const line of match[0].matchAll(/(\w+):\s?["']?([\S\s]+?)["']?[\n,}]/g)) {
+ for (const line of match[0].matchAll(/(\w+):\s?["']?([\s\S]+?)["']?[\n,}]/g)) {
obj[line[1]] = line[2];
}
}
diff --git a/lib/routes/6park/index.ts b/lib/routes/6park/index.ts
index 4e2015f42835..e3904f8f9342 100644
--- a/lib/routes/6park/index.ts
+++ b/lib/routes/6park/index.ts
@@ -66,7 +66,7 @@ async function handler(ctx) {
const content = load(detailResponse.data);
item.title = content('title').text().replace(' -6park.com', '');
- item.author = detailResponse.data.match(/送交者: .*>(.*)<.*\[/)[1];
+ item.author = detailResponse.data.match(/送交者:[^>]*>([^<]*)<\/a>/)[1].trim();
item.pubDate = timezone(parseDate(detailResponse.data.match(/于 (.*) 已读/)[1], 'YYYY-MM-DD h:m'), +8);
item.description = content('pre')
.html()
diff --git a/lib/routes/6park/news.ts b/lib/routes/6park/news.ts
index 2050185e5d8e..30941bde8440 100644
--- a/lib/routes/6park/news.ts
+++ b/lib/routes/6park/news.ts
@@ -76,7 +76,7 @@ async function handler(ctx) {
const content = load(detailResponse.data);
- const matches = detailResponse.data.match(/新闻来源:(.*?)于.*(\d{4}(?:-\d{2}){2} (?:\d{1,2}:){2}\d{1,2})/);
+ const matches = detailResponse.data.match(/新闻来源:([^于]*)于.*(\d{4}(?:-\d{2}){2} (?:\d{1,2}:){2}\d{1,2})/);
item.title = content('h2').text();
item.author = matches[1].trim();
diff --git a/lib/routes/9to5/utils.ts b/lib/routes/9to5/utils.ts
index 3cbb329b1fc7..f4c39a2a89ab 100644
--- a/lib/routes/9to5/utils.ts
+++ b/lib/routes/9to5/utils.ts
@@ -22,7 +22,7 @@ const ProcessFeed = (data) => {
content.find('div').each((i, e) => {
if ($(e)[0].attribs.class) {
const classes = $(e)[0].attribs.class;
- if (/\w{10}\s\w{10}/g.test(classes)) {
+ if (/\w{10}\s\w{10}/.test(classes)) {
$(e).remove();
}
}
diff --git a/lib/routes/abc/index.ts b/lib/routes/abc/index.ts
index a4eea519884e..89a9b57ed96c 100644
--- a/lib/routes/abc/index.ts
+++ b/lib/routes/abc/index.ts
@@ -49,7 +49,7 @@ async function handler(ctx) {
const feedUrl = new URL(`news/feed/${documentId}/rss.xml`, rootUrl).href;
const feedResponse = await ofetch(feedUrl);
- currentUrl = feedResponse.match(/([\w-./:?]+)<\/link>/)[1];
+ currentUrl = feedResponse.match(/([\w./:?-]+)<\/link>/)[1];
}
const currentResponse = await ofetch(currentUrl);
@@ -124,7 +124,7 @@ async function handler(ctx) {
item.title = content('meta[property="og:title"]').prop('content');
item.description = '';
- const enclosurePattern = String.raw`"(?:MIME|content)?Type":"([\w]+/[\w]+)".*?"(?:fileS|s)?ize":(\d+),.*?"url":"([\w-.:/?]+)"`;
+ const enclosurePattern = String.raw`"(?:MIME|content)?Type":"(\w+/\w+)".*?"(?:fileS|s)?ize":(\d+),.*?"url":"([\w.:/?-]+)"`;
const enclosureMatches = detailResponse.match(new RegExp(enclosurePattern, 'g'));
diff --git a/lib/routes/acfun/video.ts b/lib/routes/acfun/video.ts
index 39ca0200be73..d6732a0dc41a 100644
--- a/lib/routes/acfun/video.ts
+++ b/lib/routes/acfun/video.ts
@@ -40,7 +40,7 @@ async function handler(ctx) {
const list = $('#ac-space-video-list a').toArray();
const image = $('head style:contains("user-photo")')
.text()
- .match(/.user-photo{\n\s*background:url\((.*)\) 0% 0% \/ 100% no-repeat;/)?.[1];
+ .match(/.user-photo\{\n\s*background:url\((.*)\) 0% 0% \/ 100% no-repeat;/)?.[1];
return {
title,
diff --git a/lib/routes/aip/journal.ts b/lib/routes/aip/journal.ts
index 68bea00e2867..f5c718e57e89 100644
--- a/lib/routes/aip/journal.ts
+++ b/lib/routes/aip/journal.ts
@@ -43,7 +43,7 @@ async function handler(ctx) {
const $ = load(response);
const jrnlName = $('meta[property="og:title"]')
.attr('content')
- .match(/(?:[^=]*=)?\s*([^>]+)\s*/)[1];
+ .match(/(?:[^=]*=)?\s*([^>]+)/)[1];
const publication = $('.al-article-item-wrap.al-normal');
const list = publication.toArray().map((item) => {
diff --git a/lib/routes/altotrain/news.ts b/lib/routes/altotrain/news.ts
index f541b8ed2bb3..8bfbe028df29 100644
--- a/lib/routes/altotrain/news.ts
+++ b/lib/routes/altotrain/news.ts
@@ -71,7 +71,7 @@ function extractItem(a: Cheerio, language: string) {
const descEl = a.find('p').first();
const description = descEl.text().trim();
- const dateMatch = language === 'fr' ? description.match(/(\d{1,2} [a-zéû]+[.]? \d{4})/i) : description.match(/([A-Z][a-z]+[.]? \d{1,2}, \d{4})/);
+ const dateMatch = language === 'fr' ? description.match(/(\d{1,2} [a-zéû]+\.? \d{4})/i) : description.match(/([A-Z][a-z]+\.? \d{1,2}, \d{4})/);
const pubDateStr = dateMatch ? dateMatch[1].trim() : '';
const pubDate = parseDate(pubDateStr);
diff --git a/lib/routes/anthropic/research.ts b/lib/routes/anthropic/research.ts
index cfba01932e4d..c19564ebf810 100644
--- a/lib/routes/anthropic/research.ts
+++ b/lib/routes/anthropic/research.ts
@@ -47,7 +47,7 @@ async function handler() {
}
}
- const partRegex = /^([0-9a-zA-Z]+):([0-9a-zA-Z]+)?(\[.*)$/;
+ const partRegex = /^([0-9a-z]+):([0-9a-z]+)?(\[.*)$/i;
const fd = textList
.join('')
.split('\n')
diff --git a/lib/routes/aqara/news.ts b/lib/routes/aqara/news.ts
index 898ea0dac62d..6dc95b0fe148 100644
--- a/lib/routes/aqara/news.ts
+++ b/lib/routes/aqara/news.ts
@@ -23,7 +23,7 @@ async function handler(ctx) {
const $ = load(response);
let items = response
- .match(/(parm\.newsTitle[\S\s]*?arr\.push\(parm\))/g)
+ .match(/(parm\.newsTitle[\s\S]*?arr\.push\(parm\))/g)
.slice(0, limit)
.map((item) => ({
title: item.match(/parm\.newsTitle = '(.*?)'/)[1],
diff --git a/lib/routes/arcteryx/regear-new-arrivals.tsx b/lib/routes/arcteryx/regear-new-arrivals.tsx
index 6785aa96c410..7394abf81ec0 100644
--- a/lib/routes/arcteryx/regear-new-arrivals.tsx
+++ b/lib/routes/arcteryx/regear-new-arrivals.tsx
@@ -42,7 +42,7 @@ async function handler() {
const data = response.data;
const $ = load(data);
const contents = $('script:contains("window.__PRELOADED_STATE__")').text();
- const regex = /{.*}/;
+ const regex = /\{.*\}/;
let items = JSON.parse(contents.match(regex)[0]).shop.items;
items = items.filter((item) => item.availableSizes.length !== 0);
diff --git a/lib/routes/bbc/utils.tsx b/lib/routes/bbc/utils.tsx
index abfd5d3bc272..54b8a277ead9 100644
--- a/lib/routes/bbc/utils.tsx
+++ b/lib/routes/bbc/utils.tsx
@@ -355,7 +355,7 @@ export const extractInitialData = ($: CheerioAPI): any => {
const initialDataText = JSON.parse(
$('script:contains("window.__INITIAL_DATA__")')
.text()
- .match(/window\.__INITIAL_DATA__\s*=\s*(.*);/)?.[1] ?? '"{}"'
+ .match(/window\.__INITIAL_DATA__\s*=\s*(\S.*)?;/)?.[1] ?? '"{}"'
);
return JSON.parse(initialDataText);
diff --git a/lib/routes/bilibili/cache.ts b/lib/routes/bilibili/cache.ts
index 213727ec6635..c37546af9bcc 100644
--- a/lib/routes/bilibili/cache.ts
+++ b/lib/routes/bilibili/cache.ts
@@ -117,7 +117,7 @@ const getWbiVerifyString = () => {
// 46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57,
// 62, 11, 36, 20, 34, 44, 52,
// ];
- const array = JSON.parse(jsResponse.match(/\[(?:\d+,){63}\d+]/));
+ const array = JSON.parse(jsResponse.match(/\[(?:\d+,){63}\d+\]/));
const o = [];
for (const t of array) {
r.charAt(t) && o.push(r.charAt(t));
@@ -350,7 +350,7 @@ const getArticleDataFromCvid = async (cvid, uid) => {
const newFormatData = JSON.parse(
$('script:contains("window.__INITIAL_STATE__")')
.text()
- .match(/window\.__INITIAL_STATE__\s*=\s*(.*?);\(/)[1]
+ .match(/window\.__INITIAL_STATE__\s*=\s*(\S.*?)?;\(/)[1]
);
if (newFormatData?.readInfo?.opus?.content?.paragraphs) {
diff --git a/lib/routes/bjsk/index.ts b/lib/routes/bjsk/index.ts
index 11bf8d02db69..e5deceeea0ae 100644
--- a/lib/routes/bjsk/index.ts
+++ b/lib/routes/bjsk/index.ts
@@ -55,7 +55,8 @@ async function handler(ctx) {
item.description = $('.article-main').html();
item.author = $('.info')
.text()
- .match(/作者:(.*)\s+来源/)[1];
+ .match(/作者:(.*?)来源/)[1]
+ .trim();
return item;
})
)
diff --git a/lib/routes/bjtu/gs.ts b/lib/routes/bjtu/gs.ts
index dec0963cf217..4711d23ba439 100644
--- a/lib/routes/bjtu/gs.ts
+++ b/lib/routes/bjtu/gs.ts
@@ -130,7 +130,7 @@ const getItem = (item, selector) => {
const newsDate = item
.find('span')
.text()
- .match(/\d{4}(-|\/|.)\d{1,2}\1\d{1,2}/)[0];
+ .match(/\d{4}(.)\d{1,2}\1\d{1,2}/)[0];
const infoTitle = newsInfo.text();
const link = rootURL + newsInfo.attr('href');
diff --git a/lib/routes/bjwxdxh/index.ts b/lib/routes/bjwxdxh/index.ts
index b90d7a8aff02..d8060cc9afcd 100644
--- a/lib/routes/bjwxdxh/index.ts
+++ b/lib/routes/bjwxdxh/index.ts
@@ -59,7 +59,7 @@ async function handler(ctx) {
const content = load(response.data);
const info = content('div.info')
.text()
- .match(/作者:(.*?)\s+发布于:(.*?\s+.*?)\s/);
+ .match(/作者:(\S*)\s+发布于:(\S*\s+.*?)\s/);
item.author = info[1];
item.pubDate = timezone(parseDate(info[2], 'YYYY-MM-DD HH:mm:ss'), +8);
item.description = content('div#con').html().trim().replaceAll('\n', '');
diff --git a/lib/routes/bloomberg/utils.ts b/lib/routes/bloomberg/utils.ts
index 215c3b716a57..3d9da657224d 100644
--- a/lib/routes/bloomberg/utils.ts
+++ b/lib/routes/bloomberg/utils.ts
@@ -55,7 +55,7 @@ const apiEndpoints = {
},
};
-const pageTypeRegex1 = /\/(?[\w-]*?)\/(?\d{4}-\d{2}-\d{2}\/.*)/;
+const pageTypeRegex1 = /\/(?[\w-]*)\/(?\d{4}-\d{2}-\d{2}\/.*)/;
const pageTypeRegex2 = /(?features\/|graphics\/)(?.*)/;
const regex = [pageTypeRegex1, pageTypeRegex2];
diff --git a/lib/routes/booru/mmda.ts b/lib/routes/booru/mmda.ts
index 69cc18361fa6..779af1236384 100644
--- a/lib/routes/booru/mmda.ts
+++ b/lib/routes/booru/mmda.ts
@@ -95,7 +95,7 @@ async function handler(ctx) {
statisticsTages.find('li, br, strong').remove();
const statisticsStr = statisticsTages.text();
- const regex = /(?[^\s:]+)\s*:\s*(?.+)/gm;
+ const regex = /(?[^\s:]+)\s*:\s*(?.+)/g;
const result = {};
for (const match of statisticsStr.matchAll(regex)) {
const { key, value } = match.groups ?? ({} as { key: string; value: string });
diff --git a/lib/routes/bse/index.ts b/lib/routes/bse/index.ts
index 6154cf51cdc6..0add93200213 100644
--- a/lib/routes/bse/index.ts
+++ b/lib/routes/bse/index.ts
@@ -183,7 +183,7 @@ async function handler(ctx) {
},
});
- const data = JSON.parse(response.data.match(/null\(\[({.*})]\)/)[1]);
+ const data = JSON.parse(response.data.match(/null\(\[(\{.*\})\]\)/)[1]);
let items: DataItem[];
diff --git a/lib/routes/caixin/category.ts b/lib/routes/caixin/category.ts
index 0fd9f0e2072b..9e4e7dc832c0 100644
--- a/lib/routes/caixin/category.ts
+++ b/lib/routes/caixin/category.ts
@@ -60,7 +60,7 @@ async function handler(ctx) {
const entity = JSON.parse(
$('script')
.text()
- .match(/var entity = ({.*?})/)[1]
+ .match(/var entity = (\{.*?\})/)[1]
);
const {
diff --git a/lib/routes/caixin/utils-fulltext.ts b/lib/routes/caixin/utils-fulltext.ts
index e17c54b6b391..bc90876c35aa 100644
--- a/lib/routes/caixin/utils-fulltext.ts
+++ b/lib/routes/caixin/utils-fulltext.ts
@@ -14,7 +14,7 @@ export async function getFulltext(url: string) {
if (!config.caixin.cookie) {
return;
}
- if (!/(\d+)\.html/.test(url)) {
+ if (!/\d+\.html/.test(url)) {
return;
}
const articleID = url.match(/(\d+)\.html/)[1];
diff --git a/lib/routes/cas/sim/kyjz.ts b/lib/routes/cas/sim/kyjz.ts
index 116fc6ccb316..1e61deea23fd 100644
--- a/lib/routes/cas/sim/kyjz.ts
+++ b/lib/routes/cas/sim/kyjz.ts
@@ -55,7 +55,7 @@ async function handler() {
const $ = load(response.data);
const author = $('.qtinfo.hidden-lg.hidden-md.hidden-sm').text();
- const reg = /文章来源:(.*?)\|/g;
+ const reg = /文章来源:(.*?)\|/;
item.title = $('p.wztitle').text().trim();
item.author = reg.exec(author)[1].toString().trim();
diff --git a/lib/routes/chinaratings/credit-research.ts b/lib/routes/chinaratings/credit-research.ts
index 7baab932be09..55259a9f6a76 100644
--- a/lib/routes/chinaratings/credit-research.ts
+++ b/lib/routes/chinaratings/credit-research.ts
@@ -59,7 +59,7 @@ export const handler = async (ctx: Context): Promise => {
const metaStr: string = $$('div.newshead p span, div.title p span').text();
const pubDateStr: string | undefined = metaStr?.match(/(\d{4}-\d{2}-\d{2})/)?.[1];
- const authors: DataItem['author'] = metaStr?.match(/来源:(.*?)/)?.[1];
+ const authors: DataItem['author'] = metaStr?.match(/来源:(.*)/)?.[1];
const upDatedStr: string | undefined = pubDateStr;
let processedItem: DataItem = {
diff --git a/lib/routes/chnmus/exhibition.tsx b/lib/routes/chnmus/exhibition.tsx
index 96bf680ef668..8fae9bb87598 100644
--- a/lib/routes/chnmus/exhibition.tsx
+++ b/lib/routes/chnmus/exhibition.tsx
@@ -17,7 +17,7 @@ const extractDates = (durationStr: string) => {
return { startDate, endDate };
}
- const parts = durationStr.split(/——|-|—|~/).map((p) => p.trim()); // currently ——and- is used, add — or ~ for redundency
+ const parts = durationStr.split(/——|[-—~]/).map((p) => p.trim()); // currently ——and- is used, add — or ~ for redundency
const startStr = parts[0];
const endStr = parts[1];
diff --git a/lib/routes/cih-index/report.ts b/lib/routes/cih-index/report.ts
index b3f6a0263a49..a61197bdbdfe 100644
--- a/lib/routes/cih-index/report.ts
+++ b/lib/routes/cih-index/report.ts
@@ -40,7 +40,7 @@ async function handler(ctx) {
const initialState = JSON.parse(
$('script:contains("window.__INITIAL_STATE__")')
.text()
- .match(/window\.__INITIAL_STATE__\s*=\s*({.*?});/)?.[1] || '{}'
+ .match(/window\.__INITIAL_STATE__\s*=\s*(\{.*?\});/)?.[1] || '{}'
);
const { dataResult, indNavLists, secondNameFilter, tagList, param } = initialState.data;
diff --git a/lib/routes/cisia/index.ts b/lib/routes/cisia/index.ts
index c1e5832b935f..df9098622297 100644
--- a/lib/routes/cisia/index.ts
+++ b/lib/routes/cisia/index.ts
@@ -35,7 +35,7 @@ export const handler = async (ctx) => {
items = await Promise.all(
items.map((item) =>
cache.tryGet(item.link, async () => {
- if (!/^https?:\/\/www\.cisia\.org(\/[^\s]*)?$/.test(item.link)) {
+ if (!/^https?:\/\/www\.cisia\.org(?:\/\S*)?$/.test(item.link)) {
return item;
}
diff --git a/lib/routes/cline/blog.ts b/lib/routes/cline/blog.ts
index 7455759c8df2..4ae95ce50cea 100644
--- a/lib/routes/cline/blog.ts
+++ b/lib/routes/cline/blog.ts
@@ -21,7 +21,7 @@ function extractArticlesFromDOM($: CheerioAPI): DataItem[] {
// Extract date and author with single regex
const metaText = element.find('.text-sm.text-slate-500').text().trim();
- const metaMatch = metaText.match(/^([^•]+)\s*•\s*([A-Za-z]+\s+\d{1,2},?\s+\d{4})/);
+ const metaMatch = metaText.match(/^([^•]+)•\s*([A-Z]+\s+\d{1,2},?\s+\d{4})/i);
const author = metaMatch ? metaMatch[1].trim() : 'Cline Team';
const pubDate = metaMatch ? parseDate(metaMatch[2]) : undefined;
diff --git a/lib/routes/cool18/index.ts b/lib/routes/cool18/index.ts
index f9d9da1b1453..96b9f7b50aef 100644
--- a/lib/routes/cool18/index.ts
+++ b/lib/routes/cool18/index.ts
@@ -65,7 +65,7 @@ function buildUrl(rootUrl: string, type: PostType, keyword: string | undefined,
function extractHomeList($: CheerioAPI, rootUrl: string, limit: number): DataItem[] {
try {
const scriptText = $('script:contains("_PageData")').text();
- const match = scriptText.match(/const\s+_PageData\s*=\s*(\[[\s\S]*?]);/);
+ const match = scriptText.match(/const\s+_PageData\s*=\s*(\[[\s\S]*?\]);/);
if (!match?.[1]) {
return [];
diff --git a/lib/routes/ctinews/topic.ts b/lib/routes/ctinews/topic.ts
index ec1d4b745feb..9560bcacbfb1 100644
--- a/lib/routes/ctinews/topic.ts
+++ b/lib/routes/ctinews/topic.ts
@@ -88,7 +88,7 @@ async function handler(ctx) {
const $ = load(response);
if (item.link?.includes('/videos/')) {
const ldJson = JSON.parse($('script[type="application/ld+json"]:contains("VideoObject")').text());
- const videoId = ldJson.embedUrl.match(/embed\/([a-zA-Z0-9_-]+)/)?.[1];
+ const videoId = ldJson.embedUrl.match(/embed\/([\w-]+)/)?.[1];
item.description =
`
` +
diff --git a/lib/routes/dailypush/utils.ts b/lib/routes/dailypush/utils.ts
index 1fd24ec3ad85..8a55e7305ea0 100644
--- a/lib/routes/dailypush/utils.ts
+++ b/lib/routes/dailypush/utils.ts
@@ -143,7 +143,7 @@ function extractCategories(article: ReturnType, $: CheerioAPI): stri
const tagText = tagElement.text().trim();
// Skip summary/stats links and navigation
- if (tagHref && tagText && !tagHref.includes('article/') && !tagHref.includes('Summary') && tagText.length < 50 && !/^(Summary|stats|About|Tags|Toggle|Trending|Latest|Previous|Next)$/i.test(tagText)) {
+ if (tagHref && tagText && !tagHref.includes('article/') && !tagHref.includes('Summary') && tagText.length < 50 && !/^(?:Summary|stats|About|Tags|Toggle|Trending|Latest|Previous|Next)$/i.test(tagText)) {
return tagText;
}
return null;
diff --git a/lib/routes/daum/potplayer.ts b/lib/routes/daum/potplayer.ts
index 919afa2166b1..960c98389b6d 100644
--- a/lib/routes/daum/potplayer.ts
+++ b/lib/routes/daum/potplayer.ts
@@ -20,14 +20,14 @@ export const handler = async (ctx: Context): Promise => {
// Group 3: Trailing hyphens (unused, but for context)
// Group 4: Update content
// Uses global and multiline flags for all matches and line start/end anchors
- const updateRegex = /^(-+)\s*\n(.*?)\s*\n(-+)\s*\n([\s\S]*?)(?=\n-{2,}|<\/p>)/gm;
+ const updateRegex = /^-+[^\S\n]*\n(.*)\r?\n-+[^\S\n]*\n([\s\S]*?)(?=\n-{2}|<\/p>)/gm;
const items: DataItem[] = [];
let match: RegExpExecArray | null;
while ((match = updateRegex.exec(response)) !== null && items.length < limit) {
- const headerLine: string | undefined = match[2].trim();
- const description: string | undefined = match[4].trim()?.replaceAll(/(\s[+-])/g, '
$1');
+ const headerLine: string | undefined = match[1].trim();
+ const description: string | undefined = match[2].trim()?.replaceAll(/(\s[+-])/g, '
$1');
let version = 'N/A';
let pubDateStr: string | undefined = undefined;
diff --git a/lib/routes/dayanzai/index.ts b/lib/routes/dayanzai/index.ts
index abb37cb3ab5c..11db2149fedd 100644
--- a/lib/routes/dayanzai/index.ts
+++ b/lib/routes/dayanzai/index.ts
@@ -41,7 +41,7 @@ async function handler(ctx) {
const response = await got.get(currentUrl);
const $ = load(response.data);
const lists = $('div.c-box > div > div.c-zx-list > ul > li');
- const reg = /日期:(.*?(\s\(.*?\))?)\s/;
+ const reg = /日期:(.*?(?:\s\(.*?\))?)\s/;
const list = lists.toArray().map((item) => {
item = $(item).find('div');
let date = reg.exec(item.find('div.r > p.other').text())[1];
diff --git a/lib/routes/dcard/utils.ts b/lib/routes/dcard/utils.ts
index 083c736d6dd6..35bdc8594370 100644
--- a/lib/routes/dcard/utils.ts
+++ b/lib/routes/dcard/utils.ts
@@ -28,7 +28,7 @@ const ProcessFeed = async (items, cookies, browser, limit, cache) => {
const data = JSON.parse(response);
let body = data.content;
body = body.replaceAll(/(?=https?:\/\/).*?(?<=\.(jpe?g|gif|png))/gi, (m) => `
`);
- body = body.replaceAll(/(?=https?:\/\/).*(??)$/gim, (m) => `${m}`);
+ body = body.replaceAll(/(?=https?:\/\/).+(??)$/gim, (m) => `${m}`);
body = body.replaceAll('\n', '
');
return body;
diff --git a/lib/routes/dealstreetasia/home.ts b/lib/routes/dealstreetasia/home.ts
index e0959e5b0ef0..177bbf62e7ce 100644
--- a/lib/routes/dealstreetasia/home.ts
+++ b/lib/routes/dealstreetasia/home.ts
@@ -60,7 +60,7 @@ async function fetchPage() {
link: item.post_url || item.link || '',
description: item.post_excerpt || item.excerpt || '',
pubDate: item.post_date ? new Date(item.post_date).toUTCString() : item.date ? new Date(item.date).toUTCString() : '',
- category: item.category_link ? item.category_link.replaceAll(/(<([^>]+)>)/gi, '') : '', // Clean HTML if category_link exists
+ category: item.category_link ? item.category_link.replaceAll(/(<([^>]+)>)/g, '') : '', // Clean HTML if category_link exists
image: item.image_url ? item.image_url.replace(/\?.*$/, '') : '', // Remove query parameters if image_url exists
}));
diff --git a/lib/routes/dedao/knowledge.tsx b/lib/routes/dedao/knowledge.tsx
index 076b8e9a7ba4..d5eb7c28c293 100644
--- a/lib/routes/dedao/knowledge.tsx
+++ b/lib/routes/dedao/knowledge.tsx
@@ -5,7 +5,7 @@ import type { Route } from '@/types';
import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
-const mentionPattern = /<\u2267\u2746>{"name":"(.*?)","uid":"\d+","at":"1"}<\/\u2266\u2746>/g;
+const mentionPattern = /<\u2267\u2746>\{"name":"(.*?)","uid":"\d+","at":"1"\}<\/\u2266\u2746>/g;
const formatNoteText = (text = '') => text.replaceAll('\n\n', '
').replaceAll(mentionPattern, ' @$1');
diff --git a/lib/routes/dedao/user.tsx b/lib/routes/dedao/user.tsx
index 164618039768..39ebb3772c8d 100644
--- a/lib/routes/dedao/user.tsx
+++ b/lib/routes/dedao/user.tsx
@@ -11,7 +11,7 @@ const types = {
12: '视频',
};
-const mentionPattern = /<\u2267\u2746>{"name":"(.*?)","uid":"\d+","at":"1"}<\/\u2266\u2746>/g;
+const mentionPattern = /<\u2267\u2746>\{"name":"(.*?)","uid":"\d+","at":"1"\}<\/\u2266\u2746>/g;
const formatNoteText = (text = '') => text.replaceAll('\n\n', '
').replaceAll(mentionPattern, ' @$1');
diff --git a/lib/routes/dehenglaw/index.ts b/lib/routes/dehenglaw/index.ts
index c5966d874ace..325ecf55d099 100644
--- a/lib/routes/dehenglaw/index.ts
+++ b/lib/routes/dehenglaw/index.ts
@@ -70,7 +70,7 @@ export const handler = async (ctx) => {
return {
title: $('title')
.text()
- .replace(/\|.*?$/, `| ${$('li.onthis').text()}`),
+ .replace(/\|.*$/, `| ${$('li.onthis').text()}`),
description: $('meta[name="Description"]').prop('content'),
link: currentUrl,
item: items,
diff --git a/lib/routes/dianping/user.ts b/lib/routes/dianping/user.ts
index 6698f1aaeb0c..9f7cf14ab99f 100644
--- a/lib/routes/dianping/user.ts
+++ b/lib/routes/dianping/user.ts
@@ -75,7 +75,7 @@ async function handler(ctx) {
headerGeneratorOptions: PRESETS.MODERN_IOS,
});
- const nickNameReg = /window\.nickName = "(.*?)"/g;
+ const nickNameReg = /window\.nickName = "(.*?)"/;
const nickName = nickNameReg.exec(pageResponse as string)?.[1];
const response = await ofetch(`https://m.dianping.com/member/ajax/NobleUserFeeds?userId=${id}`, {
diff --git a/lib/routes/dlnews/category.tsx b/lib/routes/dlnews/category.tsx
index a30277817a10..d813b90c0731 100644
--- a/lib/routes/dlnews/category.tsx
+++ b/lib/routes/dlnews/category.tsx
@@ -69,7 +69,7 @@ const extractArticle = (item) =>
const { data: response } = await got(item.link);
const $ = load(response);
const scriptTagContent = $('script#fusion-metadata').text();
- const jsonData = JSON.parse(scriptTagContent.match(/Fusion\.globalContent=({.*?});Fusion\.globalContentConfig/)[1]).content_elements;
+ const jsonData = JSON.parse(scriptTagContent.match(/Fusion\.globalContent=(\{.*?\});Fusion\.globalContentConfig/)[1]).content_elements;
const filteredData = [];
for (const v of jsonData) {
if (v.type === 'header' && v.content.includes('What we’re reading')) {
diff --git a/lib/routes/dnaindia/common.ts b/lib/routes/dnaindia/common.ts
index e501d9b50378..180919d42009 100644
--- a/lib/routes/dnaindia/common.ts
+++ b/lib/routes/dnaindia/common.ts
@@ -44,7 +44,7 @@ export async function handler(ctx) {
.map((item) => $(item).find('a').text());
// Process date
const timeText = $('p.dna-update').text();
- const dateMatch = timeText.match(/Updated\s*:\s*([\w\s,:\d]+?)(?:\s*\||$)/);
+ const dateMatch = timeText.match(/Updated\s*:([\w\s,:]+)/);
let time = dateMatch ? dateMatch[1].trim() : '';
time = time.replace(/\s+IST$/, '');
const pubDate = timezone(parseDate(time), +5.5);
diff --git a/lib/routes/domp4/detail.ts b/lib/routes/domp4/detail.ts
index ddeaf4515008..a8500872b358 100644
--- a/lib/routes/domp4/detail.ts
+++ b/lib/routes/domp4/detail.ts
@@ -30,7 +30,7 @@ function getDomList($, detailUrl) {
export function getItemList($, detailUrl, second) {
const encoded = $('.article script[type]')
.text()
- .match(/return p}\('(.*)',(\d+),(\d+),'(.*)'.split\(/);
+ .match(/return p\}\('(.*)',(\d+),(\d+),'(.*)'.split\(/);
// 若 script 标签没有内容,直接解析 dom
if (!encoded) {
return getDomList($, detailUrl);
diff --git a/lib/routes/dongqiudi/utils.ts b/lib/routes/dongqiudi/utils.ts
index c927dd76828b..7d1b116ca7e0 100644
--- a/lib/routes/dongqiudi/utils.ts
+++ b/lib/routes/dongqiudi/utils.ts
@@ -145,7 +145,7 @@ const ProcessFeedType3 = (item, response) => {
const initialState = JSON.parse(
$('script:contains("window.__INITIAL_STATE__")')
.text()
- .match(/window\.__INITIAL_STATE__\s*=\s*(.*?);\(/)[1]
+ .match(/window\.__INITIAL_STATE__\s*=\s*((?:\S.*?)??);\(/)[1]
);
// filter out undefined item
diff --git a/lib/routes/dora-world/article.ts b/lib/routes/dora-world/article.ts
index c903ee1cce78..4c44d1392599 100644
--- a/lib/routes/dora-world/article.ts
+++ b/lib/routes/dora-world/article.ts
@@ -85,6 +85,6 @@ async function getContent(nextBuildId: string, contentId: string) {
content
.html()
?.replaceAll(rubyRegex, '$1($2)')
- ?.replaceAll(/[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, '') ?? '';
+ ?.replaceAll(/[^\t\n\r\u0020-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/g, '') ?? '';
return description;
}
diff --git a/lib/routes/douban/other/replied.ts b/lib/routes/douban/other/replied.ts
index 23767e6ce856..c231d97ee642 100644
--- a/lib/routes/douban/other/replied.ts
+++ b/lib/routes/douban/other/replied.ts
@@ -56,7 +56,7 @@ async function handler(ctx) {
method: 'get',
url: item.link,
});
- const match = detailResponse.data.match(/'comments':(.*)}],/);
+ const match = detailResponse.data.match(/'comments':(.*)\}\],/);
if (match.length > 1) {
const content = load(detailResponse.data);
diff --git a/lib/routes/douban/other/replies.ts b/lib/routes/douban/other/replies.ts
index 7d2515a6137a..f77c32e03a9f 100644
--- a/lib/routes/douban/other/replies.ts
+++ b/lib/routes/douban/other/replies.ts
@@ -55,7 +55,7 @@ async function handler(ctx) {
url: item.link,
});
- const comments = JSON.parse(detailResponse.data.match(/'comments':(.*)}],/)[1] + '}]');
+ const comments = JSON.parse(detailResponse.data.match(/'comments':(.*)\}\],/)[1] + '}]');
for (const c of comments) {
if (c.id === item.link.split('#')[1]) {
diff --git a/lib/routes/dribbble/utils.tsx b/lib/routes/dribbble/utils.tsx
index c7438b556977..c82870fce1b7 100644
--- a/lib/routes/dribbble/utils.tsx
+++ b/lib/routes/dribbble/utils.tsx
@@ -17,7 +17,7 @@ async function loadContent(link) {
const shotData = JSON.parse(
$('script')
.text()
- .match(/shotData:\s({.+?}),\n/)?.[1] ?? '{}'
+ .match(/shotData:\s(\{.+?\}),\n/)?.[1] ?? '{}'
);
// Join multiple shots together by selecting elements with class 'media-shot' or 'main-shot' or 'block-media-wrapper'
diff --git a/lib/routes/ehentai/ehapi.ts b/lib/routes/ehentai/ehapi.ts
index ba9284beaa7c..271f2fd86f62 100644
--- a/lib/routes/ehentai/ehapi.ts
+++ b/lib/routes/ehentai/ehapi.ts
@@ -161,7 +161,7 @@ function getBittorrent(cache, bittorrent_page_url) {
const match = onclick.match(/'(.*?)'/);
if (match) {
bittorrent_url = match[1];
- const match_p = bittorrent_url.match(/torrent\?p=(.*?)$/);
+ const match_p = bittorrent_url.match(/torrent\?p=(.*)$/);
if (match_p) {
p = match_p[1];
}
diff --git a/lib/routes/fanqienovel/page.ts b/lib/routes/fanqienovel/page.ts
index 58bc7e73e4da..11fc5bf9d131 100644
--- a/lib/routes/fanqienovel/page.ts
+++ b/lib/routes/fanqienovel/page.ts
@@ -76,7 +76,7 @@ async function handler(ctx: Context): Promise {
const initialState = JSON.parse(
$('script:contains("window.__INITIAL_STATE__")')
.text()
- .match(/window\.__INITIAL_STATE__\s*=\s*(.*);/)?.[1] ?? '{}'
+ .match(/window\.__INITIAL_STATE__\s*=\s*(\S.*);/)?.[1] ?? '{}'
);
const page = initialState.page as Page;
diff --git a/lib/routes/flashcat/blog.ts b/lib/routes/flashcat/blog.ts
index 8c01e75106e9..0cb95e409253 100644
--- a/lib/routes/flashcat/blog.ts
+++ b/lib/routes/flashcat/blog.ts
@@ -29,34 +29,32 @@ export const route: Route = {
};
async function handlerRoute(): Promise {
- const response = await ofetch('https://flashcat.cloud/blog/');
+ const baseUrl = 'https://flashcat.cloud';
+ const link = `${baseUrl}/blog/`;
+ const response = await ofetch(link);
const $ = load(response);
- const items = $('.post-preview')
+ const items = $('.fc-content-card')
.toArray()
.map((elem) => {
- const $elem = $(elem);
+ const $item = $(elem);
+ const [author, date] = $item
+ .find('.fc-content-card-meta')
+ .text()
+ .split('·')
+ .map((s) => s.trim());
return {
- title: $elem.find('.post-title').text(),
- description: $elem.find('.post-content-preview').text(),
- link: $elem.find('a').attr('href'),
- pubDate: parseDate(
- $elem
- .find('.post-meta')
- .text()
- .match(/on\s+(\w+,\s+\w+\s+\d{1,2},\s+\d{4})/)?.[1] || ''
- ),
- author:
- $elem
- .find('.post-meta')
- .text()
- .match(/by\s+(.+?)\s+on/)?.[1] || '',
+ title: $item.find('.fc-content-card-title').text(),
+ description: $item.find('.fc-content-card-summary').text().trim(),
+ link: new URL($item.find('.fc-content-card-link').attr('href')!, baseUrl).href,
+ pubDate: date ? parseDate(date, 'YYYY-MM-DD') : undefined,
+ author,
};
});
return {
title: 'Flashcat 快猫星云博客',
- link: 'https://flashcat.cloud/blog/',
+ link,
item: items,
};
}
diff --git a/lib/routes/gamer/ani/anime.ts b/lib/routes/gamer/ani/anime.ts
index b73df201138a..0f8a527fac12 100644
--- a/lib/routes/gamer/ani/anime.ts
+++ b/lib/routes/gamer/ani/anime.ts
@@ -41,7 +41,7 @@ async function handler(ctx) {
}
const anime = response.data.anime;
- const title = anime.title.replaceAll(/\[\d+?]$/g, '').trim();
+ const title = anime.title.replaceAll(/\[\d+\]$/g, '').trim();
const items = anime.volumes[0]
.map((item) => ({
diff --git a/lib/routes/getitfree/index.ts b/lib/routes/getitfree/index.ts
index 47998a802eb7..988886abf8d6 100644
--- a/lib/routes/getitfree/index.ts
+++ b/lib/routes/getitfree/index.ts
@@ -31,7 +31,7 @@ async function handler(ctx) {
const { data: response } = await got(apiUrl);
- const items = (Array.isArray(response) ? response : JSON.parse(response.match(/(\[.*])$/)[1])).slice(0, limit).map((item) => {
+ const items = (Array.isArray(response) ? response : JSON.parse(response.match(/(\[.*\])$/)[1])).slice(0, limit).map((item) => {
const terminologies = item._embedded['wp:term'];
const content = load(item.content?.rendered ?? item.content);
diff --git a/lib/routes/gigazine/en.ts b/lib/routes/gigazine/en.ts
index bd9127f7a4dc..1f0f191b9f11 100644
--- a/lib/routes/gigazine/en.ts
+++ b/lib/routes/gigazine/en.ts
@@ -22,7 +22,7 @@ const getAbsoluteUrl = (path: string | undefined) => (path ? new URL(path, ROOT_
const getArticleAuthor = ($: ReturnType) =>
$('#article .items p')
.text()
- .match(/Posted by\s+(.+)$/)?.[1]
+ .match(/Posted by\s+(\S.*)$/)?.[1]
?.trim();
const getArticleCategories = ($: ReturnType) => [
...new Set(
diff --git a/lib/routes/globallawreview/index.ts b/lib/routes/globallawreview/index.ts
index ea64e6d401a9..7fcf2210623b 100644
--- a/lib/routes/globallawreview/index.ts
+++ b/lib/routes/globallawreview/index.ts
@@ -50,7 +50,7 @@ async function handler(ctx) {
item
.find('p.p4')
.text()
- .match(/] (\d+\.\d+);/)[1],
+ .match(/\] (\d+\.\d+);/)[1],
],
enclosure_url: link,
enclosure_length:
diff --git a/lib/routes/google/album.ts b/lib/routes/google/album.ts
index 39f15f9a91ce..d62eae3dad9c 100644
--- a/lib/routes/google/album.ts
+++ b/lib/routes/google/album.ts
@@ -28,7 +28,7 @@ async function handler(ctx) {
const real_url = response.request.options.url.href;
- const info = JSON.parse(response.data.match(/AF_initDataCallback.*?data:(\[[\S\s]*])\s/m)[1]) || [];
+ const info = JSON.parse(response.data.match(/AF_initDataCallback.*?data:(\[[\s\S]*\])\s/)[1]) || [];
const album_name = info[3][1];
const owner_name = info[3][5][2];
diff --git a/lib/routes/google/scholar.ts b/lib/routes/google/scholar.ts
index 69465a1ad1e2..661518a0cd25 100644
--- a/lib/routes/google/scholar.ts
+++ b/lib/routes/google/scholar.ts
@@ -34,7 +34,7 @@ async function handler(ctx) {
let description = `Google Scholar Monitor Query: ${query}`;
if (params.includes('as_q=')) {
- const reg = /as_q=(.*?)&/g;
+ const reg = /as_q=(.*?)&/;
query = reg.exec(params)[1];
description = `Google Scholar Monitor Advanced Query: ${query}`;
} else {
diff --git a/lib/routes/gov/beijing/kw/index.ts b/lib/routes/gov/beijing/kw/index.ts
index bab38a33d515..e1e06e6c5dcc 100644
--- a/lib/routes/gov/beijing/kw/index.ts
+++ b/lib/routes/gov/beijing/kw/index.ts
@@ -23,10 +23,10 @@ async function handler(ctx) {
const title = $('a.bt_link').last().text().replace('>', '');
const dataJs = $('div.left.zhengce_right > script[language="javascript"]').html() || $('div.centent_width > script[language="javascript"]').html();
let items = dataJs
- .match(/urls\[i]='(.*?)';headers\[i]="(.*?)";year\[i]='(\d+)';month\[i]='(\d+)';day\[i]='(\d+)';/g)
+ .match(/urls\[i\]='(.*?)';headers\[i\]="(.*?)";year\[i\]='(\d+)';month\[i\]='(\d+)';day\[i\]='(\d+)';/g)
.slice(0, ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit')) : 25)
.map((item) => {
- const result = item.match(/urls\[i]='(.*?)';headers\[i]="(.*?)";year\[i]='(\d+)';month\[i]='(\d+)';day\[i]='(\d+)';/);
+ const result = item.match(/urls\[i\]='(.*?)';headers\[i\]="(.*?)";year\[i\]='(\d+)';month\[i\]='(\d+)';day\[i\]='(\d+)';/);
return {
title: load(result[2])('a').attr('title') || result[2],
link: new URL(result[1], rootUrl).href,
diff --git a/lib/routes/gov/cac/index.ts b/lib/routes/gov/cac/index.ts
index 1aec93ff592c..5ce00fb02fb3 100644
--- a/lib/routes/gov/cac/index.ts
+++ b/lib/routes/gov/cac/index.ts
@@ -29,7 +29,7 @@ async function handler(ctx) {
.toArray()
.map((item) => {
const href = $(item).attr('href');
- if (href && /(?:http:)?\/\/www\.cac\.gov\.cn(.*?)\/(A.*?\.htm)/.test(href)) {
+ if (href && /(?:http:)?\/\/www\.cac\.gov\.cn.*?\/A.*?\.htm/.test(href)) {
const matchArray = href.match(/(?:http:)?\/\/www\.cac\.gov\.cn(.*?)\/(A.*?\.htm)/);
if (matchArray && matchArray.length > 2) {
const path = matchArray[1];
diff --git a/lib/routes/gov/ccdi/utils.ts b/lib/routes/gov/ccdi/utils.ts
index ff1366a581c2..39a394241994 100644
--- a/lib/routes/gov/ccdi/utils.ts
+++ b/lib/routes/gov/ccdi/utils.ts
@@ -10,7 +10,7 @@ const cookieJar = new CookieJar();
const owner = '中央纪委国家监委网站';
const rootUrl = 'https://www.ccdi.gov.cn';
-const regex = /(?[A-Z_]+)=(?(?:.*?(?=; max-age)|[\dA-Fa-f]+))/gm;
+const regex = /(?[A-Z_]+)=(?.*?(?=; max-age)|[\dA-Fa-f]+)/g;
const parseCookie = async (body) => {
let m;
diff --git a/lib/routes/gov/cn/news/index.ts b/lib/routes/gov/cn/news/index.ts
index 326d19245287..3fa9e6252965 100644
--- a/lib/routes/gov/cn/news/index.ts
+++ b/lib/routes/gov/cn/news/index.ts
@@ -88,13 +88,13 @@ async function handler(ctx) {
let pubDate;
let author;
let category;
- if (/dysMiddleResultConItemTitle/g.test(item.html())) {
+ if (/dysMiddleResultConItemTitle/.test(item.html())) {
if (contentUrl.includes('content')) {
fullTextGet = await got.get(contentUrl);
fullTextData = load(fullTextGet.data);
fullTextData('.shuzi').remove(); // 移除videobg的图片
fullTextData('#myFlash').remove(); // 移除flash
- description = /pages_content/g.test(fullTextData.html()) ? fullTextData('.pages_content').html() : fullTextData('#UCAP-CONTENT').html();
+ description = /pages_content/.test(fullTextData.html()) ? fullTextData('.pages_content').html() : fullTextData('#UCAP-CONTENT').html();
} else {
description = item.find('a').text(); // 忽略获取吹风会的全文
}
@@ -105,13 +105,13 @@ async function handler(ctx) {
pubDate = timezone(parseDate(fullTextData('meta[name="firstpublishedtime"]').attr('content'), 'YYYY-MM-DD HH:mm:ss'), 8);
author = fullTextData('meta[name="author"]').attr('content');
category = fullTextData('meta[name="keywords"]').attr('content').split(/[,;]/);
- if (/zhengceku/g.test(contentUrl)) {
+ if (/zhengceku/.test(contentUrl)) {
// 政策文件库
description = fullTextData('.pages_content').html();
} else {
fullTextData('.shuzi').remove(); // 移除videobg的图片
fullTextData('#myFlash').remove(); // 移除flash
- description = /UCAP-CONTENT/g.test($1) ? fullTextData('#UCAP-CONTENT').html() : fullTextData('body').html();
+ description = /UCAP-CONTENT/.test($1) ? fullTextData('#UCAP-CONTENT').html() : fullTextData('body').html();
}
} else {
description = item.find('a').text(); // 忽略获取吹风会的全文
diff --git a/lib/routes/gov/general/general.ts b/lib/routes/gov/general/general.ts
index 7766acb8ab56..db03fe427ceb 100644
--- a/lib/routes/gov/general/general.ts
+++ b/lib/routes/gov/general/general.ts
@@ -186,7 +186,7 @@ const gdgov = async (info, ctx) => {
title: data.art_title,
description: renderZcjdpt(data),
pubDate: timezone(parseDate(data.pub_time), +8),
- author: /(本|本网|本站)/.test(data.pub_unite) ? authorisme : data.pub_unite,
+ author: /本/.test(data.pub_unite) ? authorisme : data.pub_unite,
};
});
} else if (idlink.host === 'mp.weixin.qq.com') {
@@ -217,7 +217,7 @@ const gdgov = async (info, ctx) => {
title,
description,
pubDate: timezone(parseDate(pubDate, pubDate_format), +8),
- author: /本|本网|本站/.test(author) ? authorisme : author,
+ author: /本/.test(author) ? authorisme : author,
};
});
}
diff --git a/lib/routes/gov/guangdong/tqyb/tfxtq.tsx b/lib/routes/gov/guangdong/tqyb/tfxtq.tsx
index 3dde4b33aa3d..a2c09e3e2e0b 100644
--- a/lib/routes/gov/guangdong/tqyb/tfxtq.tsx
+++ b/lib/routes/gov/guangdong/tqyb/tfxtq.tsx
@@ -34,7 +34,7 @@ async function handler() {
const tfxtqJsUrl = `${rootUrl}/data/gzWeather/weatherTips.js`;
const response = await got.get(tfxtqJsUrl);
- const data = JSON.parse(`[{${response.data.match(/Tips = {(.*?)}/)[1]}}]`);
+ const data = JSON.parse(`[{${response.data.match(/Tips = \{(.*?)\}/)[1]}}]`);
const items = data.map((item) => ({
title: item.title,
diff --git a/lib/routes/gov/miit/wjfb.ts b/lib/routes/gov/miit/wjfb.ts
index 13c53ff141a6..0f4252db3ff6 100644
--- a/lib/routes/gov/miit/wjfb.ts
+++ b/lib/routes/gov/miit/wjfb.ts
@@ -72,7 +72,7 @@ async function handler(ctx) {
item.description = content('#con_con')
.html()
- ?.replaceAll(/()/g, '$1' + rootUrl + '$2$3');
+ ?.replaceAll(/()/g, '$1' + rootUrl + '$2$3');
return item;
})
diff --git a/lib/routes/gov/miit/yjzj.ts b/lib/routes/gov/miit/yjzj.ts
index 2b9deec1dd29..8138f23f6458 100644
--- a/lib/routes/gov/miit/yjzj.ts
+++ b/lib/routes/gov/miit/yjzj.ts
@@ -71,7 +71,7 @@ async function handler() {
item.description = content('#con_con')
.html()
- ?.replaceAll(/()/g, '$1' + rootUrl + '$2$3');
+ ?.replaceAll(/()/g, '$1' + rootUrl + '$2$3');
return item;
})
diff --git a/lib/routes/gov/mofcom/article.ts b/lib/routes/gov/mofcom/article.ts
index 6fd06e75fc23..d861364e4c69 100644
--- a/lib/routes/gov/mofcom/article.ts
+++ b/lib/routes/gov/mofcom/article.ts
@@ -47,7 +47,7 @@ async function handler(ctx) {
cache.tryGet(item.link, async () => {
let responses = await got(item.link);
// xwfb/xwlxfbh || xwfb/xwztfbh
- const redirect = responses.data.match(/_cofing1={href:"(.*)",type/) || responses.data.match(/window\.location\.href='(.*)'/);
+ const redirect = responses.data.match(/_cofing1=\{href:"(.*)",type/) || responses.data.match(/window\.location\.href='(.*)'/);
if (redirect) {
responses = await got(redirect[1], {
headers: {
diff --git a/lib/routes/gov/nrta/news.ts b/lib/routes/gov/nrta/news.ts
index 8cd9d7ee0530..519f292405b2 100644
--- a/lib/routes/gov/nrta/news.ts
+++ b/lib/routes/gov/nrta/news.ts
@@ -45,7 +45,7 @@ async function handler(ctx) {
url: currentUrl,
});
- const regex = /(?=\s*<)/gi;
+ const regex = /(?=\s*<)/gi;
const data = response.data.replaceAll(regex, '$1');
const $ = load(data, {
diff --git a/lib/routes/gov/nsfc/index.ts b/lib/routes/gov/nsfc/index.ts
index 92a4320430e3..124e308b1f6b 100644
--- a/lib/routes/gov/nsfc/index.ts
+++ b/lib/routes/gov/nsfc/index.ts
@@ -46,7 +46,7 @@ async function handler(ctx) {
title: item.prop('title') ?? item.text(),
link: new URL(item.prop('href'), rootUrl).href,
guid: `nsfc-${item.prop('id')}`,
- pubDate: parseDate(item.next().text().replace(/\[]/g, '', ['YYYY-MM-DD', 'YY-MM-DD'])),
+ pubDate: parseDate(item.next().text().replace(/\[\]/g, '', ['YYYY-MM-DD', 'YY-MM-DD'])),
};
});
diff --git a/lib/routes/gov/stats/index.tsx b/lib/routes/gov/stats/index.tsx
index c7d31461d507..b43af12be027 100644
--- a/lib/routes/gov/stats/index.tsx
+++ b/lib/routes/gov/stats/index.tsx
@@ -115,7 +115,7 @@ async function handler(ctx) {
// articles from www.news.cn or www.gov.cn
- if (/(news\.cn|www\.gov\.cn)/.test(item.link)) {
+ if (/news\.cn|www\.gov\.cn/.test(item.link)) {
if (content('.year').text()) {
item.pubDate = timezone(parseDate(`${content('.year').text()}/${content('.day').text()} ${content('.time').text()}`, 'YYYY/MM/DD HH:mm:ss'), +8);
item.author = content('.source')
diff --git a/lib/routes/gov/zhengce/govall.ts b/lib/routes/gov/zhengce/govall.ts
index a1f13b5aa565..ca70133c1d3b 100644
--- a/lib/routes/gov/zhengce/govall.ts
+++ b/lib/routes/gov/zhengce/govall.ts
@@ -52,7 +52,7 @@ async function handler(ctx) {
});
const query = `${params.toString()}&${advance}`;
const res = await got.get(link, {
- searchParams: query.replaceAll(/([\u4E00-\u9FA5])/g, (str) => encodeURIComponent(str)),
+ searchParams: query.replaceAll(/[\u4E00-\u9FA5]/g, (str) => encodeURIComponent(str)),
});
const $ = load(res.data);
diff --git a/lib/routes/gov/zj/ningbogzw-notice.ts b/lib/routes/gov/zj/ningbogzw-notice.ts
index eda9789d0f27..61b26a86aafe 100644
--- a/lib/routes/gov/zj/ningbogzw-notice.ts
+++ b/lib/routes/gov/zj/ningbogzw-notice.ts
@@ -35,7 +35,7 @@ export const route: Route = {
return {
title: `宁波市国资委-${noticeCate}:${title.text()}`,
link: `http://gzw.ningbo.gov.cn${title.attr('href')}`,
- pubDate: parseDate($('p').text().replaceAll(/\[|]/g, '')),
+ pubDate: parseDate($('p').text().replaceAll(/\[|\]/g, '')),
author: '宁波市国资委',
description: title.text(),
};
diff --git a/lib/routes/gov/zj/ningborsjnotice.ts b/lib/routes/gov/zj/ningborsjnotice.ts
index e3f54a2b08fa..d9e06dad3f66 100644
--- a/lib/routes/gov/zj/ningborsjnotice.ts
+++ b/lib/routes/gov/zj/ningborsjnotice.ts
@@ -35,7 +35,7 @@ export const route: Route = {
return {
title: `宁波人社公告-${noticeCate}:${title.text()}`,
link: `http://rsj.ningbo.gov.cn${title.attr('href')}`,
- pubDate: parseDate($('.news_date').text().replaceAll(/\[|]/g, '')),
+ pubDate: parseDate($('.news_date').text().replaceAll(/\[|\]/g, '')),
author: '宁波市人力资源和社会保障局',
description: title.text(),
};
diff --git a/lib/routes/guancha/personalpage.ts b/lib/routes/guancha/personalpage.ts
index 74f482dde583..13f8118d93df 100644
--- a/lib/routes/guancha/personalpage.ts
+++ b/lib/routes/guancha/personalpage.ts
@@ -38,7 +38,7 @@ async function handler(ctx) {
const minuteRelativeTime = /(\d+)\s*分钟前/;
const hourRelativeTime = /(\d+)\s*小时前/;
const yesterdayRelativeTime = /昨天\s*(\d+):(\d+)/;
- const shortDate = /(\d+)-(\d+)\s*(\d+):(\d+)/;
+ const shortDate = /(\d+)-(\d+)\s+(\d+):(\d+)/;
// offset to ADD for transforming China time to UTC
const chinaToUtcOffset = -8 * 3600 * 1000;
diff --git a/lib/routes/hk01/utils.tsx b/lib/routes/hk01/utils.tsx
index 863be3af21b3..52ede4cd3bb4 100644
--- a/lib/routes/hk01/utils.tsx
+++ b/lib/routes/hk01/utils.tsx
@@ -110,7 +110,7 @@ const ProcessItems = (items, limit, tryGet) =>
url: item.link,
});
- const content = JSON.parse(detailResponse.data.match(/"__NEXT_DATA__" type="application\/json">({"props":.*})<\/script>/)[1]);
+ const content = JSON.parse(detailResponse.data.match(/"__NEXT_DATA__" type="application\/json">(\{"props":.*\})<\/script>/)[1]);
item.description = renderDescription({
image: content.props.initialProps.pageProps.article.originalImage.cdnUrl,
diff --git a/lib/routes/hkej/index.tsx b/lib/routes/hkej/index.tsx
index eeeacd849e3c..a1be1a98cc3b 100644
--- a/lib/routes/hkej/index.tsx
+++ b/lib/routes/hkej/index.tsx
@@ -158,7 +158,7 @@ async function handler(ctx) {
.toArray()
.map((e) => content(e).text().trim());
item.description = renderDesc(articleImg, content('div#article-content').html());
- item.pubDate = timezone(/(今|昨)/.test(pubDate) ? parseRelativeDate(pubDate) : parseDate(pubDate, 'YYYY M D'), +8);
+ item.pubDate = timezone(/今|昨/.test(pubDate) ? parseRelativeDate(pubDate) : parseDate(pubDate, 'YYYY M D'), +8);
return item;
})
diff --git a/lib/routes/hongkong/chp.ts b/lib/routes/hongkong/chp.ts
index 04de3eac81e6..916cd5f1d9cc 100644
--- a/lib/routes/hongkong/chp.ts
+++ b/lib/routes/hongkong/chp.ts
@@ -70,7 +70,7 @@ async function handler(ctx) {
url: apiUrl,
});
- const list = JSON.parse(response.data.match(/"data":(\[{.*}])}/)[1]).map((item) => {
+ const list = JSON.parse(response.data.match(/"data":(\[\{.*\}\])\}/)[1]).map((item) => {
let link: string;
if (item.UrlPath_en) {
diff --git a/lib/routes/hpoi/utils.ts b/lib/routes/hpoi/utils.ts
index 3ca6700c4200..5168114c2e71 100644
--- a/lib/routes/hpoi/utils.ts
+++ b/lib/routes/hpoi/utils.ts
@@ -24,7 +24,7 @@ const MAPs = {
};
const ProcessFeed = async (type, id, order) => {
- let link = MAPs[type].url.replace(/{id}/, id).replace(/{order}/, order || 'add');
+ let link = MAPs[type].url.replace(/\{id\}/, id).replace(/\{order\}/, order || 'add');
let response = await got({
method: 'get',
url: link,
@@ -35,7 +35,7 @@ const ProcessFeed = async (type, id, order) => {
let $ = load(response.data);
if (type === 'work') {
- const overviewLink = MAPs.overview.url.replace(/{id}/, id);
+ const overviewLink = MAPs.overview.url.replace(/\{id\}/, id);
const overviewResponse = await got({
method: 'get',
url: overviewLink,
diff --git a/lib/routes/hupu/utils.ts b/lib/routes/hupu/utils.ts
index 2e6dba7106c5..7cce28d1530d 100644
--- a/lib/routes/hupu/utils.ts
+++ b/lib/routes/hupu/utils.ts
@@ -238,8 +238,8 @@ export function getEntryDetails(item: DataItem): Promise {
// Possible formats: 10:21, 45分钟前, 09-15 19:57
const currentYear = new Date().getFullYear();
const currentDate = new Date();
- const monthDayTimePattern = /^(\d{2})-(\d{2}) (\d{2}):(\d{2})$/;
- const timeOnlyPattern = /^(\d{1,2}):(\d{2})$/;
+ const monthDayTimePattern = /^\d{2}-\d{2} \d{2}:\d{2}$/;
+ const timeOnlyPattern = /^\d{1,2}:\d{2}$/;
let processedDateString = pubDateString;
if (monthDayTimePattern.test(pubDateString)) {
diff --git a/lib/routes/hypergryph/arknights/arktca.ts b/lib/routes/hypergryph/arknights/arktca.ts
index 2a53156a8d92..53a08ca48efa 100644
--- a/lib/routes/hypergryph/arknights/arktca.ts
+++ b/lib/routes/hypergryph/arknights/arktca.ts
@@ -48,7 +48,7 @@ async function handler() {
allUrlList.map(async (item) => {
const { data: response } = await got(item);
const $$ = load(response);
- const regVol = /(?<=Vol. )(\w+)/;
+ const regVol = /(?<=Vol. )\w+/;
const match = regVol.exec($$('div.vp-page-title').find('h1').text());
const volume = match ? match[0] : '';
const links = $$('div.theme-hope-content > ul a')
diff --git a/lib/routes/ifeng/feng.ts b/lib/routes/ifeng/feng.ts
index edea32c3d7fe..3f5b86db2bb9 100644
--- a/lib/routes/ifeng/feng.ts
+++ b/lib/routes/ifeng/feng.ts
@@ -67,7 +67,7 @@ async function handler(ctx) {
const _allData = JSON.parse(
$('script')
.text()
- .match(/var allData = ({.*?});/)[1]
+ .match(/var allData = (\{.*?\});/)[1]
);
if (type === 'doc') {
item.description = extractDoc(_allData.docData.contentData.contentList);
diff --git a/lib/routes/ifeng/news.tsx b/lib/routes/ifeng/news.tsx
index b8b86ec9d35a..050b5119a27d 100644
--- a/lib/routes/ifeng/news.tsx
+++ b/lib/routes/ifeng/news.tsx
@@ -29,7 +29,7 @@ async function handler(ctx) {
const $ = load(response.data);
- const newsStream = JSON.parse(response.data.match(/"newsstream":(\[.*?]),"cooperation"/)[1]);
+ const newsStream = JSON.parse(response.data.match(/"newsstream":(\[.*?\]),"cooperation"/)[1]);
let items = newsStream.slice(0, limit).map((item) => ({
title: item.title,
@@ -47,9 +47,9 @@ async function handler(ctx) {
});
item.author = detailResponse.data.match(/"editorName":"(.*?)",/)[1];
- item.category = detailResponse.data.match(/},"keywords":"(.*?)",/)[1].split(',');
+ item.category = detailResponse.data.match(/\},"keywords":"(.*?)",/)[1].split(',');
const image = item.description;
- const description = JSON.parse(detailResponse.data.match(/"contentList":(\[.*?]),/)[1]).map((content) => content.data);
+ const description = JSON.parse(detailResponse.data.match(/"contentList":(\[.*?\]),/)[1]).map((content) => content.data);
item.description = renderToString(
<>
{image ? (
diff --git a/lib/routes/inewsweek/index.ts b/lib/routes/inewsweek/index.ts
index 24233919e50a..0fc92c9ca186 100644
--- a/lib/routes/inewsweek/index.ts
+++ b/lib/routes/inewsweek/index.ts
@@ -62,7 +62,7 @@ async function handler(ctx) {
parseDate(
$('div.editor')
.html()
- .split(/(\s\s+)/)[2]
+ .split(/(\s{2,})/)[2]
),
+8
);
diff --git a/lib/routes/iwara/utils.ts b/lib/routes/iwara/utils.ts
index 573e3a1ef114..90f05e4a3371 100644
--- a/lib/routes/iwara/utils.ts
+++ b/lib/routes/iwara/utils.ts
@@ -19,7 +19,7 @@ export const parseThumbnail = (type: 'video' | 'image', item: any) => {
}
// regex borrowed from https://stackoverflow.com/a/3726073
- const match = /https?:\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w-]*)(&(amp;)?[\w=?]*)?/.exec(item.embedUrl);
+ const match = /https?:\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w-]*)(?:&(?:amp;)?[\w=?]*)?/.exec(item.embedUrl);
if (match) {
return `
`;
}
diff --git a/lib/routes/ixigua/user-video.tsx b/lib/routes/ixigua/user-video.tsx
index 6e87671c00b4..0b0ad9cead79 100644
--- a/lib/routes/ixigua/user-video.tsx
+++ b/lib/routes/ixigua/user-video.tsx
@@ -44,7 +44,7 @@ async function handler(ctx) {
throw new Error('Failed to find SSR_HYDRATED_DATA');
}
- const jsonData = JSON.parse(jsData.match(/var\s+data\s*=\s*({.*?});/s)?.[1].replaceAll('undefined', 'null') || '{}');
+ const jsonData = JSON.parse(jsData.match(/var\s+data\s*=\s*(\{.*?\});/s)?.[1].replaceAll('undefined', 'null') || '{}');
const {
AuthorVideoList: { videoList: videoInfos },
diff --git a/lib/routes/jandan/utils.ts b/lib/routes/jandan/utils.ts
index 040d4ff00b5d..95af854819fa 100644
--- a/lib/routes/jandan/utils.ts
+++ b/lib/routes/jandan/utils.ts
@@ -20,7 +20,7 @@ export const extractPageId = async (url: string, referer: string): Promise {
const content = $(script).html() || '';
- const match = content.match(/PAGE\s*=\s*{\s*id\s*:\s*(\d+)\s*}/);
+ const match = content.match(/PAGE\s*=\s*\{\s*id\s*:\s*(\d+)\s*\}/);
if (match) {
pageId = match[1];
}
diff --git a/lib/routes/javbus/index.tsx b/lib/routes/javbus/index.tsx
index f5070c88b952..bef6d7791368 100644
--- a/lib/routes/javbus/index.tsx
+++ b/lib/routes/javbus/index.tsx
@@ -12,7 +12,7 @@ import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
const toSize = (raw) => {
- const matches = raw.match(/(\d+(\.\d+)?)(\w+)/);
+ const matches = raw.match(/(\d+(\.\d+)?)(\D\w*)/);
return matches[3] === 'GB' ? matches[1] * 1024 : matches[1];
};
@@ -154,7 +154,7 @@ async function handler(ctx) {
// To fetch magnets.
try {
- const matches = detailResponse.data.match(/var gid = (\d+);[\S\s]*var uc = (\d+);[\S\s]*var img = '(.*)';/);
+ const matches = detailResponse.data.match(/var gid = (\d+);[\s\S]*var uc = (\d+);[\s\S]*var img = '(.*)';/);
const magnetResponse = await got({
method: 'get',
diff --git a/lib/routes/jiemian/common.tsx b/lib/routes/jiemian/common.tsx
index 1a226134008b..5ced6cb40a4f 100644
--- a/lib/routes/jiemian/common.tsx
+++ b/lib/routes/jiemian/common.tsx
@@ -34,7 +34,7 @@ export const handler = async (ctx): Promise => {
const href = item.prop('href');
const link = href ? (href.startsWith('/') ? new URL(href, rootUrl).href : href) : undefined;
- if (link && /\/(article|video)\/\w+\.html/.test(link)) {
+ if (link && /\/(?:article|video)\/\w+\.html/.test(link)) {
items[link] = {
title: item.text(),
link,
diff --git a/lib/routes/jike/user.ts b/lib/routes/jike/user.ts
index be9308c43155..dafa0a0b0f1a 100644
--- a/lib/routes/jike/user.ts
+++ b/lib/routes/jike/user.ts
@@ -139,7 +139,7 @@ async function handler(ctx) {
const single = {
title: `${typeMap[item.type]}了: ${shortenTitle}`,
- description: `${content}${linkTemplate}${imgTemplate}`.replace(/(
|\s)+$/, ''),
+ description: `${content}${linkTemplate}${imgTemplate}`.replace(/(?:
|\s)+$/, ''),
pubDate: parseDate(item.createdAt),
link: getLink(item.id, item.type),
_extra: repostContent && {
diff --git a/lib/routes/jike/utils.ts b/lib/routes/jike/utils.ts
index 9fbe7b082de0..9fa9653a9567 100644
--- a/lib/routes/jike/utils.ts
+++ b/lib/routes/jike/utils.ts
@@ -117,7 +117,7 @@ const topicDataHanding = (data, ctx) =>
// default:
// break;
// }
- const imgUrl = /\.[\da-z]+?\?imageMogr2/.test(pic.picUrl) ? pic.picUrl.split('?imageMogr2/')[0] : pic.picUrl.replace(/thumbnail\/.+/, '');
+ const imgUrl = /\.[\da-z]+\?imageMogr2/.test(pic.picUrl) ? pic.picUrl.split('?imageMogr2/')[0] : pic.picUrl.replace(/thumbnail\/.+/, '');
description += `
`;
// description += `
{
+ imgTag.replaceAll(/\b(src|data-src)="(?!http|\/\/)([^"]*)"/g, (_, attrName, relativePath) => {
const absoluteImageUrl = new URL(relativePath, baseUrl).href;
return `${attrName}="${absoluteImageUrl}"`;
})
diff --git a/lib/routes/kunchengblog/essay.ts b/lib/routes/kunchengblog/essay.ts
index 3bb85f90f8e6..82ef34f8ed33 100644
--- a/lib/routes/kunchengblog/essay.ts
+++ b/lib/routes/kunchengblog/essay.ts
@@ -53,7 +53,7 @@ async function handler(ctx) {
.map((item) => {
const source = consumer.sourceContentFor(item).replaceAll(/\s\n/g, '');
- const processedSource = source.replaceAll(/(\w+)={+([^{}]+)}+/g, (match, key, value) => {
+ const processedSource = source.replaceAll(/(\w+)=\{+([^{}]+)\}+/g, (match, key, value) => {
const processedValue = value.slice(1, -1).replaceAll('"', "'").trim();
return `${key}="${processedValue}"`;
});
diff --git a/lib/routes/leetcode/dailyquestion-solution-cn.ts b/lib/routes/leetcode/dailyquestion-solution-cn.ts
index eb19f5c5a5e9..bcc30f5b0677 100644
--- a/lib/routes/leetcode/dailyquestion-solution-cn.ts
+++ b/lib/routes/leetcode/dailyquestion-solution-cn.ts
@@ -186,7 +186,7 @@ async function handler() {
const handleText = (s) => {
// 处理多语言代码展示问题
- s = s.replaceAll(/(```)([\d#+A-Za-z-]+)\s*?(\[.*?])?\n/g, '\r\n###$2\r\n$1$2\r\n');
+ s = s.replaceAll(/(```)([\d#+A-Z-]+)\s*?(\[.*?\])?\n/gi, '\r\n###$2\r\n$1$2\r\n');
return s;
};
return {
diff --git a/lib/routes/lfsyd/utils.tsx b/lib/routes/lfsyd/utils.tsx
index 160de968bb64..0a5f05fe437a 100644
--- a/lib/routes/lfsyd/utils.tsx
+++ b/lib/routes/lfsyd/utils.tsx
@@ -46,7 +46,7 @@ const ProcessForm = (form, type) => {
};
const cleanHtml = (htmlString) => {
- const regex = /(|
)(.*?)?
(标准|狂野)日报投稿.*?<\/strong>(.*?)?(<\/p>|<\/div>)(.|\n)*$/;
+ const regex = /(|
)(.*?)
(标准|狂野)日报投稿.*?<\/strong>(.*?)(<\/p>|<\/div>)(.|\n)*$/;
const $ = load(htmlString.replace(regex, ''));
$('.yingdi-car,.bbspost,.deck-set').each((i, e) => {
diff --git a/lib/routes/line/utils.ts b/lib/routes/line/utils.ts
index 087ddc3655ab..190ab04615c1 100644
--- a/lib/routes/line/utils.ts
+++ b/lib/routes/line/utils.ts
@@ -20,7 +20,7 @@ const parseItems = (list) =>
Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- const edition = item.link.match(/today\.line\.me\/(\w+?)\/v[23]\/.*$/)[1];
+ const edition = item.link.match(/today\.line\.me\/(\w+)\/v[23]\/.*$/)[1];
let data;
try {
const response = await got(`${baseUrl}/webapi/portal/page/setting/article`, {
diff --git a/lib/routes/lorientlejour/index.tsx b/lib/routes/lorientlejour/index.tsx
index 0d54c8adfd16..f996e275d600 100644
--- a/lib/routes/lorientlejour/index.tsx
+++ b/lib/routes/lorientlejour/index.tsx
@@ -86,7 +86,7 @@ async function viewCategory(category: string) {
}
async function handler(ctx) {
- const categoryId = (ctx.req.param('category') ?? '977-Lebanon').split('|').map((item) => item.match(/^(\d+)/i)[0] ?? item);
+ const categoryId = (ctx.req.param('category') ?? '977-Lebanon').split('|').map((item) => item.match(/^(\d+)/)[0] ?? item);
const limit = ctx.req.query('limit') ?? 25;
let token;
diff --git a/lib/routes/luolei/index.tsx b/lib/routes/luolei/index.tsx
index 49e7a0822c3f..50ce10c8b2fa 100644
--- a/lib/routes/luolei/index.tsx
+++ b/lib/routes/luolei/index.tsx
@@ -70,7 +70,7 @@ export const handler = async (ctx) => {
const { data: themeResponse } = await got(themeUrl);
let items = themeResponse
- .match(/{"title":".*?"string":".*?"}}/g)
+ .match(/\{"title":".*?"string":".*?"\}\}/g)
.slice(0, limit)
.map((item) => {
item = JSON.parse(
diff --git a/lib/routes/magazinelib/latest-magazine.tsx b/lib/routes/magazinelib/latest-magazine.tsx
index 2c101052cb56..ee1f4c4b1f07 100644
--- a/lib/routes/magazinelib/latest-magazine.tsx
+++ b/lib/routes/magazinelib/latest-magazine.tsx
@@ -46,7 +46,7 @@ async function handler(ctx) {
if (subTitle === undefined) {
subTitle = '';
} else {
- subTitle = subTitle.replaceAll(/[^\dA-Za-z]+/g, ' ').toUpperCase();
+ subTitle = subTitle.replaceAll(/[^\dA-Z]+/gi, ' ').toUpperCase();
subTitle = ` - ${subTitle}`;
}
diff --git a/lib/routes/mastodon/utils.ts b/lib/routes/mastodon/utils.ts
index 0bebaab81c85..8b33870b7731 100644
--- a/lib/routes/mastodon/utils.ts
+++ b/lib/routes/mastodon/utils.ts
@@ -40,8 +40,8 @@ const parseStatuses = (data) =>
const accountRepostedBy = item.reblog ? item.account : null;
item = item.reblog ?? item;
- const content = item.content ? item.content.replaceAll(/|<\/span.*?>/gm, '') : '';
- const contentRemovedHtml = content.replaceAll(/<(?:.|\n)*?>/gm, '\n');
+ const content = item.content ? item.content.replaceAll(/|<\/span.*?>/g, '') : '';
+ const contentRemovedHtml = content.replaceAll(/<(?:.|\n)*?>/g, '\n');
const author = `${item.account.display_name} (@${item.account.acct})`;
const link = item.url;
diff --git a/lib/routes/maven/central.ts b/lib/routes/maven/central.ts
index c6a1a6634824..dee6acf2c8b8 100644
--- a/lib/routes/maven/central.ts
+++ b/lib/routes/maven/central.ts
@@ -45,7 +45,7 @@ export const route: Route = {
* Handles cases without delimiters: 5.0.0beta2, 7.0.0canary
* Handles secondary versions: 1.0.0-M6.1
*/
-const UNSTABLE_VERSION_REGEX = /[-_.]?(rc|m|snapshot|alpha|beta|preview|canary)[.\d]*$/i;
+const UNSTABLE_VERSION_REGEX = /[-_.]?(?:rc|m|snapshot|alpha|beta|preview|canary)[.\d]*$/i;
/**
* Regex to extract date in the format YYYY-MM-DD HH:mm (e.g., 2024-09-22 04:19)
diff --git a/lib/routes/metacritic/index.tsx b/lib/routes/metacritic/index.tsx
index 9f402f8ced1a..4c867dab650e 100644
--- a/lib/routes/metacritic/index.tsx
+++ b/lib/routes/metacritic/index.tsx
@@ -81,7 +81,7 @@ async function handler(ctx) {
if (platforms.length || networks.length) {
const labels = {};
- const labelPattern = String.raw`{label:"([^"]+)",value:(\d+),href:a,meta:{mcDisplayWeight`;
+ const labelPattern = String.raw`\{label:"([^"]+)",value:(\d+),href:a,meta:\{mcDisplayWeight`;
for (const m of currentResponse.match(new RegExp(labelPattern, 'g'))) {
const matches = m.match(new RegExp(labelPattern));
diff --git a/lib/routes/meteor/utils.ts b/lib/routes/meteor/utils.ts
index 8b7de2293589..124f57a07b26 100644
--- a/lib/routes/meteor/utils.ts
+++ b/lib/routes/meteor/utils.ts
@@ -25,7 +25,7 @@ const getBoards = (tryGet) =>
});
const renderDesc = (desc) => {
- const youTube = /(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/?.*(?:watch|embed)?(?:.*v=|v\/|\/)([\w-]+)&?/g;
+ const youTube = /(?:https?:\/\/)?(?:www\.)?youtu\.?be.*(?:v=|v\/|\/)([\w-]+)&?/g;
const matchYouTube = desc.match(youTube);
const matchImgur = desc.match(/https:\/\/i.imgur.com\/\w*.(jpg|png|gif|jpeg)/g);
const matchVideo = desc.match(/(https:\/\/storage\.meteor\.today\/video\/[\da-f]{24}\.)(mp4|mov|avi|flv|wmv|mpeg|mkv)/gi);
diff --git a/lib/routes/mirror/index.ts b/lib/routes/mirror/index.ts
index 658715621d53..4a0b4754af5b 100644
--- a/lib/routes/mirror/index.ts
+++ b/lib/routes/mirror/index.ts
@@ -39,7 +39,7 @@ async function handler(ctx) {
const response = await got(currentUrl);
- const data = JSON.parse(response.data.match(/"__NEXT_DATA__" type="application\/json">({"props":.*})<\/script>/)[1]);
+ const data = JSON.parse(response.data.match(/"__NEXT_DATA__" type="application\/json">(\{"props":.*\})<\/script>/)[1]);
const items = Object.keys(data.props.pageProps.__APOLLO_STATE__)
.filter((key) => key.startsWith('entry:'))
diff --git a/lib/routes/modelscope/community.tsx b/lib/routes/modelscope/community.tsx
index 341202c55389..4a7a5314a8ce 100644
--- a/lib/routes/modelscope/community.tsx
+++ b/lib/routes/modelscope/community.tsx
@@ -72,7 +72,7 @@ async function handler(ctx) {
const initialData = JSON.parse(
$('script')
.text()
- .match(/window\.__INITIAL_STATE__\s*=\s*({.*?});/)[1]
+ .match(/window\.__INITIAL_STATE__\s*=\s*(\{.*?\});/)[1]
);
item.description = renderDescription(item.thumb, item.description, initialData.pageData.detail.ext.content);
diff --git a/lib/routes/mrinalxdev/blog.ts b/lib/routes/mrinalxdev/blog.ts
index 5b2ff9c3d25e..e9485d133041 100644
--- a/lib/routes/mrinalxdev/blog.ts
+++ b/lib/routes/mrinalxdev/blog.ts
@@ -41,7 +41,7 @@ async function handler() {
const text = $el.text().trim();
// Extract date from link text (e.g., "2nd October, 2025 Redis 101 : From a Beginners POV")
- const dateMatch = text.match(/^(\d{1,2}(?:st|nd|rd|th)\s+\w+,\s+\d{4})\s+(.+)$/);
+ const dateMatch = text.match(/^(\d{1,2}(?:st|nd|rd|th)\s+\w+,\s+\d{4})\s+(\S.*)$/);
let date: string | undefined;
let title: string;
diff --git a/lib/routes/mydrivers/index.tsx b/lib/routes/mydrivers/index.tsx
index 9cabfc0395a3..b9754e5e1853 100644
--- a/lib/routes/mydrivers/index.tsx
+++ b/lib/routes/mydrivers/index.tsx
@@ -53,7 +53,7 @@ async function handler(ctx) {
let newTitle = '';
- if (!/^(\w+\/\w+)$/.test(category)) {
+ if (!/^\w+\/\w+$/.test(category)) {
newTitle = `${title} - ${Object.hasOwn(categories, category) ? categories[category] : categories[Object.keys(categories)[0]]}`;
category = `ac/${category}`;
}
diff --git a/lib/routes/mydrivers/rank.ts b/lib/routes/mydrivers/rank.ts
index 7f5f115ccedd..88da71f1fe2f 100644
--- a/lib/routes/mydrivers/rank.ts
+++ b/lib/routes/mydrivers/rank.ts
@@ -47,7 +47,7 @@ async function handler(ctx) {
let items = $('a')
.toArray()
- .filter((item) => /\/(\d+)\.html?/.test($(item).prop('href')))
+ .filter((item) => /\/\d+\.html?/.test($(item).prop('href')))
.slice(0, limit)
.map((item) => {
item = $(item);
diff --git a/lib/routes/natgeo/dailyphoto.tsx b/lib/routes/natgeo/dailyphoto.tsx
index 347b66384799..9357400224a1 100644
--- a/lib/routes/natgeo/dailyphoto.tsx
+++ b/lib/routes/natgeo/dailyphoto.tsx
@@ -51,7 +51,7 @@ async function handler() {
const response = await cache.tryGet(apiUrl, async () => (await got(apiUrl)).data, config.cache.contentExpire, false);
const $ = load(response);
- const natgeo = JSON.parse($.html().match(/window\['__natgeo__']=(.*);/)[1]);
+ const natgeo = JSON.parse($.html().match(/window\['__natgeo__'\]=(.*);/)[1]);
const media = natgeo.page.content.mediaspotlight.frms[0].mods[0].edgs[1].media;
const items = media.map((item) => ({
diff --git a/lib/routes/nationalgeographic/latest-stories.tsx b/lib/routes/nationalgeographic/latest-stories.tsx
index afda5cbc60cb..c3ba067ce433 100644
--- a/lib/routes/nationalgeographic/latest-stories.tsx
+++ b/lib/routes/nationalgeographic/latest-stories.tsx
@@ -11,7 +11,7 @@ const findNatgeo = ($) =>
JSON.parse(
$('script')
.text()
- .match(/\['__natgeo__']=({.*?});/)[1]
+ .match(/\['__natgeo__'\]=(\{.*?\});/)[1]
);
type StoryMedia = {
diff --git a/lib/routes/nature/utils.ts b/lib/routes/nature/utils.ts
index bebefabc07c2..f30ada7aab34 100644
--- a/lib/routes/nature/utils.ts
+++ b/lib/routes/nature/utils.ts
@@ -105,7 +105,7 @@ const getDataLayer = (html) =>
JSON.parse(
html('script[data-test=dataLayer]')
.text()
- .match(/window\.dataLayer = \[(.*)];/s)[1]
+ .match(/window\.dataLayer = \[(.*)\];/s)[1]
);
const cookieJar = new CookieJar();
diff --git a/lib/routes/ncpssd/newlist.ts b/lib/routes/ncpssd/newlist.ts
index 8201212a2b5a..61421915ce69 100644
--- a/lib/routes/ncpssd/newlist.ts
+++ b/lib/routes/ncpssd/newlist.ts
@@ -37,7 +37,7 @@ async function handler() {
const title = $(p)
.find('a')
.text()
- .replaceAll(/(\r\n|\n|\r)/gm, '')
+ .replaceAll(/(\r\n|\n|\r)/g, '')
.trim();
const articleUrl =
baseUrl +
diff --git a/lib/routes/neu/yz.ts b/lib/routes/neu/yz.ts
index 1b8ae5844b38..8e195936112a 100644
--- a/lib/routes/neu/yz.ts
+++ b/lib/routes/neu/yz.ts
@@ -40,7 +40,7 @@ const parsePage = async (items, type) => {
})(),
author: type === DOWNLOAD_ID ? DOWNLOAD_AUTHOR : '',
};
- if (type === DOWNLOAD_ID && /\.(pdf|docx?|xlsx?|zip|rar|7z)$/i.test(url)) {
+ if (type === DOWNLOAD_ID && /\.(?:pdf|docx?|xlsx?|zip|rar|7z)$/i.test(url)) {
resultItem.description = `
${title}
点击进入下载地址传送门~
diff --git a/lib/routes/nga/forum.ts b/lib/routes/nga/forum.ts
index 920454dc74a5..b7768df13848 100644
--- a/lib/routes/nga/forum.ts
+++ b/lib/routes/nga/forum.ts
@@ -35,11 +35,11 @@ async function handler(ctx) {
}
const formatContent = (content) =>
content
- .replaceAll(/\[img](.+?)\[\/img]/g, (match, p1) => {
+ .replaceAll(/\[img\](.+?)\[\/img\]/g, (match, p1) => {
const src = p1.replaceAll(/\?.*/g, '');
return `
`;
})
- .replaceAll(/\[url](.+?)\[\/url]/g, '$1');
+ .replaceAll(/\[url\](.+?)\[\/url\]/g, '$1');
const homePage = await got.post('https://ngabbs.com/app_api.php?__lib=subject&__act=list', {
headers: {
'X-User-Agent': X_UA,
diff --git a/lib/routes/nga/post.ts b/lib/routes/nga/post.ts
index 6f0a7782f287..a13284a4e482 100644
--- a/lib/routes/nga/post.ts
+++ b/lib/routes/nga/post.ts
@@ -48,7 +48,7 @@ async function handler(ctx) {
const getLastPageId = async (tid, authorId) => {
const $ = await getPage(tid, authorId);
const nav = $('#pagebtop');
- const match = nav.html().match(/{0:'\/read\.php\?tid=(\d+).*?',1:(\d+),.*?}/);
+ const match = nav.html().match(/\{0:'\/read\.php\?tid=(\d)[^']*',1:(\d+),[^}]*\}/);
return match ? match[2] : 1;
};
@@ -62,33 +62,33 @@ async function handler(ctx) {
const formatContent = (str) => {
// 简单样式
- str = deepReplace(str, /\[(b|u|i|del|code|sub|sup)](.+?)\[\/\1]/g, '<$1>$2$1>');
+ str = deepReplace(str, /\[([bui]|del|code|sub|sup)\](.+?)\[\/\1\]/g, '<$1>$2$1>');
str = str
- .replaceAll(/\[dice](.+?)\[\/dice]/g, 'ROLL : $1')
- .replaceAll(/\[color=(.+?)](.+?)\[\/color]/g, '$2')
- .replaceAll(/\[font=(.+?)](.+?)\[\/font]/g, '$2')
- .replaceAll(/\[size=(.+?)](.+?)\[\/size]/g, '$2')
- .replaceAll(/\[align=(.+?)](.+?)\[\/align]/g, '$2');
+ .replaceAll(/\[dice\](.+?)\[\/dice\]/g, 'ROLL : $1')
+ .replaceAll(/\[color=([^\]]+)\](.+?)\[\/color\]/g, '$2')
+ .replaceAll(/\[font=([^\]]+)\](.+?)\[\/font\]/g, '$2')
+ .replaceAll(/\[size=([^\]]+)\](.+?)\[\/size\]/g, '$2')
+ .replaceAll(/\[align=([^\]]+)\](.+?)\[\/align\]/g, '$2');
// 列表
- str = deepReplace(str, /\[\*](.+?)(?=\[\*]|\[\/list])/g, '$1');
- str = deepReplace(str, /\[list](.+?)\[\/list]/g, '');
+ str = deepReplace(str, /\[\*\](.+?)(?=\[\*\]|\[\/list\])/g, '$1');
+ str = deepReplace(str, /\[list\](.+?)\[\/list\]/g, '');
// 图片
- str = str.replaceAll(/\[img](.+?)\[\/img]/g, (m, src) => `
`);
+ str = str.replaceAll(/\[img\](.+?)\[\/img\]/g, (m, src) => `
`);
// 折叠
- str = deepReplace(str, /\[collapse(?:=(.+?))?](.+?)\[\/collapse]/g, '$1
$2 ');
+ str = deepReplace(str, /\[collapse(?:=([^\]]+))?\](.+?)\[\/collapse\]/g, '$1
$2 ');
// 引用
- str = deepReplace(str, /\[quote](.+?)\[\/quote]/g, '$1
')
- .replaceAll(/\[@(.+?)]/g, '@$1')
- .replaceAll(/\[uid=(\d+)](.+?)\[\/uid]/g, '@$2')
- .replaceAll(/\[tid=(\d+)](.+?)\[\/tid]/g, '$2')
- .replaceAll(/\[pid=(\d+),(\d+),(\d+)](.+?)\[\/pid]/g, (m, pid, tid, page, str) => {
+ str = deepReplace(str, /\[quote\](.+?)\[\/quote\]/g, '$1
')
+ .replaceAll(/\[@(.+?)\]/g, '@$1')
+ .replaceAll(/\[uid=(\d+)\](.+?)\[\/uid\]/g, '@$2')
+ .replaceAll(/\[tid=(\d+)\](.+?)\[\/tid\]/g, '$2')
+ .replaceAll(/\[pid=(\d+),(\d+),(\d+)\](.+?)\[\/pid\]/g, (m, pid, tid, page, str) => {
const url = `https://nga.178.com/read.php?tid=${tid}&page=${page}#pid${pid}Anchor`;
return `${str}`;
});
// 链接
- str = str.replaceAll(/\[url=(.+?)](.+?)\[\/url]/g, '$2');
+ str = str.replaceAll(/\[url=([^\]]+)\](.+?)\[\/url\]/g, '$2');
// 分割线
- str = str.replaceAll(/\[h](.+?)\[\/h]/g, '$1
');
+ str = str.replaceAll(/\[h\](.+?)\[\/h\]/g, '$1
');
return str;
};
diff --git a/lib/routes/nhentai/util.tsx b/lib/routes/nhentai/util.tsx
index aa953f25bea3..416e9b6a0eb5 100644
--- a/lib/routes/nhentai/util.tsx
+++ b/lib/routes/nhentai/util.tsx
@@ -148,7 +148,7 @@ const getDetail = async (simple) => {
const galleryImgs = $('.gallerythumb img')
.toArray()
.map((ele) => new URL($(ele).attr('data-src'), baseUrl).href)
- .map((src) => src.replace(/(.+)(\d+)t\.(.+)/, (_, p1, p2, p3) => `${p1}${p2}.${p3}`)) // thumb to high-quality
+ .map((src) => src.replace(/(.+)(\d)t\.(.+)/, (_, p1, p2, p3) => `${p1}${p2}.${p3}`)) // thumb to high-quality
.map((src) => src.replace(/t(\d+)\.nhentai\.net/, 'i$1.nhentai.net'))
.map((src) => src.replace(/\.(jpg|png|gif)\.webp$/, '.$1')) // 移除重複的.webp後綴
.map((src) => src.replace(/\.webp\.webp$/, '.webp')); // 處理.webp.webp的情況
diff --git a/lib/routes/nikkei/cn/index.ts b/lib/routes/nikkei/cn/index.ts
index 191a4e5105f9..4441eaea30d5 100644
--- a/lib/routes/nikkei/cn/index.ts
+++ b/lib/routes/nikkei/cn/index.ts
@@ -66,7 +66,7 @@ async function handler(ctx) {
let language: string;
let path = getSubPath(ctx);
- if (/^\/cn\/(cn|zh)/.test(path)) {
+ if (/^\/cn\/(?:cn|zh)/.test(path)) {
language = path.match(/^\/cn\/(cn|zh)/)[1];
path = path.match(new RegExp(String.raw`\/cn\/` + language + '(.*)'))[1];
} else {
diff --git a/lib/routes/nintendo/eshop-hk.ts b/lib/routes/nintendo/eshop-hk.ts
index 4b8607752c8c..4b4fd80f9e91 100644
--- a/lib/routes/nintendo/eshop-hk.ts
+++ b/lib/routes/nintendo/eshop-hk.ts
@@ -50,7 +50,7 @@ async function handler(ctx) {
const gallery = JSON.parse(
$('[type=text/x-magento-init]')
.text()
- .match(/{\n\s+"\[data-gal{2}ery-role=gal{2}ery-placeholder]": {\n\s+"mage(?:\/gal{2}ery){2}".*?}{4}(?:\s+}\n){3}/s)
+ .match(/\{\n\s+"\[data-gal{2}ery-role=gal{2}ery-placeholder\]": \{\n\s+"mage(?:\/gal{2}ery){2}".*?\}{4}(?:\s+\}\n){3}/s)
);
description = renderEshopHkDescription({
@@ -60,7 +60,7 @@ async function handler(ctx) {
host: 'store.nintendo.com.hk',
});
} else if (item.link.startsWith('https://ec.nintendo.com/')) {
- const jsonData = JSON.parse(response.match(/NXSTORE\.titleDetail\.jsonData = ({.*?});/)[1]);
+ const jsonData = JSON.parse(response.match(/NXSTORE\.titleDetail\.jsonData = (\{.*?\});/)[1]);
const { data: priceData } = await got('https://ec.nintendo.com/api/HK/zh/guest_prices', {
searchParams: {
ns_uids: jsonData.id,
diff --git a/lib/routes/nintendo/system-update.ts b/lib/routes/nintendo/system-update.ts
index c4fdb27667ea..149b470b7e27 100644
--- a/lib/routes/nintendo/system-update.ts
+++ b/lib/routes/nintendo/system-update.ts
@@ -47,7 +47,7 @@ async function handler() {
.toArray()
.map((element) => $(element).html())
.join('\n');
- const matched_version = /(\d\.)+\d/.exec(heading);
+ const matched_version = /(?:\d\.)+\d/.exec(heading);
return {
title: heading,
diff --git a/lib/routes/nowcoder/discuss.ts b/lib/routes/nowcoder/discuss.ts
index 458af092671f..2044b149a167 100644
--- a/lib/routes/nowcoder/discuss.ts
+++ b/lib/routes/nowcoder/discuss.ts
@@ -53,7 +53,7 @@ async function handler(ctx) {
const out = await Promise.all(
list.map((info) => {
const title = info.title || 'tzgg';
- const itemUrl = new URL(info.link, host).href.replace(/^(.*)\?(.*)$/, '$1');
+ const itemUrl = new URL(info.link, host).href.replace(/^([^\n\r\u2028\u2029]*)\?[^\n\r?\u2028\u2029]*$/, '$1');
return cache.tryGet(itemUrl, async () => {
const response = await got.get(itemUrl);
diff --git a/lib/routes/odaily/activity.ts b/lib/routes/odaily/activity.ts
index 554b90bfa24f..f401d4f60cab 100644
--- a/lib/routes/odaily/activity.ts
+++ b/lib/routes/odaily/activity.ts
@@ -54,7 +54,7 @@ async function handler(ctx) {
url: item.link,
});
- const content = load(detailResponse.data.match(/"content":"(.*)"}},"secondaryList":/)[1]);
+ const content = load(detailResponse.data.match(/"content":"(.*)"\}\},"secondaryList":/)[1]);
content('img').each((_, el) => {
content(el).attr(
diff --git a/lib/routes/odaily/post.ts b/lib/routes/odaily/post.ts
index c2cef7b46ce3..2de881e3c61c 100644
--- a/lib/routes/odaily/post.ts
+++ b/lib/routes/odaily/post.ts
@@ -68,7 +68,7 @@ async function handler(ctx) {
cache.tryGet(item.link, async () => {
const detailResponse = await got(item.link);
- const ssr = JSON.parse(`{${detailResponse.data.match(/window\.__INITIAL_STATE__ = {(.*)}/)[1]}}`);
+ const ssr = JSON.parse(`{${detailResponse.data.match(/window\.__INITIAL_STATE__ = \{(.*)\}/)[1]}}`);
const content = load(ssr.post.detail.content, null, false);
content('img').each((_, img) => {
diff --git a/lib/routes/oeeee/utils.ts b/lib/routes/oeeee/utils.ts
index 706dc335f70b..9f8217b060eb 100644
--- a/lib/routes/oeeee/utils.ts
+++ b/lib/routes/oeeee/utils.ts
@@ -20,7 +20,7 @@ const parseArticle = (item, tryGet) =>
item.description +=
content('.post-cont')
.html()
- .replaceAll(/data:image\S*=="\s*\n*\s*original="/g, '') ?? '';
+ .replaceAll(/data:image\S*=="\s*original="/g, '') ?? '';
if (!item.pubDate) {
item.pubDate = timezone(parseDate(content('.introduce').text().split()), +8);
}
diff --git a/lib/routes/outagereport/index.ts b/lib/routes/outagereport/index.ts
index d155a1876523..59a2ee124dc0 100644
--- a/lib/routes/outagereport/index.ts
+++ b/lib/routes/outagereport/index.ts
@@ -35,8 +35,8 @@ async function handler(ctx) {
// use RegExp because of irregular class name
const gaugeRegexp = /class="Gauge__Count.*?>(\d+)<\/text>/; // Core Pattern
- const gaugeTextRegexp = /class="Gauge__MessageWrapper.*?class="Gauge__Message.*?>(.*?)<\/span>/; // Core Pattern
- const rssDescribeRegexp = /){2,}/g, '
')
// ruby 標籤(為日文漢字標註讀音)
// ruby tags (for Japanese kanji readings)
- .replaceAll(/\[\[rb:(.*?)>(.*?)\]\]/g, '$1')
+ .replaceAll(/\[\[rb:([^>\n\r\u2028\u2029]*)>(.*?)\]\]/g, '$1')
// 外部連結
// external links
- .replaceAll(/\[\[jumpuri:(.*?)>(.*?)\]\]/g, '$1')
+ .replaceAll(/\[\[jumpuri:([^>\n\r\u2028\u2029]*)>(.*?)\]\]/g, '$1')
// 頁面跳轉,但由於 [newpage] 使用 hr 分隔,沒有頁數,沒必要跳轉,所以只顯示文字
// Page jumps, but since [newpage] uses hr separators, without the page numbers, jumping isn't needed, so just display text
.replaceAll(/\[jump:(\d+)\]/g, 'Jump to page $1')
diff --git a/lib/routes/playno1/av.ts b/lib/routes/playno1/av.ts
index 04956e769cc6..e0de6cf58cd1 100644
--- a/lib/routes/playno1/av.ts
+++ b/lib/routes/playno1/av.ts
@@ -56,7 +56,7 @@ async function handler(ctx) {
author: item
.find('.fire_right')
.text()
- .match(/作者:(.*)\s*\|/)[1]
+ .match(/作者:([^|]*)\|/)[1]
.trim(),
};
});
diff --git a/lib/routes/qingting/channel.ts b/lib/routes/qingting/channel.ts
index 6a9e47dfda9d..c1afb06fb42a 100644
--- a/lib/routes/qingting/channel.ts
+++ b/lib/routes/qingting/channel.ts
@@ -42,7 +42,7 @@ async function handler(ctx) {
items.map((item) =>
cache.tryGet(item.link, async () => {
response = await ofetch(item.link);
- const data = JSON.parse(response.match(/},"program":(.*?),"plist":/)[1]);
+ const data = JSON.parse(response.match(/\},"program":(.*?),"plist":/)[1]);
item.description = data.richtext;
return item;
})
diff --git a/lib/routes/qingting/podcast.ts b/lib/routes/qingting/podcast.ts
index b99513f3497b..bbde582e2d3e 100644
--- a/lib/routes/qingting/podcast.ts
+++ b/lib/routes/qingting/podcast.ts
@@ -83,7 +83,7 @@ async function handler(ctx) {
},
});
- const detail = JSON.parse(detailRes.match(/},"program":(.*?),"plist":/)[1]);
+ const detail = JSON.parse(detailRes.match(/\},"program":(.*?),"plist":/)[1]);
const rssItem = {
title: item.title,
diff --git a/lib/routes/quantamagazine/archive.ts b/lib/routes/quantamagazine/archive.ts
index c9bf893db74f..a383a60d6108 100644
--- a/lib/routes/quantamagazine/archive.ts
+++ b/lib/routes/quantamagazine/archive.ts
@@ -13,16 +13,16 @@ const processArticleContent = (html: string | null, articleLink?: string): strin
}
// Handle LaTeX formulas
- let processed = html.replaceAll(/\$latex([\S\s]+?)\$/g, '
');
+ let processed = html.replaceAll(/\$latex([\s\S]+?)\$/g, '
');
// Handle embedded images with captions
- processed = processed.replaceAll(/
?/g, (_match, src, cap) => {
+ processed = processed.replaceAll(/
?/g, (_match, src, cap) => {
const imgUrl = src.replaceAll(/\\([^nu])/g, '$1');
const img = `

`;
const noBS = cap.replaceAll(/\\([^nu])/g, '$1');
const removeNL = noBS.replaceAll(String.raw`\n`, '');
- const caption = removeNL.replaceAll(/\\u(\d{1,3}[a-z]\d?|\d{4}?)/g, (_omit, s) => String.fromCodePoint(Number.parseInt(s, 16)));
+ const caption = removeNL.replaceAll(/\\u(\d{1,3}[a-z]\d?|\d{4})/g, (_omit, s) => String.fromCodePoint(Number.parseInt(s, 16)));
return `
${img}${caption}`;
});
diff --git a/lib/routes/rawkuma/manga.tsx b/lib/routes/rawkuma/manga.tsx
index cbf47ff3bb8c..4c3783909664 100644
--- a/lib/routes/rawkuma/manga.tsx
+++ b/lib/routes/rawkuma/manga.tsx
@@ -70,7 +70,7 @@ async function handler(ctx) {
const content = load(detailResponse);
- const imageMatches = detailResponse.match(/"images":(\[.*?])}],"lazyload"/);
+ const imageMatches = detailResponse.match(/"images":(\[.*?\])\}\],"lazyload"/);
const images = imageMatches ? JSON.parse(imageMatches[1]) : [];
diff --git a/lib/routes/readhub/index.ts b/lib/routes/readhub/index.ts
index c5138ee4f608..689d162e27c4 100644
--- a/lib/routes/readhub/index.ts
+++ b/lib/routes/readhub/index.ts
@@ -37,7 +37,7 @@ async function handler(ctx) {
const { data: currentResponse } = await got(currentUrl);
- const type = currentResponse.match(/\[\\"type\\",\\"(\d+)\\",\\"d\\"]/)?.[1] ?? '1';
+ const type = currentResponse.match(/\[\\"type\\",\\"(\d+)\\",\\"d\\"\]/)?.[1] ?? '1';
const { data: response } = await got(apiTopicUrl, {
searchParams: {
diff --git a/lib/routes/readhub/util.ts b/lib/routes/readhub/util.ts
index 2bb28b445f60..825214c66fc5 100644
--- a/lib/routes/readhub/util.ts
+++ b/lib/routes/readhub/util.ts
@@ -26,7 +26,7 @@ const processItems = async (items, tryGet) =>
const { data: detailResponse } = await got(item.link);
- const data = JSON.parse(detailResponse.match(/{\\"topic\\":(.*?)}]\\n"]\)<\/script>/)[1].replaceAll(String.raw`\"`, '"'));
+ const data = JSON.parse(detailResponse.match(/\{\\"topic\\":(.*?)\}\]\\n"\]\)<\/script>/)[1].replaceAll(String.raw`\"`, '"'));
item.title = data.title;
item.link = data.url ?? new URL(`topic/${data.uid}`, rootUrl).href;
diff --git a/lib/routes/reuters/common.tsx b/lib/routes/reuters/common.tsx
index f440cf2a011c..1c8decff6586 100644
--- a/lib/routes/reuters/common.tsx
+++ b/lib/routes/reuters/common.tsx
@@ -288,7 +288,7 @@ async function handler(ctx) {
const matches = content('script#fusion-metadata')
.text()
- .match(/Fusion.globalContent=({[\S\s]*?});/);
+ .match(/Fusion.globalContent=(\{[\s\S]*?\});/);
if (matches) {
const data = JSON.parse(matches[1]);
@@ -310,7 +310,7 @@ async function handler(ctx) {
item.title = content('meta[property="og:title"]').attr('content');
item.pubDate = parseDate(detailResponse.data.match(/"datePublished":"(.*?)","dateModified/)[1]);
item.author = detailResponse.data
- .match(/{"@type":"Person","name":"(.*?)"}/g)
+ .match(/\{"@type":"Person","name":"(.*?)"\}/g)
.map((p) => p.match(/"name":"(.*?)"/)[1])
.join(', ');
item.description = content('article').html();
diff --git a/lib/routes/runyeah/posts.ts b/lib/routes/runyeah/posts.ts
index 5e241ff79f27..a21a477cdc83 100644
--- a/lib/routes/runyeah/posts.ts
+++ b/lib/routes/runyeah/posts.ts
@@ -29,7 +29,7 @@ async function handler(ctx) {
let data = response;
if (typeof response !== 'object') {
// remove php warnings before JSON
- data = JSON.parse(response.match(/\[(.*)]/)[0]);
+ data = JSON.parse(response.match(/\[(.*)\]/)[0]);
}
const items = data.map((item) => ({
diff --git a/lib/routes/shisu/en.ts b/lib/routes/shisu/en.ts
index 62438ea48cb4..5845a98a1fa3 100644
--- a/lib/routes/shisu/en.ts
+++ b/lib/routes/shisu/en.ts
@@ -49,8 +49,8 @@ async function process(baseUrl: string, section: any) {
const $ = load(r);
j.description = $('.details-con')
.html()!
- .replaceAll(/
[\S\s]*?<\/o:p>/g, '')
- .replaceAll(/(]*> <\/p>\s*)+/gm, '
');
+ .replaceAll(/[\s\S]*?<\/o:p>/g, '')
+ .replaceAll(/(]*> <\/p>\s*)+/g, '
');
return j;
})
)
diff --git a/lib/routes/sina/utils.tsx b/lib/routes/sina/utils.tsx
index e1a7c302596a..68c44e813e93 100644
--- a/lib/routes/sina/utils.tsx
+++ b/lib/routes/sina/utils.tsx
@@ -48,7 +48,7 @@ const parseArticle = (item, tryGet) =>
const slideData = JSON.parse(
$('script')
.text()
- .match(/var slide_data = ({.*?})\s/)[1]
+ .match(/var slide_data = (\{.*?\})\s/)[1]
);
item.description = renderToString(
<>
diff --git a/lib/routes/sis001/common.ts b/lib/routes/sis001/common.ts
index 1dbcb72911e3..89b8a12d7b32 100644
--- a/lib/routes/sis001/common.ts
+++ b/lib/routes/sis001/common.ts
@@ -53,7 +53,7 @@ async function getThread(cookie: string, item: DataItem) {
$('.postinfo')
.eq(0)
.text()
- .match(/发表于 (.*)\s*只看该作者/)[1],
+ .match(/发表于 (.*)(?:[\n\r\u2028\u2029]\s*)?只看该作者/)[1],
'YYYY-M-D HH:mm'
),
8
@@ -65,7 +65,7 @@ async function getThread(cookie: string, item: DataItem) {
.html()
?.replaceAll('\n', '')
.replaceAll(/\u3000{2}.+?(((?:
){2})|( ))/g, (str) => `${str.replaceAll('
', '')}
`)
- .replaceAll(/\u3000{6,}(.+?)<\/p>/g, '
$1
')
+ .replaceAll(/\u3000{6,}([^\u3000\n\r\u2028\u2029].*?|\u3000)<\/p>/g, '
$1
')
.replaceAll(' ', '')
.replace(/
+
/, '') + ($('.defaultpost .postattachlist').html() ?? '');
return item;
diff --git a/lib/routes/smartlink/index.ts b/lib/routes/smartlink/index.ts
index e0d04bebbb23..4fd221133adf 100644
--- a/lib/routes/smartlink/index.ts
+++ b/lib/routes/smartlink/index.ts
@@ -15,7 +15,7 @@ function parseTitle(smartlinkUrl: string): string {
let titleSlug = dateIndex !== -1 && dateIndex < pathSegments.length - 1 ? pathSegments[dateIndex + 1] : pathSegments.at(-1) || '';
// Remove .html/.htm extension if present
- titleSlug = titleSlug.replace(/\.(html?|htm)$/i, '');
+ titleSlug = titleSlug.replace(/\.(html?)$/i, '');
// Convert hyphens to spaces and capitalize each word
return toTitleCase(titleSlug.replaceAll('-', ' '));
diff --git a/lib/routes/sohu/mobile.ts b/lib/routes/sohu/mobile.ts
index 5fc65c0322d7..2d40aab9d6fc 100644
--- a/lib/routes/sohu/mobile.ts
+++ b/lib/routes/sohu/mobile.ts
@@ -36,7 +36,7 @@ async function handler() {
// 从HTML中提取JSON数据
const $ = cheerio.load(response);
const jsonScript = $('script:contains("WapHomeRenderData")').text();
- const jsonMatch = jsonScript?.match(/window\.WapHomeRenderData\s*=\s*({.*})/s);
+ const jsonMatch = jsonScript?.match(/window\.WapHomeRenderData\s*=\s*(\{.*\})/s);
if (!jsonMatch?.[1]) {
throw new Error('WapHomeRenderData 数据未找到');
}
diff --git a/lib/routes/sohu/mp.tsx b/lib/routes/sohu/mp.tsx
index 1b9a3a07eb4f..8b1cfdf4353a 100644
--- a/lib/routes/sohu/mp.tsx
+++ b/lib/routes/sohu/mp.tsx
@@ -140,7 +140,7 @@ async function handler(ctx) {
const blockRenderData = JSON.parse(
$('script:contains("column_2_text")')
.text()
- .match(/({.*})/)?.[1]
+ .match(/(\{.*\})/)?.[1]
);
const renderData = blockRenderData[Object.keys(blockRenderData).find((e) => e.startsWith('FeedSlideloadAuthor'))];
const briefIntroductionCard = blockRenderData[Object.keys(blockRenderData).find((e) => e.startsWith('BriefIntroductionCard'))].param.data.list[0];
diff --git a/lib/routes/solidot/_article.ts b/lib/routes/solidot/_article.ts
index 827570f18240..1dd70b9de099 100644
--- a/lib/routes/solidot/_article.ts
+++ b/lib/routes/solidot/_article.ts
@@ -18,7 +18,7 @@ export default async function get_article(url) {
const $ = load(data);
const date_raw = $('div.talk_time').clone().children().remove().end().text();
- const date_str_zh = date_raw.replaceAll(/^[^`]*发表于(.*分)[^`]*$/g, '$1'); // use [^`] to match \n
+ const date_str_zh = date_raw.replaceAll(/^[^`]*发表于(?=(.*分))\1[^`]*$/g, '$1'); // use [^`] to match \n
const date_str = date_str_zh
.replaceAll(/[年月]/g, '-')
.replaceAll('时', ':')
diff --git a/lib/routes/sony/downloads.ts b/lib/routes/sony/downloads.ts
index 0e6f89f42a14..f8cd5f114652 100644
--- a/lib/routes/sony/downloads.ts
+++ b/lib/routes/sony/downloads.ts
@@ -42,7 +42,7 @@ async function handler(ctx) {
const $ = load(data);
const contents = $('script:contains("window.__PRELOADED_STATE__.downloads")').text();
- const regex = /window\.__PRELOADED_STATE__\.downloads\s*=\s*({.*?});\s*window\.__PRELOADED_STATE__/s;
+ const regex = /window\.__PRELOADED_STATE__\.downloads\s*=\s*(\{.*?\});\s*window\.__PRELOADED_STATE__/s;
const match = contents.match(regex);
let results = {};
diff --git a/lib/routes/steam/curator.tsx b/lib/routes/steam/curator.tsx
index 7dd9d2e4ece7..03c969dd9834 100644
--- a/lib/routes/steam/curator.tsx
+++ b/lib/routes/steam/curator.tsx
@@ -62,7 +62,7 @@ Examples:
const reviewContent = el.find('.recommendation_desc').text().trim();
const reviewDateText = el.find('.curator_review_date').text().trim();
- const notCurrentYearPattern = /,\s\b\d{4}\b$/;
+ const notCurrentYearPattern = /,\s\d{4}$/;
const reviewPubDate = notCurrentYearPattern.test(reviewDateText) ? parseDate(reviewDateText) : parseDate(`${reviewDateText}, ${new Date().getFullYear()}`);
const description = renderToString();
diff --git a/lib/routes/steam/news.ts b/lib/routes/steam/news.ts
index ccc7c3970a9c..ed6894e806bb 100644
--- a/lib/routes/steam/news.ts
+++ b/lib/routes/steam/news.ts
@@ -179,12 +179,12 @@ const linebreakRenderer = (tree: BBobCoreTagNodeTree) =>
const plainUrlRenderer = (tree: BBobCoreTagNodeTree) =>
tree.walk((node) => {
- if (typeof node === 'string' && /https?:\/\/[^\s]+/.test(node)) {
+ if (typeof node === 'string' && /https?:\/\/\S+/.test(node)) {
let lastIndex = 0;
let match: RegExpExecArray | null;
const content: NodeContent[] = [];
- const urlRe = /https?:\/\/[^\s]+/g;
+ const urlRe = /https?:\/\/\S+/g;
while ((match = urlRe.exec(node)) !== null) {
if (match.index > lastIndex) {
content.push(node.slice(lastIndex, match.index));
@@ -250,7 +250,7 @@ const customPreset: PresetFactory = presetHTML5.extend((tags) => ({
previewyoutube: (node) => ({
tag: 'iframe',
attrs: {
- src: `https://www.youtube-nocookie.com/embed/${(getUniqAttr(node.attrs) as string).match(/[A-Za-z0-9_-]+/)?.[0]}`,
+ src: `https://www.youtube-nocookie.com/embed/${(getUniqAttr(node.attrs) as string).match(/[\w-]+/)?.[0]}`,
title: 'YouTube video player',
frameborder: '0',
allowFullScreen: '1',
diff --git a/lib/routes/steam/workshop-search.tsx b/lib/routes/steam/workshop-search.tsx
index ef49063c4722..cadf710862b8 100644
--- a/lib/routes/steam/workshop-search.tsx
+++ b/lib/routes/steam/workshop-search.tsx
@@ -66,7 +66,7 @@ Language Parameter:
// const script_tag = item.next('script');
// console.log(`script_tag:${script_tag.text()}`);
const hoverContent = item.next('script').text();
- const regex = /SharedFileBindMouseHover\(\s*"sharedfile_\d+",\s*(?:true|false),\s*({.*?})\s*\);/;
+ const regex = /SharedFileBindMouseHover\(\s*"sharedfile_\d+",\s*(?:true|false),\s*(\{.*?\})\s*\);/;
const match = hoverContent.match(regex);
let entryDescription = '';
diff --git a/lib/routes/supchina/index.ts b/lib/routes/supchina/index.ts
index a2965c0975cf..984ac98d5e04 100644
--- a/lib/routes/supchina/index.ts
+++ b/lib/routes/supchina/index.ts
@@ -43,7 +43,7 @@ async function handler(ctx) {
author: item
.find(String.raw`dc\:creator`)
.html()
- .match(/CDATA\[(.*?)]/)[1],
+ .match(/CDATA\[(.*?)\]/)[1],
category: item
.find('category')
.toArray()
@@ -51,7 +51,7 @@ async function handler(ctx) {
(c) =>
$(c)
.html()
- .match(/CDATA\[(.*?)]/)[1]
+ .match(/CDATA\[(.*?)\]/)[1]
),
pubDate: parseDate(item.find('pubDate').text()),
};
diff --git a/lib/routes/swjtu/gsee/yjs.ts b/lib/routes/swjtu/gsee/yjs.ts
index 5e2bd3feab6f..83515ddadfd4 100644
--- a/lib/routes/swjtu/gsee/yjs.ts
+++ b/lib/routes/swjtu/gsee/yjs.ts
@@ -13,7 +13,7 @@ const getItem = (item) => {
const newsDate = item
.find('dd')
.text()
- .match(/\d{4}(-|\/|.)\d{1,2}\1\d{1,2}/)[0];
+ .match(/\d{4}(.)\d{1,2}\1\d{1,2}/)[0];
const infoTitle = newsInfo.text();
const link = rootURL + newsInfo.find('a').last().attr('href').slice(2);
diff --git a/lib/routes/swjtu/scai.ts b/lib/routes/swjtu/scai.ts
index a9dcf8798327..45056316b18b 100644
--- a/lib/routes/swjtu/scai.ts
+++ b/lib/routes/swjtu/scai.ts
@@ -67,7 +67,7 @@ const getItem = (item, cache) => {
// 'date' may be undefined. and 'parseDate' will return current time.
// 转其他院的通知,获取不到具体时间,先从列表页获取具体信息
if (dateText) {
- const dateMatch = dateText.match(/\d{4}(-|\/|.)\d{1,2}\1\d{1,2}/);
+ const dateMatch = dateText.match(/\d{4}(.)\d{1,2}\1\d{1,2}/);
if (!dateMatch || !dateMatch[0]) {
return null;
}
diff --git a/lib/routes/swjtu/sports.ts b/lib/routes/swjtu/sports.ts
index edaaa63d52fa..c3967bc62e3b 100644
--- a/lib/routes/swjtu/sports.ts
+++ b/lib/routes/swjtu/sports.ts
@@ -44,7 +44,7 @@ const getItem = (item, cache) => {
$('div.info span:nth-of-type(3)')
.text()
.slice(3)
- .match(/\d{4}(-|\/|.)\d{1,2}\1\d{1,2}/)?.[0]
+ .match(/\d{4}(.)\d{1,2}\1\d{1,2}/)?.[0]
);
const description = $('div.detail-wrap').html();
return {
diff --git a/lib/routes/swpu/utils.ts b/lib/routes/swpu/utils.ts
index 11cb95227443..4ae3ccdd1d08 100644
--- a/lib/routes/swpu/utils.ts
+++ b/lib/routes/swpu/utils.ts
@@ -1,5 +1,5 @@
function isCompleteUrl(url) {
- return /^\w+?:\/\/.*?\//.test(url);
+ return /^\w+:\/\/.*?\//.test(url);
}
function joinUrl(url1, url2) {
diff --git a/lib/routes/szse/disclosure/listed-notice.ts b/lib/routes/szse/disclosure/listed-notice.ts
index 37dba801088b..075aec9875bd 100644
--- a/lib/routes/szse/disclosure/listed-notice.ts
+++ b/lib/routes/szse/disclosure/listed-notice.ts
@@ -10,7 +10,7 @@ import timezone from '@/utils/timezone';
function isValidDate(dateString: string): boolean {
// 正则表达式检查格式:YYYY-MM-DD
- const regex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
+ const regex = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;
if (!regex.test(dateString)) {
return false;
}
diff --git a/lib/routes/tass/news.ts b/lib/routes/tass/news.ts
index 8463e762ea9c..429298022372 100644
--- a/lib/routes/tass/news.ts
+++ b/lib/routes/tass/news.ts
@@ -40,7 +40,7 @@ async function handler(ctx) {
const sectionId = $('.container .section-page')
.attr('ng-init')
- .match(/sectionId\s*=\s*(\d+?);/);
+ .match(/sectionId\s*=\s*(\d+);/);
const { data: response } = await got.post('https://tass.com/userApi/categoryNewsList', {
json: {
diff --git a/lib/routes/tencent/news/author.tsx b/lib/routes/tencent/news/author.tsx
index 23de40840dc5..02c6da3bcfaf 100644
--- a/lib/routes/tencent/news/author.tsx
+++ b/lib/routes/tencent/news/author.tsx
@@ -68,7 +68,7 @@ async function handler(ctx): Promise {
const data = JSON.parse(
$('script:contains("window.DATA")')
.text()
- .match(/window\.DATA = ({.+});/)[1]
+ .match(/window\.DATA = (\{.+\});/)[1]
);
const $data = load(data.originContent?.text || '', null, false);
if ($data) {
diff --git a/lib/routes/tesla/cx.ts b/lib/routes/tesla/cx.ts
index 8ea59460c1e3..116fead80aa3 100644
--- a/lib/routes/tesla/cx.ts
+++ b/lib/routes/tesla/cx.ts
@@ -145,7 +145,7 @@ async function handler(ctx) {
alt: item.venueName ?? item.title,
}
: undefined,
- description: item.description?.replaceAll(/\["|"]/g, '') ?? undefined,
+ description: item.description?.replaceAll(/\["|"\]/g, '') ?? undefined,
data: item.parkingLocationId
? {
title: item.venueName ?? item.title,
diff --git a/lib/routes/threads/utils.ts b/lib/routes/threads/utils.ts
index d26a88751456..2570f653fa28 100644
--- a/lib/routes/threads/utils.ts
+++ b/lib/routes/threads/utils.ts
@@ -31,7 +31,7 @@ const extractTokens = async (user): Promise<{ lsd: string }> => {
const $ = load(response);
const data = $('script:contains("LSD"):first').text();
- const lsd = data.match(/"LSD",\[],{"token":"([\w@-]+)"},/)?.[1];
+ const lsd = data.match(/"LSD",\[\],\{"token":"([\w@-]+)"\},/)?.[1];
if (!lsd) {
throw new NotFoundError('LSD token not found');
diff --git a/lib/routes/transcriptforest/index.ts b/lib/routes/transcriptforest/index.ts
index 254f5492c5d9..072bc3506d37 100644
--- a/lib/routes/transcriptforest/index.ts
+++ b/lib/routes/transcriptforest/index.ts
@@ -41,7 +41,7 @@ async function handler(ctx) {
const { data: firstResponse } = await got(rootUrl);
- const data = JSON.parse(firstResponse.match(/({"props".*"scriptLoader":\[]})<\/script>/)?.[1]);
+ const data = JSON.parse(firstResponse.match(/(\{"props".*"scriptLoader":\[\]\})<\/script>/)?.[1]);
const buildId = data.buildId;
const defaultLocale = data.defaultLocale;
diff --git a/lib/routes/twitter/api/web-api/gql-id-resolver.ts b/lib/routes/twitter/api/web-api/gql-id-resolver.ts
index aac492bf1106..91c304c90040 100644
--- a/lib/routes/twitter/api/web-api/gql-id-resolver.ts
+++ b/lib/routes/twitter/api/web-api/gql-id-resolver.ts
@@ -30,7 +30,7 @@ async function fetchTwitterPage(): Promise {
function extractQueryIds(scriptContent: string): Record {
const ids: Record = {};
- const matches = scriptContent.matchAll(/queryId:"([^"]+?)".+?operationName:"([^"]+?)"/g);
+ const matches = scriptContent.matchAll(/queryId:"([^"]+)".+?operationName:"([^"]+)"/g);
for (const match of matches) {
const [, queryId, operationName] = match;
if (operationNames.includes(operationName)) {
diff --git a/lib/routes/twitter/utils.ts b/lib/routes/twitter/utils.ts
index afe8532f08ba..cadd107c0d70 100644
--- a/lib/routes/twitter/utils.ts
+++ b/lib/routes/twitter/utils.ts
@@ -11,7 +11,7 @@ const getOriginalImg = (url) => {
format = 'jpg';
}
return `${m[1]}?format=${format}&name=orig`;
- } else if ((m = url.match(/^(https?:\/\/\w+\.twimg\.com\/.+)(\?.+)$/i))) {
+ } else if ((m = url.match(/^(https?:\/\/\w+\.twimg\.com\/[^?]+)(\?.+)$/i))) {
const pars = getQueryParams(url);
if (!pars.format || !pars.name) {
return url;
diff --git a/lib/routes/txrjy/fornumtopic.tsx b/lib/routes/txrjy/fornumtopic.tsx
index 18ecdd6896bc..d3dcf242227e 100644
--- a/lib/routes/txrjy/fornumtopic.tsx
+++ b/lib/routes/txrjy/fornumtopic.tsx
@@ -70,12 +70,12 @@ async function handler(ctx) {
.remove()
.end()
.html()
- ?.replaceAll(/()/g, '$1$2')
+ ?.replaceAll(/()/g, '$1$2')
.replaceAll(/()/g, '$1src$2');
const pattlHtml = content(item)
.find('div.pattl')
.html()
- ?.replaceAll(/()/g, '$1$2')
+ ?.replaceAll(/()/g, '$1$2')
.replaceAll(/()/g, '$1src$2');
const author = content(item).find('a.xw1').text().trim();
diff --git a/lib/routes/udn/breaking-news.tsx b/lib/routes/udn/breaking-news.tsx
index 4fa9fe943a1e..85099d70fb86 100644
--- a/lib/routes/udn/breaking-news.tsx
+++ b/lib/routes/udn/breaking-news.tsx
@@ -62,7 +62,7 @@ async function handler(ctx) {
.eq(0)
.text()
.trim()
- .replaceAll(/[\b\t\n]/g, '');
+ .replaceAll(/[\t\n]/g, '');
const data = metadata.startsWith('[') ? JSON.parse(metadata)[0] : JSON.parse(metadata);
// e.g. https://udn.com/news/story/7331/6576320
const content = $('.article-content__editor');
@@ -90,7 +90,7 @@ async function handler(ctx) {
// 轉角24小時
description = $('.story_body_content')
.html()
- .split(//g)
+ .split(//g)
.slice(1, -1)
.join('');
}
diff --git a/lib/routes/upc/jwc.ts b/lib/routes/upc/jwc.ts
index b0c67c28dfc6..a69e5da01ec8 100644
--- a/lib/routes/upc/jwc.ts
+++ b/lib/routes/upc/jwc.ts
@@ -48,7 +48,7 @@ const handler = async (ctx) => {
const scriptContent = $('body script').first().html();
let dataObj = null;
if (scriptContent) {
- const match = scriptContent.match(/data\s*:\s*function\s*\(\)\s*{\s*return\s*{[^}]*data\s*:\s*({[\s\S]*?})/);
+ const match = scriptContent.match(/data\s*:\s*function\s*\(\)\s*\{\s*return\s*\{[^}]*data\s*:\s*(\{[\s\S]*?\})/);
if (match && match[1]) {
const dataStr = match[1];
dataObj = JSON.parse(dataStr);
diff --git a/lib/routes/ups/track.ts b/lib/routes/ups/track.ts
index 5421c6d30dde..e7646f54dd0c 100644
--- a/lib/routes/ups/track.ts
+++ b/lib/routes/ups/track.ts
@@ -68,7 +68,7 @@ async function handler(ctx) {
const dateTimeStr = dateTimeRaw
.trim()
- .replace(/(\d{1,}\/\d{1,}\/\d{4})(\d{1,}:\d{1,}\s[AP]\.?M\.?)/, '$1 $2')
+ .replace(/(\d+\/\d+\/\d{4})(\d+:\d+\s[AP]\.?M\.?)/, '$1 $2')
.replaceAll('P.M.', 'PM')
.replaceAll('A.M.', 'AM');
@@ -78,7 +78,7 @@ async function handler(ctx) {
.find(`#stApp_milestoneActivityLocation${i}`)
.text()
.trim()
- .replaceAll(/\s*\n+\s*/g, '\n');
+ .replaceAll(/\s*\n\s*/g, '\n');
const lines = activityCellText
.split('\n')
diff --git a/lib/routes/uptimerobot/rss.tsx b/lib/routes/uptimerobot/rss.tsx
index 6b1afae07eb9..a5fdbdd8e912 100644
--- a/lib/routes/uptimerobot/rss.tsx
+++ b/lib/routes/uptimerobot/rss.tsx
@@ -6,7 +6,7 @@ import InvalidParameterError from '@/errors/types/invalid-parameter';
import type { Route } from '@/types';
import { fallback, queryToBoolean } from '@/utils/readable-social';
-const titleRegex = /(.+)\s+is\s+([A-Z]+)\s+\((.+)\)/;
+const titleRegex = /(.*\S)\s+is\s+([A-Z]+)\s+\((.+)\)/;
const formatTime = (s) => {
const duration = dayjs.duration(s - 0, 'seconds');
diff --git a/lib/routes/vcb-s/category.ts b/lib/routes/vcb-s/category.ts
index bfd8880b927c..890a15845153 100644
--- a/lib/routes/vcb-s/category.ts
+++ b/lib/routes/vcb-s/category.ts
@@ -59,7 +59,7 @@ async function handler(ctx) {
const items = data.map((item) => {
const description = renderDescription({
- post: item.content.rendered.replaceAll(/]*>(.*?)<\/pre>/gs, '$1
').replaceAll(/]+>(.*?)<\/div>/gs, '$1
'),
medias: item._embedded['wp:featuredmedia'],
});
diff --git a/lib/routes/vcb-s/index.ts b/lib/routes/vcb-s/index.ts
index df8ec6c9f6aa..1895f826d270 100644
--- a/lib/routes/vcb-s/index.ts
+++ b/lib/routes/vcb-s/index.ts
@@ -33,7 +33,7 @@ async function handler(ctx) {
const items = data.map((item) => {
const description = renderDescription({
- post: item.content.rendered.replaceAll(/]*>(.*?)<\/pre>/gs, '$1
').replaceAll(/]+>(.*?)<\/div>/gs, '$1
'),
medias: item._embedded['wp:featuredmedia'],
});
diff --git a/lib/routes/weibo/utils.ts b/lib/routes/weibo/utils.ts
index c4df2ea2fd19..67511437dcb4 100644
--- a/lib/routes/weibo/utils.ts
+++ b/lib/routes/weibo/utils.ts
@@ -26,11 +26,11 @@ const formatDescriptionText = (html, { showEmojiInDescription, showLinkIconInDes
let formattedHtml = html;
if (!showEmojiInDescription) {
- formattedHtml = formattedHtml.replaceAll(/
]*?alt=["']?([^>]+?)["']?\s[^>]*?\/><\/span>/g, '$1');
+ formattedHtml = formattedHtml.replaceAll(/
]*?alt=["']?([^>\s"']+)["']?\s[^>]*?\/><\/span>/g, '$1');
}
if (!showLinkIconInDescription) {
- formattedHtml = formattedHtml.replaceAll(/(]*>)
]*><\/span>[^<>]*?([^<>]*?)<\/span><\/a>/g, '$1$2');
+ formattedHtml = formattedHtml.replaceAll(/(]*>)
]*><\/span>[^<>]*([^<>]*)<\/span><\/a>/g, '$1$2');
}
return formattedHtml;
@@ -141,7 +141,7 @@ const weiboUtils = {
})(),
formatTitle: (html) =>
html
- .replaceAll(/
]*?alt=["']?([^>]+?)["']?\s[^>]*?\/?><\/span>/g, '$1') // 表情转换
+ .replaceAll(/
]*?alt=["']?([^>\s"']+)["']?\s[^>]*?\/?><\/span>/g, '$1') // 表情转换
.replaceAll(/(
]*>)<\/span>/g, '') // 去掉所有图标
.replaceAll(/
/g, '[图片]')
// impossible to have inline script in weibo posts, but CodeQL complains about it
diff --git a/lib/routes/wenku8/volume.ts b/lib/routes/wenku8/volume.ts
index ff0381de503a..addd9ea65c91 100644
--- a/lib/routes/wenku8/volume.ts
+++ b/lib/routes/wenku8/volume.ts
@@ -42,7 +42,7 @@ async function handler(ctx) {
title: `轻小说文库 ${$('#title').text()} 最新卷`,
link,
item: await cache.tryGet(volumeUrl, async () =>
- [...(await get(volumeUrl)).matchAll(/\s{2}(\S.*)\r?\n([\S\s]+?)\r?\n\r?\n/g)]
+ [...(await get(volumeUrl)).matchAll(/\s{2}(\S.*)\r?\n([\s\S]+?)\r?\n\r?\n/g)]
.map((chapter, index) => ({
title: chapter[1],
description: chapter[2]
diff --git a/lib/routes/wfu/news.ts b/lib/routes/wfu/news.ts
index c1945c2a7073..613e796ed73a 100644
--- a/lib/routes/wfu/news.ts
+++ b/lib/routes/wfu/news.ts
@@ -24,7 +24,7 @@ async function loadContent(link) {
let response;
// 如果不是 大学的站点, 直接返回简单的标题即可
// 判断 是否外站链接,如果是 则直接返回页面 不做单独的解析
- const https_reg = /^https:\/\/www.wfu.edu.cn(.*)/;
+ const https_reg = /^https:\/\/www\.wfu\.edu\.cn\/.*/;
if (!https_reg.test(link)) {
return { description };
}
diff --git a/lib/routes/wikipedia/current-events.ts b/lib/routes/wikipedia/current-events.ts
index 8ae433d945ec..82cd50125781 100644
--- a/lib/routes/wikipedia/current-events.ts
+++ b/lib/routes/wikipedia/current-events.ts
@@ -51,12 +51,12 @@ function parseCurrentEventsTemplate(wikitext: string): string | null {
// Look for {{Current events|content=...}} template
// The closing }} is always at the end of wikitext
- const contentMatch = wikitext.match(/\{\{Current events\s*\|[\s\S]*?content\s*=\s*([\s\S]*)\}\}$/);
+ const contentMatch = wikitext.match(/\{\{Current events\s*\|[\s\S]*?content(?=(\s*=))\1\s*((?:\S[\s\S]*)?)\}\}$/);
if (!contentMatch) {
return null;
}
- let content = contentMatch[1].trim();
+ let content = contentMatch[2].trim();
// Strip comments to detect empty content
content = stripComments(content);
@@ -84,7 +84,7 @@ function convertWikiLinks(html: string): string {
function convertExternalLinks(html: string): string {
// Convert external links [URL Text] or [URL]
- html = html.replaceAll(/\[([^\s\]]+)\s+([^\]]+)\]/g, '$2');
+ html = html.replaceAll(/\[([^\s\]]+)\s+([^\s\]][^\]]*|\s)\]/g, '$2');
html = html.replaceAll(/\[([^\s\]]+)\]/g, '$1');
return html;
}
@@ -186,7 +186,7 @@ function processListsAndLines(html: string): string {
}
// Check for bullet points
- const bulletMatch = trimmedLine.match(/^(\*+)\s*(.*)$/);
+ const bulletMatch = trimmedLine.match(/^(\*+)(?!\*)\s*((?:\S.*)?)$/);
if (bulletMatch) {
const depth = bulletMatch[1].length;
const content = bulletMatch[2];
diff --git a/lib/routes/wmc-bj/publish.tsx b/lib/routes/wmc-bj/publish.tsx
index e16afd07207e..822fa2653b67 100644
--- a/lib/routes/wmc-bj/publish.tsx
+++ b/lib/routes/wmc-bj/publish.tsx
@@ -46,7 +46,7 @@ async function handler(ctx) {
),
category: categories,
guid: `${currentUrl}#${datetime}`,
- pubDate: timezone(parseDate(/^[A-Za-z]{3}/.test(datetime) ? datetime.replace(/^\w+/, '') : datetime, ['DD MMM HH:mm', 'MM/DD HH:mm']), +0),
+ pubDate: timezone(parseDate(/^[A-Z]{3}/i.test(datetime) ? datetime.replace(/^\w+/, '') : datetime, ['DD MMM HH:mm', 'MM/DD HH:mm']), +0),
},
];
diff --git a/lib/routes/wnacg/common.tsx b/lib/routes/wnacg/common.tsx
index 16cf18bfbce6..5c1edf68e0fb 100644
--- a/lib/routes/wnacg/common.tsx
+++ b/lib/routes/wnacg/common.tsx
@@ -85,7 +85,7 @@ export async function handler(ctx) {
const imgListMatch = $('script')
.text()
- .match(/var imglist = (\[.*]);"\);/)[1];
+ .match(/var imglist = (\[.*\]);"\);/)[1];
const imgList = JSON.parse(imgListMatch.replaceAll('url:', '"url":').replaceAll('caption:', '"caption":').replaceAll('fast_img_host+\\', '').replaceAll('\\', ''));
diff --git a/lib/routes/wordpress/index.ts b/lib/routes/wordpress/index.ts
index a0558f897558..225f0d44d4f0 100644
--- a/lib/routes/wordpress/index.ts
+++ b/lib/routes/wordpress/index.ts
@@ -17,7 +17,7 @@ async function handler(ctx) {
throw new ConfigNotFoundError(`This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
}
- if (!/^(https?):\/\/[^\s#$./?].\S*$/i.test(url)) {
+ if (!/^https?:\/\/[^\s#$./?].\S*$/i.test(url)) {
throw new Error('Invalid URL');
}
@@ -39,7 +39,7 @@ async function handler(ctx) {
try {
const { data: response } = await got(apiUrl);
- const items = (Array.isArray(response) ? response : JSON.parse(response.match(/(\[.*])$/)[1])).slice(0, limit).map((item) => {
+ const items = (Array.isArray(response) ? response : JSON.parse(response.match(/(\[.*\])$/)[1])).slice(0, limit).map((item) => {
const terminologies = item._embedded['wp:term'];
const guid = item.guid?.rendered ?? item.guid;
diff --git a/lib/routes/wsj/news.ts b/lib/routes/wsj/news.ts
index c9c575f0e119..034cc4016e7b 100644
--- a/lib/routes/wsj/news.ts
+++ b/lib/routes/wsj/news.ts
@@ -59,7 +59,7 @@ async function handler(ctx) {
const $ = load(response.data);
const contents = $('script:contains("window.__STATE__")').text();
- const data = JSON.parse(contents.match(/{.*}/)[0]).data;
+ const data = JSON.parse(contents.match(/\{.*\}/)[0]).data;
const filteredKeys = Object.entries(data)
.filter(([key, value]) => {
if (!key.startsWith('article')) {
diff --git a/lib/routes/xaufe/jiaowu.ts b/lib/routes/xaufe/jiaowu.ts
index 6f8a568aa059..43cac6d1cf95 100644
--- a/lib/routes/xaufe/jiaowu.ts
+++ b/lib/routes/xaufe/jiaowu.ts
@@ -80,7 +80,7 @@ async function handler(ctx) {
url: item.link,
});
const $ = load(response.body);
- item.author = /作者:(\S*)\s{4}/g.exec($('p', '.main_contit').text())[1];
+ item.author = /作者:(\S*)\s{4}/.exec($('p', '.main_contit').text())[1];
item.description = $('#vsb_content').html();
return item;
})
diff --git a/lib/routes/xhamster/index.ts b/lib/routes/xhamster/index.ts
index c92562d5a00c..144b6d36444a 100644
--- a/lib/routes/xhamster/index.ts
+++ b/lib/routes/xhamster/index.ts
@@ -60,7 +60,7 @@ interface Initials {
}
function extractInitials(scriptContent: string): Initials {
- const match = scriptContent.match(/window\.initials\s*=\s*([\s\S]*?);?$/);
+ const match = scriptContent.match(/window\.initials\s*=\s*(\S[\s\S]*?);?$/);
if (!match) {
throw new Error('initials not found');
}
diff --git a/lib/routes/xinpianchang/index.ts b/lib/routes/xinpianchang/index.ts
index 55a662320595..3509d86e8312 100644
--- a/lib/routes/xinpianchang/index.ts
+++ b/lib/routes/xinpianchang/index.ts
@@ -34,7 +34,7 @@ async function handler(ctx) {
const { data, response } = await getData(currentUrl, cache.tryGet);
- let items = JSON.parse(response.match(/"list":(\[.*?]),"total"/)[1]);
+ let items = JSON.parse(response.match(/"list":(\[.*?\]),"total"/)[1]);
items = await processItems(items.slice(0, limit), cache.tryGet);
diff --git a/lib/routes/xueqiu/snb.ts b/lib/routes/xueqiu/snb.ts
index 141f971b2657..32ac6e1abf62 100644
--- a/lib/routes/xueqiu/snb.ts
+++ b/lib/routes/xueqiu/snb.ts
@@ -35,7 +35,7 @@ async function handler(ctx) {
});
const data = response.data;
- const pattern = /SNB.cubeInfo = {(.+)}/;
+ const pattern = /SNB.cubeInfo = \{(.+)\}/;
const info = pattern.exec(data);
const obj = JSON.parse('{' + info[1] + '}');
const rebalancing_histories = obj.sell_rebalancing.rebalancing_histories;
diff --git a/lib/routes/xueqiu/user.ts b/lib/routes/xueqiu/user.ts
index 5b111f133908..641d81f902f7 100644
--- a/lib/routes/xueqiu/user.ts
+++ b/lib/routes/xueqiu/user.ts
@@ -92,7 +92,7 @@ async function handler(ctx) {
const content = await mainPage.evaluate(() => {
const articleContent = document.querySelector('.article__bd')?.innerHTML || '';
- const statusMatch = document.documentElement.innerHTML.match(/SNOWMAN_STATUS = (.*?});/);
+ const statusMatch = document.documentElement.innerHTML.match(/SNOWMAN_STATUS = (.*?\});/);
return {
articleContent,
statusData: statusMatch ? statusMatch[1] : null,
diff --git a/lib/routes/xys/new.tsx b/lib/routes/xys/new.tsx
index 921714e76537..c50e50dfdff5 100644
--- a/lib/routes/xys/new.tsx
+++ b/lib/routes/xys/new.tsx
@@ -67,7 +67,7 @@ async function handler(ctx) {
.filter((item) => !item.link.endsWith('.zip'))
.map((item) =>
cache.tryGet(item.link, async () => {
- const youTube = /(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/?.*(?:watch|embed)?(?:.*v=|v\/|\/)([\w-]+)&?/g;
+ const youTube = /(?:https?:\/\/)?(?:www\.)?youtu\.?be.*(?:v=|v\/|\/)([\w-]+)&?/g;
const matchYoutube = item.link.match(youTube);
if (matchYoutube) {
diff --git a/lib/routes/yamibo/utils.ts b/lib/routes/yamibo/utils.ts
index 437d5d14a114..1fcdb07f4900 100644
--- a/lib/routes/yamibo/utils.ts
+++ b/lib/routes/yamibo/utils.ts
@@ -45,12 +45,12 @@ export async function fetchThread(
// sometimes may trigger anti-crawling measures
if (data.startsWith('';
-
-describe('/obsidian', () => {
- it('builds the plugins feed from the community search API sorted by creation time', async () => {
- const { default: server } = await import('@/setup.test');
-
- server.use(
- http.get('https://community.obsidian.md/search', ({ request }) => {
- const url = new URL(request.url);
-
- expect(url.searchParams.get('type')).toBe('plugin');
- expect(url.searchParams.get('sort')).toBe('created');
-
- return HttpResponse.html(searchConfigHtml);
- }),
- http.get('https://community.obsidian.md/api/search/collections/entries/documents/search', ({ request }) => {
- const url = new URL(request.url);
-
- expect(request.headers.get('x-typesense-api-key')).toBe('test-search-key');
- expect(url.searchParams.get('q')).toBe('*');
- expect(url.searchParams.get('query_by')).toBe('name,authors,short_desc');
- expect(url.searchParams.get('filter_by')).toBe('type:=plugin');
- expect(url.searchParams.get('sort_by')).toBe('github_created_at:desc');
- expect(url.searchParams.get('per_page')).toBe('54');
-
- return HttpResponse.json({
- hits: [
- {
- document: {
- authors: ['slaymish'],
- downloads: 2,
- github_created_at: '2026-05-14T05:08:50Z',
- id: '5757',
- name: 'Synod',
- short_desc: 'Run a council of LLM value agents over your journal.',
- slug: 'synod',
- tags: ['ai', 'import'],
- type: 'plugin',
- },
- },
- ],
- });
- })
- );
-
- const feed = await pluginsRoute.handler();
-
- expect(feed.title).toBe('Obsidian Plugins');
- expect(feed.link).toBe('https://community.obsidian.md/search?type=plugin&sort=created');
- expect(feed.item).toHaveLength(1);
- expect(feed.item[0]).toMatchObject({
- title: 'Synod',
- description: 'Run a council of LLM value agents over your journal.',
- link: 'https://community.obsidian.md/plugins/synod',
- guid: 'plugin:5757',
- author: 'slaymish',
- category: ['ai', 'import'],
- });
- expect(feed.item[0].pubDate?.toISOString()).toBe('2026-05-14T05:08:50.000Z');
- });
-
- it('builds the themes feed from the community search API sorted by creation time', async () => {
- const { default: server } = await import('@/setup.test');
-
- server.use(
- http.get('https://community.obsidian.md/search', ({ request }) => {
- const url = new URL(request.url);
-
- expect(url.searchParams.get('type')).toBe('theme');
- expect(url.searchParams.get('sort')).toBe('created');
-
- return HttpResponse.html(searchConfigHtml);
- }),
- http.get('https://community.obsidian.md/api/search/collections/entries/documents/search', ({ request }) => {
- const url = new URL(request.url);
-
- expect(request.headers.get('x-typesense-api-key')).toBe('test-search-key');
- expect(url.searchParams.get('filter_by')).toBe('type:=theme');
- expect(url.searchParams.get('sort_by')).toBe('github_created_at:desc');
-
- return HttpResponse.json({
- hits: [
- {
- document: {
- authors: ['jshuntley'],
- downloads: 0,
- github_created_at: '2026-05-14T00:28:26Z',
- id: '5749',
- name: 'Fjord',
- short_desc: 'Fjord colorscheme for Obsidian.',
- slug: 'fjord',
- tags: [],
- type: 'theme',
- },
- },
- ],
- });
- })
- );
-
- const feed = await themesRoute.handler();
-
- expect(feed.title).toBe('Obsidian Themes');
- expect(feed.link).toBe('https://community.obsidian.md/search?type=theme&sort=created');
- expect(feed.item).toHaveLength(1);
- expect(feed.item[0]).toMatchObject({
- title: 'Fjord',
- description: 'Fjord colorscheme for Obsidian.',
- link: 'https://community.obsidian.md/themes/fjord',
- guid: 'theme:5749',
- author: 'jshuntley',
- category: [],
- });
- expect(feed.item[0].pubDate?.toISOString()).toBe('2026-05-14T00:28:26.000Z');
- });
-});
diff --git a/lib/registry.dynamic.test.ts b/lib/registry.dynamic.test.ts
deleted file mode 100644
index 0d2b4e090663..000000000000
--- a/lib/registry.dynamic.test.ts
+++ /dev/null
@@ -1,212 +0,0 @@
-import type fs from 'node:fs';
-import path from 'node:path';
-
-import { Hono } from 'hono';
-import { describe, expect, it, vi } from 'vitest';
-
-// The dev registry lists lib/routes at startup; expose the fixture directory names there
-const fakeTopDirectories = vi.hoisted(() => ({ names: [] as string[] }));
-
-vi.mock('node:fs', async (importOriginal) => {
- const actual = await importOriginal();
- const readdirSync = ((target: unknown, options: unknown) => {
- if (fakeTopDirectories.names.length > 0 && String(target).endsWith(path.join('lib', 'routes'))) {
- return fakeTopDirectories.names.map((name) => ({ name, isDirectory: () => true }));
- }
- return actual.readdirSync(target as never, options as never);
- }) as typeof actual.readdirSync;
- return { ...actual, readdirSync, default: { ...actual, readdirSync } };
-});
-
-const perDirectoryMock = (fakeDirectories: Record>) => {
- fakeTopDirectories.names = Object.keys(fakeDirectories);
- return vi.fn(({ targetDirectoryPath }: { targetDirectoryPath: string }) => {
- const name = targetDirectoryPath.split(/[/\\]/).findLast(Boolean) as string;
- return Promise.resolve(fakeDirectories[name]);
- });
-};
-
-const wrap = (registry: Hono) => {
- const app = new Hono();
- app.use(async (ctx, next) => {
- const response = await next();
- const apiData = ctx.get('apiData');
- if (apiData) {
- return ctx.json(apiData);
- }
- const data = ctx.get('data');
- if (data) {
- return ctx.json(data);
- }
- return response;
- });
- app.route('/', registry);
- return app;
-};
-
-describe('registry dynamic loading', () => {
- it('loads production namespaces from build', async () => {
- const originalEnv = process.env.NODE_ENV;
- process.env.NODE_ENV = 'production';
- vi.resetModules();
-
- const { namespaces } = await import('@/registry');
- expect(Object.keys(namespaces).length).toBeGreaterThan(0);
-
- process.env.NODE_ENV = originalEnv;
- });
-
- it('lazily builds namespaces from directory import on first request', async () => {
- const originalEnv = process.env.NODE_ENV;
- process.env.NODE_ENV = 'development';
-
- const directoryImportMock = perDirectoryMock({
- nsRoute: {
- '/route-array.ts': {
- route: {
- path: ['/a', '/b'],
- name: 'Array',
- handler: () => ({ title: 'array', link: 'https://example.com', item: [], allowEmpty: true }),
- },
- },
- '/route-single.ts': {
- route: {
- path: '/single',
- name: 'Single',
- handler: () => ({ title: 'ok', link: 'https://example.com', item: [], allowEmpty: true }),
- },
- },
- },
- nsModule: {
- '/route-module.ts': {
- route: {
- path: '/module',
- name: 'Module',
- module: () =>
- Promise.resolve({
- route: {
- handler: () => new Response('module'),
- },
- }),
- },
- },
- },
- nsApi: {
- '/api-single.ts': {
- apiRoute: {
- path: '/single',
- name: 'ApiSingle',
- handler: () => ({ ok: true }),
- },
- },
- '/api-module.ts': {
- apiRoute: {
- path: '/module',
- name: 'ApiModule',
- module: () =>
- Promise.resolve({
- apiRoute: {
- handler: () => ({ ok: true }),
- },
- }),
- },
- },
- },
- test: {
- '/api-index.ts': {
- apiRoute: {
- path: '/',
- name: 'ApiIndex',
- },
- },
- },
- });
- vi.doMock('@/utils/directory-import', () => ({
- directoryImport: directoryImportMock,
- }));
- vi.resetModules();
- const { namespaces, default: registry } = await import('@/registry');
-
- // The cold-start guarantee: importing the registry imports no route modules
- expect(directoryImportMock).not.toHaveBeenCalled();
-
- const app = wrap(registry);
-
- const routeResponse = await app.request('/nsModule/module');
- expect(await routeResponse.text()).toBe('module');
- expect(directoryImportMock).toHaveBeenCalledTimes(1);
-
- const singleResponse = await app.request('/nsRoute/single');
- const singleBody = await singleResponse.json();
- expect(singleBody.title).toBe('ok');
- expect(namespaces.nsRoute.routes['/single']).toBeDefined();
- expect(namespaces.nsRoute.routes['/a']).toBeDefined();
-
- const apiResponse = await app.request('/api/nsApi/module');
- const apiBody = await apiResponse.json();
- expect(apiBody).toEqual({ ok: true });
- expect(namespaces.nsApi.apiRoutes['/single']).toBeDefined();
-
- // Handler resolution from disk in test env (real file lib/routes/test/api-index.ts)
- process.env.NODE_ENV = 'test';
- const apiTestResponse = await app.request('/api/test');
- expect(await apiTestResponse.json()).toEqual({ code: 0 });
-
- process.env.NODE_ENV = originalEnv;
- vi.doUnmock('@/utils/directory-import');
- });
-
- // https://github.com/DIYgod/RSSHub/pull/18002
- it('prioritizes literal segments over parameter segments in route matching', async () => {
- const originalEnv = process.env.NODE_ENV;
- process.env.NODE_ENV = 'development';
-
- const directoryImportMock = perDirectoryMock({
- specificity: {
- '/param-route.ts': {
- route: {
- path: '/:category',
- name: 'ParamRoute',
- handler: () => ({ title: 'param', link: 'https://example.com', item: [], allowEmpty: true }),
- },
- },
- '/literal-route.ts': {
- route: {
- path: '/news/:channel',
- name: 'LiteralRoute',
- handler: () => ({ title: 'literal', link: 'https://example.com', item: [], allowEmpty: true }),
- },
- },
- '/news-route.ts': {
- route: {
- path: '/news',
- name: 'NewsRoute',
- handler: () => ({ title: 'news', link: 'https://example.com', item: [], allowEmpty: true }),
- },
- },
- },
- });
- vi.doMock('@/utils/directory-import', () => ({
- directoryImport: directoryImportMock,
- }));
- vi.resetModules();
- const { default: registry } = await import('@/registry');
-
- const app = wrap(registry);
-
- // /news/sports should match /news/:channel (literal "news" wins over :category)
- const literalResponse = await app.request('/specificity/news/sports');
- expect((await literalResponse.json()).title).toBe('literal');
-
- // /news should match /news (literal wins over :category)
- const newsResponse = await app.request('/specificity/news');
- expect((await newsResponse.json()).title).toBe('news');
-
- // /products should match /:category
- const paramResponse = await app.request('/specificity/products');
- expect((await paramResponse.json()).title).toBe('param');
-
- process.env.NODE_ENV = originalEnv;
- vi.doUnmock('@/utils/directory-import');
- });
-});
diff --git a/lib/registry.test.ts b/lib/registry.test.ts
index 27d691911a15..da75e1933702 100644
--- a/lib/registry.test.ts
+++ b/lib/registry.test.ts
@@ -1,10 +1,28 @@
-import { describe, expect, it, vi } from 'vitest';
+import type fs from 'node:fs';
+import path from 'node:path';
+
+import { Hono } from 'hono';
+import { afterEach, describe, expect, it, vi } from 'vitest';
import app from '@/app';
import { config } from '@/config';
import registryApp, { collectNamespaceRoots, namespaces, resolveModuleNamespace, sortRoutes } from '@/registry';
import type { Route } from '@/types';
+// The dev registry lists lib/routes at startup; expose the fixture directory names there
+const fakeTopDirectories = vi.hoisted(() => ({ names: [] as string[] }));
+
+vi.mock('node:fs', async (importOriginal) => {
+ const actual = await importOriginal();
+ const readdirSync = ((target: unknown, options: unknown) => {
+ if (fakeTopDirectories.names.length > 0 && String(target).endsWith(path.join('lib', 'routes'))) {
+ return fakeTopDirectories.names.map((name) => ({ name, isDirectory: () => true }));
+ }
+ return actual.readdirSync(target as never, options as never);
+ }) as typeof actual.readdirSync;
+ return { ...actual, readdirSync, default: { ...actual, readdirSync } };
+});
+
describe('registry', () => {
// root
it('/', async () => {
@@ -137,3 +155,200 @@ describe('nested namespace mounting', () => {
expect(sorted.map(([path]) => path)).toEqual(['/static', '/:id{[0-9]+}', '/:category?']);
});
});
+
+const perDirectoryMock = (fakeDirectories: Record>) => {
+ fakeTopDirectories.names = Object.keys(fakeDirectories);
+ return vi.fn(({ targetDirectoryPath }: { targetDirectoryPath: string }) => {
+ const name = targetDirectoryPath.split(/[/\\]/).findLast(Boolean) as string;
+ return Promise.resolve(fakeDirectories[name]);
+ });
+};
+
+const wrap = (registry: Hono) => {
+ const app = new Hono();
+ app.use(async (ctx, next) => {
+ const response = await next();
+ const apiData = ctx.get('apiData');
+ if (apiData) {
+ return ctx.json(apiData);
+ }
+ const data = ctx.get('data');
+ if (data) {
+ return ctx.json(data);
+ }
+ return response;
+ });
+ app.route('/', registry);
+ return app;
+};
+
+describe('registry dynamic loading', () => {
+ afterEach(() => {
+ fakeTopDirectories.names = [];
+ });
+
+ it('loads production namespaces from build', async () => {
+ const originalEnv = process.env.NODE_ENV;
+ process.env.NODE_ENV = 'production';
+ vi.resetModules();
+
+ const { namespaces } = await import('@/registry');
+ expect(Object.keys(namespaces).length).toBeGreaterThan(0);
+
+ process.env.NODE_ENV = originalEnv;
+ });
+
+ it('lazily builds namespaces from directory import on first request', async () => {
+ const originalEnv = process.env.NODE_ENV;
+ process.env.NODE_ENV = 'development';
+
+ const directoryImportMock = perDirectoryMock({
+ nsRoute: {
+ '/route-array.ts': {
+ route: {
+ path: ['/a', '/b'],
+ name: 'Array',
+ handler: () => ({ title: 'array', link: 'https://example.com', item: [], allowEmpty: true }),
+ },
+ },
+ '/route-single.ts': {
+ route: {
+ path: '/single',
+ name: 'Single',
+ handler: () => ({ title: 'ok', link: 'https://example.com', item: [], allowEmpty: true }),
+ },
+ },
+ },
+ nsModule: {
+ '/route-module.ts': {
+ route: {
+ path: '/module',
+ name: 'Module',
+ module: () =>
+ Promise.resolve({
+ route: {
+ handler: () => new Response('module'),
+ },
+ }),
+ },
+ },
+ },
+ nsApi: {
+ '/api-single.ts': {
+ apiRoute: {
+ path: '/single',
+ name: 'ApiSingle',
+ handler: () => ({ ok: true }),
+ },
+ },
+ '/api-module.ts': {
+ apiRoute: {
+ path: '/module',
+ name: 'ApiModule',
+ module: () =>
+ Promise.resolve({
+ apiRoute: {
+ handler: () => ({ ok: true }),
+ },
+ }),
+ },
+ },
+ },
+ test: {
+ '/api-index.ts': {
+ apiRoute: {
+ path: '/',
+ name: 'ApiIndex',
+ },
+ },
+ },
+ });
+ vi.doMock('@/utils/directory-import', () => ({
+ directoryImport: directoryImportMock,
+ }));
+ vi.resetModules();
+ const { namespaces, default: registry } = await import('@/registry');
+
+ // The cold-start guarantee: importing the registry imports no route modules
+ expect(directoryImportMock).not.toHaveBeenCalled();
+
+ const app = wrap(registry);
+
+ const routeResponse = await app.request('/nsModule/module');
+ expect(await routeResponse.text()).toBe('module');
+ expect(directoryImportMock).toHaveBeenCalledTimes(1);
+
+ const singleResponse = await app.request('/nsRoute/single');
+ const singleBody = await singleResponse.json();
+ expect(singleBody.title).toBe('ok');
+ expect(namespaces.nsRoute.routes['/single']).toBeDefined();
+ expect(namespaces.nsRoute.routes['/a']).toBeDefined();
+
+ const apiResponse = await app.request('/api/nsApi/module');
+ const apiBody = await apiResponse.json();
+ expect(apiBody).toEqual({ ok: true });
+ expect(namespaces.nsApi.apiRoutes['/single']).toBeDefined();
+
+ // Handler resolution from disk in test env (real file lib/routes/test/api-index.ts)
+ process.env.NODE_ENV = 'test';
+ const apiTestResponse = await app.request('/api/test');
+ expect(await apiTestResponse.json()).toEqual({ code: 0 });
+
+ process.env.NODE_ENV = originalEnv;
+ vi.doUnmock('@/utils/directory-import');
+ });
+
+ // https://github.com/DIYgod/RSSHub/pull/18002
+ it('prioritizes literal segments over parameter segments in route matching', async () => {
+ const originalEnv = process.env.NODE_ENV;
+ process.env.NODE_ENV = 'development';
+
+ const directoryImportMock = perDirectoryMock({
+ specificity: {
+ '/param-route.ts': {
+ route: {
+ path: '/:category',
+ name: 'ParamRoute',
+ handler: () => ({ title: 'param', link: 'https://example.com', item: [], allowEmpty: true }),
+ },
+ },
+ '/literal-route.ts': {
+ route: {
+ path: '/news/:channel',
+ name: 'LiteralRoute',
+ handler: () => ({ title: 'literal', link: 'https://example.com', item: [], allowEmpty: true }),
+ },
+ },
+ '/news-route.ts': {
+ route: {
+ path: '/news',
+ name: 'NewsRoute',
+ handler: () => ({ title: 'news', link: 'https://example.com', item: [], allowEmpty: true }),
+ },
+ },
+ },
+ });
+ vi.doMock('@/utils/directory-import', () => ({
+ directoryImport: directoryImportMock,
+ }));
+ vi.resetModules();
+ const { default: registry } = await import('@/registry');
+
+ const app = wrap(registry);
+
+ // /news/sports should match /news/:channel (literal "news" wins over :category)
+ const literalResponse = await app.request('/specificity/news/sports');
+ expect((await literalResponse.json()).title).toBe('literal');
+
+ // /news should match /news (literal wins over :category)
+ const newsResponse = await app.request('/specificity/news');
+ expect((await newsResponse.json()).title).toBe('news');
+
+ // /products should match /:category
+ const paramResponse = await app.request('/specificity/products');
+ expect((await paramResponse.json()).title).toBe('param');
+
+ process.env.NODE_ENV = originalEnv;
+ vi.doUnmock('@/utils/directory-import');
+ });
+});
diff --git a/lib/routes.test.ts b/lib/routes.test.ts
deleted file mode 100644
index f1da8dc8dd2e..000000000000
--- a/lib/routes.test.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import Parser from 'rss-parser';
-import { describe, expect, it } from 'vitest';
-
-import app from '@/app';
-import { config } from '@/config';
-
-const parser = new Parser();
-
-process.env.ALLOW_USER_SUPPLY_UNSAFE_DOMAIN = 'true';
-
-const routes = {
- '/test/:id': '/test/1',
-};
-if (process.env.FULL_ROUTES_TEST) {
- const { namespaces } = await import('@/registry');
- for (const namespace in namespaces) {
- for (const route in namespaces[namespace].routes) {
- const requireConfig = namespaces[namespace].routes[route].features?.requireConfig;
- let configs;
- if (typeof requireConfig !== 'boolean') {
- configs = requireConfig
- ?.filter((config) => !config.optional)
- .map((config) => config.name)
- .filter((name) => name !== 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN');
- }
- if (namespaces[namespace].routes[route].example && !configs?.length) {
- routes[`/${namespace}${route}`] = namespaces[namespace].routes[route].example;
- }
- }
- }
-}
-
-async function checkRSS(response) {
- const checkDate = (date) => {
- expect(date).toEqual(expect.any(String));
- expect(Date.parse(date)).toEqual(expect.any(Number));
- expect(Date.now() - +new Date(date)).toBeGreaterThan(-1000 * 60 * 60 * 24 * 5);
- expect(Date.now() - +new Date(date)).toBeLessThan(1000 * 60 * 60 * 24 * 30 * 12 * 10);
- };
-
- const parsed = await parser.parseString(await response.text());
-
- expect(parsed).toEqual(expect.any(Object));
- expect(parsed.title).toEqual(expect.any(String));
- expect(parsed.title).not.toBe('RSSHub');
- expect(parsed.description).toEqual(expect.any(String));
- expect(parsed.link).toEqual(expect.any(String));
- expect(parsed.lastBuildDate).toEqual(expect.any(String));
- expect(parsed.ttl).toEqual(Math.trunc(config.cache.routeExpire / 60) + '');
- expect(parsed.items).toEqual(expect.any(Array));
- checkDate(parsed.lastBuildDate);
-
- // check items
- const guids: Array = [];
- for (const item of parsed.items) {
- expect(item).toEqual(expect.any(Object));
- expect(item.title).toEqual(expect.any(String));
- expect(item.link).toEqual(expect.any(String));
- expect(item.content).toEqual(expect.any(String));
- expect(item.guid).toEqual(expect.any(String));
- if (item.pubDate) {
- expect(item.pubDate).toEqual(expect.any(String));
- checkDate(item.pubDate);
- }
-
- // guid must be unique
- expect(guids).not.toContain(item.guid);
- guids.push(item.guid);
- }
-}
-
-describe('routes', () => {
- for (const route in routes) {
- it.concurrent(
- route,
- {
- timeout: 60000,
- },
- async () => {
- const response = await app.request(routes[route]);
- expect(response.status).toBe(200);
- await checkRSS(response);
- }
- );
- }
-});
diff --git a/lib/entrypoints.test.ts b/lib/server.test.ts
similarity index 53%
rename from lib/entrypoints.test.ts
rename to lib/server.test.ts
index ede7c38ca2f3..188aef750a08 100644
--- a/lib/entrypoints.test.ts
+++ b/lib/server.test.ts
@@ -1,11 +1,6 @@
import { describe, expect, it } from 'vitest';
-describe('entrypoints', () => {
- it('exports app entrypoint', async () => {
- const app = (await import('@/app')).default;
- expect(typeof app.request).toBe('function');
- });
-
+describe('server', () => {
it('exports server entrypoint', async () => {
const server = (await import('@/server')).default;
expect(typeof server.request).toBe('function');
diff --git a/lib/techflowpost.test.ts b/lib/techflowpost.test.ts
deleted file mode 100644
index 57edf708964d..000000000000
--- a/lib/techflowpost.test.ts
+++ /dev/null
@@ -1,156 +0,0 @@
-import { http, HttpResponse } from 'msw';
-import { describe, expect, it } from 'vitest';
-
-import { route as indexRoute } from './routes/techflowpost';
-import { route as expressRoute } from './routes/techflowpost/express';
-import { route as featuredRoute } from './routes/techflowpost/featured';
-
-const challengeArg = '7FC0A515A247CA56A8EE791EF40FF1CAEB93AAA6';
-const expectedCookie = 'acw_sc__v2=69fef11a2a690097fa41a9b697a798108d4fb906';
-
-const challenge = ``;
-
-function createCtx({ category, limit = '1' }: { category?: string; limit?: string } = {}) {
- return {
- req: {
- param: (name: string) => (name === 'category' ? category : undefined),
- query: (name: string) => (name === 'limit' ? limit : undefined),
- },
- };
-}
-
-describe('/techflowpost', () => {
- it('builds the article feed from the current client API after acw challenge', async () => {
- const { default: server } = await import('@/setup.test');
-
- server.use(
- http.post('https://www.techflowpost.com/ashx/index.ashx', () => HttpResponse.json({ message: 'gone' }, { status: 410 })),
- http.get('https://www.techflowpost.com/api/client/articles', ({ request }) => {
- const url = new URL(request.url);
- expect(url.searchParams.get('page')).toBe('1');
- expect(url.searchParams.get('page_size')).toBe('1');
-
- if (!request.headers.get('cookie')?.includes(expectedCookie)) {
- return HttpResponse.html(challenge);
- }
-
- return HttpResponse.json({
- data: [
- {
- id: 31495,
- title: 'Article title',
- abstract: 'Article abstract',
- picture: '/upload/images/article.png',
- author: { name: 'TechFlow' },
- category: { name: 'Trading' },
- labels: [{ label: 'AI' }],
- created_at: '2026-05-09T06:40:11.209Z',
- updated_at: '2026-05-09T08:31:01.272Z',
- },
- ],
- });
- }),
- http.get('https://www.techflowpost.com/api/client/articles/31495', ({ request }) => {
- expect(request.headers.get('cookie')).toContain(expectedCookie);
-
- return HttpResponse.json({
- article: {
- content: 'Full article content
',
- },
- });
- })
- );
-
- const feed = await indexRoute.handler(createCtx());
- expect(feed.item).toHaveLength(1);
- expect(feed.item[0].title).toBe('Article title');
- expect(feed.item[0].link).toBe('https://www.techflowpost.com/zh-CN/article/31495');
- expect(feed.item[0].description).toContain('Full article content');
- expect(feed.item[0].category).toEqual(['Trading', 'AI']);
- });
-
- it('passes category_id for featured article feeds', async () => {
- const { default: server } = await import('@/setup.test');
-
- server.use(
- http.post('https://www.techflowpost.com/ashx/index.ashx', () => HttpResponse.json({ message: 'gone' }, { status: 410 })),
- http.get('https://www.techflowpost.com/api/client/articles', ({ request }) => {
- const url = new URL(request.url);
- expect(url.searchParams.get('category_id')).toBe('2043');
-
- if (!request.headers.get('cookie')?.includes(expectedCookie)) {
- return HttpResponse.html(challenge);
- }
-
- return HttpResponse.json({
- data: [
- {
- id: 31496,
- title: 'Featured article',
- abstract: 'Featured abstract',
- author: { name: 'TechFlow' },
- category: { name: 'Trading' },
- labels: [],
- created_at: '2026-05-09T07:27:22.240Z',
- updated_at: '2026-05-09T08:32:09.789Z',
- },
- ],
- });
- }),
- http.get('https://www.techflowpost.com/api/client/articles/31496', () =>
- HttpResponse.json({
- article: {
- content: 'Featured content
',
- },
- })
- )
- );
-
- const feed = await featuredRoute.handler(createCtx({ category: '2043' }));
- expect(feed.item[0].title).toBe('Featured article');
- expect(feed.item[0].description).toContain('Featured content');
- });
-
- it('builds the express feed from the current newsflash API', async () => {
- const { default: server } = await import('@/setup.test');
-
- server.use(
- http.post('https://www.techflowpost.com/ashx/newflash_index.ashx', () => HttpResponse.json({ message: 'gone' }, { status: 410 })),
- http.get('https://www.techflowpost.com/api/client/newsflashes', ({ request }) => {
- const url = new URL(request.url);
- expect(url.searchParams.get('page')).toBe('1');
- expect(url.searchParams.get('page_size')).toBe('1');
-
- if (!request.headers.get('cookie')?.includes(expectedCookie)) {
- return HttpResponse.html(challenge);
- }
-
- return HttpResponse.json({
- data: [
- {
- id: 122059,
- title: 'Newsflash title',
- abstract: 'Newsflash abstract',
- url: 'https://example.com/source',
- created_at: '2026-05-09T08:21:45.537Z',
- updated_at: '2026-05-09T08:33:21.834Z',
- },
- ],
- });
- }),
- http.get('https://www.techflowpost.com/api/client/newsflashes/122059', ({ request }) => {
- expect(request.headers.get('cookie')).toContain(expectedCookie);
-
- return HttpResponse.json({
- content: 'Newsflash content
',
- });
- })
- );
-
- const feed = await expressRoute.handler(createCtx());
- expect(feed.item).toHaveLength(1);
- expect(feed.item[0].title).toBe('Newsflash title');
- expect(feed.item[0].link).toBe('https://www.techflowpost.com/zh-CN/newsletter/122059');
- expect(feed.item[0].description).toContain('Newsflash content');
- });
-});
diff --git a/lib/utils/cache.test.ts b/lib/utils/cache/index.test.ts
similarity index 100%
rename from lib/utils/cache.test.ts
rename to lib/utils/cache/index.test.ts
diff --git a/lib/utils/cache/index.worker.test.ts b/lib/utils/cache/index.worker.test.ts
new file mode 100644
index 000000000000..3e65db09c8f2
--- /dev/null
+++ b/lib/utils/cache/index.worker.test.ts
@@ -0,0 +1,77 @@
+///
+import { env } from 'cloudflare:test';
+import { describe, expect, it, vi } from 'vitest';
+
+import cache, { setKVNamespace } from '@/utils/cache/index.worker';
+import kv from '@/utils/cache/kv';
+
+describe('worker cache before KV binding', () => {
+ it('is unavailable and always calls the value function', async () => {
+ expect(cache.status.available).toBe(false);
+
+ const getValue = vi.fn().mockResolvedValue({ fresh: 1 });
+ const first = await cache.tryGet('worker:fallback', getValue);
+ const second = await cache.tryGet('worker:fallback', getValue);
+
+ expect(first).toEqual({ fresh: 1 });
+ expect(second).toEqual({ fresh: 1 });
+ expect(getValue).toHaveBeenCalledTimes(2);
+ expect(await cache.globalCache.get('worker:fallback')).toBeNull();
+ });
+});
+
+// The binding is module-global state, so these run after the unavailable tests above
+describe('worker cache with KV binding', () => {
+ it('becomes available once the KV namespace is bound', () => {
+ setKVNamespace(env.CACHE);
+ expect(cache.status.available).toBe(true);
+ });
+
+ it('round-trips strings and serializes objects', async () => {
+ await kv.set('worker:string', 'value');
+ expect(await kv.get('worker:string')).toBe('value');
+
+ await kv.set('worker:object', { a: 1 });
+ expect(await kv.get('worker:object')).toBe('{"a":1}');
+ expect(await kv.has('worker:object')).toBe(true);
+ expect(await kv.has('worker:missing')).toBe(false);
+ });
+
+ it('tryGet caches the computed value and parses JSON on the next hit', async () => {
+ const getValue = vi.fn().mockResolvedValue({ cached: true });
+
+ const miss = await cache.tryGet('worker:tryget', getValue);
+ expect(miss).toEqual({ cached: true });
+
+ // tryGet writes the cache without awaiting the KV put
+ await vi.waitFor(async () => {
+ expect(await kv.has('worker:tryget')).toBe(true);
+ });
+
+ const hit = await cache.tryGet('worker:tryget', getValue);
+ expect(hit).toEqual({ cached: true });
+ expect(getValue).toHaveBeenCalledTimes(1);
+ });
+
+ it('stores a ttl sidecar key for non-default expiry', async () => {
+ await kv.set('worker:custom-ttl', 'v', 120);
+ expect(await env.CACHE.get('rsshub:cacheTtl:worker:custom-ttl')).toBe('120');
+
+ await kv.set('worker:default-ttl', 'v');
+ expect(await env.CACHE.get('rsshub:cacheTtl:worker:default-ttl')).toBeNull();
+ });
+
+ it('rejects keys using the reserved ttl prefix', async () => {
+ await expect(kv.get('rsshub:cacheTtl:foo')).rejects.toThrow('reserved');
+ });
+
+ it('claims a key only once', async () => {
+ expect(await cache.globalCache.claim('worker:claim', 60)).toBe(true);
+ expect(await cache.globalCache.claim('worker:claim', 60)).toBe(false);
+ });
+
+ it('exposes get/set through globalCache', async () => {
+ await cache.globalCache.set('worker:global', { b: 2 }, 60);
+ expect(await cache.globalCache.get('worker:global')).toBe('{"b":2}');
+ });
+});
diff --git a/lib/utils/common-config.charset.test.ts b/lib/utils/common-config.charset.test.ts
deleted file mode 100644
index 008141d66cab..000000000000
--- a/lib/utils/common-config.charset.test.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { describe, expect, it, vi } from 'vitest';
-
-const html = `
-
- -
- 1
-
RSSHub1
- 2025-01-01
-
-
-
`;
-
-const rawSpy = vi.fn(() =>
- Promise.resolve({
- headers: new Headers({
- 'content-type': 'text/html; charset=gbk',
- }),
- _data: html,
- })
-);
-const ofetchSpy = vi.fn(() => Promise.resolve(Buffer.from(html)));
-
-vi.mock('@/utils/ofetch', () => ({
- default: Object.assign(ofetchSpy, { raw: rawSpy }),
-}));
-
-describe('common-config charset', () => {
- it('parses charset from content-type', async () => {
- const buildData = (await import('@/utils/common-config')).default;
- const data = await buildData({
- link: 'http://rsshub.test/buildData',
- url: 'http://rsshub.test/buildData',
- title: '%title%',
- params: {
- title: 'buildData',
- },
- item: {
- item: '.content li',
- title: `$('a').text() + ' - %title%'`,
- link: `$('a').attr('href')`,
- description: `$('.description').html()`,
- pubDate: `timezone(parseDate($('.date').text(), 'YYYY-MM-DD'), 0)`,
- },
- });
-
- expect(data.title).toBe('buildData');
- expect(data.item[0].title).toBe('1 - buildData');
- });
-});
diff --git a/lib/utils/common-config.test.ts b/lib/utils/common-config.test.ts
index 8acb8ebd855a..6eee18d5f04e 100644
--- a/lib/utils/common-config.test.ts
+++ b/lib/utils/common-config.test.ts
@@ -1,4 +1,4 @@
-import { describe, expect, it } from 'vitest';
+import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import configUtils, { getProp, replaceParams, transElemText } from '@/utils/common-config';
@@ -78,3 +78,59 @@ describe('index', () => {
});
});
});
+
+describe('charset', () => {
+ const html = `
+
+ -
+ 1
+
RSSHub1
+ 2025-01-01
+
+
+
`;
+
+ const rawSpy = vi.fn(() =>
+ Promise.resolve({
+ headers: new Headers({
+ 'content-type': 'text/html; charset=gbk',
+ }),
+ _data: html,
+ })
+ );
+ const ofetchSpy = vi.fn(() => Promise.resolve(Buffer.from(html)));
+
+ beforeAll(() => {
+ vi.doMock('@/utils/ofetch', () => ({
+ default: Object.assign(ofetchSpy, { raw: rawSpy }),
+ }));
+ vi.resetModules();
+ });
+
+ afterAll(() => {
+ vi.doUnmock('@/utils/ofetch');
+ vi.resetModules();
+ });
+
+ it('parses charset from content-type', async () => {
+ const buildData = (await import('@/utils/common-config')).default;
+ const data = await buildData({
+ link: 'http://rsshub.test/buildData',
+ url: 'http://rsshub.test/buildData',
+ title: '%title%',
+ params: {
+ title: 'buildData',
+ },
+ item: {
+ item: '.content li',
+ title: `$('a').text() + ' - %title%'`,
+ link: `$('a').attr('href')`,
+ description: `$('.description').html()`,
+ pubDate: `timezone(parseDate($('.date').text(), 'YYYY-MM-DD'), 0)`,
+ },
+ });
+
+ expect(data.title).toBe('buildData');
+ expect(data.item[0].title).toBe('1 - buildData');
+ });
+});
diff --git a/lib/utils/header-generator.mock.test.ts b/lib/utils/header-generator.mock.test.ts
deleted file mode 100644
index ec554191c08e..000000000000
--- a/lib/utils/header-generator.mock.test.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { afterEach, describe, expect, it, vi } from 'vitest';
-
-afterEach(() => {
- vi.resetModules();
- vi.clearAllMocks();
- vi.unmock('header-generator');
-});
-
-describe('header-generator (mocked)', () => {
- it('retries invalid safari user agents', async () => {
- const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Applebot Safari' }, { 'user-agent': 'Mozilla/5.0 Safari' }];
-
- vi.doMock('header-generator', () => ({
- HeaderGenerator: class {
- getHeaders() {
- return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Safari' };
- }
- },
- PRESETS: {
- MODERN_MACOS_CHROME: { mock: true },
- },
- }));
-
- const { generateHeaders } = await import('@/utils/header-generator');
- const headers = generateHeaders({ preset: 'safari' } as any);
-
- expect(headers['user-agent']).toContain('Safari');
- expect(headersQueue.length).toBe(0);
- });
-
- it('accepts firefox user agents', async () => {
- const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Firefox' }];
-
- vi.doMock('header-generator', () => ({
- HeaderGenerator: class {
- getHeaders() {
- return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Firefox' };
- }
- },
- PRESETS: {
- MODERN_MACOS_CHROME: { mock: true },
- },
- }));
-
- const { generateHeaders } = await import('@/utils/header-generator');
- const headers = generateHeaders();
-
- expect(headers['user-agent']).toContain('Firefox');
- });
-});
diff --git a/lib/utils/header-generator.test.ts b/lib/utils/header-generator.test.ts
index 035b005cca03..044d7105c7e5 100644
--- a/lib/utils/header-generator.test.ts
+++ b/lib/utils/header-generator.test.ts
@@ -1,4 +1,4 @@
-import { describe, expect, it } from 'vitest';
+import { afterEach, describe, expect, it, vi } from 'vitest';
import { generateHeaders, PRESETS } from '@/utils/header-generator';
import ofetch from '@/utils/ofetch';
@@ -62,3 +62,54 @@ describe('header-generator', () => {
expect(headers['user-agent']).toMatch(/Chrome/);
});
});
+
+describe('header-generator (mocked)', () => {
+ afterEach(() => {
+ vi.resetModules();
+ vi.clearAllMocks();
+ vi.unmock('header-generator');
+ });
+
+ it('retries invalid safari user agents', async () => {
+ const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Applebot Safari' }, { 'user-agent': 'Mozilla/5.0 Safari' }];
+
+ vi.doMock('header-generator', () => ({
+ HeaderGenerator: class {
+ getHeaders() {
+ return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Safari' };
+ }
+ },
+ PRESETS: {
+ MODERN_MACOS_CHROME: { mock: true },
+ },
+ }));
+
+ vi.resetModules();
+ const { generateHeaders: generateMockedHeaders } = await import('@/utils/header-generator');
+ const headers = generateMockedHeaders({ preset: 'safari' } as any);
+
+ expect(headers['user-agent']).toContain('Safari');
+ expect(headersQueue.length).toBe(0);
+ });
+
+ it('accepts firefox user agents', async () => {
+ const headersQueue = [{ 'user-agent': 'Mozilla/5.0 Firefox' }];
+
+ vi.doMock('header-generator', () => ({
+ HeaderGenerator: class {
+ getHeaders() {
+ return headersQueue.shift() ?? { 'user-agent': 'Mozilla/5.0 Firefox' };
+ }
+ },
+ PRESETS: {
+ MODERN_MACOS_CHROME: { mock: true },
+ },
+ }));
+
+ vi.resetModules();
+ const { generateHeaders: generateMockedHeaders } = await import('@/utils/header-generator');
+ const headers = generateMockedHeaders();
+
+ expect(headers['user-agent']).toContain('Firefox');
+ });
+});
diff --git a/lib/utils/proxy/pac-proxy-error.test.ts b/lib/utils/proxy/pac-proxy-error.test.ts
deleted file mode 100644
index 51224fe0a7b6..000000000000
--- a/lib/utils/proxy/pac-proxy-error.test.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { describe, expect, it, vi } from 'vitest';
-
-const errorSpy = vi.fn();
-const warnSpy = vi.fn();
-const infoSpy = vi.fn();
-
-vi.mock('@/utils/logger', () => ({
- default: {
- error: errorSpy,
- warn: warnSpy,
- info: infoSpy,
- },
-}));
-
-describe('pac-proxy', () => {
- it('logs error when PAC_SCRIPT is not a string', async () => {
- const pacProxy = (await import('@/utils/proxy/pac-proxy')).default;
- pacProxy(undefined, { invalid: true } as any, {});
-
- expect(errorSpy).toHaveBeenCalledWith('Invalid PAC_SCRIPT, use PAC_URI instead');
- });
-});
diff --git a/lib/utils/proxy/pac-proxy.test.ts b/lib/utils/proxy/pac-proxy.test.ts
index 97a9b52417ae..2e5c8d417630 100644
--- a/lib/utils/proxy/pac-proxy.test.ts
+++ b/lib/utils/proxy/pac-proxy.test.ts
@@ -1,4 +1,4 @@
-import { describe, expect, it } from 'vitest';
+import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import pacProxy from '@/utils/proxy/pac-proxy';
@@ -79,3 +79,30 @@ describe('pac-proxy', () => {
effectiveExpect(pacProxy(httpsAuthUri, '', httpsAuthObj), httpsAuthUri, httpsObj);
});
});
+
+describe('pac-proxy error handling', () => {
+ const errorSpy = vi.fn();
+
+ beforeAll(() => {
+ vi.doMock('@/utils/logger', () => ({
+ default: {
+ error: errorSpy,
+ warn: vi.fn(),
+ info: vi.fn(),
+ },
+ }));
+ vi.resetModules();
+ });
+
+ afterAll(() => {
+ vi.doUnmock('@/utils/logger');
+ vi.resetModules();
+ });
+
+ it('logs error when PAC_SCRIPT is not a string', async () => {
+ const freshPacProxy = (await import('@/utils/proxy/pac-proxy')).default;
+ freshPacProxy(undefined, { invalid: true } as any, {});
+
+ expect(errorSpy).toHaveBeenCalledWith('Invalid PAC_SCRIPT, use PAC_URI instead');
+ });
+});
diff --git a/lib/utils/render.test.ts b/lib/utils/render.test.ts
new file mode 100644
index 000000000000..cdb36c869a4c
--- /dev/null
+++ b/lib/utils/render.test.ts
@@ -0,0 +1,16 @@
+import { describe, expect, it } from 'vitest';
+
+import { Atom as RenderAtom, json as renderJson, RSS as RenderRSS, rss3 as renderRss3 } from '@/utils/render';
+import Atom from '@/views/atom';
+import jsonView from '@/views/json';
+import RSS from '@/views/rss';
+import rss3View from '@/views/rss3';
+
+describe('view exports', () => {
+ it('re-exports view helpers from render', () => {
+ expect(RenderAtom).toBe(Atom);
+ expect(RenderRSS).toBe(RSS);
+ expect(renderJson).toBe(jsonView);
+ expect(renderRss3).toBe(rss3View);
+ });
+});
diff --git a/lib/utils/request-rewriter/fetch-retry.test.ts b/lib/utils/request-rewriter/fetch-retry.test.ts
deleted file mode 100644
index fcd8c382a695..000000000000
--- a/lib/utils/request-rewriter/fetch-retry.test.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-import undici from 'undici';
-import { afterEach, describe, expect, it, vi } from 'vitest';
-
-const buildProxyState = () => [
- {
- uri: 'http://proxy1.test',
- isActive: true,
- failureCount: 0,
- urlHandler: new URL('http://proxy1.test'),
- },
- {
- uri: 'http://proxy2.test',
- isActive: true,
- failureCount: 0,
- urlHandler: new URL('http://proxy2.test'),
- },
-];
-
-const loadWrappedFetch = async (proxyMock: any) => {
- vi.resetModules();
- vi.doMock('@/utils/logger', () => ({
- default: {
- debug: vi.fn(),
- warn: vi.fn(),
- info: vi.fn(),
- error: vi.fn(),
- http: vi.fn(),
- },
- }));
- vi.doMock('@/utils/proxy', () => ({
- default: proxyMock,
- }));
-
- return (await import('@/utils/request-rewriter/fetch')).default;
-};
-
-afterEach(() => {
- vi.restoreAllMocks();
- vi.resetModules();
- vi.unmock('@/utils/logger');
- vi.unmock('@/utils/proxy');
-});
-
-describe('request-rewriter fetch retry', () => {
- it('retries with the next proxy when prefer-proxy header is set', async () => {
- const proxies = buildProxyState();
- let index = 0;
- const proxyMock = {
- proxyObj: {
- strategy: 'on_retry',
- url_regex: 'example.com',
- },
- proxyUrlHandler: null,
- multiProxy: {
- allProxies: proxies,
- },
- getCurrentProxy: vi.fn(() => proxies[index]),
- markProxyFailed: vi.fn(() => {
- index = 1;
- }),
- getDispatcherForProxy: vi.fn((proxyState) => ({
- proxy: proxyState.uri,
- })),
- };
-
- const wrappedFetch = await loadWrappedFetch(proxyMock);
- const fetchSpy = vi.spyOn(undici, 'fetch');
- fetchSpy.mockRejectedValueOnce(new Error('boom'));
- fetchSpy.mockResolvedValueOnce(new Response('ok'));
-
- const response = await wrappedFetch('http://example.com/resource', {
- headers: new Headers({
- 'x-prefer-proxy': '1',
- }),
- });
-
- expect(response).toBeInstanceOf(Response);
- expect(fetchSpy).toHaveBeenCalledTimes(2);
- expect(proxyMock.markProxyFailed).toHaveBeenCalledWith('http://proxy1.test');
- expect(proxyMock.getDispatcherForProxy).toHaveBeenCalledWith(proxies[1]);
-
- const requestArg = fetchSpy.mock.calls[0][0] as Request;
- expect(requestArg.headers.get('x-prefer-proxy')).toBeNull();
- });
-
- it('drops dispatcher when no next proxy is available', async () => {
- const proxies = buildProxyState();
- const proxyMock = {
- proxyObj: {
- strategy: 'on_retry',
- url_regex: 'example.com',
- },
- proxyUrlHandler: null,
- multiProxy: {
- allProxies: proxies,
- },
- getCurrentProxy: vi.fn(() => proxies[0]),
- markProxyFailed: vi.fn(),
- getDispatcherForProxy: vi.fn((proxyState) => ({
- proxy: proxyState.uri,
- })),
- };
-
- const wrappedFetch = await loadWrappedFetch(proxyMock);
- const fetchSpy = vi.spyOn(undici, 'fetch');
- fetchSpy.mockRejectedValueOnce(new Error('boom'));
- fetchSpy.mockResolvedValueOnce(new Response('ok'));
-
- await wrappedFetch('http://example.com/resource', {
- headers: {
- 'x-prefer-proxy': '1',
- },
- });
-
- expect(fetchSpy).toHaveBeenCalledTimes(2);
- expect(fetchSpy.mock.calls[1][1]?.dispatcher).toBeUndefined();
- });
-});
diff --git a/lib/utils/request-rewriter/fetch.test.ts b/lib/utils/request-rewriter/fetch.test.ts
index 7108e80d03c4..d0dae90617a1 100644
--- a/lib/utils/request-rewriter/fetch.test.ts
+++ b/lib/utils/request-rewriter/fetch.test.ts
@@ -105,3 +105,119 @@ describe('wrappedFetch', () => {
fetchSpy.mockRestore();
});
});
+
+describe('request-rewriter fetch retry', () => {
+ const buildProxyState = () => [
+ {
+ uri: 'http://proxy1.test',
+ isActive: true,
+ failureCount: 0,
+ urlHandler: new URL('http://proxy1.test'),
+ },
+ {
+ uri: 'http://proxy2.test',
+ isActive: true,
+ failureCount: 0,
+ urlHandler: new URL('http://proxy2.test'),
+ },
+ ];
+
+ const loadWrappedFetch = async (proxyMock: any) => {
+ vi.resetModules();
+ vi.doMock('@/utils/logger', () => ({
+ default: {
+ debug: vi.fn(),
+ warn: vi.fn(),
+ info: vi.fn(),
+ error: vi.fn(),
+ http: vi.fn(),
+ },
+ }));
+ vi.doMock('@/utils/proxy', () => ({
+ default: proxyMock,
+ }));
+
+ return (await import('@/utils/request-rewriter/fetch')).default;
+ };
+
+ afterEach(() => {
+ vi.restoreAllMocks();
+ vi.resetModules();
+ vi.unmock('@/utils/logger');
+ vi.unmock('@/utils/proxy');
+ });
+
+ test('retries with the next proxy when prefer-proxy header is set', async () => {
+ const proxies = buildProxyState();
+ let index = 0;
+ const proxyMock = {
+ proxyObj: {
+ strategy: 'on_retry',
+ url_regex: 'example.com',
+ },
+ proxyUrlHandler: null,
+ multiProxy: {
+ allProxies: proxies,
+ },
+ getCurrentProxy: vi.fn(() => proxies[index]),
+ markProxyFailed: vi.fn(() => {
+ index = 1;
+ }),
+ getDispatcherForProxy: vi.fn((proxyState) => ({
+ proxy: proxyState.uri,
+ })),
+ };
+
+ const wrappedFetch = await loadWrappedFetch(proxyMock);
+ const fetchSpy = vi.spyOn(undici, 'fetch');
+ fetchSpy.mockRejectedValueOnce(new Error('boom'));
+ fetchSpy.mockResolvedValueOnce(new Response('ok'));
+
+ const response = await wrappedFetch('http://example.com/resource', {
+ headers: new Headers({
+ 'x-prefer-proxy': '1',
+ }),
+ });
+
+ expect(response).toBeInstanceOf(Response);
+ expect(fetchSpy).toHaveBeenCalledTimes(2);
+ expect(proxyMock.markProxyFailed).toHaveBeenCalledWith('http://proxy1.test');
+ expect(proxyMock.getDispatcherForProxy).toHaveBeenCalledWith(proxies[1]);
+
+ const requestArg = fetchSpy.mock.calls[0][0] as Request;
+ expect(requestArg.headers.get('x-prefer-proxy')).toBeNull();
+ });
+
+ test('drops dispatcher when no next proxy is available', async () => {
+ const proxies = buildProxyState();
+ const proxyMock = {
+ proxyObj: {
+ strategy: 'on_retry',
+ url_regex: 'example.com',
+ },
+ proxyUrlHandler: null,
+ multiProxy: {
+ allProxies: proxies,
+ },
+ getCurrentProxy: vi.fn(() => proxies[0]),
+ markProxyFailed: vi.fn(),
+ getDispatcherForProxy: vi.fn((proxyState) => ({
+ proxy: proxyState.uri,
+ })),
+ };
+
+ const wrappedFetch = await loadWrappedFetch(proxyMock);
+ const fetchSpy = vi.spyOn(undici, 'fetch');
+ fetchSpy.mockRejectedValueOnce(new Error('boom'));
+ fetchSpy.mockResolvedValueOnce(new Response('ok'));
+
+ await wrappedFetch('http://example.com/resource', {
+ headers: {
+ 'x-prefer-proxy': '1',
+ },
+ });
+
+ expect(fetchSpy).toHaveBeenCalledTimes(2);
+ expect(fetchSpy.mock.calls[1][1]?.dispatcher).toBeUndefined();
+ });
+});
diff --git a/lib/utils/request-rewriter/fetch.worker.test.ts b/lib/utils/request-rewriter/fetch.worker.test.ts
new file mode 100644
index 000000000000..33f104fcec4f
--- /dev/null
+++ b/lib/utils/request-rewriter/fetch.worker.test.ts
@@ -0,0 +1,72 @@
+import { afterEach, describe, expect, it, vi } from 'vitest';
+
+const fetchMock = vi.fn(() => Promise.resolve(new Response('ok')));
+
+// The module captures the global fetch at import time, so stub before importing
+const loadWrappedFetch = async () => {
+ vi.stubGlobal('fetch', fetchMock);
+ vi.resetModules();
+ return (await import('@/utils/request-rewriter/fetch.worker')).default;
+};
+
+const lastRequest = () => fetchMock.mock.lastCall?.[0] as unknown as Request;
+
+afterEach(() => {
+ vi.unstubAllGlobals();
+ vi.clearAllMocks();
+});
+
+describe('worker fetch wrapper', () => {
+ it('applies a browser fingerprint when no user-agent is set', async () => {
+ const wrappedFetch = await loadWrappedFetch();
+ await wrappedFetch('https://example.com/page');
+
+ const request = lastRequest();
+ expect(request.headers.get('user-agent')).toContain('Chrome');
+ expect(request.headers.get('sec-ch-ua-platform')).toBe('"macOS"');
+ expect(request.headers.get('accept-language')).toBe('en-US,en;q=0.9');
+ });
+
+ it('keeps a caller-provided user-agent and headers', async () => {
+ const wrappedFetch = await loadWrappedFetch();
+ await wrappedFetch('https://example.com/page', {
+ headers: {
+ 'user-agent': 'custom-ua',
+ 'sec-fetch-site': 'same-origin',
+ },
+ });
+
+ const request = lastRequest();
+ expect(request.headers.get('user-agent')).toBe('custom-ua');
+ expect(request.headers.get('sec-fetch-site')).toBe('same-origin');
+ });
+
+ it('sets the referer to the request origin when absent', async () => {
+ const wrappedFetch = await loadWrappedFetch();
+ await wrappedFetch('https://example.com/deep/page?q=1');
+
+ expect(lastRequest().headers.get('referer')).toBe('https://example.com');
+ });
+
+ it('keeps a caller-provided referer', async () => {
+ const wrappedFetch = await loadWrappedFetch();
+ await wrappedFetch('https://example.com/page', {
+ headers: {
+ referer: 'https://referrer.test/',
+ },
+ });
+
+ expect(lastRequest().headers.get('referer')).toBe('https://referrer.test/');
+ });
+
+ it('strips the x-prefer-proxy header', async () => {
+ const wrappedFetch = await loadWrappedFetch();
+ await wrappedFetch('https://example.com/page', {
+ headers: {
+ 'x-prefer-proxy': '1',
+ },
+ });
+
+ expect(lastRequest().headers.has('x-prefer-proxy')).toBe(false);
+ });
+});
diff --git a/lib/utils/request-rewriter.test.ts b/lib/utils/request-rewriter/index.test.ts
similarity index 100%
rename from lib/utils/request-rewriter.test.ts
rename to lib/utils/request-rewriter/index.test.ts
diff --git a/lib/utils/request-rewriter/index.worker.test.ts b/lib/utils/request-rewriter/index.worker.test.ts
new file mode 100644
index 000000000000..d16b57a5a092
--- /dev/null
+++ b/lib/utils/request-rewriter/index.worker.test.ts
@@ -0,0 +1,10 @@
+import { describe, expect, it } from 'vitest';
+
+describe('worker request-rewriter', () => {
+ it('replaces globalThis.fetch with the wrapped fetch', async () => {
+ const { default: wrappedFetch } = await import('@/utils/request-rewriter/fetch.worker');
+ await import('@/utils/request-rewriter/index.worker');
+
+ expect(fetch).toBe(wrappedFetch);
+ });
+});
diff --git a/lib/views/atom.test.tsx b/lib/views/atom.test.tsx
new file mode 100644
index 000000000000..8010a8cec630
--- /dev/null
+++ b/lib/views/atom.test.tsx
@@ -0,0 +1,57 @@
+import { renderToString } from 'hono/jsx/dom/server';
+import { describe, expect, it } from 'vitest';
+
+import Atom from '@/views/atom';
+
+describe('Atom view', () => {
+ it('renders optional fields and media extensions', () => {
+ const html = renderToString(
+
+ );
+
+ expect(html).toContain('https://example.com/icon.png');
+ expect(html).toContain('https://example.com/logo.png');
+ expect(html).toContain('media:content');
+ expect(html).toContain('term="News"');
+ expect(html).toContain('term="Tech"');
+ expect(html).toContain('rsshub:upvotes');
+ expect(html).toContain('rsshub:downvotes');
+ expect(html).toContain('rsshub:comments');
+ });
+});
diff --git a/lib/views/index.test.tsx b/lib/views/index.test.tsx
new file mode 100644
index 000000000000..4951760bb488
--- /dev/null
+++ b/lib/views/index.test.tsx
@@ -0,0 +1,74 @@
+import { renderToString } from 'hono/jsx/dom/server';
+import { afterEach, describe, expect, it, vi } from 'vitest';
+
+afterEach(() => {
+ vi.resetModules();
+ vi.unmock('@/config');
+ vi.unmock('@/utils/debug-info');
+ vi.unmock('@/utils/git-hash');
+});
+
+describe('Index view', () => {
+ const renderIndex = async (debugInfo: string | undefined, debugQuery: string | undefined) => {
+ const debugData = {
+ hitCache: 2,
+ request: 10,
+ etag: 3,
+ error: 1,
+ routes: {
+ '/foo': 5,
+ '/bar': 2,
+ },
+ paths: {
+ '/foo?x=1': 4,
+ '/bar?x=2': 1,
+ },
+ errorRoutes: {
+ '/error': 2,
+ '/fail': 1,
+ },
+ errorPaths: {
+ '/error?x=1': 1,
+ '/fail?x=2': 1,
+ },
+ };
+
+ vi.doMock('@/config', () => ({
+ config: {
+ debugInfo,
+ disallowRobot: true,
+ nodeName: 'TestNode',
+ cache: {
+ routeExpire: 120,
+ },
+ },
+ }));
+ vi.doMock('@/utils/debug-info', () => ({
+ getDebugInfo: () => debugData,
+ }));
+ vi.doMock('@/utils/git-hash', () => ({
+ gitHash: 'abc123',
+ gitDate: new Date('2020-01-01T00:00:00Z'),
+ }));
+
+ const { default: Index } = await import('@/views/index');
+
+ return renderToString();
+ };
+
+ it('shows debug info when enabled', async () => {
+ const html = await renderIndex('secret', 'secret');
+
+ expect(html).toContain('Debug Info');
+ expect(html).toContain('TestNode');
+ expect(html).toContain('abc123');
+ expect(html).toContain('5 /foo');
+ expect(html).toContain('2 /error');
+ });
+
+ it('hides debug info when disabled', async () => {
+ const html = await renderIndex('false', 'secret');
+
+ expect(html).not.toContain('Debug Info');
+ });
+});
diff --git a/lib/views/json.test.ts b/lib/views/json.test.ts
new file mode 100644
index 000000000000..f18046ca44bc
--- /dev/null
+++ b/lib/views/json.test.ts
@@ -0,0 +1,75 @@
+import { describe, expect, it } from 'vitest';
+
+import jsonView from '@/views/json';
+
+describe('JSON view', () => {
+ it('renders summary, authors, tags, attachments, and extras', () => {
+ const jsonOutput = jsonView({
+ title: 'JSON Feed',
+ link: 'https://example.com',
+ feedLink: 'https://example.com/feed.json',
+ description: 'JSON Description',
+ language: 'en',
+ author: 'Feed Author',
+ image: 'https://example.com/icon.png',
+ item: [
+ {
+ title: 'Item One',
+ link: 'https://example.com/one',
+ description: 'Entry One',
+ guid: 'guid-1',
+ content: {
+ html: 'hello
',
+ text: 'hello',
+ },
+ image: 'https://example.com/image.jpg',
+ banner: 'https://example.com/banner.jpg',
+ pubDate: '2024-01-01T00:00:00Z',
+ updated: '2024-01-02T00:00:00Z',
+ author: 'Item Author',
+ category: ['Tech', 'AI'],
+ enclosure_url: 'https://example.com/audio.mp3',
+ enclosure_type: 'audio/mpeg',
+ enclosure_title: 'Audio Title',
+ enclosure_length: 123,
+ itunes_duration: 321,
+ _extra: { foo: 'bar' },
+ },
+ ],
+ });
+
+ const feed = JSON.parse(jsonOutput);
+
+ expect(feed.version).toBe('https://jsonfeed.org/version/1.1');
+ expect(feed.title).toBe('JSON Feed');
+ expect(feed.home_page_url).toBe('https://example.com');
+ expect(feed.feed_url).toBe('https://example.com/feed.json');
+ expect(feed.description).toBe('JSON Description - Powered by RSSHub');
+ expect(feed.authors).toEqual([{ name: 'Feed Author' }]);
+ expect(feed.items).toHaveLength(1);
+ expect(feed.items[0]).toMatchObject({
+ id: 'guid-1',
+ url: 'https://example.com/one',
+ title: 'Item One',
+ content_html: 'hello
',
+ content_text: 'hello',
+ summary: 'Entry One',
+ image: 'https://example.com/image.jpg',
+ banner_image: 'https://example.com/banner.jpg',
+ date_published: '2024-01-01T00:00:00Z',
+ date_modified: '2024-01-02T00:00:00Z',
+ authors: [{ name: 'Item Author' }],
+ tags: ['Tech', 'AI'],
+ attachments: [
+ {
+ url: 'https://example.com/audio.mp3',
+ mime_type: 'audio/mpeg',
+ title: 'Audio Title',
+ size_in_bytes: 123,
+ duration_in_seconds: 321,
+ },
+ ],
+ });
+ expect(feed.items[0]._extra).toEqual({ foo: 'bar' });
+ });
+});
diff --git a/lib/views/rss.test.tsx b/lib/views/rss.test.tsx
new file mode 100644
index 000000000000..479082a48143
--- /dev/null
+++ b/lib/views/rss.test.tsx
@@ -0,0 +1,67 @@
+import { renderToString } from 'hono/jsx/dom/server';
+import { describe, expect, it } from 'vitest';
+
+import RSS from '@/views/rss';
+
+describe('RSS view', () => {
+ it('renders itunes, media, and telegram image variants', () => {
+ const html = renderToString(
+
+ );
+
+ expect(html).toContain('xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"');
+ expect(html).toContain('xmlns:media="http://search.yahoo.com/mrss/"');
+ expect(html).toContain('Podcast Author');
+ expect(html).toContain('itunes:category text="Tech"');
+ expect(html).toContain('true');
+ expect(html).toContain('31');
+ expect(html).toContain('88');
+ expect(html).toContain('media:content');
+ expect(html).toContain('Podcast');
+ expect(html).toContain('News');
+ });
+});
diff --git a/lib/views/views.test.tsx b/lib/views/views.test.tsx
deleted file mode 100644
index 911d807d812d..000000000000
--- a/lib/views/views.test.tsx
+++ /dev/null
@@ -1,277 +0,0 @@
-import { renderToString } from 'hono/jsx/dom/server';
-import { afterEach, describe, expect, it, vi } from 'vitest';
-
-import { Atom as RenderAtom, json as renderJson, RSS as RenderRSS, rss3 as renderRss3 } from '@/utils/render';
-import Atom from '@/views/atom';
-import jsonView from '@/views/json';
-import RSS from '@/views/rss';
-import rss3View from '@/views/rss3';
-
-afterEach(() => {
- vi.resetModules();
- vi.unmock('@/config');
- vi.unmock('@/utils/debug-info');
- vi.unmock('@/utils/git-hash');
-});
-
-describe('view exports', () => {
- it('re-exports view helpers from render', () => {
- expect(RenderAtom).toBe(Atom);
- expect(RenderRSS).toBe(RSS);
- expect(renderJson).toBe(jsonView);
- expect(renderRss3).toBe(rss3View);
- });
-});
-
-describe('Atom view', () => {
- it('renders optional fields and media extensions', () => {
- const html = renderToString(
-
- );
-
- expect(html).toContain('https://example.com/icon.png');
- expect(html).toContain('https://example.com/logo.png');
- expect(html).toContain('media:content');
- expect(html).toContain('term="News"');
- expect(html).toContain('term="Tech"');
- expect(html).toContain('rsshub:upvotes');
- expect(html).toContain('rsshub:downvotes');
- expect(html).toContain('rsshub:comments');
- });
-});
-
-describe('RSS view', () => {
- it('renders itunes, media, and telegram image variants', () => {
- const html = renderToString(
-
- );
-
- expect(html).toContain('xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"');
- expect(html).toContain('xmlns:media="http://search.yahoo.com/mrss/"');
- expect(html).toContain('Podcast Author');
- expect(html).toContain('itunes:category text="Tech"');
- expect(html).toContain('true');
- expect(html).toContain('31');
- expect(html).toContain('88');
- expect(html).toContain('media:content');
- expect(html).toContain('Podcast');
- expect(html).toContain('News');
- });
-});
-
-describe('JSON view', () => {
- it('renders summary, authors, tags, attachments, and extras', () => {
- const jsonOutput = jsonView({
- title: 'JSON Feed',
- link: 'https://example.com',
- feedLink: 'https://example.com/feed.json',
- description: 'JSON Description',
- language: 'en',
- author: 'Feed Author',
- image: 'https://example.com/icon.png',
- item: [
- {
- title: 'Item One',
- link: 'https://example.com/one',
- description: 'Entry One',
- guid: 'guid-1',
- content: {
- html: 'hello
',
- text: 'hello',
- },
- image: 'https://example.com/image.jpg',
- banner: 'https://example.com/banner.jpg',
- pubDate: '2024-01-01T00:00:00Z',
- updated: '2024-01-02T00:00:00Z',
- author: 'Item Author',
- category: ['Tech', 'AI'],
- enclosure_url: 'https://example.com/audio.mp3',
- enclosure_type: 'audio/mpeg',
- enclosure_title: 'Audio Title',
- enclosure_length: 123,
- itunes_duration: 321,
- _extra: { foo: 'bar' },
- },
- ],
- });
-
- const feed = JSON.parse(jsonOutput);
-
- expect(feed.version).toBe('https://jsonfeed.org/version/1.1');
- expect(feed.title).toBe('JSON Feed');
- expect(feed.home_page_url).toBe('https://example.com');
- expect(feed.feed_url).toBe('https://example.com/feed.json');
- expect(feed.description).toBe('JSON Description - Powered by RSSHub');
- expect(feed.authors).toEqual([{ name: 'Feed Author' }]);
- expect(feed.items).toHaveLength(1);
- expect(feed.items[0]).toMatchObject({
- id: 'guid-1',
- url: 'https://example.com/one',
- title: 'Item One',
- content_html: 'hello
',
- content_text: 'hello',
- summary: 'Entry One',
- image: 'https://example.com/image.jpg',
- banner_image: 'https://example.com/banner.jpg',
- date_published: '2024-01-01T00:00:00Z',
- date_modified: '2024-01-02T00:00:00Z',
- authors: [{ name: 'Item Author' }],
- tags: ['Tech', 'AI'],
- attachments: [
- {
- url: 'https://example.com/audio.mp3',
- mime_type: 'audio/mpeg',
- title: 'Audio Title',
- size_in_bytes: 123,
- duration_in_seconds: 321,
- },
- ],
- });
- expect(feed.items[0]._extra).toEqual({ foo: 'bar' });
- });
-});
-
-describe('Index view', () => {
- const renderIndex = async (debugInfo: string | undefined, debugQuery: string | undefined) => {
- const debugData = {
- hitCache: 2,
- request: 10,
- etag: 3,
- error: 1,
- routes: {
- '/foo': 5,
- '/bar': 2,
- },
- paths: {
- '/foo?x=1': 4,
- '/bar?x=2': 1,
- },
- errorRoutes: {
- '/error': 2,
- '/fail': 1,
- },
- errorPaths: {
- '/error?x=1': 1,
- '/fail?x=2': 1,
- },
- };
-
- vi.doMock('@/config', () => ({
- config: {
- debugInfo,
- disallowRobot: true,
- nodeName: 'TestNode',
- cache: {
- routeExpire: 120,
- },
- },
- }));
- vi.doMock('@/utils/debug-info', () => ({
- getDebugInfo: () => debugData,
- }));
- vi.doMock('@/utils/git-hash', () => ({
- gitHash: 'abc123',
- gitDate: new Date('2020-01-01T00:00:00Z'),
- }));
-
- const { default: Index } = await import('@/views/index');
-
- return renderToString();
- };
-
- it('shows debug info when enabled', async () => {
- const html = await renderIndex('secret', 'secret');
-
- expect(html).toContain('Debug Info');
- expect(html).toContain('TestNode');
- expect(html).toContain('abc123');
- expect(html).toContain('5 /foo');
- expect(html).toContain('2 /error');
- });
-
- it('hides debug info when disabled', async () => {
- const html = await renderIndex('false', 'secret');
-
- expect(html).not.toContain('Debug Info');
- });
-});
diff --git a/lib/weibo-utils.test.ts b/lib/weibo-utils.test.ts
deleted file mode 100644
index 1d4160286735..000000000000
--- a/lib/weibo-utils.test.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import { afterEach, describe, expect, it, vi } from 'vitest';
-
-const createDeferred = () => {
- const { promise, reject, resolve } = Promise.withResolvers();
-
- return { promise, reject, resolve };
-};
-
-const loadWeiboUtils = async ({ pageReady = Promise.resolve() } = {}) => {
- vi.resetModules();
-
- const store = new Map();
- const cache = {
- get: vi.fn((key: string) => store.get(key) || null),
- has: vi.fn((key: string) => store.has(key)),
- set: vi.fn((key: string, value?: string | Record) => {
- store.set(key, typeof value === 'object' ? JSON.stringify(value) : value || '');
- }),
- tryGet: vi.fn(async (key: string, getValue: () => Promise) => {
- const cached = store.get(key);
- if (cached) {
- return cached;
- }
- const value = await getValue();
- store.set(key, JSON.stringify(value));
- return value;
- }),
- };
- const destroy = vi.fn();
- const page = {
- route: vi.fn((_pattern: string, handler: (route: any) => void) => {
- for (const requestUrl of ['https://m.weibo.cn/', 'https://m.weibo.cn/']) {
- handler({
- abort: vi.fn(),
- continue: vi.fn(),
- request: () => ({
- resourceType: () => 'document',
- url: () => requestUrl,
- }),
- });
- }
- }),
- setExtraHTTPHeaders: vi.fn(),
- url: vi.fn(() => 'https://m.weibo.cn/'),
- };
- const getPlaywrightPage = vi.fn(async (_url: string, options: any) => {
- await pageReady;
- await options.onBeforeLoad(page);
- return { destroy, page };
- });
- const getCookies = vi.fn(() => Promise.resolve('SUB=mock'));
-
- vi.doMock('@/config', () => ({
- config: {
- cache: {
- contentExpire: 3600,
- routeExpire: 300,
- },
- weibo: {},
- },
- }));
- vi.doMock('@/utils/cache', () => ({ default: cache }));
- vi.doMock('@/utils/logger', () => ({
- default: {
- info: vi.fn(),
- warn: vi.fn(),
- },
- }));
- vi.doMock('@/utils/playwright', () => ({ getPlaywrightPage }));
- vi.doMock('@/utils/playwright-utils', () => ({ getCookies }));
-
- const { default: weiboUtils } = await import('./routes/weibo/utils');
-
- return {
- cache,
- getCookies,
- getPlaywrightPage,
- weiboUtils,
- };
-};
-
-afterEach(() => {
- vi.useRealTimers();
- vi.restoreAllMocks();
- vi.resetModules();
-});
-
-describe('weibo utils', () => {
- it('shares an in-flight visitor cookie fetch across concurrent callers', async () => {
- vi.useFakeTimers();
- const pageReady = createDeferred();
- const { getPlaywrightPage, weiboUtils } = await loadWeiboUtils({ pageReady: pageReady.promise });
-
- const first = weiboUtils.getCookies();
- const second = weiboUtils.getCookies();
- pageReady.resolve();
-
- await expect(Promise.all([first, second])).resolves.toEqual(['SUB=mock', 'SUB=mock']);
- expect(getPlaywrightPage).toHaveBeenCalledTimes(1);
- });
-});
diff --git a/lib/worker.worker.test.ts b/lib/worker.test.ts
similarity index 100%
rename from lib/worker.worker.test.ts
rename to lib/worker.test.ts
diff --git a/package.json b/package.json
index 6df46c3011a7..6b4370fa0f7b 100644
--- a/package.json
+++ b/package.json
@@ -50,12 +50,13 @@
"vercel-build": "npm run build:routes && tsdown --config ./tsdown-vercel.config.ts",
"vitest": "cross-env NODE_ENV=test vitest",
"vitest:coverage": "cross-env NODE_ENV=test vitest --coverage.enabled --reporter=junit",
- "vitest:fullroutes": "cross-env NODE_ENV=test FULL_ROUTES_TEST=true vitest --reporter=json --reporter=default --outputFile=\"./assets/build/test-full-routes.json\" routes",
+ "vitest:fullroutes": "cross-env NODE_ENV=test FULL_ROUTES_TEST=true vitest --reporter=json --reporter=default --outputFile=\"./assets/build/test-full-routes.json\" lib/app.test.ts",
"vitest:watch": "cross-env NODE_ENV=test vitest --watch",
+ "vitest:workerd": "cross-env NODE_ENV=test vitest run --config vitest.workers.config.ts",
"worker-build": "npm run build:routes:worker && tsdown --config ./tsdown-worker.config.ts",
"worker-deploy": "npm run worker-build && wrangler deploy",
"worker-dev": "npm run worker-build && wrangler dev",
- "worker-test": "npm run worker-build && vitest run lib/worker.worker.test.ts"
+ "worker-test": "npm run worker-build && vitest run lib/worker.test.ts"
},
"dependencies": {
"@bbob/html": "4.3.1",
@@ -147,6 +148,7 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
+ "@cloudflare/vitest-pool-workers": "0.18.4",
"@cloudflare/workers-types": "5.20260710.1",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b988d1ddb92f..9a0b8a447e25 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -293,6 +293,9 @@ importers:
'@cloudflare/playwright':
specifier: 1.3.0
version: 1.3.0
+ '@cloudflare/vitest-pool-workers':
+ specifier: 0.18.4
+ version: 0.18.4(@cloudflare/workers-types@5.20260710.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
specifier: 5.20260710.1
version: 5.20260710.1
@@ -601,6 +604,13 @@ packages:
workerd:
optional: true
+ '@cloudflare/vitest-pool-workers@0.18.4':
+ resolution: {integrity: sha512-jOXvyLoR2b8jFvo3tX+mWxXXwcZ+PbId3d7vGFtZsuKakmDjKSeIq4o/sQjkqNv6q3XacIKSCAvfM8TfkPyrEw==}
+ peerDependencies:
+ '@vitest/runner': ^4.1.0
+ '@vitest/snapshot': ^4.1.0
+ vitest: ^4.1.0
+
'@cloudflare/workerd-darwin-64@1.20260708.1':
resolution: {integrity: sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg==}
engines: {node: '>=16'}
@@ -3342,6 +3352,9 @@ packages:
city-timezones@1.3.4:
resolution: {integrity: sha512-yLmtCxU4y5HLAw9XGIMcGEXO+R2KH1sb595wEQC/E9BxSDpazCD7v9ZQRySO7367IXWsWqt3z2xFVh3OkZdgEQ==}
+ cjs-module-lexer@1.2.3:
+ resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+
cjs-module-lexer@2.2.0:
resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
@@ -3593,7 +3606,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -6349,6 +6362,9 @@ packages:
yuku-parser@0.5.44:
resolution: {integrity: sha512-mAhpQZ/bXjxZmKiGUqEWskC9mZTcTBv6/fdzVdzdjM6XuD1DP3IavdLVWdM39L9ewK9vS9OtJmaKNeWgRzpy0w==}
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
zod@4.4.3:
resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
@@ -6514,6 +6530,21 @@ snapshots:
optionalDependencies:
workerd: 1.20260708.1
+ '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260710.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ dependencies:
+ '@vitest/runner': 4.1.10
+ '@vitest/snapshot': 4.1.10
+ cjs-module-lexer: 1.2.3
+ esbuild: 0.28.1
+ miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ wrangler: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - '@cloudflare/workers-types'
+ - bufferutil
+ - utf-8-validate
+
'@cloudflare/workerd-darwin-64@1.20260708.1':
optional: true
@@ -8632,6 +8663,8 @@ snapshots:
city-timezones@1.3.4: {}
+ cjs-module-lexer@1.2.3: {}
+
cjs-module-lexer@2.2.0: {}
class-transformer@0.3.1: {}
@@ -12113,6 +12146,8 @@ snapshots:
'@yuku-parser/binding-win32-arm64': 0.5.44
'@yuku-parser/binding-win32-x64': 0.5.44
+ zod@3.25.76: {}
+
zod@4.4.3: {}
zwitch@2.0.4: {}
diff --git a/scripts/workflow/build-routes.ts b/scripts/workflow/build-routes.ts
index b6b8d860c2d8..af3a19e7d9ab 100644
--- a/scripts/workflow/build-routes.ts
+++ b/scripts/workflow/build-routes.ts
@@ -6,9 +6,15 @@ import toSource from 'tosource';
import type { RadarItem } from '../../lib/types';
import { getCurrentPath } from '../../lib/utils/helpers';
+import { findOrphanFiles } from './check-orphan-files';
const __dirname = getCurrentPath(import.meta.url);
+const orphanTests = await findOrphanFiles();
+if (orphanTests.length) {
+ throw new Error(`Test files without a corresponding source file:\n${orphanTests.join('\n')}`);
+}
+
// Check if building for Worker environment
const isWorkerBuild = process.env.WORKER_BUILD === 'true';
diff --git a/scripts/workflow/check-orphan-files.ts b/scripts/workflow/check-orphan-files.ts
new file mode 100644
index 000000000000..4d5008e4e6a3
--- /dev/null
+++ b/scripts/workflow/check-orphan-files.ts
@@ -0,0 +1,40 @@
+import fs from 'node:fs/promises';
+import path from 'node:path';
+
+import { getCurrentPath } from '../../lib/utils/helpers';
+
+const __dirname = getCurrentPath(import.meta.url);
+const repoRoot = path.join(__dirname, '../..');
+
+const fileExists = async (filePath: string) => {
+ try {
+ await fs.access(filePath);
+ return true;
+ } catch {
+ return false;
+ }
+};
+
+export const findOrphanFiles = async (): Promise => {
+ const excludedDirs = ['lib/routes', 'lib/routes-deprecated'].map((dir) => path.join(repoRoot, dir) + path.sep);
+
+ const entries = await fs.readdir(path.join(repoRoot, 'lib'), { recursive: true, withFileTypes: true });
+ const candidates = entries
+ .filter((entry) => excludedDirs.every((dir) => !`${entry.parentPath}${path.sep}`.startsWith(dir)))
+ .filter((entry) => entry.isFile() && /\.test\.tsx?$/.test(entry.name))
+ .map((entry) => {
+ const absolute = path.join(entry.parentPath, entry.name);
+ return { absolute, relative: path.relative(repoRoot, absolute).replaceAll('\\', '/') };
+ })
+ .filter(({ relative }) => relative !== 'lib/setup.test.ts');
+
+ const orphans = await Promise.all(
+ candidates.map(async ({ absolute, relative }) => {
+ const base = absolute.replace(/\.test\.tsx?$/, '');
+ const [tsExists, tsxExists] = await Promise.all([fileExists(`${base}.ts`), fileExists(`${base}.tsx`)]);
+ return tsExists || tsxExists ? null : relative;
+ })
+ );
+
+ return orphans.filter((relative) => relative !== null).toSorted((a, b) => a.localeCompare(b));
+};
diff --git a/vitest.config.ts b/vitest.config.ts
index 668b66916a3e..b01f2bfeabef 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -11,6 +11,6 @@ export default defineConfig({
},
testTimeout: 10000,
setupFiles: ['./lib/setup.test.ts'],
- exclude: [...configDefaults.exclude, './lib/setup.test.ts'],
+ exclude: [...configDefaults.exclude, './lib/setup.test.ts', '**/*.worker.test.ts'],
},
});
diff --git a/vitest.workers.config.ts b/vitest.workers.config.ts
new file mode 100644
index 000000000000..b3cf81bf9034
--- /dev/null
+++ b/vitest.workers.config.ts
@@ -0,0 +1,75 @@
+import fs from 'node:fs';
+import path from 'node:path';
+
+import { cloudflareTest } from '@cloudflare/vitest-pool-workers';
+import type { Plugin } from 'vite';
+import tsconfigPaths from 'vite-tsconfig-paths';
+import { defineConfig } from 'vitest/config';
+
+// Resolve .worker.ts files instead of .ts files, same as tsdown-worker.config.ts
+function workerAliasPlugin(): Plugin {
+ return {
+ name: 'worker-alias',
+ enforce: 'pre',
+ resolveId(source, importer) {
+ // Skip if no importer (entry point) or already a .worker file
+ if (!importer || source.includes('.worker')) {
+ return null;
+ }
+
+ // Handle relative imports
+ if (source.startsWith('.')) {
+ const importerDir = path.dirname(importer);
+ const resolved = path.resolve(importerDir, source);
+
+ for (const ext of ['.worker.ts', '.worker.tsx']) {
+ const workerPath = resolved + ext;
+ if (fs.existsSync(workerPath)) {
+ return workerPath;
+ }
+ const withoutExt = resolved.replace(/\.(ts|tsx)$/, '');
+ const workerPathAlt = withoutExt + ext;
+ if (fs.existsSync(workerPathAlt)) {
+ return workerPathAlt;
+ }
+ }
+ }
+
+ // Handle @/ alias imports
+ if (source.startsWith('@/')) {
+ const libPath = path.resolve('./lib', source.slice(2));
+
+ for (const ext of ['.worker.ts', '.worker.tsx']) {
+ const workerPath = libPath + ext;
+ if (fs.existsSync(workerPath)) {
+ return workerPath;
+ }
+ }
+ }
+
+ return null;
+ },
+ };
+}
+
+export default defineConfig({
+ plugins: [
+ cloudflareTest({
+ miniflare: {
+ compatibilityDate: '2025-06-17',
+ compatibilityFlags: ['nodejs_compat'],
+ kvNamespaces: ['CACHE'],
+ },
+ }),
+ workerAliasPlugin(),
+ tsconfigPaths({ root: '.' }),
+ ],
+ resolve: {
+ alias: {
+ 'dotenv/config': path.resolve('./lib/shims/dotenv-config.ts'),
+ },
+ },
+ test: {
+ include: ['lib/**/*.worker.test.ts'],
+ },
+});
From 478df5e488c0ad3c0b4dc9b5ad52e1137e5b928a Mon Sep 17 00:00:00 2001
From: Arslan Ablikim
Date: Sat, 11 Jul 2026 00:44:03 +0800
Subject: [PATCH 286/670] fix(route/makerworld): bypass Cloudflare challenge
and adapt to new API shape (#22411)
* fix(route/makerworld): bypass Cloudflare challenge and adapt to new API shape
makerworld.com now sits behind a Cloudflare bot-management challenge that
fingerprints the TLS/HTTP client rather than just headers, so plain fetch
requests get a 403 even with a browser-like User-Agent. Fall back to a
stealth Playwright page load when that happens.
The trending page's data shape also changed: designs moved from
`pageProps.popularDesignsData` to `pageProps.v2Props.foryouData.hits[].design`,
mixed in with non-design promo/community entries, and `tags`/`startTime` were
replaced by `createTime` (no tags exposed on this endpoint anymore).
* fix(route/makerworld): always fetch via browser instead of trying ofetch first
Cloudflare's challenge fingerprints the client itself, so the plain fetch
attempt was guaranteed to always fail with a 403 first. Go straight to the
Playwright fallback instead of paying for a request known to fail.
---
lib/routes/makerworld/contest.ts | 10 ++------
lib/routes/makerworld/trending.ts | 27 +++++++++-------------
lib/routes/makerworld/user-upload.ts | 13 ++---------
lib/routes/makerworld/utils.ts | 34 ++++++++++++++++++++++------
4 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/lib/routes/makerworld/contest.ts b/lib/routes/makerworld/contest.ts
index 5633f9cee819..5a465cfe14bd 100644
--- a/lib/routes/makerworld/contest.ts
+++ b/lib/routes/makerworld/contest.ts
@@ -1,9 +1,7 @@
-import { config } from '@/config';
import type { Route } from '@/types';
-import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import { baseUrl, getNextBuildId } from './utils';
+import { baseUrl, fetchJson, getNextBuildId } from './utils';
export const route: Route = {
path: '/contests',
@@ -21,11 +19,7 @@ export const route: Route = {
async function handler() {
const nextBuildId = await getNextBuildId();
- const response = await ofetch(`${baseUrl}/_next/data/${nextBuildId}/en/contests.json`, {
- headers: {
- 'User-Agent': config.trueUA,
- },
- });
+ const response = await fetchJson(`${baseUrl}/_next/data/${nextBuildId}/en/contests.json`);
const { listConst, previewList } = response.pageProps;
const items = [
diff --git a/lib/routes/makerworld/trending.ts b/lib/routes/makerworld/trending.ts
index 8ce6364c553b..6c3c2555a8d6 100644
--- a/lib/routes/makerworld/trending.ts
+++ b/lib/routes/makerworld/trending.ts
@@ -1,9 +1,7 @@
-import { config } from '@/config';
import type { Route } from '@/types';
-import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import { baseUrl, getNextBuildId } from './utils';
+import { baseUrl, fetchJson, getNextBuildId } from './utils';
export const route: Route = {
path: '/trending',
@@ -21,20 +19,17 @@ export const route: Route = {
async function handler() {
const nextBuildId = await getNextBuildId();
- const response = await ofetch(`${baseUrl}/_next/data/${nextBuildId}/en.json`, {
- headers: {
- 'User-Agent': config.trueUA,
- },
- });
+ const response = await fetchJson(`${baseUrl}/_next/data/${nextBuildId}/en.json`);
- const items = response.pageProps.popularDesignsData.map((d) => ({
- title: d.title,
- link: `${baseUrl}/en/models/${d.id}-${d.slug}`,
- author: d.designCreator.name,
- category: d.tags,
- pubDate: parseDate(d.startTime),
- description: d.designExtension.design_pictures.map((i) => `
${i.name}`).join(''),
- }));
+ const items = response.pageProps.v2Props.foryouData.hits
+ .filter((hit) => hit.design?.title)
+ .map(({ design: d }) => ({
+ title: d.title,
+ link: `${baseUrl}/en/models/${d.id}-${d.slug}`,
+ author: d.designCreator.name,
+ pubDate: parseDate(d.createTime),
+ description: d.designExtension.design_pictures.map((i) => `
${i.name}`).join(''),
+ }));
return {
title: 'Trending Models - MakerWorld',
diff --git a/lib/routes/makerworld/user-upload.ts b/lib/routes/makerworld/user-upload.ts
index 2bb0f09a918a..65bab95cb9e6 100644
--- a/lib/routes/makerworld/user-upload.ts
+++ b/lib/routes/makerworld/user-upload.ts
@@ -1,9 +1,7 @@
-import { config } from '@/config';
import type { Route } from '@/types';
-import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import { baseUrl, getNextBuildId } from './utils';
+import { baseUrl, fetchJson, getNextBuildId } from './utils';
export const route: Route = {
path: '/user/:handle/upload',
@@ -26,14 +24,7 @@ async function handler(ctx) {
const { handle } = ctx.req.param();
const nextBuildId = await getNextBuildId();
- const response = await ofetch(`${baseUrl}/_next/data/${nextBuildId}/en/${handle}/upload.json`, {
- headers: {
- 'User-Agent': config.trueUA,
- },
- query: {
- handle,
- },
- });
+ const response = await fetchJson(`${baseUrl}/_next/data/${nextBuildId}/en/${handle}/upload.json`, { handle });
const { userInfo, designs } = response.pageProps;
const items = designs.map((d) => ({
diff --git a/lib/routes/makerworld/utils.ts b/lib/routes/makerworld/utils.ts
index 4930e6381292..f6b0afb7789e 100644
--- a/lib/routes/makerworld/utils.ts
+++ b/lib/routes/makerworld/utils.ts
@@ -1,18 +1,38 @@
import { load } from 'cheerio';
-import { config } from '@/config';
import cache from '@/utils/cache';
-import ofetch from '@/utils/ofetch';
+import { getPlaywrightPage } from '@/utils/playwright';
export const baseUrl = 'https://makerworld.com';
+// makerworld.com sits behind a Cloudflare bot-management challenge that fingerprints the
+// TLS/HTTP client itself rather than just headers, so a plain fetch always gets a 403 no
+// matter what headers are sent. A real (stealth-patched) browser is required to pass it.
+const fetchViaBrowser = async (url: string, type: 'html' | 'json' = 'html') => {
+ const { page, destroy } = await getPlaywrightPage(url, {
+ onBeforeLoad: async (page) => {
+ const expectResourceTypes = new Set(['document', 'script', 'xhr', 'fetch']);
+ await page.route('**/*', (route) => {
+ const request = route.request();
+ expectResourceTypes.has(request.resourceType()) ? route.continue() : route.abort();
+ });
+ },
+ });
+ try {
+ return (await page.evaluate(type === 'html' ? () => document.documentElement.innerHTML : () => document.documentElement.textContent)) ?? '';
+ } finally {
+ await destroy();
+ }
+};
+
+export const fetchJson = async (url: string, query?: Record) => {
+ const finalUrl = query ? `${url}?${new URLSearchParams(query).toString()}` : url;
+ return JSON.parse(await fetchViaBrowser(finalUrl, 'json'));
+};
+
export const getNextBuildId = () =>
cache.tryGet('makerworld:nextBuildId', async () => {
- const response = await ofetch(`${baseUrl}/en`, {
- headers: {
- 'User-Agent': config.trueUA,
- },
- });
+ const response = await fetchViaBrowser(`${baseUrl}/en`);
const $ = load(response);
const nextData = JSON.parse($('script#__NEXT_DATA__').text());
return nextData.buildId;
From d51b0601258220e3114b76f09e826c6e2acf2f96 Mon Sep 17 00:00:00 2001
From: "Jagger.H"
Date: Sat, 11 Jul 2026 05:08:41 +0800
Subject: [PATCH 287/670] fix(route/comicat): pass visitor_test cookie to clear
the anti-bot interstitial (#22656)
comicat.org now fronts every page with a fake JS "captcha" (/public/html/start/)
that redirects back only after setting a `visitor_test=human` cookie. A bare request
302s to that page, so #listTable and the detail selectors match nothing (empty feed).
Send the cookie directly on both the search listing and the per-item detail fetches.
---
lib/routes/comicat/search.ts | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/lib/routes/comicat/search.ts b/lib/routes/comicat/search.ts
index 6051a5916418..3c013955a6c9 100644
--- a/lib/routes/comicat/search.ts
+++ b/lib/routes/comicat/search.ts
@@ -7,6 +7,12 @@ import { parseDate } from '@/utils/parse-date';
const baseUrl = 'https://comicat.org';
+// comicat.org fronts every page with a fake JS "captcha" interstitial (/public/html/start/)
+// whose only effect is to POST a form that sets a `visitor_test=human` cookie. Sending that
+// cookie directly skips the interstitial; without it every request 302s to the captcha page
+// and the listing/detail selectors match nothing.
+const headers = { Cookie: 'visitor_test=human' };
+
export const route: Route = {
path: '/search/:keyword',
categories: ['anime'],
@@ -27,7 +33,7 @@ export const route: Route = {
async function handler(ctx) {
const keyword = ctx.req.param('keyword');
- const { data: response } = await got(`${baseUrl}/search.php?keyword=${encodeURIComponent(keyword)}`);
+ const { data: response } = await got(`${baseUrl}/search.php?keyword=${encodeURIComponent(keyword)}`, { headers });
const $ = load(response);
const list = $('#listTable tbody > tr')
.toArray()
@@ -41,7 +47,7 @@ async function handler(ctx) {
const items = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- const { data: response } = await got(item.link);
+ const { data: response } = await got(item.link, { headers });
const $ = load(response);
item.pubDate = parseDate($('div.main > div.slayout > div > div.c1 > div:nth-child(1) > div > p:nth-child(4)').text().split('发布时间: ', 2)[1]);
From 70b780b012b63d6d26f3adda9c33a46c545b8170 Mon Sep 17 00:00:00 2001
From: Peter Dave Hello <3691490+PeterDaveHello@users.noreply.github.com>
Date: Sat, 11 Jul 2026 23:36:33 +0800
Subject: [PATCH 288/670] fix(hackernews): improve route documentation and
parameter naming (#22491)
- Update route name from 'User' to 'Stories'
- Rename parameter 'user' to 'value' for clarity
- Document all available sections (index, newest, ask, show, jobs, over, threads, submitted)
- Document type parameter options (sources, comments, comments_list)
- Clarify 'over' section uses points threshold instead of user ID
- Document value's general ?id= behavior for other sections
- Add usage examples (HN100, user submitted, threads, comments_list)
---
lib/routes/hackernews/index.ts | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/lib/routes/hackernews/index.ts b/lib/routes/hackernews/index.ts
index 8e2e7af56041..9d6a35197359 100644
--- a/lib/routes/hackernews/index.ts
+++ b/lib/routes/hackernews/index.ts
@@ -7,19 +7,19 @@ import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
export const route: Route = {
- path: '/:section?/:type?/:user?',
+ path: '/:section?/:type?/:value?',
categories: ['programming'],
view: ViewType.Articles,
example: '/hackernews/threads/comments_list/dang',
parameters: {
section: {
- description: 'Content section, default to `index`',
+ description: 'Content section, default to `index`. Common sections: `index`, `newest`, `ask`, `show`, `jobs`, `over`, `threads`, `submitted`. Any valid HN section (e.g. `best`, `front`, `active`) is also accepted',
},
type: {
- description: 'Link type, default to `sources`',
+ description: 'Content format, default to `sources`. `sources` links to original articles, `comments` fetches full comment threads, `comments_list` shows parent story with single comment',
},
- user: {
- description: 'Set user, only valid in `threads` and `submitted` sections',
+ value: {
+ description: 'For `threads`/`submitted` sections, set user ID. For `over` section, set minimum points threshold (default 100). For other sections, appended as `?id=` (e.g. `value=dang` → `?id=dang`)',
},
},
features: {
@@ -35,23 +35,29 @@ export const route: Route = {
source: ['news.ycombinator.com/:section', 'news.ycombinator.com/'],
},
],
- name: 'User',
+ name: 'Stories',
maintainers: ['nczitzk', 'xie-dongping'],
handler,
- description: 'Subscribe to the content of a specific user',
+ description: `Subscribe to Hacker News content by section, user, or minimum points
+
+Examples:
+
+| HN100 | User submitted | User threads | Comments list |
+| ----- | -------------- | ------------ | ------------- |
+| \`/hackernews/over\` | \`/hackernews/submitted/sources/dang\` | \`/hackernews/threads/sources/dang\` | \`/hackernews/threads/comments_list/dang\` |`,
};
async function handler(ctx) {
const section = ctx.req.param('section') ?? 'index';
const type = ctx.req.param('type') ?? 'sources';
- const user = ctx.req.param('user') ?? '';
+ const value = ctx.req.param('value') ?? '';
const rootUrl = 'https://news.ycombinator.com';
const sectionUrl = section === 'index' ? '' : `/${section}`;
- let optUrl = user === '' ? '' : '?id=' + user;
+ let optUrl = value === '' ? '' : '?id=' + value;
if (section === 'over') {
- optUrl = user === '' ? '?points=100' : '?points=' + user;
+ optUrl = value === '' ? '?points=100' : '?points=' + value;
}
const currentUrl = `${rootUrl}${sectionUrl}${optUrl}`;
From e2487e6df34c97299aebbedbeccdbd384465879a Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 11 Jul 2026 15:38:03 +0000
Subject: [PATCH 289/670] style: auto format
---
lib/routes/hackernews/index.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/routes/hackernews/index.ts b/lib/routes/hackernews/index.ts
index 9d6a35197359..53979fc0b634 100644
--- a/lib/routes/hackernews/index.ts
+++ b/lib/routes/hackernews/index.ts
@@ -42,8 +42,8 @@ export const route: Route = {
Examples:
-| HN100 | User submitted | User threads | Comments list |
-| ----- | -------------- | ------------ | ------------- |
+| HN100 | User submitted | User threads | Comments list |
+| ------------------ | ------------------------------------ | ---------------------------------- | ---------------------------------------- |
| \`/hackernews/over\` | \`/hackernews/submitted/sources/dang\` | \`/hackernews/threads/sources/dang\` | \`/hackernews/threads/comments_list/dang\` |`,
};
From 48f7d4cf4cff36d35f1061c0c6174e06349934fa Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Sun, 12 Jul 2026 00:09:42 +0800
Subject: [PATCH 290/670] feat(route): add Hunan Museum exhibiton and news
routes (#22430)
* feat(route): add Hunan Museum exhibiton and news routes
* fix: update news ts file name
* fix: rm hnmnes.ts
* fix: update hostname
* fix: add ctx for special exhibitions
* fix:use flatmap and remove redundant
---
lib/routes/hnmuseum/exhibitions.tsx | 215 ++++++++++++++++++++++++++++
lib/routes/hnmuseum/hnmnews.ts | 59 ++++++++
lib/routes/hnmuseum/namespace.ts | 10 ++
3 files changed, 284 insertions(+)
create mode 100644 lib/routes/hnmuseum/exhibitions.tsx
create mode 100644 lib/routes/hnmuseum/hnmnews.ts
create mode 100644 lib/routes/hnmuseum/namespace.ts
diff --git a/lib/routes/hnmuseum/exhibitions.tsx b/lib/routes/hnmuseum/exhibitions.tsx
new file mode 100644
index 000000000000..c15a76089877
--- /dev/null
+++ b/lib/routes/hnmuseum/exhibitions.tsx
@@ -0,0 +1,215 @@
+import { type Cheerio, load } from 'cheerio';
+import type { Element } from 'domhandler';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+interface ExhibitionItem {
+ exhibitionType: 'permanent' | 'special' | 'temporary';
+ title: string;
+ itemLink: string;
+ imgUrl: string;
+ location?: string;
+ fullDuration?: string;
+}
+
+type ExhibitionConfig = {
+ selector: string;
+ type: 'permanent' | 'special' | 'temporary';
+ extra: ($item: Cheerio) => Partial>;
+};
+
+// convert date string like "YYYY年M月D日" to "YYYY-MM-DD"
+const formatStr = (dateStr: string | undefined): string | undefined => {
+ if (!dateStr) {
+ return undefined;
+ }
+
+ const match = dateStr.trim().match(/(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})日/);
+
+ if (match) {
+ const year = match[1];
+ const month = match[2].padStart(2, '0');
+ const day = match[3].padStart(2, '0');
+ return `${year}-${month}-${day}`;
+ }
+ return undefined;
+};
+
+const extractDates = (durationStr?: string): { startDate?: string; endDate?: string } => {
+ if (!durationStr || durationStr.includes('永久')) {
+ return { startDate: undefined, endDate: undefined };
+ }
+ const parts = durationStr.split(/—/);
+
+ return { startDate: formatStr(parts[0]), endDate: formatStr(parts[1]) };
+};
+
+const renderDescription = (imgUrl: string, location?: string, startDate?: string, endDate?: string, fullDuration?: string) =>
+ renderToString(
+
+ {

}
+
+
+ 地点:
+ {location ?? '参考展览详情或图片'}
+
+
+ 开展:
+ {startDate ?? '参考展览详情或图片'}
+
+
+ 闭展:
+ {endDate ?? '参考展览详情或图片'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+export const route: Route = {
+ path: '/current-exhibitions/:type?',
+ categories: ['travel'],
+ example: '/hnmuseum/current-exhibitions/special',
+ parameters: {
+ type: 'Exhibition type, supported values: special(临时展览 special+temporary). Default: All exhibitions.',
+ },
+ name: 'Current Exhibitions',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.hnmuseum.com/zh-hans/content/当前展览-基本陈列'],
+ target: '/current-exhibitions',
+ },
+ ],
+
+ handler: async (ctx) => {
+ const typeParam = ctx.req.param('type');
+ const isSpecial = typeParam === 'special';
+
+ const baseUrl = 'https://www.hnmuseum.com';
+ const listUrl = `${baseUrl}/zh-hans/content/当前展览-基本陈列`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: listUrl,
+ });
+
+ const $ = load(response.data);
+
+ const exhibitionConfigs: ExhibitionConfig[] = [
+ {
+ selector: '#block-views-a784821b4fd9f41563c7164fd2a2f96e .views-row',
+ type: 'permanent' as const,
+ extra: ($item: Cheerio) => ({
+ location: $item.find('.views_zhanting .field-content').text().trim(),
+ fullDuration: $item.find('.views_startdate .field-content').text().trim(),
+ }),
+ },
+ {
+ selector: '#block-views-chen-lie-block .views-row',
+ type: 'special' as const,
+ extra: ($item: Cheerio) => ({
+ location: $item.find('.views_zhanting .field-content').text().trim(),
+ }),
+ },
+ {
+ selector: '#block-views-zhan-lan-block .views-row',
+ type: 'temporary' as const,
+ extra: (_$item: Cheerio) => ({}),
+ },
+ ];
+
+ // use flatMap to avoid pushing into an external array, making the code cleaner and more functional
+ const list = exhibitionConfigs.flatMap((config) =>
+ $(config.selector)
+ .toArray()
+ .map((item) => {
+ const $item = $(item);
+ const $a = $item.find('.views_title a, .views_img_bg a').first();
+ const link = $a.attr('href') || '';
+
+ return {
+ exhibitionType: config.type,
+ title: $a.text(),
+ itemLink: link.startsWith('http') ? link : `${baseUrl}${link}`,
+ imgUrl: $item.find('img').attr('src') || '',
+ ...config.extra($item as Cheerio),
+ };
+ })
+ );
+
+ const targetList = isSpecial ? list.filter((item) => item.exhibitionType === 'special' || item.exhibitionType === 'temporary') : list;
+
+ const items = await Promise.all(
+ targetList.map((item) => {
+ const cacheKey = item.itemLink;
+
+ return cache.tryGet(cacheKey, async (): Promise => {
+ if (item.exhibitionType === 'permanent' || item.exhibitionType === 'special') {
+ const { startDate, endDate } = extractDates(item.fullDuration);
+ return {
+ title: item.title,
+ link: item.itemLink,
+ pubDate: startDate ? parseDate(startDate) : undefined,
+ description: renderDescription(item.imgUrl, item.location, startDate, endDate, item.fullDuration),
+ _extra: { museumName, location: item.location, startDate, endDate },
+ };
+ }
+
+ const url = new URL(item.itemLink);
+ // for theme exhibition, the detail page may be a SPA, so need to fetch the JS file to extract the data
+ if (url.hostname === 'vrexhibition.hnmuseum.com') {
+ const htmlRes = await got({ method: 'get', url: item.itemLink });
+ const $spa = load(htmlRes.data);
+ const jsSrc = $spa('script[type="module"][src]').attr('src') || '';
+ const jsUrl = new URL(jsSrc, item.itemLink).href;
+ const jsRes = await got({ method: 'get', url: jsUrl });
+ const jsContent = jsRes.data;
+ const titleMatch = jsContent.match(/"title"[^)]*\)\s*\},[^"]*"([^"]+)"/);
+ const title = titleMatch?.[1];
+ const dateMatch = jsContent.match(/"(\d{4}年\d{1,2}月\d{1,2}日—\d{4}年\d{1,2}月\d{1,2}日)"/);
+ const fullDuration = dateMatch?.[1];
+ const locMatch = jsContent.match(/"(湖南省博物馆[^"]+厅)"/);
+ const location = locMatch?.[1];
+ const { startDate, endDate } = extractDates(fullDuration);
+
+ return {
+ title,
+ link: item.itemLink,
+ pubDate: startDate ? parseDate(startDate) : undefined,
+ description: renderDescription(item.imgUrl, location, startDate, endDate, fullDuration),
+ _extra: { museumName, location, startDate, endDate },
+ };
+ }
+
+ const detailResponse = await got({ method: 'get', url: item.itemLink });
+ const content = load(detailResponse.data);
+ const title = content('h1#page-title').text();
+ return {
+ title,
+ link: item.itemLink,
+ description: renderDescription(item.imgUrl),
+ _extra: { museumName },
+ };
+ }) as Promise;
+ })
+ );
+
+ return {
+ title: `${museumName} - 当前展览${isSpecial ? ' - 专题&临时展览' : ''}`,
+ link: listUrl,
+ language: 'zh-CN',
+ item: items.filter((item) => item.title && Object.keys(item).length > 0) as DataItem[],
+ };
+ },
+};
diff --git a/lib/routes/hnmuseum/hnmnews.ts b/lib/routes/hnmuseum/hnmnews.ts
new file mode 100644
index 000000000000..dd41cdbf99e6
--- /dev/null
+++ b/lib/routes/hnmuseum/hnmnews.ts
@@ -0,0 +1,59 @@
+import { load } from 'cheerio';
+
+import type { DataItem, Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+export const route: Route = {
+ path: '/hnmnews',
+ categories: ['travel'],
+ example: '/hnmuseum/hnmnews',
+ name: 'HNM News',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.hnmuseum.com/zh-hans/xiangbo_dongtai_news'],
+ target: '/hnmnews',
+ },
+ ],
+
+ handler: async () => {
+ const baseUrl = 'https://www.hnmuseum.com';
+ const apiUrl = `${baseUrl}/zh-hans/xiangbo_dongtai_news`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: apiUrl,
+ });
+
+ const $ = load(response.data);
+
+ const items = $('.view-content .views-row')
+ .toArray()
+ .map((el) => {
+ const $item = $(el);
+ const $a = $item.find('.views-field-title-1 a');
+ const title = $a.text();
+ const href = $a.attr('href');
+ const link = new URL(href!, baseUrl).href;
+ const dateString = $item.find('.date-display-single').attr('content');
+
+ return {
+ title,
+ link,
+ pubDate: timezone(parseDate(dateString!), 8),
+ };
+ });
+
+ return {
+ title: `${museumName} - 湘博动态`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: items as DataItem[],
+ };
+ },
+};
diff --git a/lib/routes/hnmuseum/namespace.ts b/lib/routes/hnmuseum/namespace.ts
new file mode 100644
index 000000000000..894154b0c165
--- /dev/null
+++ b/lib/routes/hnmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Hunan Museum',
+ url: 'www.hnmuseum.com/zh-hans',
+
+ zh: {
+ name: '湖南省博物馆',
+ },
+};
From af7f36d44c40fb21682a6d1a24ad51ccb5e50287 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Sun, 12 Jul 2026 00:34:07 +0800
Subject: [PATCH 291/670] fix(route): refactor to adapt to new web design
(#22383)
* fix(route): refactor to adapt to new web design
* fix:reduce complexity
* fix: update CSS selector for xingnew and xwzt
* fix: update selectors
* fix:update hideBoxes
* fix: replace for with find
---
lib/routes/chnmuseum/xingnew.ts | 8 +-
lib/routes/chnmuseum/xwzt.ts | 4 +-
lib/routes/chnmuseum/zl.tsx | 160 ++++++++++++++++----------------
3 files changed, 88 insertions(+), 84 deletions(-)
diff --git a/lib/routes/chnmuseum/xingnew.ts b/lib/routes/chnmuseum/xingnew.ts
index 85716e00450c..e50bd2ec87f0 100644
--- a/lib/routes/chnmuseum/xingnew.ts
+++ b/lib/routes/chnmuseum/xingnew.ts
@@ -31,12 +31,12 @@ export const route: Route = {
const response = await ofetch('https://www.chnmuseum.cn/zx/xingnew/');
const $ = load(response);
- const list = $('ul.cj_xushuliebao_list li')
+ const list = $('ul.xly_list_ts li')
.toArray()
.map((item) => {
- item = $(item);
- const a = item.find('a');
- const dateText = item.find('span.date').text();
+ const $item = $(item);
+ const a = $item.find('a.titles');
+ const dateText = $item.find('.times span.sp').text();
return {
title: a.attr('title') || a.text(),
diff --git a/lib/routes/chnmuseum/xwzt.ts b/lib/routes/chnmuseum/xwzt.ts
index 1953957b3cd6..c8a6804dd6e7 100644
--- a/lib/routes/chnmuseum/xwzt.ts
+++ b/lib/routes/chnmuseum/xwzt.ts
@@ -28,11 +28,11 @@ export const route: Route = {
const response = await ofetch('https://www.chnmuseum.cn/zx/xwzt/');
const $ = load(response);
- const items = $('ul.cj_hd_zhanh li')
+ const items = $('ul.xly_list_ts li')
.toArray()
.map((item) => {
item = $(item);
- const a = item.find('div.cj_hd_biaoti a').first();
+ const a = item.find('a.titles').first();
return {
title: a.attr('title') || a.text(),
diff --git a/lib/routes/chnmuseum/zl.tsx b/lib/routes/chnmuseum/zl.tsx
index 65e832285061..b8a533b024cf 100644
--- a/lib/routes/chnmuseum/zl.tsx
+++ b/lib/routes/chnmuseum/zl.tsx
@@ -1,4 +1,5 @@
import { load } from 'cheerio';
+import dayjs from 'dayjs';
import type { Context } from 'hono';
import { renderToString } from 'hono/jsx/dom/server';
@@ -10,36 +11,26 @@ import { parseDate } from '@/utils/parse-date';
import { namespace } from './namespace';
const titleTagMap: Record = {
- zhanlanyugao: '正在展出', // This is what the website used for current exhibition
- ztzl: '主题展览',
+ zhanlanyugao: '正在展出',
jbcl: '基本陈列',
ztcl: '专题展览',
lszl: '临时展览',
- 'lszl/zdztzl': '临时展览 - 主题展览',
- 'lszl/dfjpwwxl': '临时展览 - 精品文物展',
- 'lszl/lswhxl': '临时展览 - 历史文化展',
- 'lszl/kgfjxl': '临时展览 - 考古发现展',
- 'lszl/kjcxz': '临时展览 - 科技创新展',
- 'lszl/dywhxl': '临时展览 - 地域文化展',
- 'lszl/jdmszpxl': '临时展览 - 经典美术展',
- 'lszl/gjjlxl': '临时展览 - 国际交流展',
+ 'lszl/lswh': '临时展览 - 历史文化',
+ 'lszl/gjjl': '临时展览 - 国际交流',
+ 'lszl/zdzt': '临时展览 - 重大主题',
+ 'lszl/yscx': '临时展览 - 艺术创新',
+ gjzl: '国家展览',
gbxz: '国博巡展',
};
-// Formatting Function: Returns YYYY-MM-DD only if there are 3 valid numeric segments; otherwise, returns undefined.
+// Formatting Function: Returns YYYY-MM-DD when there are 3 valid numeric segments that are formatted by parseExhibitionDate; otherwise, returns undefined.
const formatExhibitionDate = (dateStr: string | undefined): string | undefined => {
if (!dateStr) {
return undefined;
}
- const normalized = dateStr
- .replaceAll(/年|月/g, '-')
- .replaceAll('日', '')
- .replaceAll(/[/.]/g, '-');
- const parts = normalized.split('-').filter(Boolean);
- if (parts.length === 3) {
- return `${parts[0]}-${parts[1].padStart(2, '0')}-${parts[2].padStart(2, '0')}`;
- }
- return undefined;
+ const normalized = dateStr.replaceAll(/[年月/.]/g, '-').replaceAll('日', '');
+ const d = dayjs(normalized);
+ return d.format('YYYY-MM-DD');
};
const parseExhibitionDuration = (duration: string) => {
@@ -57,22 +48,20 @@ const parseExhibitionDuration = (duration: string) => {
let startDateRaw: string | undefined;
let endDateRaw: string | undefined;
- if (cleanStr.startsWith('展至') && allDates.length > 0) {
- endDateRaw = allDates[0];
- } else if (allDates.length >= 2) {
+ if (allDates.length >= 2) {
startDateRaw = allDates[0];
let rawEnd = allDates[1];
// Logic to complete the year
if (!/\d{4}/.test(rawEnd) && startDateRaw) {
const startYear = startDateRaw.match(/^\d{4}/);
- if (startYear) {
- const sep = startDateRaw.includes('年') ? '年' : startDateRaw.includes('/') ? '/' : '-';
- rawEnd = `${startYear[0]}${sep}${rawEnd}`;
+ if (startYear?.[0]) {
+ rawEnd = `${startYear[0]}${startDateRaw[4]}${rawEnd}`;
}
}
endDateRaw = rawEnd;
} else if (allDates.length === 1) {
- if (cleanStr.includes('展至')) {
+ if (cleanStr.includes('闭展')) {
+ // e.g. "2025年2月16日闭展"
endDateRaw = allDates[0];
} else {
startDateRaw = allDates[0];
@@ -101,23 +90,38 @@ const resolveRouteConfig = (type: string | undefined, subtype: string | undefine
};
};
+// create itemLink
+const buildItemLink = (rawLink: string, contextUrl: string, baseUrl: string) => (rawLink ? new URL(rawLink, contextUrl).href : baseUrl);
+
+// create exhibitionLink
+const buildExhibitionLink = (rawZtzl: string, itemLink: string, baseUrl: string) => (rawZtzl ? new URL(rawZtzl, baseUrl).href : itemLink);
+
// to concurrent or single-page retrieval according to titletag
const fetchTargetElements = async (cleanType: string, subtype: string | undefined, url: string, baseUrl: string) => {
- const items: Array<{ $item: any; contextUrl: string }> = [];
+ const items: Array<{ $item: any; contextUrl: string; itemLink: string; exhibitionLink: string; rawZtzl: string }> = [];
// Use a Set to track visited links and filter out duplicate HTML elements directly at the source
// (e.g., when the same exhibition appears in both the main list and a specific sub-category list).
const seenLinks = new Set();
const extractItems = (html: string, contextUrl: string) => {
const $ = load(html);
- const pageElements = $('ul[id="div"] a.recurl, ul.cj_hb_list a.recurl').toArray();
+ const selectors = ['ul[id="div"] > li > a', 'li.scale_imgs > a'].join(', ');
+
+ const pageElements = $(selectors).not('.zl_lszl_list *').toArray();
+
for (const el of pageElements) {
const $item = $(el).closest('li');
if ($item.length > 0) {
- const href = $(el).attr('href') || '';
- if (href && !seenLinks.has(href)) {
- seenLinks.add(href);
- items.push({ $item, contextUrl });
+ const rawLink = $(el).attr('href') || '';
+ const rawZtzl = $(el).attr('ztzlurl')?.trim() || ''; // some exhibition links have a separate detailed page, use ztzlurl to get the detailed exhibition link if available
+
+ // Use exhibitionLink to remove the repeat ones
+ const itemLink = buildItemLink(rawLink, contextUrl, baseUrl);
+ const exhibitionLink = buildExhibitionLink(rawZtzl, itemLink, baseUrl);
+
+ if (exhibitionLink && !seenLinks.has(exhibitionLink)) {
+ seenLinks.add(exhibitionLink);
+ items.push({ $item, contextUrl, itemLink, exhibitionLink, rawZtzl });
}
}
}
@@ -142,23 +146,15 @@ const fetchTargetElements = async (cleanType: string, subtype: string | undefine
return items;
};
-// create itemLink
-const buildItemLink = (rawLink: string, contextUrl: string, baseUrl: string) => (rawLink ? new URL(rawLink, contextUrl).href : baseUrl);
-
-// create exhibitionLink
-const buildExhibitionLink = (rawZtzl: string, itemLink: string, baseUrl: string) => (rawZtzl ? new URL(rawZtzl, baseUrl).href : itemLink);
-
export const route: Route = {
path: '/zl/:type?/:subType?',
categories: ['travel'],
- example: '/chnmuseum/zl/lszl/zdztzl',
+ example: '/chnmuseum/zl/lszl/zdzt',
parameters: {
- type: 'Exhibition type, supported values: zhanlanyugao(正在展出)、ztzl(主题展览)、jbcl(基本陈列)、ztcl(专题展览)、lszl(临时展览)、gbxz(国博巡展). Default: All exhibitions.',
- subType:
- 'subtype only works under type lszl(临时展览), supported values: zdztzl(主题展览)、dfjpwwxl(精品文物展)、lswhxl(历史文化展)、kgfjxl(考古发现展)、kjcxz(科技创新展)、dywhxl(地域文化展)、jdmszpxl(经典美术展)、gjjlxl(国际交流展)',
+ type: 'Exhibition type, supported values: zhanlanyugao(正在展出)、jbcl(基本陈列)、ztcl(专题展览)、lszl(临时展览)、gjzl(国家展览)、gbxz(国博巡展). Default: All exhibitions.',
+ subType: 'subtype only works under type lszl(临时展览), supported values: zdzt(重大主题)、lswh(历史文化)、yscx(艺术创新)、gjjl(国际交流)',
},
- // Use Chnmuseum English version channel name
- name: 'Exhibitions',
+ name: 'Exhibitions', // Use Chnmuseum English version channel name
maintainers: ['magazian'],
radar: [
{
@@ -167,8 +163,8 @@ export const route: Route = {
},
],
handler: async (ctx: Context): Promise => {
- const type = ctx.req.param('type')?.trim();
- const subtype = ctx.req.param('subType')?.trim();
+ const type = ctx.req.param('type');
+ const subtype = ctx.req.param('subType');
const museumName = namespace.zh?.name || namespace.name;
const baseUrl = 'https://www.chnmuseum.cn';
@@ -178,11 +174,7 @@ export const route: Route = {
const list = (
await Promise.all(
itemsToParse.map(({ $item, contextUrl }) => {
- const aTag = $item.find('a.recurl');
-
- if (!aTag.length) {
- return null;
- }
+ const aTag = $item.find('a').first();
const rawLink = aTag.attr('href') || '';
const itemLink = buildItemLink(rawLink, contextUrl, baseUrl);
@@ -194,56 +186,70 @@ export const route: Route = {
// title may not have full display on the page, use the img alt information instead
const imgTag = $item.find('img');
- const title = imgTag.attr('alt') || '';
+ let title = $item.find('.hide_title').text() || '';
const rawSrc = imgTag.attr('src')!;
const imgUrl = new URL(rawSrc, contextUrl).href;
- const location = $item.find('div.cj_zxx1').text().trim();
+ const hideBox = $item.find('.hide_box');
+ const hideBoxes = hideBox.toArray().map((_, i) => hideBox.eq(i));
+ const findValue = (keyword: string) =>
+ hideBoxes
+ .find((box) => box.find('p').first().text().includes(keyword))
+ ?.find('p')
+ .last()
+ .text()
+ .trim() ?? '';
- let fullDuration = $item.find('div.cj_zxx2 p').text().trim();
+ const location = findValue('地点');
+ let fullDuration = findValue('展期');
- if (fullDuration.endsWith('...')) {
+ if (!title || title.endsWith('...')) {
const detailResponse = await got(itemLink);
- const match = detailResponse.data.match(/var\s+qtxszq\s*=\s*"(.*?)";/);
- if (match && match[1]) {
- fullDuration = match[1];
+ const $detail = load(detailResponse.data);
+ const detailTitle = $detail('.crumb_mod_box .title').text();
+ title =
+ detailTitle ||
+ $detail('title')
+ .text()
+ .replace(/-?\s*中国国家博物馆/, '');
+
+ if (!fullDuration) {
+ const textDuration = $detail('li, strong, p')
+ .toArray()
+ .map((el) => $detail(el).text().trim())
+ .find((text) => text.startsWith('展期:') || text.includes('闭展'))
+ ?.replace('展期:', '')
+ .trim();
+ const regexDuration = detailResponse.data.match(/var\s+qtxszq\s*=\s*"(.*?)";/)?.[1];
+ fullDuration = textDuration || regexDuration || '';
}
}
const { startDate, endDate } = parseExhibitionDuration(fullDuration);
// CHN museum didnot have pubDate on the page, use exhibition startDate instead.
- // Variable Handling: If the value is `undefined`, it remains `undefined` to facilitate subsequent processing by the Calendar component.
const pubDate = startDate ? parseDate(startDate) : undefined;
const description = renderToString(
- {
- <>
-

-
- >
- }
+

+
地点:
- {location}
+ {location || '参考详情'}
开展:
- {startDate ?? '未定/常设'}
+ {startDate || '未定/常设'}
闭展:
- {endDate ?? '未定/常设'}
+ {endDate || '未定/常设'}
-
{fullDuration && (
-
- 原始展期:
- {fullDuration}
-
+ 原始展期:{fullDuration}
)}
@@ -260,11 +266,9 @@ export const route: Route = {
// For further .ics file processing
_extra: {
museumName,
- title,
location,
- startDate, // format: YYYY-MM-DD or '未定/常设'
- endDate, // format: YYYY-MM-DD or '未定/常设'
- itemLink,
+ startDate,
+ endDate,
},
} as DataItem;
}) as Promise;
From dcd21b8c0ad25cf3dfc4c5e198ae4f1c1f353f3d Mon Sep 17 00:00:00 2001
From: sirius60111
Date: Sun, 12 Jul 2026 19:42:04 +0800
Subject: [PATCH 292/670] feat(route/xueqiu): fetch user timeline via API
without browser (#22348)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The /xueqiu/user route drove a headless browser (Patchright) to load the
profile page and navigate to each status for full text. The user timeline
is public, so the data can be fetched directly from api.xueqiu.com once the
WAF challenge cookie is obtained.
- replace the browser navigation with direct ofetch calls to
api.xueqiu.com/v4/statuses/user_timeline.json and statuses/show.json
- requirePuppeteer: false (no longer drives a browser); antiCrawler: true
- pass source=买卖 for the 交易 (type 11) tab so it filters correctly
- skip the show.json detail request when legal_user_visible is true
- inline images and the retweeted status into the description
- derive screen_name and the avatar image from the timeline response
Co-authored-by: Claude Opus 4.8 (1M context)
---
lib/routes/xueqiu/user.ts | 226 +++++++++++++++++++-------------------
1 file changed, 110 insertions(+), 116 deletions(-)
diff --git a/lib/routes/xueqiu/user.ts b/lib/routes/xueqiu/user.ts
index ccda3ba3c32a..97b0bd24469f 100644
--- a/lib/routes/xueqiu/user.ts
+++ b/lib/routes/xueqiu/user.ts
@@ -3,10 +3,11 @@ import sanitizeHtml from 'sanitize-html';
import { parseToken } from '@/routes/xueqiu/cookies';
import type { Route } from '@/types';
import cache from '@/utils/cache';
+import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import playwright from '@/utils/playwright';
const rootUrl = 'https://xueqiu.com';
+const apiUrl = 'https://api.xueqiu.com';
export const route: Route = {
path: '/user/:id/:type?',
@@ -15,8 +16,8 @@ export const route: Route = {
parameters: { id: '用户 id, 可在用户主页 URL 中找到', type: '动态的类型, 不填则默认全部' },
features: {
requireConfig: false,
- requirePuppeteer: true,
- antiCrawler: false,
+ requirePuppeteer: false,
+ antiCrawler: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -35,9 +36,59 @@ export const route: Route = {
| 0 | 2 | 4 | 9 | 11 |`,
};
+const stripHtml = (html: string): string => sanitizeHtml(html, { allowedTags: [], allowedAttributes: {} });
+
+// Build a feed item from the timeline list data alone (no detail request).
+const buildListItem = (item: any) => ({
+ title: item.title || stripHtml(item.description || ''),
+ description: item.description || '',
+ pubDate: parseDate(item.created_at),
+ link: rootUrl + item.target,
+});
+
+const buildTitle = (item: any, detail: any): string => {
+ if (item.title) {
+ return item.title;
+ }
+ return stripHtml(item.text || item.description || detail.text || '');
+};
+
+const buildDescription = (detail: any): string => {
+ let text = detail.text ?? detail.description;
+ const images = detail.image_info_list ?? [];
+ for (const img of images) {
+ if (img?.filename) {
+ text += `
`;
+ }
+ }
+ if (detail.retweeted_status) {
+ text += `${detail.retweeted_status.user.screen_name}: ${detail.retweeted_status.text}
`;
+ }
+ return text;
+};
+
+const extractProfileImage = (user: any): string | undefined => {
+ if (!user?.profile_image_url || !user?.photo_domain) {
+ return undefined;
+ }
+
+ const imageUrls = user.profile_image_url.split(',').filter(Boolean);
+ if (imageUrls.length === 0) {
+ return undefined;
+ }
+
+ // Priority order for image sizes
+ const sizePriority = ['!180x180.png', '!50x50.png', '!30x30.png'];
+ const selectedImageUrl = sizePriority.map((size) => imageUrls.find((url) => url.includes(size))).find(Boolean) || imageUrls[0];
+ const baseDomain = user.photo_domain.startsWith('//') ? `https:${user.photo_domain}` : user.photo_domain;
+
+ return `${baseDomain}${selectedImageUrl}`;
+};
+
async function handler(ctx) {
const id = ctx.req.param('id');
const type = ctx.req.param('type') || 10;
+ const source = type === '11' ? '买卖' : '';
const typename = {
10: '全部',
0: '原发布',
@@ -48,119 +99,62 @@ async function handler(ctx) {
};
const link = `${rootUrl}/u/${id}`;
- const token = await parseToken(link);
+ const cookie = await parseToken(link);
- const context = await playwright();
- try {
- const mainPage = await context.newPage();
-
- await mainPage.setExtraHTTPHeaders({
- Cookie: token as string,
+ const response = await ofetch(`${apiUrl}/v4/statuses/user_timeline.json`, {
+ query: {
+ user_id: id,
+ type,
+ source,
+ },
+ headers: {
+ Cookie: cookie,
Referer: link,
- });
-
- await mainPage.goto(link, {
- waitUntil: 'domcontentloaded',
- });
- await mainPage.waitForFunction(() => document.readyState === 'complete');
-
- const apiUrl = `${rootUrl}/v4/statuses/user_timeline.json?user_id=${id}&type=${type}`;
- const response = await mainPage.evaluate(async (url) => {
- const response = await fetch(url);
- return response.json();
- }, apiUrl);
-
- if (!response?.statuses) {
- throw new Error('获取用户动态数据失败');
- }
-
- const data = response.statuses.filter((s) => s.mark !== 1);
-
- if (!data.length) {
- throw new Error('未找到有效的动态数据');
- }
-
- const items = await Promise.all(
- data.map((item) =>
- cache.tryGet(item.target, async () => {
- const detailUrl = rootUrl + item.target;
- try {
- await mainPage.goto(detailUrl, {
- waitUntil: 'domcontentloaded',
- });
- await mainPage.waitForFunction(() => document.readyState === 'complete');
-
- const content = await mainPage.evaluate(() => {
- const articleContent = document.querySelector('.article__bd')?.innerHTML || '';
- const statusMatch = document.documentElement.innerHTML.match(/SNOWMAN_STATUS = (.*?\});/);
- return {
- articleContent,
- statusData: statusMatch ? statusMatch[1] : null,
- };
- });
-
- if (content.statusData) {
- const data = JSON.parse(content.statusData);
- item.text = data.text;
- }
-
- const retweetedStatus = item.retweeted_status ? `${item.retweeted_status.user.screen_name}: ${item.retweeted_status.description}
` : '';
- const description = content.articleContent || item.description + retweetedStatus;
-
- return {
- title: item.title || sanitizeHtml(description, { allowedTags: [], allowedAttributes: {} }),
- description: item.text ? item.text + retweetedStatus : description,
- pubDate: parseDate(item.created_at),
- link: rootUrl + item.target,
- };
- } catch (error: unknown) {
- if (error instanceof Error && !error.message?.includes('ERR_ABORTED')) {
- throw error;
- }
- const retweetedStatus = item.retweeted_status ? `${item.retweeted_status.user.screen_name}: ${item.retweeted_status.description}
` : '';
- const description = item.description + retweetedStatus;
-
- return {
- title: item.title || sanitizeHtml(description, { allowedTags: [], allowedAttributes: {} }),
- description: item.description,
- pubDate: parseDate(item.created_at),
- link: rootUrl + item.target,
- };
- }
- })
- )
- );
-
- const extractProfileImage = (user: any): string | undefined => {
- if (!user?.profile_image_url || !user?.photo_domain) {
- return undefined;
- }
-
- const imageUrls = user.profile_image_url.split(',').filter(Boolean);
- if (imageUrls.length === 0) {
- return undefined;
- }
-
- // Priority order for image sizes
- const sizePriority = ['!180x180.png', '!50x50.png', '!30x30.png'];
-
- const selectedImageUrl = sizePriority.map((size) => imageUrls.find((url) => url.includes(size))).find(Boolean) || imageUrls[0];
-
- const baseDomain = user.photo_domain.startsWith('//') ? `https:${user.photo_domain}` : user.photo_domain;
-
- return `${baseDomain}${selectedImageUrl}`;
- };
-
- const profileImage = extractProfileImage(data[0].user);
-
- return {
- title: `${data[0].user.screen_name} 的雪球${typename[type]}动态`,
- link,
- description: `${data[0].user.screen_name} 的雪球${typename[type]}动态`,
- image: profileImage,
- item: items,
- };
- } finally {
- await context.close();
- }
+ },
+ });
+
+ const data = response.statuses.filter((s) => s.mark !== 1); // 去除置顶动态
+
+ const items = await Promise.all(
+ data.map((item) =>
+ cache.tryGet(item.target, async () => {
+ // legal_user_visible 为 true 时列表已含完整内容,无需再请求详情
+ if (item.legal_user_visible) {
+ return buildListItem(item);
+ }
+
+ try {
+ const detail = await ofetch(`${apiUrl}/statuses/show.json`, {
+ query: {
+ id: item.id,
+ },
+ headers: {
+ Cookie: cookie,
+ Referer: link,
+ },
+ });
+
+ return {
+ title: buildTitle(item, detail),
+ description: buildDescription(detail),
+ pubDate: parseDate(item.created_at),
+ link: rootUrl + item.target,
+ };
+ } catch {
+ return buildListItem(item);
+ }
+ })
+ )
+ );
+
+ const user = data[0]?.user;
+
+ return {
+ title: `${user?.screen_name ?? id} 的雪球${typename[type]}动态`,
+ link,
+ description: `${user?.screen_name ?? id} 的雪球${typename[type]}动态`,
+ image: extractProfileImage(user),
+ item: items,
+ allowEmpty: true,
+ };
}
From bf8e64e4844130b2661ebb9e07f86e18b7a4ef81 Mon Sep 17 00:00:00 2001
From: Tony
Date: Sun, 12 Jul 2026 21:48:17 +0800
Subject: [PATCH 293/670] fix(jihs/idwr): fix URL (#22685)
---
lib/routes/go/jihs/idwr.ts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/routes/go/jihs/idwr.ts b/lib/routes/go/jihs/idwr.ts
index c7e7cf476f05..08f6ed243086 100644
--- a/lib/routes/go/jihs/idwr.ts
+++ b/lib/routes/go/jihs/idwr.ts
@@ -13,7 +13,7 @@ export const handler = async (ctx: Context): Promise => {
const limit = Number(ctx.req.query('limit') ?? '30');
const baseUrl = 'https://id-info.jihs.go.jp';
- const targetUrl: string = new URL(`surveillance/idwr/jp/idwr/${year}/`, baseUrl).href;
+ const targetUrl: string = new URL(`surveillance/idwr/idwr/${year}/`, baseUrl).href;
const response = await ofetch(targetUrl);
const $: CheerioAPI = load(response);
@@ -93,7 +93,7 @@ export const route: Route = {
},
},
description: `::: tip
-To subscribe to [感染症発生動向調査週報](https://id-info.jihs.go.jp/surveillance/idwr/jp/idwr/2025/), where the source URL is \`https://id-info.jihs.go.jp/surveillance/idwr/jp/idwr/2025/\`, extract the certain parts from this URL to be used as parameters, resulting in the route as [\`/go/jihs/idwr/2025\`](https://rsshub.app/go/jihs/idwr/2025).
+To subscribe to [感染症発生動向調査週報](https://id-info.jihs.go.jp/surveillance/idwr/idwr/2025/), where the source URL is \`https://id-info.jihs.go.jp/surveillance/idwr/idwr/2025/\`, extract the certain parts from this URL to be used as parameters, resulting in the route as [\`/go/jihs/idwr/2025\`](https://rsshub.app/go/jihs/idwr/2025).
:::`,
categories: ['government'],
features: {
@@ -107,7 +107,7 @@ To subscribe to [感染症発生動向調査週報](https://id-info.jihs.go.jp/s
},
radar: [
{
- source: ['id-info.jihs.go.jp/surveillance/idwr/jp/idwr/:year'],
+ source: ['id-info.jihs.go.jp/surveillance/idwr/idwr/:year'],
target: (params) => {
const year: string = params.year;
@@ -130,7 +130,7 @@ To subscribe to [感染症発生動向調査週報](https://id-info.jihs.go.jp/s
},
},
description: `::: tip
-若订阅 [传染病发生动向调查周报](https://id-info.jihs.go.jp/surveillance/idwr/jp/idwr/2025/),网址为 \`https://id-info.jihs.go.jp/surveillance/idwr/jp/idwr/2025/\`,请截取 \`https://id-info.jihs.go.jp/surveillance/idwr/jp/idwr/\` 到末尾 \`/\` 的部分 \`2025\` 作为 \`year\` 参数填入,此时目标路由为 [\`/go/jihs/idwr/2025\`](https://rsshub.app/go/jihs/idwr/2025)。
+若订阅 [传染病发生动向调查周报](https://id-info.jihs.go.jp/surveillance/idwr/idwr/2025/),网址为 \`https://id-info.jihs.go.jp/surveillance/idwr/idwr/2025/\`,请截取 \`https://id-info.jihs.go.jp/surveillance/idwr/idwr/\` 到末尾 \`/\` 的部分 \`2025\` 作为 \`year\` 参数填入,此时目标路由为 [\`/go/jihs/idwr/2025\`](https://rsshub.app/go/jihs/idwr/2025)。
:::`,
},
};
From 91cd1293811ca2e0029838a408cfe9938662ea85 Mon Sep 17 00:00:00 2001
From: sirius60111
Date: Mon, 13 Jul 2026 13:43:03 +0800
Subject: [PATCH 294/670] fix(route/xueqiu): fetch today hot list via
api.xueqiu.com to bypass WAF (#22689)
The /xueqiu/today route requested statuses/hot/listV2.json on xueqiu.com,
which the Alibaba Cloud WAF blocks (returns a challenge page instead of
JSON), so response.data.items was undefined and the route threw 503.
Switch the endpoint to api.xueqiu.com, which serves the same JSON without
the WAF challenge. Also mark antiCrawler: true.
Co-authored-by: Claude Opus 4.8 (1M context)
---
lib/routes/xueqiu/today.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/routes/xueqiu/today.ts b/lib/routes/xueqiu/today.ts
index 4a6b88ecbce1..fe57fac6bb24 100644
--- a/lib/routes/xueqiu/today.ts
+++ b/lib/routes/xueqiu/today.ts
@@ -14,7 +14,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: false,
+ antiCrawler: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -35,7 +35,7 @@ async function handler(ctx) {
const rootUrl = 'https://xueqiu.com';
const currentUrl = `${rootUrl}/today`;
- const apiUrl = `${rootUrl}/statuses/hot/listV2.json?since_id=-1&size=${size}`;
+ const apiUrl = `https://api.xueqiu.com/statuses/hot/listV2.json?since_id=-1&size=${size}`;
const token = await parseToken(currentUrl);
const response = await got({
From 4436842668489d9953e5d1981a7e385490634a34 Mon Sep 17 00:00:00 2001
From: Andvari <31068367+dzx-dzx@users.noreply.github.com>
Date: Mon, 13 Jul 2026 16:17:16 +0800
Subject: [PATCH 295/670] fix(route/cw): Use browser to fetch full text.
(#22292)
* fix(route/cw): Use browser to fetch full text.
* .
* .
* Update utils.ts
* Update lib/routes/cw/utils.ts
Co-authored-by: Tony
* Update lib/routes/cw/utils.ts
Co-authored-by: Tony
* Update lib/routes/cw/utils.ts
Co-authored-by: Tony
-------
---
lib/routes/cw/utils.ts | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/lib/routes/cw/utils.ts b/lib/routes/cw/utils.ts
index 514064e458ee..2e68825e1d13 100644
--- a/lib/routes/cw/utils.ts
+++ b/lib/routes/cw/utils.ts
@@ -1,9 +1,8 @@
import { load } from 'cheerio';
+import type { BrowserContext } from 'patchright';
-import { config } from '@/config';
import cache from '@/utils/cache';
import logger from '@/utils/logger';
-import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import { getCookies, setCookies } from '@/utils/playwright-utils';
@@ -50,7 +49,7 @@ const getCookie = async (context) => {
return cookie;
};
-const parsePage = async (path, context, ctx) => {
+const parsePage = async (path, context: BrowserContext, ctx) => {
const pageUrl = `${baseUrl}${pathMap[path].pageUrl(ctx.req.param('channel'))}`;
const cookie = await getCookie(context);
@@ -89,19 +88,23 @@ const parseList = ($, limit) =>
})
.slice(0, limit);
-const parseItems = (list, context) =>
+const parseItems = (list, context: BrowserContext) =>
Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- const response = await ofetch(item.link, {
- headers: {
- Cookie: await getCookie(context),
- 'User-Agent': config.ua,
- },
+ const page = await context.newPage();
+ await page.route('**/*', (route) => {
+ const request = route.request();
+ request.resourceType() === 'document' || request.resourceType() === 'script' ? route.continue() : route.abort();
});
+ await page.goto(item.link, {
+ waitUntil: 'domcontentloaded',
+ });
+ const response = await page.evaluate(() => document.documentElement.innerHTML);
+ await page.close();
const $ = load(response);
- const meta = JSON.parse($('head script[type="application/ld+json"]').eq(0).text());
+ const meta = JSON.parse($('head script[type="application/ld+json"]:contains("NewsArticle")').first().text());
$('.article__head .breadcrumb, .article__head h1, .article__provideViews, .ad').remove();
$('img.lazyload').each((_, img) => {
if (!img.attribs['data-src']) {
@@ -115,7 +118,7 @@ const parseItems = (list, context) =>
item.title = $('head title').text();
item.category = $('meta[name=keywords]').attr('content').split(',');
item.pubDate = parseDate(meta.datePublished);
- item.author = meta.author.name.replace(',', ' ') || meta.publisher.name;
+ item.author = Array.isArray(meta.author) ? meta.author : meta.author.name;
item.description = $('.article__head .container').html() + $('.article__content').html();
return item;
From efb8568f5eb112c0da68eba92c7932cfd9cf6296 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:20:11 +0000
Subject: [PATCH 296/670] chore(deps-dev): bump tsdown from 0.22.4 to 0.22.7
(#22696)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.4 to 0.22.7.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.4...v0.22.7)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.7
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 376 +++++++++++++++++++++++++------------------------
2 files changed, 195 insertions(+), 183 deletions(-)
diff --git a/package.json b/package.json
index 6b4370fa0f7b..43f9b400d1c6 100644
--- a/package.json
+++ b/package.json
@@ -201,7 +201,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.4",
+ "tsdown": "0.22.7",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9a0b8a447e25..fc9cfd37c42d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -453,8 +453,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.4
- version: 0.22.4(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12))
+ specifier: 0.22.7
+ version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12))
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -1765,9 +1765,6 @@ packages:
'@oxc-project/types@0.127.0':
resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==}
- '@oxc-project/types@0.138.0':
- resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==}
-
'@oxc-project/types@0.139.0':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
@@ -2116,8 +2113,8 @@ packages:
cpu: [arm64]
os: [android]
- '@rolldown/binding-android-arm64@1.1.4':
- resolution: {integrity: sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==}
+ '@rolldown/binding-android-arm64@1.1.5':
+ resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
@@ -2128,8 +2125,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-arm64@1.1.4':
- resolution: {integrity: sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==}
+ '@rolldown/binding-darwin-arm64@1.1.5':
+ resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
@@ -2140,8 +2137,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.1.4':
- resolution: {integrity: sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==}
+ '@rolldown/binding-darwin-x64@1.1.5':
+ resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
@@ -2152,8 +2149,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-freebsd-x64@1.1.4':
- resolution: {integrity: sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==}
+ '@rolldown/binding-freebsd-x64@1.1.5':
+ resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
@@ -2164,8 +2161,8 @@ packages:
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm-gnueabihf@1.1.4':
- resolution: {integrity: sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.1.5':
+ resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
@@ -2177,8 +2174,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-gnu@1.1.4':
- resolution: {integrity: sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==}
+ '@rolldown/binding-linux-arm64-gnu@1.1.5':
+ resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -2191,8 +2188,8 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-arm64-musl@1.1.4':
- resolution: {integrity: sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==}
+ '@rolldown/binding-linux-arm64-musl@1.1.5':
+ resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -2205,8 +2202,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-ppc64-gnu@1.1.4':
- resolution: {integrity: sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==}
+ '@rolldown/binding-linux-ppc64-gnu@1.1.5':
+ resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
@@ -2219,8 +2216,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.1.4':
- resolution: {integrity: sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==}
+ '@rolldown/binding-linux-s390x-gnu@1.1.5':
+ resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
@@ -2233,8 +2230,8 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.1.4':
- resolution: {integrity: sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==}
+ '@rolldown/binding-linux-x64-gnu@1.1.5':
+ resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -2247,8 +2244,8 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-x64-musl@1.1.4':
- resolution: {integrity: sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==}
+ '@rolldown/binding-linux-x64-musl@1.1.5':
+ resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -2260,8 +2257,8 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-openharmony-arm64@1.1.4':
- resolution: {integrity: sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==}
+ '@rolldown/binding-openharmony-arm64@1.1.5':
+ resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
@@ -2271,8 +2268,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-wasm32-wasi@1.1.4':
- resolution: {integrity: sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==}
+ '@rolldown/binding-wasm32-wasi@1.1.5':
+ resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
@@ -2282,8 +2279,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-arm64-msvc@1.1.4':
- resolution: {integrity: sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==}
+ '@rolldown/binding-win32-arm64-msvc@1.1.5':
+ resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
@@ -2294,8 +2291,8 @@ packages:
cpu: [x64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.1.4':
- resolution: {integrity: sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==}
+ '@rolldown/binding-win32-x64-msvc@1.1.5':
+ resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -2944,125 +2941,125 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.5.44':
- resolution: {integrity: sha512-mpZc7hrjl/qxcbEMS6vVLE0lO4DjiXCvrp3gYbZ58bbmsSxSGCTlOCA0lpeLXAKOZxe0ZrVoqKteaewFF2Vbuw==}
+ '@yuku-codegen/binding-darwin-arm64@0.6.1':
+ resolution: {integrity: sha512-LDJtpOKtcv9f3V0eDUwFmmy47t2VC+DAuN+gq80R1IA+fa0d408i6sHsVtt6n+g5rf8f86ySoPSAe94lHt6Ixw==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.5.44':
- resolution: {integrity: sha512-PCt776PnGtnQYimxk18IyvPf/BQ6CNU95W+6eaoQfeME8ra+7v3pNNoTAmLfSveUC9KZPaoajR9NqkKfEVjA2Q==}
+ '@yuku-codegen/binding-darwin-x64@0.6.1':
+ resolution: {integrity: sha512-fBwpBOh33W7N87F94SVNExwm2KUV3ROhk51okr3Oy2ost1/JJuBWINVjcgwd2WPKZEFzUXgCzj/03UR/G+WIrQ==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.5.44':
- resolution: {integrity: sha512-5MNu1R4ysytPLMdl1UlGyjgAbUdT8fguW/QRo+pyEymbuWRN5n8JEHCFpm4AsWdP61fStagSpPDJcwN+mwC9Lg==}
+ '@yuku-codegen/binding-freebsd-x64@0.6.1':
+ resolution: {integrity: sha512-UpMkskQV3a5oPnJV+GFFupIqnLwSBD4ZsZAVUZuNVkrqct433FHKqTwuG+P5JhHZbmhf+++3Ie/V2sgduyXrAQ==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.5.44':
- resolution: {integrity: sha512-xbP2qQ7/h6ZZKeckCiI2osB5SE5PBfLb4uzIfO1BSTX+9rlBKTqomxDaCib7aPf2X1CXMiIq+i7AK1EhBa5a7A==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.1':
+ resolution: {integrity: sha512-HICjDelfEDeD6TD8OEz/Dvt8KHxJiETR+paI/Fr7eVTQbjMfRrXJz8O1qV1qGH5SHZUGl2SAw2Rp+MLtXOjCrQ==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.5.44':
- resolution: {integrity: sha512-gmXKMCpgkUm5PllGMKBMoBmqgbTQkx+S85eE46LctuwTSKS/K7u65NE6t4zk6cLDvZpV67enycKXBORWn6q7xA==}
+ '@yuku-codegen/binding-linux-arm-musl@0.6.1':
+ resolution: {integrity: sha512-pUswnwa+WOmtH2ZGOWL05kFLMNY7/TnEAryfIv1yVFzKQnmSy9TKYi3oIOxGZL3w+cdUKCZ6Q+jaD0oI10ztzA==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.5.44':
- resolution: {integrity: sha512-eOoejNUtnHs1/TMn4wryOAG/TarvlOqSZtRPeS56liBKp/GVQSirqTM9AITSGPLSdK1u7fZWMdj5IOEoJp3ruw==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.1':
+ resolution: {integrity: sha512-Zro0FOu9clLCmqCnUKzEWHAu30tss0iEfhs+KDXm9Dpm1FkIHAKu43tF6FQU2hsTA7a8xd93NGddzc2EOJFKUg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.5.44':
- resolution: {integrity: sha512-xTzrhEMy1mdv5+SbJPPlwqlMrhXGPntE2f12TLi+dNPXhif4iXCGJpoh8pV9nwZFE/cq1ITuTnjIfTFj/PifzA==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.1':
+ resolution: {integrity: sha512-NZaT+mp9toqWuFEA4MYW5HMRxgIa8DCqnTTnM5SrrojZgm4QoMI/mJfifVet1ZHgl/Dly5m6H6GPpq43uXVj8g==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.5.44':
- resolution: {integrity: sha512-2bvgIU4P+f4q18grdHoGnt9L6XlAciq/8GWpM06fmwj8qqruS8qwwwZXBk3/0U2+IHGv9pXRR8GtSXzl5n/blg==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.1':
+ resolution: {integrity: sha512-M5macseSCBPvJ4yfKNyQpMc7nBQBtj39MNfMt0r+8UkTnR5qJE00JJx06puHgPxT5hnGxMAuAWZ+3a9H2ngqAw==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.5.44':
- resolution: {integrity: sha512-EzX5hWK0MmU4fbqY9coc5PJ0y0LYjrBdAF7mjSyetdK/yWRGBfHi9nh0dUJ0lqb47653hxB8/r9byfYgg6ecbA==}
+ '@yuku-codegen/binding-linux-x64-musl@0.6.1':
+ resolution: {integrity: sha512-liAyBZI5AbazZGeeNfWj0jCD/TE2L84hgVYh4KkjJA/N9bNzFQCDf4BvWP76nEO89r2tIGEUjbXdM4mM26riHg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.5.44':
- resolution: {integrity: sha512-/ajGFWcOLGtmVUdxWKXDW6Ixtez68xxtmd2l95xNg8Lzs4aqbV2cy0Ns2Bzg9vjHsgDIooQlLXHpWh6HsHcy6w==}
+ '@yuku-codegen/binding-win32-arm64@0.6.1':
+ resolution: {integrity: sha512-qItzfH3x6MYChPeGfvh22rHD92WLgXQRSuwvspRVSnLvpnubEfZd+9REPRQVT2l9fIuETDCEkDNRqkDROQTkgA==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.5.44':
- resolution: {integrity: sha512-geuJQ7FKI8YUtBgW8w72ChMfMvYy3gSytACxB4HOkylsoutrhH6lUNYHk1ny/p8u8t47NGxktpnzVJzI8IzJkA==}
+ '@yuku-codegen/binding-win32-x64@0.6.1':
+ resolution: {integrity: sha512-DFFkKROZ9ZAHmFMUFRtRTkosZds1KH8BOx5t3UpNULIjT3iuUmEx9V5pWR0xOi66sANY38Ap77nz1kOZraQxEg==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.5.44':
- resolution: {integrity: sha512-EXSW5w1YOIMyxu53MFxP43gTDeHlQueOjk8AEI9tuLF5976bDq3MXuIgzQvZKPVAirxGZu8+ANVXH1WcAH1G6A==}
+ '@yuku-parser/binding-darwin-arm64@0.6.1':
+ resolution: {integrity: sha512-jORysyRZg5zGDgVw15LGMsjZDh7jwjpUIJRBHgFt0ir15O5pEazfvuF2dnwvrJiTF0IT1EgHAVbTAYJWwQLCjg==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.5.44':
- resolution: {integrity: sha512-pJBHsKxqR/nPwwaXgkkYTVo3G9dJ/AXhWsYyKyadU1zLg9gGfVwVTMehqwwutMCONDsLqOmEv/UqItmhpVsQJw==}
+ '@yuku-parser/binding-darwin-x64@0.6.1':
+ resolution: {integrity: sha512-dTeYFkkFlbP/WCB2DtezXas3NApOPtFlXSdssB7wGtY9wpNp4HAkVo1KBwI5mcHK0e2joyUcqTSf44mFE+q7vg==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.5.44':
- resolution: {integrity: sha512-fOqYX5BQML94uj9hd3a+LlBNz54OoDm6l+wgUIZ8UUkOBfPV+w2lux1jj9FKXT85wwjDOFhgZ/XQYSEDK/N9mA==}
+ '@yuku-parser/binding-freebsd-x64@0.6.1':
+ resolution: {integrity: sha512-GExDp3rebo28mt3EAjvKQs0ZC3gkznAErV0I9TUNDa9muuhvD35kft61Mpsc6+NWeE+BG+kUyKbm6iO5B6ZMMA==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.5.44':
- resolution: {integrity: sha512-kA2jRNh2cbbHDbhBN9IR8CnYI4UZHNQg0OVz6+V16Ph5VlLYpfv/6GdCmvQQoTGAnhFlbQiRoQys03ey91FTew==}
+ '@yuku-parser/binding-linux-arm-gnu@0.6.1':
+ resolution: {integrity: sha512-a9MjABj4J0VE3Z2oROGhmeddZZrhwwrnl4ZWZOuHUhD/smDtDiNtr0LpCbKB7rEYaQ29snopOPdZ/0T3YgLglQ==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.5.44':
- resolution: {integrity: sha512-TQ82L8c5Lxl3HBOmw0uGfCcsyw0mp7DVGwCuW24OdDWak6BKaumvB8/Ep1llPOvhk5xgSFB7fsqgh6sIwkNRew==}
+ '@yuku-parser/binding-linux-arm-musl@0.6.1':
+ resolution: {integrity: sha512-ctuvXJgDRKKlmJfHxT4RsTvcAcHEFNJHTCsGbtt4rluQpVDc+ezk9JvQ534ehoIfZ9T0eIHSBgqYAZ4xCatNmQ==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.5.44':
- resolution: {integrity: sha512-o6up+m/MsoMEtq6h4JTzmzKOvH9o3o41vK8oiok0LOZoPOFOqOSqC+N5V2ArD1O54m5LUq6ErghAbGWiPsMsqg==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.1':
+ resolution: {integrity: sha512-vRtyoTtT0Ltowuh9LWOl/ZNU9h79J89ilOz5SEGspcw0jfhoUt19i07VNitll4jjfg5p2EN00q+MqX0pAobrFw==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.5.44':
- resolution: {integrity: sha512-3XZoiHhtrjWKgk7CJC/sGzk1TE57SDPYzOFXUg6CZrigRZ+c0Q5ItzJpyAvhzlxv5ruNRYiuGvFbaRSIDnp2BA==}
+ '@yuku-parser/binding-linux-arm64-musl@0.6.1':
+ resolution: {integrity: sha512-vCsc3GOe1ylmRyfo/WLjIhjiCmaTtJbWNF4ZtgjNegDjpsRsFuCcP9duXB41QcfnJK38repKVFqFh0LR3l48FA==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.5.44':
- resolution: {integrity: sha512-7KYCySZI6cjsdeiiIwvviDfJFd4Xj5gjNBzm9akUpwxRXNwaHHuEq2yGkVdGqj3BT6dJsiNhJIhtS6k7/HJdFA==}
+ '@yuku-parser/binding-linux-x64-gnu@0.6.1':
+ resolution: {integrity: sha512-gw3d81RdUHSYwjDW2IG6gEtm4VDoPP4ZOqpuC6Nc8+UBfos+4gTWOgzmuxIOVhkSV2fJCcUDpSJIlPzEU0FLZw==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.5.44':
- resolution: {integrity: sha512-SLU/nXwOjET2XlOiO984sAzCloiWw0+JdcWpGzXLz3JQWbdiblxWC9cIvB0fCtKdDhX1mIutKNEH+RRRJADYcQ==}
+ '@yuku-parser/binding-linux-x64-musl@0.6.1':
+ resolution: {integrity: sha512-nzU+Doq9UgZvYYvald36lZJ2Neeyheije6WE/YpoFt/oJiNmnjArRgr2CMtb/7gWBl80YSMwcHK4Ju0E+7wfWg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.5.44':
- resolution: {integrity: sha512-LGmaJtB2mVqPD7Gu/RKAu9aIVxlaKPOgKB8RPHeFFD5Tf/apCiWZix1tkBjdOAo9cVEAoR9qnVHE6zJ+OG0drQ==}
+ '@yuku-parser/binding-win32-arm64@0.6.1':
+ resolution: {integrity: sha512-r3tXFVDliWCPe7TL6DVxUkT4rkqnXyeFVSEDf+V9My6Gztq99/gIe3POQqFbshTRuSrpEYMGMbGxeFh+m+stxA==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.5.44':
- resolution: {integrity: sha512-2i0FTklLuhBIgILvtEQ3IN3J4qaTMKlxptseWNrz4F5mimL9UpQFUniVju9OOInwP2O1vgLdZn8EBjEXGNCHmg==}
+ '@yuku-parser/binding-win32-x64@0.6.1':
+ resolution: {integrity: sha512-FqYMOqeCS2XTdn5yvaKlOhtSQ84mVO3aTXp6LGfMd9Zq8RsV4H8qLWv+sxJsgPCXfuBV64u8/f+CTr3uIwNLWA==}
cpu: [x64]
os: [win32]
@@ -4886,6 +4883,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@5.1.16:
resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
engines: {node: ^18 || >=20}
@@ -5209,6 +5211,10 @@ packages:
resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.18:
+ resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -5422,14 +5428,14 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown-plugin-dts@0.27.1:
- resolution: {integrity: sha512-s1HLtZfsXcLsBrcqW6nmIcTqkBZd7Y9srgL9SMS2hNvl37US5jFl193d5ki2w9Ei5myP7ERLVlQX2o6ZTL/AQQ==}
+ rolldown-plugin-dts@0.27.8:
+ resolution: {integrity: sha512-IjBTFpkrYYJPRUmIjUJFsZdR1zeHskFcEwFDzSfFDoC2pZcSNgLrBUcDFY9K0Q+A1TZJR3q9MlVomxMDP8AuLQ==}
engines: {node: ^22.18.0 || >=24.11.0}
peerDependencies:
'@ts-macro/tsc': ^0.3.6
'@typescript/native-preview': '>=7.0.0-dev.20260325.1'
rolldown: ^1.0.0
- typescript: ^5.0.0 || ^6.0.0
+ typescript: ^5.0.0 || ^6.0.0 || ^7.0.0
vue-tsc: ~3.2.0 || ~3.3.0
peerDependenciesMeta:
'@ts-macro/tsc':
@@ -5446,8 +5452,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rolldown@1.1.4:
- resolution: {integrity: sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==}
+ rolldown@1.1.5:
+ resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -5825,18 +5831,18 @@ packages:
typescript:
optional: true
- tsdown@0.22.4:
- resolution: {integrity: sha512-3a5FsNL2fH2jw3ozvFUuPMBgS0xXjX9wpZShHyB4klXelVhyaNw5Q5WA9TPCNeoGYpRZEc4OZdMx5wT4Fkma3A==}
+ tsdown@0.22.7:
+ resolution: {integrity: sha512-4egbOzc9dxVv/QS+gDV75FIxDIjQQeOnXBlUuikyjmn0ozuc6FW11djJjEEo3vqkuJRygpnKHurnj+Iwftk4VA==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.4
- '@tsdown/exe': 0.22.4
+ '@tsdown/css': 0.22.7
+ '@tsdown/exe': 0.22.7
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
- typescript: ^5.0.0 || ^6.0.0
+ typescript: ^5.0.0 || ^6.0.0 || ^7.0.0
unplugin-unused: ^0.5.0
unrun: '*'
peerDependenciesMeta:
@@ -6356,11 +6362,11 @@ packages:
yuku-ast@0.1.7:
resolution: {integrity: sha512-2RiMEWv500TixY5rJy6OZd4fSy9WYZKWh6gGbIJ7y7vAGcuCugWOWwOLGaQcRZrXcPUfqtLtvpaJ3SdXtWlhKA==}
- yuku-codegen@0.5.44:
- resolution: {integrity: sha512-0rhtgWGz+bR3Pe7xqJ5E4VqxI1vqNtkeJRkeXM0Qd3tgldYClQipxa9bRZyuNOOfk0Ri02scrjnkoAHM16/f2g==}
+ yuku-codegen@0.6.1:
+ resolution: {integrity: sha512-6RJqqON2xYhMEp/sZv5oOSI3uOpWwRwzAi2fc/rMcRFjcqedAC5Fyp4AD9Vn2b8SB7hf9ESqVW+YwbDs/KvyKA==}
- yuku-parser@0.5.44:
- resolution: {integrity: sha512-mAhpQZ/bXjxZmKiGUqEWskC9mZTcTBv6/fdzVdzdjM6XuD1DP3IavdLVWdM39L9ewK9vS9OtJmaKNeWgRzpy0w==}
+ yuku-parser@0.6.1:
+ resolution: {integrity: sha512-dPE3/+H2VBw9LhjoIVeW/axKidYGd+XzNtrwGGseZ0325cQFl0Dpwyh0R74XWe/WqQn4M8CR5YApsv2KF2zN1A==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -7435,8 +7441,6 @@ snapshots:
'@oxc-project/types@0.127.0':
optional: true
- '@oxc-project/types@0.138.0': {}
-
'@oxc-project/types@0.139.0': {}
'@oxfmt/binding-android-arm-eabi@0.58.0':
@@ -7637,73 +7641,73 @@ snapshots:
'@rolldown/binding-android-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-android-arm64@1.1.4':
+ '@rolldown/binding-android-arm64@1.1.5':
optional: true
'@rolldown/binding-darwin-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-arm64@1.1.4':
+ '@rolldown/binding-darwin-arm64@1.1.5':
optional: true
'@rolldown/binding-darwin-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-darwin-x64@1.1.4':
+ '@rolldown/binding-darwin-x64@1.1.5':
optional: true
'@rolldown/binding-freebsd-x64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-freebsd-x64@1.1.4':
+ '@rolldown/binding-freebsd-x64@1.1.5':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.1.4':
+ '@rolldown/binding-linux-arm-gnueabihf@1.1.5':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.1.4':
+ '@rolldown/binding-linux-arm64-gnu@1.1.5':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.1.4':
+ '@rolldown/binding-linux-arm64-musl@1.1.5':
optional: true
'@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.1.4':
+ '@rolldown/binding-linux-ppc64-gnu@1.1.5':
optional: true
'@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.1.4':
+ '@rolldown/binding-linux-s390x-gnu@1.1.5':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.1.4':
+ '@rolldown/binding-linux-x64-gnu@1.1.5':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
optional: true
- '@rolldown/binding-linux-x64-musl@1.1.4':
+ '@rolldown/binding-linux-x64-musl@1.1.5':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
optional: true
- '@rolldown/binding-openharmony-arm64@1.1.4':
+ '@rolldown/binding-openharmony-arm64@1.1.5':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
@@ -7713,7 +7717,7 @@ snapshots:
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
- '@rolldown/binding-wasm32-wasi@1.1.4':
+ '@rolldown/binding-wasm32-wasi@1.1.5':
dependencies:
'@emnapi/core': 1.11.1
'@emnapi/runtime': 1.11.1
@@ -7723,13 +7727,13 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.1.4':
+ '@rolldown/binding-win32-arm64-msvc@1.1.5':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.1.4':
+ '@rolldown/binding-win32-x64-msvc@1.1.5':
optional: true
'@rolldown/pluginutils@1.0.0-rc.17':
@@ -8343,70 +8347,70 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.5.44':
+ '@yuku-codegen/binding-darwin-arm64@0.6.1':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.5.44':
+ '@yuku-codegen/binding-darwin-x64@0.6.1':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.5.44':
+ '@yuku-codegen/binding-freebsd-x64@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.5.44':
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.5.44':
+ '@yuku-codegen/binding-linux-arm-musl@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.5.44':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.5.44':
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.5.44':
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.1':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.5.44':
+ '@yuku-codegen/binding-linux-x64-musl@0.6.1':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.5.44':
+ '@yuku-codegen/binding-win32-arm64@0.6.1':
optional: true
- '@yuku-codegen/binding-win32-x64@0.5.44':
+ '@yuku-codegen/binding-win32-x64@0.6.1':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.5.44':
+ '@yuku-parser/binding-darwin-arm64@0.6.1':
optional: true
- '@yuku-parser/binding-darwin-x64@0.5.44':
+ '@yuku-parser/binding-darwin-x64@0.6.1':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.5.44':
+ '@yuku-parser/binding-freebsd-x64@0.6.1':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.5.44':
+ '@yuku-parser/binding-linux-arm-gnu@0.6.1':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.5.44':
+ '@yuku-parser/binding-linux-arm-musl@0.6.1':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.5.44':
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.1':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.5.44':
+ '@yuku-parser/binding-linux-arm64-musl@0.6.1':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.5.44':
+ '@yuku-parser/binding-linux-x64-gnu@0.6.1':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.5.44':
+ '@yuku-parser/binding-linux-x64-musl@0.6.1':
optional: true
- '@yuku-parser/binding-win32-arm64@0.5.44':
+ '@yuku-parser/binding-win32-arm64@0.6.1':
optional: true
- '@yuku-parser/binding-win32-x64@0.5.44':
+ '@yuku-parser/binding-win32-x64@0.6.1':
optional: true
'@yuku-toolchain/types@0.5.43': {}
@@ -10516,6 +10520,8 @@ snapshots:
nanoid@3.3.15: {}
+ nanoid@3.3.16: {}
+
nanoid@5.1.16: {}
narou@2.0.1: {}
@@ -10881,6 +10887,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.18:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postman-request@2.88.1-postman.48:
dependencies:
'@postman/form-data': 3.1.1
@@ -11122,15 +11134,15 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.1(@typescript/typescript6@6.0.2)(rolldown@1.1.4):
+ rolldown-plugin-dts@0.27.8(@typescript/typescript6@6.0.2)(rolldown@1.1.5):
dependencies:
dts-resolver: 3.0.0
get-tsconfig: 5.0.0-beta.5
obug: 2.1.3
- rolldown: 1.1.4
+ rolldown: 1.1.5
yuku-ast: 0.1.7
- yuku-codegen: 0.5.44
- yuku-parser: 0.5.44
+ yuku-codegen: 0.6.1
+ yuku-parser: 0.6.1
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11158,26 +11170,26 @@ snapshots:
'@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17
optional: true
- rolldown@1.1.4:
+ rolldown@1.1.5:
dependencies:
- '@oxc-project/types': 0.138.0
+ '@oxc-project/types': 0.139.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.1.4
- '@rolldown/binding-darwin-arm64': 1.1.4
- '@rolldown/binding-darwin-x64': 1.1.4
- '@rolldown/binding-freebsd-x64': 1.1.4
- '@rolldown/binding-linux-arm-gnueabihf': 1.1.4
- '@rolldown/binding-linux-arm64-gnu': 1.1.4
- '@rolldown/binding-linux-arm64-musl': 1.1.4
- '@rolldown/binding-linux-ppc64-gnu': 1.1.4
- '@rolldown/binding-linux-s390x-gnu': 1.1.4
- '@rolldown/binding-linux-x64-gnu': 1.1.4
- '@rolldown/binding-linux-x64-musl': 1.1.4
- '@rolldown/binding-openharmony-arm64': 1.1.4
- '@rolldown/binding-wasm32-wasi': 1.1.4
- '@rolldown/binding-win32-arm64-msvc': 1.1.4
- '@rolldown/binding-win32-x64-msvc': 1.1.4
+ '@rolldown/binding-android-arm64': 1.1.5
+ '@rolldown/binding-darwin-arm64': 1.1.5
+ '@rolldown/binding-darwin-x64': 1.1.5
+ '@rolldown/binding-freebsd-x64': 1.1.5
+ '@rolldown/binding-linux-arm-gnueabihf': 1.1.5
+ '@rolldown/binding-linux-arm64-gnu': 1.1.5
+ '@rolldown/binding-linux-arm64-musl': 1.1.5
+ '@rolldown/binding-linux-ppc64-gnu': 1.1.5
+ '@rolldown/binding-linux-s390x-gnu': 1.1.5
+ '@rolldown/binding-linux-x64-gnu': 1.1.5
+ '@rolldown/binding-linux-x64-musl': 1.1.5
+ '@rolldown/binding-openharmony-arm64': 1.1.5
+ '@rolldown/binding-wasm32-wasi': 1.1.5
+ '@rolldown/binding-win32-arm64-msvc': 1.1.5
+ '@rolldown/binding-win32-x64-msvc': 1.1.5
rollup@4.62.2:
dependencies:
@@ -11587,7 +11599,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.4(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12)):
+ tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12)):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11597,8 +11609,8 @@ snapshots:
import-without-cache: 0.4.0
obug: 2.1.3
picomatch: 4.0.5
- rolldown: 1.1.4
- rolldown-plugin-dts: 0.27.1(@typescript/typescript6@6.0.2)(rolldown@1.1.4)
+ rolldown: 1.1.5
+ rolldown-plugin-dts: 0.27.8(@typescript/typescript6@6.0.2)(rolldown@1.1.5)
semver: 7.8.5
tinyexec: 1.2.4
tinyglobby: 0.2.17
@@ -11846,7 +11858,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.16
+ postcss: 8.5.18
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
@@ -12114,37 +12126,37 @@ snapshots:
dependencies:
'@yuku-toolchain/types': 0.5.43
- yuku-codegen@0.5.44:
+ yuku-codegen@0.6.1:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.5.44
- '@yuku-codegen/binding-darwin-x64': 0.5.44
- '@yuku-codegen/binding-freebsd-x64': 0.5.44
- '@yuku-codegen/binding-linux-arm-gnu': 0.5.44
- '@yuku-codegen/binding-linux-arm-musl': 0.5.44
- '@yuku-codegen/binding-linux-arm64-gnu': 0.5.44
- '@yuku-codegen/binding-linux-arm64-musl': 0.5.44
- '@yuku-codegen/binding-linux-x64-gnu': 0.5.44
- '@yuku-codegen/binding-linux-x64-musl': 0.5.44
- '@yuku-codegen/binding-win32-arm64': 0.5.44
- '@yuku-codegen/binding-win32-x64': 0.5.44
-
- yuku-parser@0.5.44:
+ '@yuku-codegen/binding-darwin-arm64': 0.6.1
+ '@yuku-codegen/binding-darwin-x64': 0.6.1
+ '@yuku-codegen/binding-freebsd-x64': 0.6.1
+ '@yuku-codegen/binding-linux-arm-gnu': 0.6.1
+ '@yuku-codegen/binding-linux-arm-musl': 0.6.1
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.6.1
+ '@yuku-codegen/binding-linux-arm64-musl': 0.6.1
+ '@yuku-codegen/binding-linux-x64-gnu': 0.6.1
+ '@yuku-codegen/binding-linux-x64-musl': 0.6.1
+ '@yuku-codegen/binding-win32-arm64': 0.6.1
+ '@yuku-codegen/binding-win32-x64': 0.6.1
+
+ yuku-parser@0.6.1:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.5.44
- '@yuku-parser/binding-darwin-x64': 0.5.44
- '@yuku-parser/binding-freebsd-x64': 0.5.44
- '@yuku-parser/binding-linux-arm-gnu': 0.5.44
- '@yuku-parser/binding-linux-arm-musl': 0.5.44
- '@yuku-parser/binding-linux-arm64-gnu': 0.5.44
- '@yuku-parser/binding-linux-arm64-musl': 0.5.44
- '@yuku-parser/binding-linux-x64-gnu': 0.5.44
- '@yuku-parser/binding-linux-x64-musl': 0.5.44
- '@yuku-parser/binding-win32-arm64': 0.5.44
- '@yuku-parser/binding-win32-x64': 0.5.44
+ '@yuku-parser/binding-darwin-arm64': 0.6.1
+ '@yuku-parser/binding-darwin-x64': 0.6.1
+ '@yuku-parser/binding-freebsd-x64': 0.6.1
+ '@yuku-parser/binding-linux-arm-gnu': 0.6.1
+ '@yuku-parser/binding-linux-arm-musl': 0.6.1
+ '@yuku-parser/binding-linux-arm64-gnu': 0.6.1
+ '@yuku-parser/binding-linux-arm64-musl': 0.6.1
+ '@yuku-parser/binding-linux-x64-gnu': 0.6.1
+ '@yuku-parser/binding-linux-x64-musl': 0.6.1
+ '@yuku-parser/binding-win32-arm64': 0.6.1
+ '@yuku-parser/binding-win32-x64': 0.6.1
zod@3.25.76: {}
From 91c6a380761c0cf6c9954dd34fe53551f2e462b3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:21:01 +0000
Subject: [PATCH 297/670] chore(deps): bump sanitize-html from 2.17.5 to 2.17.6
(#22695)
Bumps [sanitize-html](https://github.com/apostrophecms/apostrophe/tree/HEAD/packages/sanitize-html) from 2.17.5 to 2.17.6.
- [Changelog](https://github.com/apostrophecms/apostrophe/blob/main/packages/sanitize-html/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/apostrophe/commits/HEAD/packages/sanitize-html)
---
updated-dependencies:
- dependency-name: sanitize-html
dependency-version: 2.17.6
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 60 ++++++++++++++++++++++++++++++++++++++------------
2 files changed, 47 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index 43f9b400d1c6..532eeab2b0ae 100644
--- a/package.json
+++ b/package.json
@@ -122,7 +122,7 @@
"re2js": "2.8.6",
"rfc4648": "1.5.4",
"rss-parser": "3.13.0",
- "sanitize-html": "2.17.5",
+ "sanitize-html": "2.17.6",
"simplecc-wasm": "1.1.1",
"socks-proxy-agent": "10.1.0",
"source-map": "0.7.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fc9cfd37c42d..12c91279a315 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -221,8 +221,8 @@ importers:
specifier: 3.13.0
version: 3.13.0(patch_hash=afac79a31a3db94c953d49680bc5528468f051957d461e913d2e2dbf5cd22a8d)
sanitize-html:
- specifier: 2.17.5
- version: 2.17.5
+ specifier: 2.17.6
+ version: 2.17.6
simplecc-wasm:
specifier: 1.1.1
version: 1.1.1
@@ -3615,6 +3615,10 @@ packages:
dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+ dom-serializer@3.1.1:
+ resolution: {integrity: sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==}
+ engines: {node: '>=20.19.0'}
+
domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
@@ -3640,6 +3644,10 @@ packages:
domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+ domutils@4.0.2:
+ resolution: {integrity: sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==}
+ engines: {node: '>=20.19.0'}
+
dot-prop@6.0.1:
resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
engines: {node: '>=10'}
@@ -4192,6 +4200,10 @@ packages:
htmlparser2@10.1.0:
resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==}
+ htmlparser2@12.0.0:
+ resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==}
+ engines: {node: '>=20.19.0'}
+
htmlparser2@6.1.0:
resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
@@ -4878,8 +4890,8 @@ packages:
nan@1.8.4:
resolution: {integrity: sha512-609zQ1h3ApgH/94qmbbEklSrjcYYXCHnsWk4MAojq4OUk3tidhDYhPaMasMFKsZPZ96r4eQA1hbR2W4H7/77XA==}
- nanoid@3.3.15:
- resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -5207,8 +5219,8 @@ packages:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
- postcss@8.5.16:
- resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
+ postcss@8.5.18:
+ resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.5.18:
@@ -5473,8 +5485,9 @@ packages:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'}
- sanitize-html@2.17.5:
- resolution: {integrity: sha512-ZmU1joGRrvoyctKIiuwUxqR6moLoU2Wk+2bMccN6f7UwhAmwYDvWziqPxRDDN2Qip62NqnIrVrT9akbL6Wretg==}
+ sanitize-html@2.17.6:
+ resolution: {integrity: sha512-M4bo9tfv1yfhQZZKkc6dL07ALrGJtfvNOuhX3hU9AVPR/uPQ+nKOJBqTYc7LfMQblTW04mtSWDJWEyLvygJsLA==}
+ engines: {node: '>=22.12.0'}
sax@1.6.0:
resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
@@ -8890,6 +8903,12 @@ snapshots:
domhandler: 5.0.3
entities: 4.5.0
+ dom-serializer@3.1.1:
+ dependencies:
+ domelementtype: 3.0.0
+ domhandler: 6.0.1
+ entities: 8.0.0
+
domelementtype@2.3.0: {}
domelementtype@3.0.0: {}
@@ -8918,6 +8937,12 @@ snapshots:
domelementtype: 2.3.0
domhandler: 5.0.3
+ domutils@4.0.2:
+ dependencies:
+ dom-serializer: 3.1.1
+ domelementtype: 3.0.0
+ domhandler: 6.0.1
+
dot-prop@6.0.1:
dependencies:
is-obj: 2.0.0
@@ -9604,6 +9629,13 @@ snapshots:
domutils: 3.2.2
entities: 7.0.1
+ htmlparser2@12.0.0:
+ dependencies:
+ domelementtype: 3.0.0
+ domhandler: 6.0.1
+ domutils: 4.0.2
+ entities: 8.0.0
+
htmlparser2@6.1.0:
dependencies:
domelementtype: 2.3.0
@@ -10518,7 +10550,7 @@ snapshots:
nan@1.8.4:
optional: true
- nanoid@3.3.15: {}
+ nanoid@3.3.16: {}
nanoid@3.3.16: {}
@@ -10881,9 +10913,9 @@ snapshots:
pluralize@8.0.0: {}
- postcss@8.5.16:
+ postcss@8.5.18:
dependencies:
- nanoid: 3.3.15
+ nanoid: 3.3.16
picocolors: 1.1.1
source-map-js: 1.2.1
@@ -11233,15 +11265,15 @@ snapshots:
safe-stable-stringify@2.5.0: {}
- sanitize-html@2.17.5:
+ sanitize-html@2.17.6:
dependencies:
deepmerge: 4.3.1
escape-string-regexp: 4.0.0
- htmlparser2: 10.1.0
+ htmlparser2: 12.0.0
is-plain-object: 5.0.0
launder: 1.7.1
parse-srcset: 1.0.2
- postcss: 8.5.16
+ postcss: 8.5.18
sax@1.6.0: {}
From 752c1ae54ab9438b6c0135013ef575b8c2cec213 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:25:19 +0000
Subject: [PATCH 298/670] chore(deps): bump imapflow from 1.4.6 to 1.4.7
(#22699)
Bumps [imapflow](https://github.com/postalsys/imapflow) from 1.4.6 to 1.4.7.
- [Release notes](https://github.com/postalsys/imapflow/releases)
- [Changelog](https://github.com/postalsys/imapflow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postalsys/imapflow/compare/v1.4.6...v1.4.7)
---
updated-dependencies:
- dependency-name: imapflow
dependency-version: 1.4.7
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 27 ++++++++++++++++++++++-----
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 532eeab2b0ae..b0d721157ff8 100644
--- a/package.json
+++ b/package.json
@@ -96,7 +96,7 @@
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
"iconv-lite": "0.7.3",
- "imapflow": "1.4.6",
+ "imapflow": "1.4.7",
"instagram-private-api": "1.46.1",
"ioredis": "5.11.1",
"ip-regex": "5.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 12c91279a315..b7c7e7e954cf 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -143,8 +143,8 @@ importers:
specifier: 0.7.3
version: 0.7.3
imapflow:
- specifier: 1.4.6
- version: 1.4.6
+ specifier: 1.4.7
+ version: 1.4.7
instagram-private-api:
specifier: 1.46.1
version: 1.46.1
@@ -4285,8 +4285,8 @@ packages:
engines: {node: '>=6.9.0'}
hasBin: true
- imapflow@1.4.6:
- resolution: {integrity: sha512-rStOxV2g1WKKSkctKluUHSJB99mRT2l8Dr0W67owCHsCjqYSMY+AnvzXbaG3NGSpRziu6PWNik1/nVwL0Zlycg==}
+ imapflow@1.4.7:
+ resolution: {integrity: sha512-nK03WfN16inwm0//0Q70T21G0g4H9ArMVyzKDRjAshOVV8iw71PP9HTpAXNmWB9giZWfPiS+ltHByi37cqwSgg==}
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
@@ -4900,6 +4900,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@5.1.16:
resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
engines: {node: ^18 || >=20}
@@ -5227,6 +5232,10 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.18:
+ resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -9722,7 +9731,7 @@ snapshots:
image-size@0.7.5: {}
- imapflow@1.4.6:
+ imapflow@1.4.7:
dependencies:
'@zone-eu/mailsplit': 5.4.14
encoding-japanese: 2.2.0
@@ -10554,6 +10563,8 @@ snapshots:
nanoid@3.3.16: {}
+ nanoid@3.3.16: {}
+
nanoid@5.1.16: {}
narou@2.0.1: {}
@@ -10925,6 +10936,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.18:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postman-request@2.88.1-postman.48:
dependencies:
'@postman/form-data': 3.1.1
From b405c486b3831d004b5d51d293f9824588ad241d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:25:55 +0000
Subject: [PATCH 299/670] chore(deps): bump hono from 4.12.28 to 4.12.30
(#22698)
Bumps [hono](https://github.com/honojs/hono) from 4.12.28 to 4.12.30.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.28...v4.12.30)
---
updated-dependencies:
- dependency-name: hono
dependency-version: 4.12.30
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 51 +++++++++++++++++++++++++++++++++-----------------
2 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index b0d721157ff8..1e1cd0615c6b 100644
--- a/package.json
+++ b/package.json
@@ -91,7 +91,7 @@
"fanfou-sdk": "6.0.0",
"google-play-scraper": "10.1.3",
"header-generator": "2.1.82",
- "hono": "4.12.28",
+ "hono": "4.12.30",
"html-to-text": "10.0.0",
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b7c7e7e954cf..a2dd6cdc17d5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,10 +48,10 @@ importers:
version: 6.14.0
'@hono/node-server':
specifier: 2.0.8
- version: 2.0.8(hono@4.12.28)
+ version: 2.0.8(hono@4.12.30)
'@hono/zod-openapi':
specifier: 1.4.0
- version: 1.4.0(hono@4.12.28)(zod@4.4.3)
+ version: 1.4.0(hono@4.12.30)(zod@4.4.3)
'@jocmp/mercury-parser':
specifier: 3.0.9
version: 3.0.9
@@ -84,7 +84,7 @@ importers:
version: 0.0.25
'@scalar/hono-api-reference':
specifier: 0.11.9
- version: 0.11.9(hono@4.12.28)
+ version: 0.11.9(hono@4.12.30)
'@sentry/node':
specifier: 10.64.0
version: 10.64.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
@@ -128,8 +128,8 @@ importers:
specifier: 2.1.82
version: 2.1.82
hono:
- specifier: 4.12.28
- version: 4.12.28
+ specifier: 4.12.30
+ version: 4.12.30
html-to-text:
specifier: 10.0.0
version: 10.0.0
@@ -4179,8 +4179,8 @@ packages:
hmacsha1@1.0.0:
resolution: {integrity: sha512-4FP6J0oI8jqb6gLLl9tSwVdosWJ/AKSGJ+HwYf6Ixe4MUcEkst4uWzpVQrNOCin0fzTRQbXV8ePheU8WiiDYBw==}
- hono@4.12.28:
- resolution: {integrity: sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==}
+ hono@4.12.30:
+ resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==}
engines: {node: '>=16.9.0'}
hookable@6.1.1:
@@ -4905,6 +4905,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@5.1.16:
resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
engines: {node: ^18 || >=20}
@@ -5236,6 +5241,10 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.18:
+ resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -6900,21 +6909,21 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.8(hono@4.12.28)':
+ '@hono/node-server@2.0.8(hono@4.12.30)':
dependencies:
- hono: 4.12.28
+ hono: 4.12.30
- '@hono/zod-openapi@1.4.0(hono@4.12.28)(zod@4.4.3)':
+ '@hono/zod-openapi@1.4.0(hono@4.12.30)(zod@4.4.3)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.5.0(zod@4.4.3)
- '@hono/zod-validator': 0.8.0(hono@4.12.28)(zod@4.4.3)
- hono: 4.12.28
+ '@hono/zod-validator': 0.8.0(hono@4.12.30)(zod@4.4.3)
+ hono: 4.12.30
openapi3-ts: 4.6.0
zod: 4.4.3
- '@hono/zod-validator@0.8.0(hono@4.12.28)(zod@4.4.3)':
+ '@hono/zod-validator@0.8.0(hono@4.12.30)(zod@4.4.3)':
dependencies:
- hono: 4.12.28
+ hono: 4.12.30
zod: 4.4.3
'@humanfs/core@0.19.2':
@@ -7869,10 +7878,10 @@ snapshots:
'@scalar/helpers@0.9.0': {}
- '@scalar/hono-api-reference@0.11.9(hono@4.12.28)':
+ '@scalar/hono-api-reference@0.11.9(hono@4.12.30)':
dependencies:
'@scalar/client-side-rendering': 0.3.2
- hono: 4.12.28
+ hono: 4.12.30
'@scalar/schemas@0.7.2':
dependencies:
@@ -9611,7 +9620,7 @@ snapshots:
hmacsha1@1.0.0: {}
- hono@4.12.28: {}
+ hono@4.12.30: {}
hookable@6.1.1: {}
@@ -10565,6 +10574,8 @@ snapshots:
nanoid@3.3.16: {}
+ nanoid@3.3.16: {}
+
nanoid@5.1.16: {}
narou@2.0.1: {}
@@ -10942,6 +10953,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.18:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postman-request@2.88.1-postman.48:
dependencies:
'@postman/form-data': 3.1.1
From c83f1cb29cf58503066c103be2f7d94a53fec0b4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:26:41 +0000
Subject: [PATCH 300/670] chore(deps-dev): bump eslint-plugin-n from 18.2.1 to
18.2.2 (#22701)
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 18.2.1 to 18.2.2.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v18.2.1...v18.2.2)
---
updated-dependencies:
- dependency-name: eslint-plugin-n
dependency-version: 18.2.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 35 ++++++++++++++++++++++++++---------
2 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index 1e1cd0615c6b..0d6f3abcca08 100644
--- a/package.json
+++ b/package.json
@@ -177,7 +177,7 @@
"domhandler": "6.0.1",
"eslint": "10.6.0",
"eslint-nibble": "9.1.1",
- "eslint-plugin-n": "18.2.1",
+ "eslint-plugin-n": "18.2.2",
"eslint-plugin-regexp": "3.1.1",
"eslint-plugin-simple-import-sort": "13.0.0",
"eslint-plugin-unicorn": "71.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a2dd6cdc17d5..b1c74e34b864 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -381,8 +381,8 @@ importers:
specifier: 9.1.1
version: 9.1.1(@types/node@26.1.1)(eslint@10.6.0(jiti@2.6.1))
eslint-plugin-n:
- specifier: 18.2.1
- version: 18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2))
+ specifier: 18.2.2
+ version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2))
eslint-plugin-regexp:
specifier: 3.1.1
version: 3.1.1(eslint@10.6.0(jiti@2.6.1))
@@ -3711,8 +3711,8 @@ packages:
endpoint@0.4.5:
resolution: {integrity: sha512-oA2ALUF+d4Y0I8/WMV/0BuAZGHxfIdAygr9ZXP4rfzmp5zpYZmYKHKAbqRQnrE1YGdPhVg4D24CQkyx2qYEoHg==}
- enhanced-resolve@5.24.1:
- resolution: {integrity: sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==}
+ enhanced-resolve@5.24.2:
+ resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==}
engines: {node: '>=10.13.0'}
entities@2.2.0:
@@ -3810,8 +3810,8 @@ packages:
peerDependencies:
eslint: '>=8'
- eslint-plugin-n@18.2.1:
- resolution: {integrity: sha512-aO3C9//yq8JIvYOi/T+jPvcZ9hZzpwzbR8esrYpFtgE9vpbyM8kn42AQOtIqYspVmpaSWr8X+nrlQuAJYxXAaw==}
+ eslint-plugin-n@18.2.2:
+ resolution: {integrity: sha512-gOO0lIqwEjZ750kv9/SptCWArUoAZXJoBr0vYWTO2dCBxctHUXlBIigiC8xuxxr/NKqgIT6Ehz1xRcilj8a5cA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
eslint: '>=8.57.1'
@@ -4910,6 +4910,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.16:
+ resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
nanoid@5.1.16:
resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
engines: {node: ^18 || >=20}
@@ -5245,6 +5250,10 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.18:
+ resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -9012,7 +9021,7 @@ snapshots:
dependencies:
inherits: 2.0.4
- enhanced-resolve@5.24.1:
+ enhanced-resolve@5.24.2:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.3
@@ -9161,10 +9170,10 @@ snapshots:
eslint: 10.6.0(jiti@2.6.1)
eslint-compat-utils: 0.5.1(eslint@10.6.0(jiti@2.6.1))
- eslint-plugin-n@18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2)):
+ eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2)):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
- enhanced-resolve: 5.24.1
+ enhanced-resolve: 5.24.2
eslint: 10.6.0(jiti@2.6.1)
eslint-plugin-es-x: 7.8.0(eslint@10.6.0(jiti@2.6.1))
get-tsconfig: 4.14.0
@@ -10576,6 +10585,8 @@ snapshots:
nanoid@3.3.16: {}
+ nanoid@3.3.16: {}
+
nanoid@5.1.16: {}
narou@2.0.1: {}
@@ -10959,6 +10970,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.18:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postman-request@2.88.1-postman.48:
dependencies:
'@postman/form-data': 3.1.1
From 7d71294f50e0fe1a8d6180daedfd16e06102dd69 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 16:48:24 +0800
Subject: [PATCH 301/670] chore(deps): bump mitchellh/vouch/action/check-pr
from 1.4.2 to 1.5.0 (#22691)
Bumps [mitchellh/vouch/action/check-pr](https://github.com/mitchellh/vouch) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/mitchellh/vouch/releases)
- [Commits](https://github.com/mitchellh/vouch/compare/c6d80ead49839655b61b422700b7a3bc9d0804a9...d66fa29a64600490892131ad87597c30c91fcac4)
---
updated-dependencies:
- dependency-name: mitchellh/vouch/action/check-pr
dependency-version: 1.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/lint.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index b73f0f124b90..d5912c5d9a35 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -81,7 +81,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Check if PR author is denounced
- uses: mitchellh/vouch/action/check-pr@c6d80ead49839655b61b422700b7a3bc9d0804a9 # v1.4.2
+ uses: mitchellh/vouch/action/check-pr@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
with:
pr-number: ${{ github.event.pull_request.number }}
auto-close: true
From dd197c7856c1762e0c973ad367bb6a337186189a Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 08:50:03 +0000
Subject: [PATCH 302/670] style: auto format
---
pnpm-lock.yaml | 1399 +++++++++++-------------------------------------
1 file changed, 312 insertions(+), 1087 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b1c74e34b864..804924f74dd0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -304,13 +304,13 @@ importers:
version: 3.3.5
'@eslint/js':
specifier: 10.0.1
- version: 10.0.1(eslint@10.6.0(jiti@2.6.1))
+ version: 10.0.1(eslint@10.6.0)
'@oxlint/plugins':
specifier: 1.73.0
version: 1.73.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
- version: 5.10.0(eslint@10.6.0(jiti@2.6.1))
+ version: 5.10.0(eslint@10.6.0)
'@types/babel__preset-env':
specifier: 7.10.0
version: 7.10.0
@@ -358,13 +358,13 @@ importers:
version: 2.16.1
'@typescript-eslint/eslint-plugin':
specifier: 8.63.0
- version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
+ version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0))(@typescript/typescript6@6.0.2)(eslint@10.6.0)
'@typescript-eslint/parser':
specifier: 8.63.0
- version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
+ version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
'@vercel/nft':
specifier: 1.10.2
- version: 1.10.2(rollup@4.62.2)
+ version: 1.10.2
'@vitest/coverage-v8':
specifier: 4.1.10
version: 4.1.10(vitest@4.1.10)
@@ -376,25 +376,25 @@ importers:
version: 6.0.1
eslint:
specifier: 10.6.0
- version: 10.6.0(jiti@2.6.1)
+ version: 10.6.0
eslint-nibble:
specifier: 9.1.1
- version: 9.1.1(@types/node@26.1.1)(eslint@10.6.0(jiti@2.6.1))
+ version: 9.1.1(@types/node@26.1.1)(eslint@10.6.0)
eslint-plugin-n:
specifier: 18.2.2
- version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2))
+ version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0)
eslint-plugin-regexp:
specifier: 3.1.1
- version: 3.1.1(eslint@10.6.0(jiti@2.6.1))
+ version: 3.1.1(eslint@10.6.0)
eslint-plugin-simple-import-sort:
specifier: 13.0.0
- version: 13.0.0(eslint@10.6.0(jiti@2.6.1))
+ version: 13.0.0(eslint@10.6.0)
eslint-plugin-unicorn:
specifier: 71.1.0
- version: 71.1.0(eslint@10.6.0(jiti@2.6.1))
+ version: 71.1.0(eslint@10.6.0)
eslint-plugin-yml:
specifier: 3.6.0
- version: 3.6.0(eslint@10.6.0(jiti@2.6.1))
+ version: 3.6.0(eslint@10.6.0)
fast-string-width:
specifier: 3.0.2
version: 3.0.2
@@ -454,7 +454,7 @@ importers:
version: 11.0.0
tsdown:
specifier: 0.22.7
- version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12))
+ version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -466,10 +466,10 @@ importers:
version: 11.0.5
vite-tsconfig-paths:
specifier: 6.1.1
- version: 6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ version: 6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
vitest:
specifier: 4.1.10
- version: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
wrangler:
specifier: 4.110.0
version: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
@@ -694,344 +694,171 @@ packages:
'@dabh/diagnostics@2.0.8':
resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==}
- '@edge-runtime/primitives@4.1.0':
- resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==}
- engines: {node: '>=16'}
-
- '@edge-runtime/vm@3.2.0':
- resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==}
- engines: {node: '>=16'}
-
- '@emnapi/core@1.10.0':
- resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
-
'@emnapi/core@1.11.1':
resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
- '@emnapi/runtime@1.10.0':
- resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
-
'@emnapi/runtime@1.11.1':
resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
'@emnapi/runtime@1.11.2':
resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==}
- '@emnapi/wasi-threads@1.2.1':
- resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
-
'@emnapi/wasi-threads@1.2.2':
resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
'@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
- '@esbuild/aix-ppc64@0.27.7':
- resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
'@esbuild/aix-ppc64@0.28.1':
resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.27.7':
- resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
'@esbuild/android-arm64@0.28.1':
resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.27.7':
- resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
'@esbuild/android-arm@0.28.1':
resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.27.7':
- resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
'@esbuild/android-x64@0.28.1':
resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.27.7':
- resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
'@esbuild/darwin-arm64@0.28.1':
resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.27.7':
- resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
'@esbuild/darwin-x64@0.28.1':
resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.27.7':
- resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
'@esbuild/freebsd-arm64@0.28.1':
resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.27.7':
- resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
'@esbuild/freebsd-x64@0.28.1':
resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.27.7':
- resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
'@esbuild/linux-arm64@0.28.1':
resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.27.7':
- resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
'@esbuild/linux-arm@0.28.1':
resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.27.7':
- resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
'@esbuild/linux-ia32@0.28.1':
resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.27.7':
- resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
'@esbuild/linux-loong64@0.28.1':
resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.27.7':
- resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
'@esbuild/linux-mips64el@0.28.1':
resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.27.7':
- resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
'@esbuild/linux-ppc64@0.28.1':
resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.27.7':
- resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
'@esbuild/linux-riscv64@0.28.1':
resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.27.7':
- resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
'@esbuild/linux-s390x@0.28.1':
resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.27.7':
- resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
'@esbuild/linux-x64@0.28.1':
resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.27.7':
- resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
'@esbuild/netbsd-arm64@0.28.1':
resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.27.7':
- resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
'@esbuild/netbsd-x64@0.28.1':
resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.27.7':
- resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
'@esbuild/openbsd-arm64@0.28.1':
resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.27.7':
- resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
'@esbuild/openbsd-x64@0.28.1':
resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/openharmony-arm64@0.27.7':
- resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openharmony]
-
'@esbuild/openharmony-arm64@0.28.1':
resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
- '@esbuild/sunos-x64@0.27.7':
- resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
'@esbuild/sunos-x64@0.28.1':
resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.27.7':
- resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
'@esbuild/win32-arm64@0.28.1':
resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.27.7':
- resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
'@esbuild/win32-ia32@0.28.1':
resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.27.7':
- resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
'@esbuild/win32-x64@0.28.1':
resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==}
engines: {node: '>=18'}
@@ -1513,8 +1340,8 @@ packages:
resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.10':
- resolution: {integrity: sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w==}
+ '@octokit/request@10.0.11':
+ resolution: {integrity: sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==}
engines: {node: '>= 20'}
'@octokit/types@16.0.0':
@@ -1762,9 +1589,6 @@ packages:
cpu: [x64]
os: [win32]
- '@oxc-project/types@0.127.0':
- resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==}
-
'@oxc-project/types@0.139.0':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
@@ -2053,10 +1877,6 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@pkgr/core@0.2.10':
- resolution: {integrity: sha512-x6fFWCeak8aCGfqZfe6CXYt5xVjxe9Os1cIPmVRcToInKLjhJkRVXvJ/L3/1KxFkjDQdbZV/YsuLKqa8t/xKpA==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
-
'@poppinss/colors@4.1.6':
resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==}
@@ -2101,79 +1921,42 @@ packages:
'@protobufjs/pool@1.1.0':
resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
- '@protobufjs/utf8@1.1.1':
- resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==}
+ '@protobufjs/utf8@1.1.2':
+ resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==}
'@quansync/fs@1.0.0':
resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==}
- '@rolldown/binding-android-arm64@1.0.0-rc.17':
- resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
-
'@rolldown/binding-android-arm64@1.1.5':
resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.0.0-rc.17':
- resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
-
'@rolldown/binding-darwin-arm64@1.1.5':
resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.0-rc.17':
- resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
-
'@rolldown/binding-darwin-x64@1.1.5':
resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.0.0-rc.17':
- resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
-
'@rolldown/binding-freebsd-x64@1.1.5':
resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
- resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
'@rolldown/binding-linux-arm-gnueabihf@1.1.5':
resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
- resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-arm64-gnu@1.1.5':
resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2181,13 +1964,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
- resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
'@rolldown/binding-linux-arm64-musl@1.1.5':
resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2195,13 +1971,6 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
- resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-ppc64-gnu@1.1.5':
resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2209,13 +1978,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
- resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-s390x-gnu@1.1.5':
resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2223,13 +1985,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
- resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
'@rolldown/binding-linux-x64-gnu@1.1.5':
resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2237,13 +1992,6 @@ packages:
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
- resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
'@rolldown/binding-linux-x64-musl@1.1.5':
resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2251,55 +1999,29 @@ packages:
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
- resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
-
'@rolldown/binding-openharmony-arm64@1.1.5':
resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
- resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [wasm32]
-
'@rolldown/binding-wasm32-wasi@1.1.5':
resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
- resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
-
'@rolldown/binding-win32-arm64-msvc@1.1.5':
resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
- resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
-
'@rolldown/binding-win32-x64-msvc@1.1.5':
resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@rolldown/pluginutils@1.0.0-rc.17':
- resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==}
-
'@rolldown/pluginutils@1.0.1':
resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
@@ -2312,144 +2034,6 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.62.2':
- resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.62.2':
- resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.62.2':
- resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.62.2':
- resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-freebsd-arm64@4.62.2':
- resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.62.2':
- resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
- resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
- cpu: [arm]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
- resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
- resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-arm64-musl@4.62.2':
- resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
- resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
- cpu: [loong64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-loong64-musl@4.62.2':
- resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
- cpu: [loong64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
- resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
- resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
- cpu: [ppc64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
- resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
- cpu: [riscv64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
- resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
- cpu: [riscv64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
- resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-gnu@4.62.2':
- resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
- '@rollup/rollup-linux-x64-musl@4.62.2':
- resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
- '@rollup/rollup-openbsd-x64@4.62.2':
- resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
- cpu: [x64]
- os: [openbsd]
-
- '@rollup/rollup-openharmony-arm64@4.62.2':
- resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
- cpu: [arm64]
- os: [openharmony]
-
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
- resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
- resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-gnu@4.62.2':
- resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
- cpu: [x64]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.62.2':
- resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
- cpu: [x64]
- os: [win32]
-
'@rss3/api-core@0.0.25':
resolution: {integrity: sha512-YVH1QwF4P4r1JCYkkfK+UrKsa2PlJCOjViKhybRUanyR8TwwebpFPV+f5rcDDLRISlCdvhErpiFk9TntstYiCw==}
@@ -2612,8 +2196,8 @@ packages:
'@types/etag@1.8.4':
resolution: {integrity: sha512-f1z/UMth8gQ6636NBqhFmJ3zES7EuDcUnV6K1gl1osHp+85KPKX+VixYWUpqLkw1fftCagyHJjJOZjZkEi2rHw==}
- '@types/express-serve-static-core@5.1.1':
- resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==}
+ '@types/express-serve-static-core@5.1.2':
+ resolution: {integrity: sha512-d3KvEXBSo/lOAMc2u6fkyDHBvetBHeqD7wm/AcXfLpSOQwlmG9D/aQ0SFswVjv05p7ullQS7Mjohj6/VdbZuTg==}
'@types/express@5.0.6':
resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==}
@@ -2749,10 +2333,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/types@8.62.0':
- resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/types@8.63.0':
resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3194,8 +2774,8 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.10.42:
- resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==}
+ baseline-browser-mapping@2.10.43:
+ resolution: {integrity: sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -3237,8 +2817,8 @@ packages:
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
- brace-expansion@1.1.15:
- resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==}
+ brace-expansion@1.1.16:
+ resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==}
brace-expansion@2.1.2:
resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==}
@@ -3247,13 +2827,8 @@ packages:
resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==}
engines: {node: 18 || 20 || >=22}
- browserslist@4.28.4:
- resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- browserslist@4.28.5:
- resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==}
+ browserslist@4.28.6:
+ resolution: {integrity: sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -3302,11 +2877,8 @@ packages:
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
engines: {node: '>=16'}
- caniuse-lite@1.0.30001802:
- resolution: {integrity: sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==}
-
- caniuse-lite@1.0.30001803:
- resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==}
+ caniuse-lite@1.0.30001805:
+ resolution: {integrity: sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==}
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -3603,7 +3175,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, integrity: sha512-OG2C++3YYIzflFjA9irnexBs9eUS6KUOViAssV4oSo4W8HAl86TV+DoFYhdSXVaFd4z5htsM3zzs64WJybH4cQ==, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -3679,11 +3251,8 @@ packages:
engines: {node: '>=20'}
hasBin: true
- electron-to-chromium@1.5.387:
- resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==}
-
- electron-to-chromium@1.5.388:
- resolution: {integrity: sha512-Pl/aJaqOOxYxda3vcx1IKSJimwYXHDkEnGn0F+kG2EE68dDtx2uCinaS+Vih8Z91B9t8CSAbiF/HKyWcnXjhzw==}
+ electron-to-chromium@1.5.389:
+ resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -3741,8 +3310,12 @@ packages:
error-stack-parser-es@1.0.5:
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
- es-module-lexer@2.3.0:
- resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==}
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@2.3.1:
+ resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==}
es5-ext@0.10.64:
resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
@@ -3758,11 +3331,6 @@ packages:
es6-weak-map@2.0.3:
resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==}
- esbuild@0.27.7:
- resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==}
- engines: {node: '>=18'}
- hasBin: true
-
esbuild@0.28.1:
resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==}
engines: {node: '>=18'}
@@ -4276,8 +3844,8 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
- ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ ignore@7.0.6:
+ resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==}
engines: {node: '>= 4'}
image-size@0.7.5:
@@ -4450,10 +4018,6 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
- hasBin: true
-
js-beautify@2.0.3:
resolution: {integrity: sha512-cyFbh3tkPhknnTD/0bLf0T0yy2ZIbqL05mttzbt4y1Zfr7NxqXQZ62dkBLKs3oHH/lpjmDRAnciJiSUyOy8XwQ==}
engines: {node: '>=14'}
@@ -4518,8 +4082,8 @@ packages:
json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
- json-with-bigint@3.5.8:
- resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==}
+ json-with-bigint@3.5.10:
+ resolution: {integrity: sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==}
jsonfile@6.2.1:
resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
@@ -4578,6 +4142,80 @@ packages:
libqp@2.1.1:
resolution: {integrity: sha512-0Wd+GPz1O134cP62YU2GTOPNA7Qgl09XwCqM5zpBv87ERCXdfDtyKXvV7c9U22yWJh44QZqBocFnXN11K96qow==}
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
linkify-it@5.0.2:
resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==}
@@ -4895,26 +4533,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@3.3.16:
- resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- nanoid@3.3.16:
- resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- nanoid@3.3.16:
- resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- nanoid@3.3.16:
- resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
nanoid@5.1.16:
resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
engines: {node: ^18 || >=20}
@@ -4968,8 +4586,8 @@ packages:
peerDependencies:
undici: ^6
- node-releases@2.0.50:
- resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==}
+ node-releases@2.0.51:
+ resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==}
engines: {node: '>=18'}
nodemailer@9.0.3:
@@ -5212,10 +4830,6 @@ packages:
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- picomatch@4.0.4:
- resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
- engines: {node: '>=12'}
-
picomatch@4.0.5:
resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
engines: {node: '>=12'}
@@ -5238,22 +4852,6 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.18:
- resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.18:
- resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.18:
- resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.18:
- resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
- engines: {node: ^10 || ^12 || >=14}
-
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -5268,8 +4866,8 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
- protobufjs@7.6.4:
- resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==}
+ protobufjs@7.6.5:
+ resolution: {integrity: sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==}
engines: {node: '>=12.0.0'}
proxy-agent-negotiate@1.1.0:
@@ -5296,6 +4894,10 @@ packages:
resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==}
engines: {node: '>=0.6'}
+ qs@6.15.3:
+ resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==}
+ engines: {node: '>=0.6'}
+
qs@6.5.5:
resolution: {integrity: sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==}
engines: {node: '>=0.6'}
@@ -5486,21 +5088,11 @@ packages:
vue-tsc:
optional: true
- rolldown@1.0.0-rc.17:
- resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
rolldown@1.1.5:
resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rollup@4.62.2:
- resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
rss-parser@3.13.0:
resolution: {integrity: sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==}
@@ -5539,8 +5131,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- set-cookie-parser@3.1.1:
- resolution: {integrity: sha512-vM9SUhjsUYs6UeJUmygc5Ofm5eQGe85riob5ju6XCgFGJI5PLV4nrDAQpQjd+LkFBpAkADn5BQQpZ9EUNkyLuA==}
+ set-cookie-parser@3.1.2:
+ resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==}
sharp@0.34.5:
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
@@ -5640,8 +5232,8 @@ packages:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
- std-env@4.1.0:
- resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
+ std-env@4.2.0:
+ resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==}
stealthy-require@1.1.1:
resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==}
@@ -5675,8 +5267,8 @@ packages:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'}
- string-width@8.2.1:
- resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==}
+ string-width@8.2.2:
+ resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==}
engines: {node: '>=20'}
string_decoder@1.3.0:
@@ -5720,10 +5312,6 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
- synckit@0.11.12:
- resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
-
system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
@@ -5736,8 +5324,8 @@ packages:
resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
engines: {node: '>=6'}
- tar@7.5.19:
- resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==}
+ tar@7.5.20:
+ resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==}
engines: {node: '>=18'}
telegram@2.26.22:
@@ -5852,11 +5440,6 @@ packages:
resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==}
engines: {node: '>=14.0.0'}
- ts-declaration-location@1.0.7:
- resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==}
- peerDependencies:
- typescript: '>=4.0.0'
-
ts-xor@1.3.0:
resolution: {integrity: sha512-RLXVjliCzc1gfKQFLRpfeD0rrWmjnSTgj7+RFhoq3KRkUYa8LE/TIidYOzM5h+IdFBDSjjSgk9Lto9sdMfDFEA==}
@@ -6037,16 +5620,6 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- unrun@0.2.37:
- resolution: {integrity: sha512-AA7vDuYsgeSYVzJMm16UKA+aXFKhy7nFqW9z5l7q44K4ppFWZAMqYS58ePRZbugMLPH0fwwMzD5A8nP0avxwZQ==}
- engines: {node: '>=20.19.0'}
- hasBin: true
- peerDependencies:
- synckit: ^0.11.11
- peerDependenciesMeta:
- synckit:
- optional: true
-
until-async@3.0.2:
resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==}
@@ -6121,15 +5694,16 @@ packages:
peerDependencies:
vite: '*'
- vite@7.3.1:
- resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ vite@8.1.4:
+ resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.3.0
+ esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
- lightningcss: ^1.21.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
@@ -6140,12 +5714,14 @@ packages:
peerDependenciesMeta:
'@types/node':
optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
jiti:
optional: true
less:
optional: true
- lightningcss:
- optional: true
sass:
optional: true
sass-embedded:
@@ -6434,7 +6010,7 @@ snapshots:
'@octokit/core': 7.0.6
'@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
- '@octokit/request': 10.0.10
+ '@octokit/request': 10.0.11
'@octokit/request-error': 7.1.0
undici: 6.27.0
@@ -6453,7 +6029,7 @@ snapshots:
'@apm-js-collab/code-transformer-bundler-plugins@0.5.0':
dependencies:
'@apm-js-collab/code-transformer': 0.15.0
- es-module-lexer: 2.3.0
+ es-module-lexer: 2.3.1
magic-string: 0.30.21
module-details-from-path: 1.0.4
@@ -6583,7 +6159,7 @@ snapshots:
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
- vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
wrangler: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
@@ -6646,42 +6222,18 @@ snapshots:
enabled: 2.0.0
kuler: 2.0.0
- '@edge-runtime/primitives@4.1.0':
- optional: true
-
- '@edge-runtime/vm@3.2.0':
- dependencies:
- '@edge-runtime/primitives': 4.1.0
- optional: true
-
- '@emnapi/core@1.10.0':
- dependencies:
- '@emnapi/wasi-threads': 1.2.1
- tslib: 2.8.1
- optional: true
-
'@emnapi/core@1.11.1':
dependencies:
'@emnapi/wasi-threads': 1.2.2
tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.10.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.11.1':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.11.2':
+ '@emnapi/runtime@1.11.1':
dependencies:
tslib: 2.8.1
optional: true
- '@emnapi/wasi-threads@1.2.1':
+ '@emnapi/runtime@1.11.2':
dependencies:
tslib: 2.8.1
optional: true
@@ -6693,165 +6245,87 @@ snapshots:
'@epic-web/invariant@1.0.0': {}
- '@esbuild/aix-ppc64@0.27.7':
- optional: true
-
'@esbuild/aix-ppc64@0.28.1':
optional: true
- '@esbuild/android-arm64@0.27.7':
- optional: true
-
'@esbuild/android-arm64@0.28.1':
optional: true
- '@esbuild/android-arm@0.27.7':
- optional: true
-
'@esbuild/android-arm@0.28.1':
optional: true
- '@esbuild/android-x64@0.27.7':
- optional: true
-
'@esbuild/android-x64@0.28.1':
optional: true
- '@esbuild/darwin-arm64@0.27.7':
- optional: true
-
'@esbuild/darwin-arm64@0.28.1':
optional: true
- '@esbuild/darwin-x64@0.27.7':
- optional: true
-
'@esbuild/darwin-x64@0.28.1':
optional: true
- '@esbuild/freebsd-arm64@0.27.7':
- optional: true
-
'@esbuild/freebsd-arm64@0.28.1':
optional: true
- '@esbuild/freebsd-x64@0.27.7':
- optional: true
-
'@esbuild/freebsd-x64@0.28.1':
optional: true
- '@esbuild/linux-arm64@0.27.7':
- optional: true
-
'@esbuild/linux-arm64@0.28.1':
optional: true
- '@esbuild/linux-arm@0.27.7':
- optional: true
-
'@esbuild/linux-arm@0.28.1':
optional: true
- '@esbuild/linux-ia32@0.27.7':
- optional: true
-
'@esbuild/linux-ia32@0.28.1':
optional: true
- '@esbuild/linux-loong64@0.27.7':
- optional: true
-
'@esbuild/linux-loong64@0.28.1':
optional: true
- '@esbuild/linux-mips64el@0.27.7':
- optional: true
-
'@esbuild/linux-mips64el@0.28.1':
optional: true
- '@esbuild/linux-ppc64@0.27.7':
- optional: true
-
'@esbuild/linux-ppc64@0.28.1':
optional: true
- '@esbuild/linux-riscv64@0.27.7':
- optional: true
-
'@esbuild/linux-riscv64@0.28.1':
optional: true
- '@esbuild/linux-s390x@0.27.7':
- optional: true
-
'@esbuild/linux-s390x@0.28.1':
optional: true
- '@esbuild/linux-x64@0.27.7':
- optional: true
-
'@esbuild/linux-x64@0.28.1':
optional: true
- '@esbuild/netbsd-arm64@0.27.7':
- optional: true
-
'@esbuild/netbsd-arm64@0.28.1':
optional: true
- '@esbuild/netbsd-x64@0.27.7':
- optional: true
-
'@esbuild/netbsd-x64@0.28.1':
optional: true
- '@esbuild/openbsd-arm64@0.27.7':
- optional: true
-
'@esbuild/openbsd-arm64@0.28.1':
optional: true
- '@esbuild/openbsd-x64@0.27.7':
- optional: true
-
'@esbuild/openbsd-x64@0.28.1':
optional: true
- '@esbuild/openharmony-arm64@0.27.7':
- optional: true
-
'@esbuild/openharmony-arm64@0.28.1':
optional: true
- '@esbuild/sunos-x64@0.27.7':
- optional: true
-
'@esbuild/sunos-x64@0.28.1':
optional: true
- '@esbuild/win32-arm64@0.27.7':
- optional: true
-
'@esbuild/win32-arm64@0.28.1':
optional: true
- '@esbuild/win32-ia32@0.27.7':
- optional: true
-
'@esbuild/win32-ia32@0.28.1':
optional: true
- '@esbuild/win32-x64@0.27.7':
- optional: true
-
'@esbuild/win32-x64@0.28.1':
optional: true
- '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0)':
dependencies:
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
@@ -6886,9 +6360,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@10.0.1(eslint@10.6.0(jiti@2.6.1))':
+ '@eslint/js@10.0.1(eslint@10.6.0)':
optionalDependencies:
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
'@eslint/object-schema@3.0.5': {}
@@ -7186,7 +6660,7 @@ snapshots:
node-fetch: 2.7.0
nopt: 8.1.0
semver: 7.8.5
- tar: 7.5.19
+ tar: 7.5.20
transitivePeerDependencies:
- encoding
- supports-color
@@ -7202,13 +6676,6 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
- '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
- dependencies:
- '@emnapi/core': 1.10.0
- '@emnapi/runtime': 1.10.0
- '@tybys/wasm-util': 0.10.3
- optional: true
-
'@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)':
dependencies:
'@emnapi/core': 1.11.1
@@ -7236,7 +6703,7 @@ snapshots:
dependencies:
'@octokit/auth-token': 6.0.0
'@octokit/graphql': 9.0.3
- '@octokit/request': 10.0.10
+ '@octokit/request': 10.0.11
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
before-after-hook: 4.0.0
@@ -7249,7 +6716,7 @@ snapshots:
'@octokit/graphql@9.0.3':
dependencies:
- '@octokit/request': 10.0.10
+ '@octokit/request': 10.0.11
'@octokit/types': 16.0.0
universal-user-agent: 7.0.3
@@ -7269,13 +6736,13 @@ snapshots:
dependencies:
'@octokit/types': 16.0.0
- '@octokit/request@10.0.10':
+ '@octokit/request@10.0.11':
dependencies:
'@octokit/endpoint': 11.0.3
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
content-type: 2.0.0
- json-with-bigint: 3.5.8
+ json-with-bigint: 3.5.10
universal-user-agent: 7.0.3
'@octokit/types@16.0.0':
@@ -7478,9 +6945,6 @@ snapshots:
'@oxc-parser/binding-win32-x64-msvc@0.139.0':
optional: true
- '@oxc-project/types@0.127.0':
- optional: true
-
'@oxc-project/types@0.139.0': {}
'@oxfmt/binding-android-arm-eabi@0.58.0':
@@ -7622,9 +7086,6 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@pkgr/core@0.2.10':
- optional: true
-
'@poppinss/colors@4.1.6':
dependencies:
kleur: 4.1.5
@@ -7672,91 +7133,48 @@ snapshots:
'@protobufjs/pool@1.1.0': {}
- '@protobufjs/utf8@1.1.1': {}
+ '@protobufjs/utf8@1.1.2': {}
'@quansync/fs@1.0.0':
dependencies:
quansync: 1.0.0
- '@rolldown/binding-android-arm64@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-android-arm64@1.1.5':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-darwin-arm64@1.1.5':
optional: true
- '@rolldown/binding-darwin-x64@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-darwin-x64@1.1.5':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-freebsd-x64@1.1.5':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-arm-gnueabihf@1.1.5':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-arm64-gnu@1.1.5':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-arm64-musl@1.1.5':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-ppc64-gnu@1.1.5':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-s390x-gnu@1.1.5':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-x64-gnu@1.1.5':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-linux-x64-musl@1.1.5':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-openharmony-arm64@1.1.5':
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.0-rc.17':
- dependencies:
- '@emnapi/core': 1.10.0
- '@emnapi/runtime': 1.10.0
- '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
- optional: true
-
'@rolldown/binding-wasm32-wasi@1.1.5':
dependencies:
'@emnapi/core': 1.11.1
@@ -7764,105 +7182,19 @@ snapshots:
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-win32-arm64-msvc@1.1.5':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17':
- optional: true
-
'@rolldown/binding-win32-x64-msvc@1.1.5':
optional: true
- '@rolldown/pluginutils@1.0.0-rc.17':
- optional: true
-
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/pluginutils@5.4.0(rollup@4.62.2)':
+ '@rollup/pluginutils@5.4.0':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.5
- optionalDependencies:
- rollup: 4.62.2
-
- '@rollup/rollup-android-arm-eabi@4.62.2':
- optional: true
-
- '@rollup/rollup-android-arm64@4.62.2':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.62.2':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.62.2':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.62.2':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-loong64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.62.2':
- optional: true
-
- '@rollup/rollup-openbsd-x64@4.62.2':
- optional: true
-
- '@rollup/rollup-openharmony-arm64@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-x64-gnu@4.62.2':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.62.2':
- optional: true
'@rss3/api-core@0.0.25':
dependencies:
@@ -7983,15 +7315,15 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.6.1))':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
- '@typescript-eslint/types': 8.62.0
- eslint: 10.6.0(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@typescript-eslint/types': 8.63.0
+ eslint: 10.6.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
- picomatch: 4.0.4
+ picomatch: 4.0.5
'@tybys/wasm-util@0.10.3':
dependencies:
@@ -8043,7 +7375,7 @@ snapshots:
dependencies:
'@types/node': 26.1.1
- '@types/express-serve-static-core@5.1.1':
+ '@types/express-serve-static-core@5.1.2':
dependencies:
'@types/node': 26.1.1
'@types/qs': 6.15.1
@@ -8053,7 +7385,7 @@ snapshots:
'@types/express@5.0.6':
dependencies:
'@types/body-parser': 1.19.6
- '@types/express-serve-static-core': 5.1.1
+ '@types/express-serve-static-core': 5.1.2
'@types/serve-static': 2.2.0
'@types/fs-extra@11.0.4':
@@ -8155,30 +7487,30 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))':
+ '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0))(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
+ '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
'@typescript-eslint/scope-manager': 8.63.0
- '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
+ '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
'@typescript-eslint/visitor-keys': 8.63.0
- eslint: 10.6.0(jiti@2.6.1)
- ignore: 7.0.5
+ eslint: 10.6.0
+ ignore: 7.0.6
natural-compare: 1.4.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))':
+ '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
dependencies:
'@typescript-eslint/scope-manager': 8.63.0
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
'@typescript-eslint/visitor-keys': 8.63.0
debug: 4.4.3
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -8201,20 +7533,18 @@ snapshots:
dependencies:
typescript: '@typescript/typescript6@6.0.2'
- '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))':
+ '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
dependencies:
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))
+ '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
debug: 4.4.3
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.62.0': {}
-
'@typescript-eslint/types@8.63.0': {}
'@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2)':
@@ -8232,13 +7562,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))':
+ '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
'@typescript-eslint/scope-manager': 8.63.0
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -8312,10 +7642,10 @@ snapshots:
dependencies:
'@typescript/old': typescript@6.0.3
- '@vercel/nft@1.10.2(rollup@4.62.2)':
+ '@vercel/nft@1.10.2':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3
- '@rollup/pluginutils': 5.4.0(rollup@4.62.2)
+ '@rollup/pluginutils': 5.4.0
acorn: 8.17.0
acorn-import-attributes: 1.9.5(acorn@8.17.0)
async-sema: 3.1.1
@@ -8324,7 +7654,7 @@ snapshots:
glob: 13.0.6
graceful-fs: 4.2.11
node-gyp-build: 4.8.4
- picomatch: 4.0.4
+ picomatch: 4.0.5
resolve-from: 5.0.0
transitivePeerDependencies:
- encoding
@@ -8341,9 +7671,9 @@ snapshots:
istanbul-reports: 3.2.0
magicast: 0.5.3
obug: 2.1.3
- std-env: 4.1.0
+ std-env: 4.2.0
tinyrainbow: 3.1.0
- vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
'@vitest/expect@4.1.10':
dependencies:
@@ -8354,14 +7684,14 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.10
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
- vite: 7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
'@vitest/pretty-format@4.1.10':
dependencies:
@@ -8552,7 +7882,7 @@ snapshots:
base64-js@1.5.1: {}
- baseline-browser-mapping@2.10.42: {}
+ baseline-browser-mapping@2.10.43: {}
basic-ftp@5.3.1: {}
@@ -8585,7 +7915,7 @@ snapshots:
boolbase@1.0.0: {}
- brace-expansion@1.1.15:
+ brace-expansion@1.1.16:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
@@ -8598,21 +7928,13 @@ snapshots:
dependencies:
balanced-match: 4.0.4
- browserslist@4.28.4:
- dependencies:
- baseline-browser-mapping: 2.10.42
- caniuse-lite: 1.0.30001802
- electron-to-chromium: 1.5.387
- node-releases: 2.0.50
- update-browserslist-db: 1.2.3(browserslist@4.28.4)
-
- browserslist@4.28.5:
+ browserslist@4.28.6:
dependencies:
- baseline-browser-mapping: 2.10.42
- caniuse-lite: 1.0.30001803
- electron-to-chromium: 1.5.388
- node-releases: 2.0.50
- update-browserslist-db: 1.2.3(browserslist@4.28.5)
+ baseline-browser-mapping: 2.10.43
+ caniuse-lite: 1.0.30001805
+ electron-to-chromium: 1.5.389
+ node-releases: 2.0.51
+ update-browserslist-db: 1.2.3(browserslist@4.28.6)
buffer-equal-constant-time@1.0.1: {}
@@ -8660,9 +7982,7 @@ snapshots:
camelcase@8.0.0: {}
- caniuse-lite@1.0.30001802: {}
-
- caniuse-lite@1.0.30001803: {}
+ caniuse-lite@1.0.30001805: {}
caseless@0.12.0: {}
@@ -8720,7 +8040,7 @@ snapshots:
cli-truncate@5.2.0:
dependencies:
slice-ansi: 8.0.0
- string-width: 8.2.1
+ string-width: 8.2.2
cli-width@4.1.0: {}
@@ -8786,7 +8106,7 @@ snapshots:
core-js-compat@3.49.0:
dependencies:
- browserslist: 4.28.5
+ browserslist: 4.28.6
core-js@2.6.12: {}
@@ -8996,9 +8316,7 @@ snapshots:
minimatch: 10.2.5
semver: 7.8.5
- electron-to-chromium@1.5.387: {}
-
- electron-to-chromium@1.5.388: {}
+ electron-to-chromium@1.5.389: {}
emoji-regex@10.6.0: {}
@@ -9040,7 +8358,9 @@ snapshots:
error-stack-parser-es@1.0.5: {}
- es-module-lexer@2.3.0: {}
+ es-define-property@1.0.1: {}
+
+ es-module-lexer@2.3.1: {}
es5-ext@0.10.64:
dependencies:
@@ -9067,35 +8387,6 @@ snapshots:
es6-iterator: 2.0.3
es6-symbol: 3.1.4
- esbuild@0.27.7:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.27.7
- '@esbuild/android-arm': 0.27.7
- '@esbuild/android-arm64': 0.27.7
- '@esbuild/android-x64': 0.27.7
- '@esbuild/darwin-arm64': 0.27.7
- '@esbuild/darwin-x64': 0.27.7
- '@esbuild/freebsd-arm64': 0.27.7
- '@esbuild/freebsd-x64': 0.27.7
- '@esbuild/linux-arm': 0.27.7
- '@esbuild/linux-arm64': 0.27.7
- '@esbuild/linux-ia32': 0.27.7
- '@esbuild/linux-loong64': 0.27.7
- '@esbuild/linux-mips64el': 0.27.7
- '@esbuild/linux-ppc64': 0.27.7
- '@esbuild/linux-riscv64': 0.27.7
- '@esbuild/linux-s390x': 0.27.7
- '@esbuild/linux-x64': 0.27.7
- '@esbuild/netbsd-arm64': 0.27.7
- '@esbuild/netbsd-x64': 0.27.7
- '@esbuild/openbsd-arm64': 0.27.7
- '@esbuild/openbsd-x64': 0.27.7
- '@esbuild/openharmony-arm64': 0.27.7
- '@esbuild/sunos-x64': 0.27.7
- '@esbuild/win32-arm64': 0.27.7
- '@esbuild/win32-ia32': 0.27.7
- '@esbuild/win32-x64': 0.27.7
-
esbuild@0.28.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.28.1
@@ -9139,76 +8430,75 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-compat-utils@0.5.1(eslint@10.6.0(jiti@2.6.1)):
+ eslint-compat-utils@0.5.1(eslint@10.6.0):
dependencies:
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
semver: 7.8.5
- eslint-filtered-fix@0.3.0(eslint@10.6.0(jiti@2.6.1)):
+ eslint-filtered-fix@0.3.0(eslint@10.6.0):
dependencies:
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
optionator: 0.9.4
- eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.6.0(jiti@2.6.1)):
+ eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.6.0):
dependencies:
'@babel/code-frame': 7.29.7
'@inquirer/checkbox': 4.3.2(@types/node@26.1.1)
'@inquirer/confirm': 5.1.21(@types/node@26.1.1)
'@inquirer/select': 4.4.2(@types/node@26.1.1)
- eslint: 10.6.0(jiti@2.6.1)
- eslint-filtered-fix: 0.3.0(eslint@10.6.0(jiti@2.6.1))
+ eslint: 10.6.0
+ eslint-filtered-fix: 0.3.0(eslint@10.6.0)
optionator: 0.9.4
text-table: 0.2.0
yoctocolors: 2.1.2
transitivePeerDependencies:
- '@types/node'
- eslint-plugin-es-x@7.8.0(eslint@10.6.0(jiti@2.6.1)):
+ eslint-plugin-es-x@7.8.0(eslint@10.6.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
'@eslint-community/regexpp': 4.12.2
- eslint: 10.6.0(jiti@2.6.1)
- eslint-compat-utils: 0.5.1(eslint@10.6.0(jiti@2.6.1))
+ eslint: 10.6.0
+ eslint-compat-utils: 0.5.1(eslint@10.6.0)
- eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.6.1))(ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2)):
+ eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
enhanced-resolve: 5.24.2
- eslint: 10.6.0(jiti@2.6.1)
- eslint-plugin-es-x: 7.8.0(eslint@10.6.0(jiti@2.6.1))
+ eslint: 10.6.0
+ eslint-plugin-es-x: 7.8.0(eslint@10.6.0)
get-tsconfig: 4.14.0
globals: 15.15.0
globrex: 0.1.2
ignore: 5.3.2
semver: 7.8.5
optionalDependencies:
- ts-declaration-location: 1.0.7(@typescript/typescript6@6.0.2)
typescript: '@typescript/typescript6@6.0.2'
- eslint-plugin-regexp@3.1.1(eslint@10.6.0(jiti@2.6.1)):
+ eslint-plugin-regexp@3.1.1(eslint@10.6.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.7
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
jsdoc-type-pratt-parser: 7.2.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-simple-import-sort@13.0.0(eslint@10.6.0(jiti@2.6.1)):
+ eslint-plugin-simple-import-sort@13.0.0(eslint@10.6.0):
dependencies:
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
- eslint-plugin-unicorn@71.1.0(eslint@10.6.0(jiti@2.6.1)):
+ eslint-plugin-unicorn@71.1.0(eslint@10.6.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
- browserslist: 4.28.5
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ browserslist: 4.28.6
change-case: 5.4.4
ci-info: 4.4.0
core-js-compat: 3.49.0
detect-indent: 7.0.2
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
find-up-simple: 1.0.1
globals: 17.7.0
indent-string: 5.0.0
@@ -9221,14 +8511,14 @@ snapshots:
semver: 7.8.5
strip-indent: 4.1.1
- eslint-plugin-yml@3.6.0(eslint@10.6.0(jiti@2.6.1)):
+ eslint-plugin-yml@3.6.0(eslint@10.6.0):
dependencies:
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.7.2
'@ota-meshi/ast-token-store': 0.3.0
diff-sequences: 29.6.3
escape-string-regexp: 5.0.0
- eslint: 10.6.0(jiti@2.6.1)
+ eslint: 10.6.0
natural-compare: 1.4.0
yaml-eslint-parser: 2.1.0
@@ -9245,9 +8535,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.6.0(jiti@2.6.1):
+ eslint@10.6.0:
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.6.0
@@ -9277,8 +8567,6 @@ snapshots:
minimatch: 10.2.5
natural-compare: 1.4.0
optionator: 0.9.4
- optionalDependencies:
- jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@@ -9571,7 +8859,7 @@ snapshots:
gaxios: 7.1.3
google-auth-library: 10.5.0
google-logging-utils: 1.1.3
- qs: 6.14.2
+ qs: 6.15.3
url-template: 2.0.8
transitivePeerDependencies:
- supports-color
@@ -9615,7 +8903,7 @@ snapshots:
header-generator@2.1.82:
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.6
generative-bayesian-network: 2.1.83
ow: 0.28.2
tslib: 2.8.1
@@ -9623,7 +8911,7 @@ snapshots:
headers-polyfill@5.0.1:
dependencies:
'@types/set-cookie-parser': 2.4.10
- set-cookie-parser: 3.1.1
+ set-cookie-parser: 3.1.2
heap@0.2.7: {}
@@ -9745,7 +9033,7 @@ snapshots:
ignore@5.3.2: {}
- ignore@7.0.5: {}
+ ignore@7.0.6: {}
image-size@0.7.5: {}
@@ -9769,7 +9057,7 @@ snapshots:
import-in-the-middle@3.3.1:
dependencies:
cjs-module-lexer: 2.2.0
- es-module-lexer: 2.3.0
+ es-module-lexer: 2.3.1
module-details-from-path: 1.0.4
import-without-cache@0.4.0: {}
@@ -9915,9 +9203,6 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- jiti@2.6.1:
- optional: true
-
js-beautify@2.0.3:
dependencies:
config-chain: 1.1.13
@@ -9986,7 +9271,7 @@ snapshots:
json-stringify-safe@5.0.1: {}
- json-with-bigint@3.5.8: {}
+ json-with-bigint@3.5.10: {}
jsonfile@6.2.1:
dependencies:
@@ -10061,6 +9346,55 @@ snapshots:
libqp@2.1.1: {}
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
linkify-it@5.0.2:
dependencies:
uc.micro: 2.1.0
@@ -10068,7 +9402,7 @@ snapshots:
lint-staged@17.0.8:
dependencies:
listr2: 10.2.2
- picomatch: 4.0.4
+ picomatch: 4.0.5
string-argv: 0.3.2
tinyexec: 1.2.4
optionalDependencies:
@@ -10521,7 +9855,7 @@ snapshots:
minimatch@3.1.5:
dependencies:
- brace-expansion: 1.1.15
+ brace-expansion: 1.1.16
minimatch@9.0.9:
dependencies:
@@ -10535,7 +9869,7 @@ snapshots:
mixi2@0.2.2:
dependencies:
- protobufjs: 7.6.4
+ protobufjs: 7.6.5
mockdate@3.0.5: {}
@@ -10579,14 +9913,6 @@ snapshots:
nanoid@3.3.16: {}
- nanoid@3.3.16: {}
-
- nanoid@3.3.16: {}
-
- nanoid@3.3.16: {}
-
- nanoid@3.3.16: {}
-
nanoid@5.1.16: {}
narou@2.0.1: {}
@@ -10628,7 +9954,7 @@ snapshots:
transitivePeerDependencies:
- utf-8-validate
- node-releases@2.0.50: {}
+ node-releases@2.0.51: {}
nodemailer@9.0.3: {}
@@ -10920,8 +10246,6 @@ snapshots:
picocolors@1.1.1: {}
- picomatch@4.0.4: {}
-
picomatch@4.0.5: {}
pino-abstract-transport@3.0.0:
@@ -10946,30 +10270,6 @@ snapshots:
pluralize@8.0.0: {}
- postcss@8.5.18:
- dependencies:
- nanoid: 3.3.16
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.18:
- dependencies:
- nanoid: 3.3.16
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.18:
- dependencies:
- nanoid: 3.3.16
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.18:
- dependencies:
- nanoid: 3.3.16
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.5.18:
dependencies:
nanoid: 3.3.16
@@ -11007,7 +10307,7 @@ snapshots:
proto-list@1.2.4: {}
- protobufjs@7.6.4:
+ protobufjs@7.6.5:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
@@ -11017,7 +10317,7 @@ snapshots:
'@protobufjs/float': 1.0.2
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
- '@protobufjs/utf8': 1.1.1
+ '@protobufjs/utf8': 1.1.2
'@types/node': 26.1.1
long: 5.3.2
@@ -11035,6 +10335,11 @@ snapshots:
dependencies:
side-channel: '@nolyfill/side-channel@1.0.44'
+ qs@6.15.3:
+ dependencies:
+ es-define-property: 1.0.1
+ side-channel: '@nolyfill/side-channel@1.0.44'
+
qs@6.5.5: {}
quansync@1.0.0: {}
@@ -11231,28 +10536,6 @@ snapshots:
transitivePeerDependencies:
- oxc-resolver
- rolldown@1.0.0-rc.17:
- dependencies:
- '@oxc-project/types': 0.127.0
- '@rolldown/pluginutils': 1.0.0-rc.17
- optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.0-rc.17
- '@rolldown/binding-darwin-arm64': 1.0.0-rc.17
- '@rolldown/binding-darwin-x64': 1.0.0-rc.17
- '@rolldown/binding-freebsd-x64': 1.0.0-rc.17
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17
- '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17
- '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17
- '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17
- '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17
- '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17
- '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17
- '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17
- '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17
- '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17
- '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17
- optional: true
-
rolldown@1.1.5:
dependencies:
'@oxc-project/types': 0.139.0
@@ -11274,37 +10557,6 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.1.5
'@rolldown/binding-win32-x64-msvc': 1.1.5
- rollup@4.62.2:
- dependencies:
- '@types/estree': 1.0.9
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.62.2
- '@rollup/rollup-android-arm64': 4.62.2
- '@rollup/rollup-darwin-arm64': 4.62.2
- '@rollup/rollup-darwin-x64': 4.62.2
- '@rollup/rollup-freebsd-arm64': 4.62.2
- '@rollup/rollup-freebsd-x64': 4.62.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
- '@rollup/rollup-linux-arm-musleabihf': 4.62.2
- '@rollup/rollup-linux-arm64-gnu': 4.62.2
- '@rollup/rollup-linux-arm64-musl': 4.62.2
- '@rollup/rollup-linux-loong64-gnu': 4.62.2
- '@rollup/rollup-linux-loong64-musl': 4.62.2
- '@rollup/rollup-linux-ppc64-gnu': 4.62.2
- '@rollup/rollup-linux-ppc64-musl': 4.62.2
- '@rollup/rollup-linux-riscv64-gnu': 4.62.2
- '@rollup/rollup-linux-riscv64-musl': 4.62.2
- '@rollup/rollup-linux-s390x-gnu': 4.62.2
- '@rollup/rollup-linux-x64-gnu': 4.62.2
- '@rollup/rollup-linux-x64-musl': 4.62.2
- '@rollup/rollup-openbsd-x64': 4.62.2
- '@rollup/rollup-openharmony-arm64': 4.62.2
- '@rollup/rollup-win32-arm64-msvc': 4.62.2
- '@rollup/rollup-win32-ia32-msvc': 4.62.2
- '@rollup/rollup-win32-x64-gnu': 4.62.2
- '@rollup/rollup-win32-x64-msvc': 4.62.2
- fsevents: 2.3.3
-
rss-parser@3.13.0(patch_hash=afac79a31a3db94c953d49680bc5528468f051957d461e913d2e2dbf5cd22a8d):
dependencies:
entities: 7.0.1
@@ -11346,7 +10598,7 @@ snapshots:
semver@7.8.5: {}
- set-cookie-parser@3.1.1: {}
+ set-cookie-parser@3.1.2: {}
sharp@0.34.5:
dependencies:
@@ -11469,7 +10721,7 @@ snapshots:
statuses@2.0.2: {}
- std-env@4.1.0: {}
+ std-env@4.2.0: {}
stealthy-require@1.1.1: {}
@@ -11503,7 +10755,7 @@ snapshots:
get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
- string-width@8.2.1:
+ string-width@8.2.2:
dependencies:
get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
@@ -11542,18 +10794,13 @@ snapshots:
symbol-tree@3.2.4: {}
- synckit@0.11.12:
- dependencies:
- '@pkgr/core': 0.2.10
- optional: true
-
system-architecture@0.1.0: {}
tagged-tag@1.0.0: {}
tapable@2.3.3: {}
- tar@7.5.19:
+ tar@7.5.20:
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
@@ -11670,19 +10917,13 @@ snapshots:
ts-custom-error@3.3.1: {}
- ts-declaration-location@1.0.7(@typescript/typescript6@6.0.2):
- dependencies:
- picomatch: 4.0.5
- typescript: '@typescript/typescript6@6.0.2'
- optional: true
-
ts-xor@1.3.0: {}
tsconfck@3.1.6(@typescript/typescript6@6.0.2):
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)(unrun@0.2.37(synckit@0.11.12)):
+ tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11702,7 +10943,6 @@ snapshots:
optionalDependencies:
tsx: 4.23.0
typescript: '@typescript/typescript6@6.0.2'
- unrun: 0.2.37(synckit@0.11.12)
transitivePeerDependencies:
- '@ts-macro/tsc'
- '@typescript/native-preview'
@@ -11851,24 +11091,11 @@ snapshots:
universalify@2.0.1: {}
- unrun@0.2.37(synckit@0.11.12):
- dependencies:
- rolldown: 1.0.0-rc.17
- optionalDependencies:
- synckit: 0.11.12
- optional: true
-
until-async@3.0.2: {}
- update-browserslist-db@1.2.3(browserslist@4.28.4):
- dependencies:
- browserslist: 4.28.4
- escalade: 3.2.0
- picocolors: 1.1.1
-
- update-browserslist-db@1.2.3(browserslist@4.28.5):
+ update-browserslist-db@1.2.3(browserslist@4.28.6):
dependencies:
- browserslist: 4.28.5
+ browserslist: 4.28.6
escalade: 3.2.0
picocolors: 1.1.1
@@ -11926,55 +11153,53 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0)):
+ vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
tsconfck: 3.1.6(@typescript/typescript6@6.0.2)
- vite: 7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0):
+ vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0):
dependencies:
- esbuild: 0.27.7
- fdir: 6.5.0(picomatch@4.0.5)
+ lightningcss: 1.32.0
picomatch: 4.0.5
postcss: 8.5.18
- rollup: 4.62.2
+ rolldown: 1.1.5
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 26.1.1
+ esbuild: 0.28.1
fsevents: 2.3.3
- jiti: 2.6.1
tsx: 4.23.0
yaml: 2.9.0
- vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0)):
+ vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.10
- '@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
'@vitest/spy': 4.1.10
'@vitest/utils': 4.1.10
- es-module-lexer: 2.3.0
+ es-module-lexer: 2.3.1
expect-type: 1.4.0
magic-string: 0.30.21
obug: 2.1.3
pathe: 2.0.3
picomatch: 4.0.5
- std-env: 4.1.0
+ std-env: 4.2.0
tinybench: 2.9.0
tinyexec: 1.2.4
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 7.3.1(@types/node@26.1.1)(jiti@2.6.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
- '@edge-runtime/vm': 3.2.0
'@opentelemetry/api': 1.9.1
'@types/node': 26.1.1
'@vitest/coverage-v8': 4.1.10(vitest@4.1.10)
@@ -12085,7 +11310,7 @@ snapshots:
wrap-ansi@10.0.0:
dependencies:
ansi-styles: 6.2.3
- string-width: 8.2.1
+ string-width: 8.2.2
strip-ansi: 7.2.0
wrap-ansi@6.2.0:
From 5f94f8fdc4d35ff6ec90d7c72f7f495b41448628 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 16:53:06 +0800
Subject: [PATCH 303/670] chore(deps): bump
mitchellh/vouch/action/manage-by-issue (#22692)
Bumps [mitchellh/vouch/action/manage-by-issue](https://github.com/mitchellh/vouch) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/mitchellh/vouch/releases)
- [Commits](https://github.com/mitchellh/vouch/compare/c6d80ead49839655b61b422700b7a3bc9d0804a9...d66fa29a64600490892131ad87597c30c91fcac4)
---
updated-dependencies:
- dependency-name: mitchellh/vouch/action/manage-by-issue
dependency-version: 1.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/issue-command.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/issue-command.yml b/.github/workflows/issue-command.yml
index 09b5275b8143..48832e6346e9 100644
--- a/.github/workflows/issue-command.yml
+++ b/.github/workflows/issue-command.yml
@@ -52,7 +52,7 @@ jobs:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- id: vouch
- uses: mitchellh/vouch/action/manage-by-issue@c6d80ead49839655b61b422700b7a3bc9d0804a9 # v1.4.2
+ uses: mitchellh/vouch/action/manage-by-issue@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
with:
issue-id: ${{ github.event.issue.number }}
comment-id: ${{ github.event.comment.id }}
From 42c6d097f0025fa4fecb40424bfb786406a882c1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 17:10:39 +0800
Subject: [PATCH 304/670] chore(deps): bump tsx from 4.23.0 to 4.23.1 (#22700)
* chore(deps): bump tsx from 4.23.0 to 4.23.1
Bumps [tsx](https://github.com/privatenumber/tsx) from 4.23.0 to 4.23.1.
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.23.0...v4.23.1)
---
updated-dependencies:
- dependency-name: tsx
dependency-version: 4.23.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
* fix: resolve pnpm-lock.yaml merge conflicts
* fix: regenerate pnpm-lock.yaml to fix missing jiti@2.6.1 entry
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 590 ++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 555 insertions(+), 37 deletions(-)
diff --git a/package.json b/package.json
index 0d6f3abcca08..ca5906771fd4 100644
--- a/package.json
+++ b/package.json
@@ -131,7 +131,7 @@
"tldts": "7.4.8",
"tosource": "2.0.0-alpha.3",
"tough-cookie": "6.0.2",
- "tsx": "4.23.0",
+ "tsx": "4.23.1",
"twitter-api-v2": "1.29.0",
"ufo": "1.6.4",
"undici": "8.7.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 804924f74dd0..15487b34e193 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -248,8 +248,8 @@ importers:
specifier: 6.0.2
version: 6.0.2
tsx:
- specifier: 4.23.0
- version: 4.23.0
+ specifier: 4.23.1
+ version: 4.23.1
twitter-api-v2:
specifier: 1.29.0
version: 1.29.0
@@ -364,7 +364,7 @@ importers:
version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
'@vercel/nft':
specifier: 1.10.2
- version: 1.10.2
+ version: 1.10.2(rollup@4.62.2)
'@vitest/coverage-v8':
specifier: 4.1.10
version: 4.1.10(vitest@4.1.10)
@@ -454,7 +454,7 @@ importers:
version: 11.0.0
tsdown:
specifier: 0.22.7
- version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0)
+ version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -466,10 +466,10 @@ importers:
version: 11.0.5
vite-tsconfig-paths:
specifier: 6.1.1
- version: 6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
+ version: 6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
vitest:
specifier: 4.1.10
- version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
+ version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.110.0
version: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
@@ -709,156 +709,312 @@ packages:
'@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
+ '@esbuild/aix-ppc64@0.27.7':
+ resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.28.1':
resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
+ '@esbuild/android-arm64@0.27.7':
+ resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm64@0.28.1':
resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm@0.27.7':
+ resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.28.1':
resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
+ '@esbuild/android-x64@0.27.7':
+ resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.28.1':
resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
+ '@esbuild/darwin-arm64@0.27.7':
+ resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.28.1':
resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.7':
+ resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.28.1':
resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
+ '@esbuild/freebsd-arm64@0.27.7':
+ resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.28.1':
resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.7':
+ resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.28.1':
resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
+ '@esbuild/linux-arm64@0.27.7':
+ resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.28.1':
resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm@0.27.7':
+ resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.28.1':
resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
+ '@esbuild/linux-ia32@0.27.7':
+ resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-ia32@0.28.1':
resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-loong64@0.27.7':
+ resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-loong64@0.28.1':
resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.7':
+ resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.28.1':
resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.7':
+ resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.28.1':
resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.7':
+ resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.28.1':
resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-s390x@0.27.7':
+ resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.28.1':
resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-x64@0.27.7':
+ resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.28.1':
resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
+ '@esbuild/netbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-arm64@0.28.1':
resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.7':
+ resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.28.1':
resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
+ '@esbuild/openbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-arm64@0.28.1':
resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.7':
+ resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.28.1':
resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
+ '@esbuild/openharmony-arm64@0.27.7':
+ resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/openharmony-arm64@0.28.1':
resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
+ '@esbuild/sunos-x64@0.27.7':
+ resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.28.1':
resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
+ '@esbuild/win32-arm64@0.27.7':
+ resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.28.1':
resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-ia32@0.27.7':
+ resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.28.1':
resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-x64@0.27.7':
+ resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.28.1':
resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==}
engines: {node: '>=18'}
@@ -2034,6 +2190,144 @@ packages:
rollup:
optional: true
+ '@rollup/rollup-android-arm-eabi@4.62.2':
+ resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.62.2':
+ resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.62.2':
+ resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.62.2':
+ resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.62.2':
+ resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.62.2':
+ resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm64-musl@4.62.2':
+ resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-loong64-musl@4.62.2':
+ resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-riscv64-musl@4.62.2':
+ resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-s390x-gnu@4.62.2':
+ resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-gnu@4.62.2':
+ resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-musl@4.62.2':
+ resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-openbsd-x64@4.62.2':
+ resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.62.2':
+ resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.62.2':
+ resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.62.2':
+ resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.62.2':
+ resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.62.2':
+ resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
+ cpu: [x64]
+ os: [win32]
+
'@rss3/api-core@0.0.25':
resolution: {integrity: sha512-YVH1QwF4P4r1JCYkkfK+UrKsa2PlJCOjViKhybRUanyR8TwwebpFPV+f5rcDDLRISlCdvhErpiFk9TntstYiCw==}
@@ -3331,6 +3625,11 @@ packages:
es6-weak-map@2.0.3:
resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==}
+ esbuild@0.27.7:
+ resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==}
+ engines: {node: '>=18'}
+ hasBin: true
+
esbuild@0.28.1:
resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==}
engines: {node: '>=18'}
@@ -5093,6 +5392,11 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
+ rollup@4.62.2:
+ resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
rss-parser@3.13.0:
resolution: {integrity: sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==}
@@ -5494,8 +5798,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsx@4.23.0:
- resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==}
+ tsx@4.23.1:
+ resolution: {integrity: sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -5694,16 +5998,15 @@ packages:
peerDependencies:
vite: '*'
- vite@8.1.4:
- resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==}
+ vite@7.3.1:
+ resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
- '@vitejs/devtools': ^0.3.0
- esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
+ lightningcss: ^1.21.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
@@ -5714,14 +6017,12 @@ packages:
peerDependenciesMeta:
'@types/node':
optional: true
- '@vitejs/devtools':
- optional: true
- esbuild:
- optional: true
jiti:
optional: true
less:
optional: true
+ lightningcss:
+ optional: true
sass:
optional: true
sass-embedded:
@@ -6159,7 +6460,7 @@ snapshots:
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
- vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
@@ -6245,81 +6546,159 @@ snapshots:
'@epic-web/invariant@1.0.0': {}
+ '@esbuild/aix-ppc64@0.27.7':
+ optional: true
+
'@esbuild/aix-ppc64@0.28.1':
optional: true
+ '@esbuild/android-arm64@0.27.7':
+ optional: true
+
'@esbuild/android-arm64@0.28.1':
optional: true
+ '@esbuild/android-arm@0.27.7':
+ optional: true
+
'@esbuild/android-arm@0.28.1':
optional: true
+ '@esbuild/android-x64@0.27.7':
+ optional: true
+
'@esbuild/android-x64@0.28.1':
optional: true
+ '@esbuild/darwin-arm64@0.27.7':
+ optional: true
+
'@esbuild/darwin-arm64@0.28.1':
optional: true
+ '@esbuild/darwin-x64@0.27.7':
+ optional: true
+
'@esbuild/darwin-x64@0.28.1':
optional: true
+ '@esbuild/freebsd-arm64@0.27.7':
+ optional: true
+
'@esbuild/freebsd-arm64@0.28.1':
optional: true
+ '@esbuild/freebsd-x64@0.27.7':
+ optional: true
+
'@esbuild/freebsd-x64@0.28.1':
optional: true
+ '@esbuild/linux-arm64@0.27.7':
+ optional: true
+
'@esbuild/linux-arm64@0.28.1':
optional: true
+ '@esbuild/linux-arm@0.27.7':
+ optional: true
+
'@esbuild/linux-arm@0.28.1':
optional: true
+ '@esbuild/linux-ia32@0.27.7':
+ optional: true
+
'@esbuild/linux-ia32@0.28.1':
optional: true
+ '@esbuild/linux-loong64@0.27.7':
+ optional: true
+
'@esbuild/linux-loong64@0.28.1':
optional: true
+ '@esbuild/linux-mips64el@0.27.7':
+ optional: true
+
'@esbuild/linux-mips64el@0.28.1':
optional: true
+ '@esbuild/linux-ppc64@0.27.7':
+ optional: true
+
'@esbuild/linux-ppc64@0.28.1':
optional: true
+ '@esbuild/linux-riscv64@0.27.7':
+ optional: true
+
'@esbuild/linux-riscv64@0.28.1':
optional: true
+ '@esbuild/linux-s390x@0.27.7':
+ optional: true
+
'@esbuild/linux-s390x@0.28.1':
optional: true
+ '@esbuild/linux-x64@0.27.7':
+ optional: true
+
'@esbuild/linux-x64@0.28.1':
optional: true
+ '@esbuild/netbsd-arm64@0.27.7':
+ optional: true
+
'@esbuild/netbsd-arm64@0.28.1':
optional: true
+ '@esbuild/netbsd-x64@0.27.7':
+ optional: true
+
'@esbuild/netbsd-x64@0.28.1':
optional: true
+ '@esbuild/openbsd-arm64@0.27.7':
+ optional: true
+
'@esbuild/openbsd-arm64@0.28.1':
optional: true
+ '@esbuild/openbsd-x64@0.27.7':
+ optional: true
+
'@esbuild/openbsd-x64@0.28.1':
optional: true
+ '@esbuild/openharmony-arm64@0.27.7':
+ optional: true
+
'@esbuild/openharmony-arm64@0.28.1':
optional: true
+ '@esbuild/sunos-x64@0.27.7':
+ optional: true
+
'@esbuild/sunos-x64@0.28.1':
optional: true
+ '@esbuild/win32-arm64@0.27.7':
+ optional: true
+
'@esbuild/win32-arm64@0.28.1':
optional: true
+ '@esbuild/win32-ia32@0.27.7':
+ optional: true
+
'@esbuild/win32-ia32@0.28.1':
optional: true
+ '@esbuild/win32-x64@0.27.7':
+ optional: true
+
'@esbuild/win32-x64@0.28.1':
optional: true
@@ -7190,11 +7569,88 @@ snapshots:
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/pluginutils@5.4.0':
+ '@rollup/pluginutils@5.4.0(rollup@4.62.2)':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.5
+ optionalDependencies:
+ rollup: 4.62.2
+
+ '@rollup/rollup-android-arm-eabi@4.62.2':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-openbsd-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.62.2':
+ optional: true
'@rss3/api-core@0.0.25':
dependencies:
@@ -7642,10 +8098,10 @@ snapshots:
dependencies:
'@typescript/old': typescript@6.0.3
- '@vercel/nft@1.10.2':
+ '@vercel/nft@1.10.2(rollup@4.62.2)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3
- '@rollup/pluginutils': 5.4.0
+ '@rollup/pluginutils': 5.4.0(rollup@4.62.2)
acorn: 8.17.0
acorn-import-attributes: 1.9.5(acorn@8.17.0)
async-sema: 3.1.1
@@ -7673,7 +8129,7 @@ snapshots:
obug: 2.1.3
std-env: 4.2.0
tinyrainbow: 3.1.0
- vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
'@vitest/expect@4.1.10':
dependencies:
@@ -7684,14 +8140,14 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.10
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
- vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)
'@vitest/pretty-format@4.1.10':
dependencies:
@@ -8387,6 +8843,35 @@ snapshots:
es6-iterator: 2.0.3
es6-symbol: 3.1.4
+ esbuild@0.27.7:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.7
+ '@esbuild/android-arm': 0.27.7
+ '@esbuild/android-arm64': 0.27.7
+ '@esbuild/android-x64': 0.27.7
+ '@esbuild/darwin-arm64': 0.27.7
+ '@esbuild/darwin-x64': 0.27.7
+ '@esbuild/freebsd-arm64': 0.27.7
+ '@esbuild/freebsd-x64': 0.27.7
+ '@esbuild/linux-arm': 0.27.7
+ '@esbuild/linux-arm64': 0.27.7
+ '@esbuild/linux-ia32': 0.27.7
+ '@esbuild/linux-loong64': 0.27.7
+ '@esbuild/linux-mips64el': 0.27.7
+ '@esbuild/linux-ppc64': 0.27.7
+ '@esbuild/linux-riscv64': 0.27.7
+ '@esbuild/linux-s390x': 0.27.7
+ '@esbuild/linux-x64': 0.27.7
+ '@esbuild/netbsd-arm64': 0.27.7
+ '@esbuild/netbsd-x64': 0.27.7
+ '@esbuild/openbsd-arm64': 0.27.7
+ '@esbuild/openbsd-x64': 0.27.7
+ '@esbuild/openharmony-arm64': 0.27.7
+ '@esbuild/sunos-x64': 0.27.7
+ '@esbuild/win32-arm64': 0.27.7
+ '@esbuild/win32-ia32': 0.27.7
+ '@esbuild/win32-x64': 0.27.7
+
esbuild@0.28.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.28.1
@@ -9394,6 +9879,7 @@ snapshots:
lightningcss-linux-x64-musl: 1.32.0
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
+ optional: true
linkify-it@5.0.2:
dependencies:
@@ -10557,6 +11043,37 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.1.5
'@rolldown/binding-win32-x64-msvc': 1.1.5
+ rollup@4.62.2:
+ dependencies:
+ '@types/estree': 1.0.9
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.62.2
+ '@rollup/rollup-android-arm64': 4.62.2
+ '@rollup/rollup-darwin-arm64': 4.62.2
+ '@rollup/rollup-darwin-x64': 4.62.2
+ '@rollup/rollup-freebsd-arm64': 4.62.2
+ '@rollup/rollup-freebsd-x64': 4.62.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.62.2
+ '@rollup/rollup-linux-arm64-gnu': 4.62.2
+ '@rollup/rollup-linux-arm64-musl': 4.62.2
+ '@rollup/rollup-linux-loong64-gnu': 4.62.2
+ '@rollup/rollup-linux-loong64-musl': 4.62.2
+ '@rollup/rollup-linux-ppc64-gnu': 4.62.2
+ '@rollup/rollup-linux-ppc64-musl': 4.62.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.62.2
+ '@rollup/rollup-linux-riscv64-musl': 4.62.2
+ '@rollup/rollup-linux-s390x-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-musl': 4.62.2
+ '@rollup/rollup-openbsd-x64': 4.62.2
+ '@rollup/rollup-openharmony-arm64': 4.62.2
+ '@rollup/rollup-win32-arm64-msvc': 4.62.2
+ '@rollup/rollup-win32-ia32-msvc': 4.62.2
+ '@rollup/rollup-win32-x64-gnu': 4.62.2
+ '@rollup/rollup-win32-x64-msvc': 4.62.2
+ fsevents: 2.3.3
+
rss-parser@3.13.0(patch_hash=afac79a31a3db94c953d49680bc5528468f051957d461e913d2e2dbf5cd22a8d):
dependencies:
entities: 7.0.1
@@ -10923,7 +11440,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.0):
+ tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -10941,7 +11458,7 @@ snapshots:
tree-kill: 1.2.2
unconfig-core: 7.5.0
optionalDependencies:
- tsx: 4.23.0
+ tsx: 4.23.1
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- '@ts-macro/tsc'
@@ -10953,7 +11470,7 @@ snapshots:
tslib@2.8.1: {}
- tsx@4.23.0:
+ tsx@4.23.1:
dependencies:
esbuild: 0.28.1
optionalDependencies:
@@ -11153,34 +11670,35 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)):
+ vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
tsconfck: 3.1.6(@typescript/typescript6@6.0.2)
- vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0):
+ vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0):
dependencies:
- lightningcss: 1.32.0
+ esbuild: 0.27.7
+ fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
postcss: 8.5.18
- rolldown: 1.1.5
+ rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 26.1.1
- esbuild: 0.28.1
fsevents: 2.3.3
- tsx: 4.23.0
+ lightningcss: 1.32.0
+ tsx: 4.23.1
yaml: 2.9.0
- vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)):
+ vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.10
- '@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -11197,7 +11715,7 @@ snapshots:
tinyexec: 1.2.4
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(tsx@4.23.0)(yaml@2.9.0)
+ vite: 7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.1
From a65933680db51288c21a692067553a7ee98fcae8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 17:25:16 +0800
Subject: [PATCH 305/670] chore(deps-dev): bump @cloudflare/workers-types
(#22693)
Bumps the cloudflare group with 1 update in the / directory: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260710.1 to 5.20260713.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260713.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index ca5906771fd4..1a24cf9d6a54 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.4",
- "@cloudflare/workers-types": "5.20260710.1",
+ "@cloudflare/workers-types": "5.20260713.1",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.73.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 15487b34e193..e321dca38229 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.4
- version: 0.18.4(@cloudflare/workers-types@5.20260710.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.4(@cloudflare/workers-types@5.20260713.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260710.1
- version: 5.20260710.1
+ specifier: 5.20260713.1
+ version: 5.20260713.1
'@eslint/eslintrc':
specifier: 3.3.5
version: 3.3.5
@@ -472,7 +472,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.110.0
- version: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -641,8 +641,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260710.1':
- resolution: {integrity: sha512-4ooaY2Pb5XGwDn8Fzm6jnTAJkIX0R5LBvL9euQpp2T58sQItlAQd9yivAlkwGhpY5cM1u81/9HaXwKAjXwtyzA==}
+ '@cloudflare/workers-types@5.20260713.1':
+ resolution: {integrity: sha512-4YZE9YIzr3iP9eRUV4ekZozLLsYQFFKxmMJfAcsteCuzKJ7RJrLqcCxm1aMzTE9uFcy+D6A89WE+cjJadF2c9g==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -3469,7 +3469,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, integrity: sha512-OG2C++3YYIzflFjA9irnexBs9eUS6KUOViAssV4oSo4W8HAl86TV+DoFYhdSXVaFd4z5htsM3zzs64WJybH4cQ==, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -6453,7 +6453,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260708.1
- '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260710.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260713.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6461,7 +6461,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6483,7 +6483,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260708.1':
optional: true
- '@cloudflare/workers-types@5.20260710.1': {}
+ '@cloudflare/workers-types@5.20260713.1': {}
'@colors/colors@1.6.0': {}
@@ -11808,7 +11808,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260708.1
'@cloudflare/workerd-windows-64': 1.20260708.1
- wrangler@4.110.0(@cloudflare/workers-types@5.20260710.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260708.1)
@@ -11819,7 +11819,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260708.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260710.1
+ '@cloudflare/workers-types': 5.20260713.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From f10dc7dca9a759f01ef423d88e0939cf253fb4b3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 17:41:26 +0800
Subject: [PATCH 306/670] chore(deps-dev): bump the eslint group across 1
directory with 2 updates (#22694)
Bumps the eslint group with 2 updates in the / directory: [@eslint/eslintrc](https://github.com/eslint/eslintrc) and [eslint](https://github.com/eslint/eslint).
Updates `@eslint/eslintrc` from 3.3.5 to 3.3.6
- [Release notes](https://github.com/eslint/eslintrc/releases)
- [Changelog](https://github.com/eslint/eslintrc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslintrc/compare/eslintrc-v3.3.5...eslintrc-v3.3.6)
Updates `eslint` from 10.6.0 to 10.7.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.6.0...v10.7.0)
---
updated-dependencies:
- dependency-name: "@eslint/eslintrc"
dependency-version: 3.3.6
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: eslint
- dependency-name: eslint
dependency-version: 10.7.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
pnpm-lock.yaml | 132 ++++++++++++++++++++++++-------------------------
2 files changed, 68 insertions(+), 68 deletions(-)
diff --git a/package.json b/package.json
index 1a24cf9d6a54..5a0841810b71 100644
--- a/package.json
+++ b/package.json
@@ -150,7 +150,7 @@
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.4",
"@cloudflare/workers-types": "5.20260713.1",
- "@eslint/eslintrc": "3.3.5",
+ "@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.73.0",
"@stylistic/eslint-plugin": "5.10.0",
@@ -175,7 +175,7 @@
"@vitest/coverage-v8": "4.1.10",
"discord-api-types": "0.38.49",
"domhandler": "6.0.1",
- "eslint": "10.6.0",
+ "eslint": "10.7.0",
"eslint-nibble": "9.1.1",
"eslint-plugin-n": "18.2.2",
"eslint-plugin-regexp": "3.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e321dca38229..16b5e93ee281 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -300,17 +300,17 @@ importers:
specifier: 5.20260713.1
version: 5.20260713.1
'@eslint/eslintrc':
- specifier: 3.3.5
- version: 3.3.5
+ specifier: 3.3.6
+ version: 3.3.6
'@eslint/js':
specifier: 10.0.1
- version: 10.0.1(eslint@10.6.0)
+ version: 10.0.1(eslint@10.7.0)
'@oxlint/plugins':
specifier: 1.73.0
version: 1.73.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
- version: 5.10.0(eslint@10.6.0)
+ version: 5.10.0(eslint@10.7.0)
'@types/babel__preset-env':
specifier: 7.10.0
version: 7.10.0
@@ -358,10 +358,10 @@ importers:
version: 2.16.1
'@typescript-eslint/eslint-plugin':
specifier: 8.63.0
- version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0))(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@typescript-eslint/parser':
specifier: 8.63.0
- version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@vercel/nft':
specifier: 1.10.2
version: 1.10.2(rollup@4.62.2)
@@ -375,26 +375,26 @@ importers:
specifier: 6.0.1
version: 6.0.1
eslint:
- specifier: 10.6.0
- version: 10.6.0
+ specifier: 10.7.0
+ version: 10.7.0
eslint-nibble:
specifier: 9.1.1
- version: 9.1.1(@types/node@26.1.1)(eslint@10.6.0)
+ version: 9.1.1(@types/node@26.1.1)(eslint@10.7.0)
eslint-plugin-n:
specifier: 18.2.2
- version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.7.0)
eslint-plugin-regexp:
specifier: 3.1.1
- version: 3.1.1(eslint@10.6.0)
+ version: 3.1.1(eslint@10.7.0)
eslint-plugin-simple-import-sort:
specifier: 13.0.0
- version: 13.0.0(eslint@10.6.0)
+ version: 13.0.0(eslint@10.7.0)
eslint-plugin-unicorn:
specifier: 71.1.0
- version: 71.1.0(eslint@10.6.0)
+ version: 71.1.0(eslint@10.7.0)
eslint-plugin-yml:
specifier: 3.6.0
- version: 3.6.0(eslint@10.6.0)
+ version: 3.6.0(eslint@10.7.0)
fast-string-width:
specifier: 3.0.2
version: 3.0.2
@@ -1043,8 +1043,8 @@ packages:
resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/eslintrc@3.3.5':
- resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==}
+ '@eslint/eslintrc@3.3.6':
+ resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@10.0.1':
@@ -3729,8 +3729,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- eslint@10.6.0:
- resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==}
+ eslint@10.7.0:
+ resolution: {integrity: sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -6702,9 +6702,9 @@ snapshots:
'@esbuild/win32-x64@0.28.1':
optional: true
- '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0)':
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0)':
dependencies:
- eslint: 10.6.0
+ eslint: 10.7.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
@@ -6725,7 +6725,7 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
- '@eslint/eslintrc@3.3.5':
+ '@eslint/eslintrc@3.3.6':
dependencies:
ajv: 6.15.0
debug: 4.4.3
@@ -6739,9 +6739,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@10.0.1(eslint@10.6.0)':
+ '@eslint/js@10.0.1(eslint@10.7.0)':
optionalDependencies:
- eslint: 10.6.0
+ eslint: 10.7.0
'@eslint/object-schema@3.0.5': {}
@@ -7771,11 +7771,11 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0)':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.7.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
'@typescript-eslint/types': 8.63.0
- eslint: 10.6.0
+ eslint: 10.7.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -7943,15 +7943,15 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0))(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
+ '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@typescript-eslint/scope-manager': 8.63.0
- '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@typescript-eslint/visitor-keys': 8.63.0
- eslint: 10.6.0
+ eslint: 10.7.0
ignore: 7.0.6
natural-compare: 1.4.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
@@ -7959,14 +7959,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
+ '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@typescript-eslint/scope-manager': 8.63.0
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
'@typescript-eslint/visitor-keys': 8.63.0
debug: 4.4.3
- eslint: 10.6.0
+ eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -7989,13 +7989,13 @@ snapshots:
dependencies:
typescript: '@typescript/typescript6@6.0.2'
- '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
+ '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)
+ '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
debug: 4.4.3
- eslint: 10.6.0
+ eslint: 10.7.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -8018,13 +8018,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0)':
+ '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
'@typescript-eslint/scope-manager': 8.63.0
'@typescript-eslint/types': 8.63.0
'@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- eslint: 10.6.0
+ eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -8915,43 +8915,43 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-compat-utils@0.5.1(eslint@10.6.0):
+ eslint-compat-utils@0.5.1(eslint@10.7.0):
dependencies:
- eslint: 10.6.0
+ eslint: 10.7.0
semver: 7.8.5
- eslint-filtered-fix@0.3.0(eslint@10.6.0):
+ eslint-filtered-fix@0.3.0(eslint@10.7.0):
dependencies:
- eslint: 10.6.0
+ eslint: 10.7.0
optionator: 0.9.4
- eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.6.0):
+ eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.7.0):
dependencies:
'@babel/code-frame': 7.29.7
'@inquirer/checkbox': 4.3.2(@types/node@26.1.1)
'@inquirer/confirm': 5.1.21(@types/node@26.1.1)
'@inquirer/select': 4.4.2(@types/node@26.1.1)
- eslint: 10.6.0
- eslint-filtered-fix: 0.3.0(eslint@10.6.0)
+ eslint: 10.7.0
+ eslint-filtered-fix: 0.3.0(eslint@10.7.0)
optionator: 0.9.4
text-table: 0.2.0
yoctocolors: 2.1.2
transitivePeerDependencies:
- '@types/node'
- eslint-plugin-es-x@7.8.0(eslint@10.6.0):
+ eslint-plugin-es-x@7.8.0(eslint@10.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
'@eslint-community/regexpp': 4.12.2
- eslint: 10.6.0
- eslint-compat-utils: 0.5.1(eslint@10.6.0)
+ eslint: 10.7.0
+ eslint-compat-utils: 0.5.1(eslint@10.7.0)
- eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.6.0):
+ eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
enhanced-resolve: 5.24.2
- eslint: 10.6.0
- eslint-plugin-es-x: 7.8.0(eslint@10.6.0)
+ eslint: 10.7.0
+ eslint-plugin-es-x: 7.8.0(eslint@10.7.0)
get-tsconfig: 4.14.0
globals: 15.15.0
globrex: 0.1.2
@@ -8960,30 +8960,30 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- eslint-plugin-regexp@3.1.1(eslint@10.6.0):
+ eslint-plugin-regexp@3.1.1(eslint@10.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.7
- eslint: 10.6.0
+ eslint: 10.7.0
jsdoc-type-pratt-parser: 7.2.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-simple-import-sort@13.0.0(eslint@10.6.0):
+ eslint-plugin-simple-import-sort@13.0.0(eslint@10.7.0):
dependencies:
- eslint: 10.6.0
+ eslint: 10.7.0
- eslint-plugin-unicorn@71.1.0(eslint@10.6.0):
+ eslint-plugin-unicorn@71.1.0(eslint@10.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
browserslist: 4.28.6
change-case: 5.4.4
ci-info: 4.4.0
core-js-compat: 3.49.0
detect-indent: 7.0.2
- eslint: 10.6.0
+ eslint: 10.7.0
find-up-simple: 1.0.1
globals: 17.7.0
indent-string: 5.0.0
@@ -8996,14 +8996,14 @@ snapshots:
semver: 7.8.5
strip-indent: 4.1.1
- eslint-plugin-yml@3.6.0(eslint@10.6.0):
+ eslint-plugin-yml@3.6.0(eslint@10.7.0):
dependencies:
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.7.2
'@ota-meshi/ast-token-store': 0.3.0
diff-sequences: 29.6.3
escape-string-regexp: 5.0.0
- eslint: 10.6.0
+ eslint: 10.7.0
natural-compare: 1.4.0
yaml-eslint-parser: 2.1.0
@@ -9020,9 +9020,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.6.0:
+ eslint@10.7.0:
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.6.0
From 4638e5c8287835809dedb34887d7dc669eee9a51 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 18:30:20 +0800
Subject: [PATCH 307/670] chore(deps): bump @sentry/node from 10.64.0 to
10.65.0 (#22697)
* chore(deps): bump @sentry/node from 10.64.0 to 10.65.0
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 10.64.0 to 10.65.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.64.0...10.65.0)
---
updated-dependencies:
- dependency-name: "@sentry/node"
dependency-version: 10.65.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
* chore: fix workerd build with unrun
* chore: bump vite-tsconfig-paths
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 5 +-
pnpm-lock.yaml | 304 ++++++++++++++++++++++++++++++++++++++++++-------
2 files changed, 268 insertions(+), 41 deletions(-)
diff --git a/package.json b/package.json
index 5a0841810b71..8ebb54a98297 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
"@scalar/hono-api-reference": "0.11.9",
- "@sentry/node": "10.64.0",
+ "@sentry/node": "10.65.0",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
"cross-env": "10.1.0",
@@ -205,7 +205,8 @@
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
- "vite-tsconfig-paths": "6.1.1",
+ "unrun": "0.3.1",
+ "vite-tsconfig-paths": "7.0.0-alpha.1",
"vitest": "4.1.10",
"wrangler": "4.110.0",
"yaml-eslint-parser": "2.1.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 16b5e93ee281..59691ad2faba 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -86,8 +86,8 @@ importers:
specifier: 0.11.9
version: 0.11.9(hono@4.12.30)
'@sentry/node':
- specifier: 10.64.0
- version: 10.64.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
+ specifier: 10.65.0
+ version: 10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
cheerio:
specifier: 1.2.0
version: 1.2.0
@@ -454,7 +454,7 @@ importers:
version: 11.0.0
tsdown:
specifier: 0.22.7
- version: 0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.1)
+ version: 0.22.7(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -464,9 +464,12 @@ importers:
unified:
specifier: 11.0.5
version: 11.0.5
+ unrun:
+ specifier: 0.3.1
+ version: 0.3.1
vite-tsconfig-paths:
- specifier: 6.1.1
- version: 6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
+ specifier: 7.0.0-alpha.1
+ version: 7.0.0-alpha.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
vitest:
specifier: 4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
@@ -697,6 +700,9 @@ packages:
'@emnapi/core@1.11.1':
resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
+ '@emnapi/core@1.11.2':
+ resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==}
+
'@emnapi/runtime@1.11.1':
resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
@@ -1748,6 +1754,109 @@ packages:
'@oxc-project/types@0.139.0':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
+ '@oxc-resolver/binding-android-arm-eabi@11.24.2':
+ resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-resolver/binding-android-arm64@11.24.2':
+ resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-resolver/binding-darwin-arm64@11.24.2':
+ resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-darwin-x64@11.24.2':
+ resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-freebsd-x64@11.24.2':
+ resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
+ resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
+ resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
+ resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.24.2':
+ resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
+ resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
+ resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
+ resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
+ resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.24.2':
+ resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-x64-musl@11.24.2':
+ resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-openharmony-arm64@11.24.2':
+ resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-resolver/binding-wasm32-wasi@11.24.2':
+ resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
+ resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.24.2':
+ resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==}
+ cpu: [x64]
+ os: [win32]
+
'@oxfmt/binding-android-arm-eabi@0.58.0':
resolution: {integrity: sha512-Uz62sHduGGPftXtILGyxdSW4PX82rUg+rfdNqhsgxe881g4rIoXlIqmZQ6HVKcF4f+F8qMhdD03Bx5u7gmeTdg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2378,12 +2487,12 @@ packages:
resolution: {integrity: sha512-ZLP8bRdMON3prWE2tJyImuYscCxdcJeIPIhrOs/rgyFm3C1nCh1B6gdvPj3AZ5zW08oSFFCsq7T+tYEW3h8MNA==}
engines: {node: '>=14'}
- '@sentry/core@10.64.0':
- resolution: {integrity: sha512-HjojJcXD1l2qZ1AXje2s0XY/nYsaUt00wsM1HMBImA8vAClyPisFE/CC0/UD6pEvsGFhVgi8Dcxo7EN41uyeFw==}
+ '@sentry/core@10.65.0':
+ resolution: {integrity: sha512-3aqtmM5NgNGo45BNaaBzi0LPQZAw//NEL4HKS5fXm12pJMa4KEkze8DEKnkTEIrGnWaOJKamecHKlnNg/Mqf/Q==}
engines: {node: '>=18'}
- '@sentry/node-core@10.64.0':
- resolution: {integrity: sha512-dcma5uEWl0SXywY4vzrlOwuz4NBPyPhrzqL1NjlU6Di/OVbyYAZJPCwsR8XYDz73PGc5sU3qKSRoXWX56Ip0wA==}
+ '@sentry/node-core@10.65.0':
+ resolution: {integrity: sha512-U01X9mPT+jZnsLPmPWfBU67Ka+t/Sdd9RGAuvGoKdrI6N47a/9PDkM9oCW+kj0fmZwogZHTgSnzJU5oi3pImgA==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
@@ -2403,20 +2512,20 @@ packages:
'@opentelemetry/sdk-trace-base':
optional: true
- '@sentry/node@10.64.0':
- resolution: {integrity: sha512-rhNZ3CTqwdTQHo9Zd+NsoLyW69VIzbMcGMRX9y8W1A6runT4YH/MDhmT0U9oWfNZKN8ngqR/gfVMTnlYVQliCA==}
+ '@sentry/node@10.65.0':
+ resolution: {integrity: sha512-t35dcdyksysVch/m/XdLgGJqGKJhr9eMD30Ctn3TeQ8yMB0wNXySfjPR5Yg93fpjmfaHtzc6iYIXRAvgNVfrvA==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.64.0':
- resolution: {integrity: sha512-hXw8dwSSA9/9r3VGy0PO2SJp7g5/yH2+7Bak60EkOT21AT1BwFnVEsVQyZb+UHjG7UWne/jDbwdWPSUm/rtovw==}
+ '@sentry/opentelemetry@10.65.0':
+ resolution: {integrity: sha512-8C6FPvm3XBvUrkM52dX3Gz0p2H0Ij8t4sahUA+GTiCz0WM0fnyPeQPGC/b6I4jamV9UXyCZRnE1UEEGCoD+c7A==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
'@opentelemetry/core': ^1.30.1 || ^2.1.0
'@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
- '@sentry/server-utils@10.64.0':
- resolution: {integrity: sha512-d568Jhn3WBfm07dsdPsLh0q+qRj71xZEDZFsA33kizD0UuSCR8axtc2YW6aKdPhtuqgm9tHjSX35Q9vK/XmujA==}
+ '@sentry/server-utils@10.65.0':
+ resolution: {integrity: sha512-80toEFD6s+0Le7jrYB6pHWLF703WSg0WyavAWqrBGWG8JkREHgedAxzFYgoY5GlMI756qk6Ea7UzhJTHd2zAXA==}
engines: {node: '>=18'}
'@sindresorhus/is@4.6.0':
@@ -3469,7 +3578,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -4981,6 +5090,9 @@ packages:
resolution: {integrity: sha512-cf1TKZN+zc0lwqigeyXKzKVk5+vNRe99Or2+wVJsXLdlhJgC+gsIniYDfj/ZEBzCJ8Xm21ZG6YtMbR262CcS2w==}
engines: {node: ^20.19.0 || >=22.12.0}
+ oxc-resolver@11.24.2:
+ resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==}
+
oxfmt@0.58.0:
resolution: {integrity: sha512-8feG/7NVEHDVwc1OUpP6Pks+TnaDFUw2jLLFIMi5bcmmwxAX2wBQvjSzj62RRTYBf2Op1Wt8xbkmagmPTR5ETg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -5924,6 +6036,16 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
+ unrun@0.3.1:
+ resolution: {integrity: sha512-onIck/oNnCaytwths1ZVp1LK2Gq2hPoyFhiHebObuUXqR3S0uHuLLaBK8K6mRRgV7Ptip8AnNvaUsgzwWwBZuA==}
+ engines: {node: ^22.13.0 || >=24.0.0}
+ hasBin: true
+ peerDependencies:
+ synckit: ^0.11.11
+ peerDependenciesMeta:
+ synckit:
+ optional: true
+
until-async@3.0.2:
resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==}
@@ -5993,10 +6115,11 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vite-tsconfig-paths@6.1.1:
- resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==}
+ vite-tsconfig-paths@7.0.0-alpha.1:
+ resolution: {integrity: sha512-R2xUKqgU3lETsbx66sOoVj6/2hf9J9Aizavs03obMY5TxC99UbF1tM4bSfn1KZ8HxtOEaK3gdm/CEutS3yBvog==}
+ engines: {node: '>=18'}
peerDependencies:
- vite: '*'
+ vite: '>=5.0.0'
vite@7.3.1:
resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
@@ -6529,6 +6652,12 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@emnapi/core@1.11.2':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/runtime@1.11.1':
dependencies:
tslib: 2.8.1
@@ -7062,6 +7191,13 @@ snapshots:
'@tybys/wasm-util': 0.10.3
optional: true
+ '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)':
+ dependencies:
+ '@emnapi/core': 1.11.2
+ '@emnapi/runtime': 1.11.2
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
'@noble/hashes@2.2.0': {}
'@nolyfill/es-set-tostringtag@1.0.44': {}
@@ -7326,6 +7462,67 @@ snapshots:
'@oxc-project/types@0.139.0': {}
+ '@oxc-resolver/binding-android-arm-eabi@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-android-arm64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-arm64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-x64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-freebsd-x64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-musl@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-openharmony-arm64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-wasm32-wasi@11.24.2':
+ dependencies:
+ '@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
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.24.2':
+ optional: true
+
'@oxfmt/binding-android-arm-eabi@0.58.0':
optional: true
@@ -7706,15 +7903,15 @@ snapshots:
'@sentry/conventions@0.15.1': {}
- '@sentry/core@10.64.0':
+ '@sentry/core@10.65.0':
dependencies:
'@sentry/conventions': 0.15.1
- '@sentry/node-core@10.64.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node-core@10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
'@sentry/conventions': 0.15.1
- '@sentry/core': 10.64.0
- '@sentry/opentelemetry': 10.64.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/core': 10.65.0
+ '@sentry/opentelemetry': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
import-in-the-middle: 3.3.1
optionalDependencies:
'@opentelemetry/api': 1.9.1
@@ -7723,37 +7920,37 @@ snapshots:
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
- '@sentry/node@10.64.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node@10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.15.1
- '@sentry/core': 10.64.0
- '@sentry/node-core': 10.64.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/opentelemetry': 10.64.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/server-utils': 10.64.0
+ '@sentry/core': 10.65.0
+ '@sentry/node-core': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/opentelemetry': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/server-utils': 10.65.0
import-in-the-middle: 3.3.1
transitivePeerDependencies:
- '@opentelemetry/core'
- '@opentelemetry/exporter-trace-otlp-http'
- supports-color
- '@sentry/opentelemetry@10.64.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/opentelemetry@10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.15.1
- '@sentry/core': 10.64.0
+ '@sentry/core': 10.65.0
- '@sentry/server-utils@10.64.0':
+ '@sentry/server-utils@10.65.0':
dependencies:
'@apm-js-collab/code-transformer': 0.15.0
'@apm-js-collab/code-transformer-bundler-plugins': 0.5.0
'@apm-js-collab/tracing-hooks': 0.10.1
'@sentry/conventions': 0.15.1
- '@sentry/core': 10.64.0
+ '@sentry/core': 10.65.0
magic-string: 0.30.21
transitivePeerDependencies:
- supports-color
@@ -8752,7 +8949,9 @@ snapshots:
dotenv@17.4.2: {}
- dts-resolver@3.0.0: {}
+ dts-resolver@3.0.0(oxc-resolver@11.24.2):
+ optionalDependencies:
+ oxc-resolver: 11.24.2
eastasianwidth@0.2.0: {}
@@ -10566,6 +10765,28 @@ snapshots:
'@oxc-parser/binding-win32-ia32-msvc': 0.139.0
'@oxc-parser/binding-win32-x64-msvc': 0.139.0
+ oxc-resolver@11.24.2:
+ optionalDependencies:
+ '@oxc-resolver/binding-android-arm-eabi': 11.24.2
+ '@oxc-resolver/binding-android-arm64': 11.24.2
+ '@oxc-resolver/binding-darwin-arm64': 11.24.2
+ '@oxc-resolver/binding-darwin-x64': 11.24.2
+ '@oxc-resolver/binding-freebsd-x64': 11.24.2
+ '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2
+ '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2
+ '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-arm64-musl': 11.24.2
+ '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2
+ '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-x64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-x64-musl': 11.24.2
+ '@oxc-resolver/binding-openharmony-arm64': 11.24.2
+ '@oxc-resolver/binding-wasm32-wasi': 11.24.2
+ '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
+ '@oxc-resolver/binding-win32-x64-msvc': 11.24.2
+
oxfmt@0.58.0:
dependencies:
tinypool: 2.1.0
@@ -11008,9 +11229,9 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.8(@typescript/typescript6@6.0.2)(rolldown@1.1.5):
+ rolldown-plugin-dts@0.27.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5):
dependencies:
- dts-resolver: 3.0.0
+ dts-resolver: 3.0.0(oxc-resolver@11.24.2)
get-tsconfig: 5.0.0-beta.5
obug: 2.1.3
rolldown: 1.1.5
@@ -11440,7 +11661,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.7(@typescript/typescript6@6.0.2)(tsx@4.23.1):
+ tsdown@0.22.7(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11451,7 +11672,7 @@ snapshots:
obug: 2.1.3
picomatch: 4.0.5
rolldown: 1.1.5
- rolldown-plugin-dts: 0.27.8(@typescript/typescript6@6.0.2)(rolldown@1.1.5)
+ rolldown-plugin-dts: 0.27.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5)
semver: 7.8.5
tinyexec: 1.2.4
tinyglobby: 0.2.17
@@ -11460,6 +11681,7 @@ snapshots:
optionalDependencies:
tsx: 4.23.1
typescript: '@typescript/typescript6@6.0.2'
+ unrun: 0.3.1
transitivePeerDependencies:
- '@ts-macro/tsc'
- '@typescript/native-preview'
@@ -11608,6 +11830,10 @@ snapshots:
universalify@2.0.1: {}
+ unrun@0.3.1:
+ dependencies:
+ rolldown: 1.1.5
+
until-async@3.0.2: {}
update-browserslist-db@1.2.3(browserslist@4.28.6):
@@ -11670,10 +11896,10 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
+ vite-tsconfig-paths@7.0.0-alpha.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
dependencies:
debug: 4.4.3
- globrex: 0.1.2
+ oxc-resolver: 11.24.2
tsconfck: 3.1.6(@typescript/typescript6@6.0.2)
vite: 7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)
transitivePeerDependencies:
From 81db43553fe85be29a94bc6548b03e3ab81bae43 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 18:34:04 +0800
Subject: [PATCH 308/670] chore(deps): bump nixpkgs from `d407951` to `e7a3ca8`
(#22702)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `d407951` to `e7a3ca8`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/d407951447dcd00442e97087bf374aad70c04cea...e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index a4d516ae5730..03e2f3060215 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1783224372,
- "narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
+ "lastModified": 1783776592,
+ "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "d407951447dcd00442e97087bf374aad70c04cea",
+ "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3",
"type": "github"
},
"original": {
From a6708ba74a62d6f164ee52a27315106592ab3559 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Jul 2026 19:01:15 +0800
Subject: [PATCH 309/670] chore(deps): bump devenv from `d1fb321` to `407080f`
(#22703)
Bumps [devenv](https://github.com/cachix/devenv) from `d1fb321` to `407080f`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/d1fb321e73048d0e1e2b523580268ebb3df2ae90...407080febcc800abfd0fd688a0d513884aad620c)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 407080febcc800abfd0fd688a0d513884aad620c
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 03e2f3060215..b91aca95ad01 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1783538213,
- "narHash": "sha256-jNjKlmrejUrBgVAeiavlMLlkmC7ZEv1D9nhfuwMW5Q8=",
+ "lastModified": 1783911906,
+ "narHash": "sha256-VKpbIaPO4OkONY88DQHD/nOPSkV6o4wWMra7E4faaXU=",
"owner": "cachix",
"repo": "devenv",
- "rev": "d1fb321e73048d0e1e2b523580268ebb3df2ae90",
+ "rev": "407080febcc800abfd0fd688a0d513884aad620c",
"type": "github"
},
"original": {
From 9d85d4449254b06bfe67981a59068a71524d32d0 Mon Sep 17 00:00:00 2001
From: Dzming Li
Date: Mon, 13 Jul 2026 19:21:57 +0800
Subject: [PATCH 310/670] fix(route/zhihu): generate __zse_ck with JSDOM
(#22319)
* fix(route/zhihu): obtain __zse_ck from a browser session
`__zse_ck` is computed at runtime by Zhihu's JS from the device fingerprint
and `d_c0`, rotates every few days, and is cross-checked against `d_c0` by
the backend, so it has to come from a real browser session. Drive a browser
seeded with the configured cookies (including the `z_c0` login cookie that
most endpoints now require) to compute a fresh, consistent `__zse_ck`,
harvest the cookie jar, and cache it for 30 minutes so it is refreshed
automatically.
Recommended ZHIHU_COOKIES: "d_c0=...; z_c0=..." (omit `__zse_ck`).
* fix(route/zhihu): fetch posts profile via API instead of HTML
The user's HTML homepage (www.zhihu.com/people/:id) is now rate-limited
(403) more aggressively than the API, which broke /zhihu/posts on the
profile fetch even though the article-list API works. Read the profile
(name, headline, avatar) from /api/v4/members/:id instead.
* fix(route/zhihu): generate __zse_ck with JSDOM
* fix(route/zhihu): use members API for org posts
---------
Co-authored-by: DzmingLi
---
lib/routes/zhihu/posts.ts | 23 ++--
lib/routes/zhihu/utils.ts | 231 +++++++++++++++++++++++++++-----------
2 files changed, 181 insertions(+), 73 deletions(-)
diff --git a/lib/routes/zhihu/posts.ts b/lib/routes/zhihu/posts.ts
index 4be2629e3367..1366b4c9c929 100644
--- a/lib/routes/zhihu/posts.ts
+++ b/lib/routes/zhihu/posts.ts
@@ -1,11 +1,9 @@
-import { load } from 'cheerio';
-
import type { Route } from '@/types';
import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import type { Articles, Profile } from './types';
+import type { Articles } from './types';
import { getSignedHeader, header, processImage } from './utils';
export const route: Route = {
@@ -45,21 +43,26 @@ async function handler(ctx) {
const usertype = ctx.req.param('usertype');
const userProfile = await cache.tryGet(`zhihu:posts:profile:${id}`, async () => {
- const userAPIPath = `/${usertype === 'people' ? 'people' : 'org'}/${id}`;
+ // Read the profile from the API instead of scraping the user's HTML
+ // homepage, which is now rate-limited (403) more aggressively than the API.
+ const profileApiPath = `/api/v4/members/${id}`;
- const result = await ofetch(`https://www.zhihu.com${userAPIPath}`, {
+ const result = await ofetch(`https://www.zhihu.com${profileApiPath}`, {
headers: {
...header,
- ...(await getSignedHeader(`https://www.zhihu.com/${usertype}/${id}/`, userAPIPath)),
+ ...(await getSignedHeader(`https://www.zhihu.com/${usertype}/${id}/`, profileApiPath)),
Referer: `https://www.zhihu.com/${usertype}/${id}/`,
},
});
- const $ = load(result);
- const data = JSON.parse($('#js-initialData').text());
- return data?.initialState?.entities?.users[id] as Profile;
+
+ return {
+ name: result.name,
+ headline: result.headline,
+ avatarUrl: result.avatar_url,
+ };
});
- const apiPath = `/api/v4/${usertype === 'people' ? 'members' : 'org'}/${id}/articles?${new URLSearchParams({
+ const apiPath = `/api/v4/members/${id}/articles?${new URLSearchParams({
include:
'data[*].comment_count,suggest_edit,is_normal,thumbnail_extra_info,thumbnail,can_comment,comment_permission,admin_closed_comment,content,voteup_count,created,updated,upvoted_followees,voting,review_info,reaction_instruction,is_labeled,label_info;data[*].vessay_info;data[*].author.badge[?(type=best_answerer)].topics;data[*].author.vip_info;',
offset: '0',
diff --git a/lib/routes/zhihu/utils.ts b/lib/routes/zhihu/utils.ts
index 296b28bdf7d9..ab2422897ea8 100644
--- a/lib/routes/zhihu/utils.ts
+++ b/lib/routes/zhihu/utils.ts
@@ -1,9 +1,14 @@
+import { Script } from 'node:vm';
+
import { load } from 'cheerio';
+import { JSDOM, VirtualConsole } from 'jsdom';
import { config } from '@/config';
import cache from '@/utils/cache';
+import { generateHeaders } from '@/utils/header-generator';
import md5 from '@/utils/md5';
import ofetch from '@/utils/ofetch';
+import wait from '@/utils/wait';
import { encrypt as g_encrypt } from './execlib/x-zse-96-v3';
@@ -58,87 +63,187 @@ export const processImage = (content: string) => {
return $.html();
};
-export const getCookieValueByKey = (key: string) =>
- config.zhihu.cookies
+const getCookieValueFrom = (cookieStr: string | undefined, key: string) =>
+ cookieStr
?.split(';')
.map((e) => e.trim())
.find((e) => e.startsWith(key + '='))
?.slice(key.length + 1) || '';
-export const getSignedHeader = async (url: string, apiPath: string) => {
- if (config?.zhihu?.cookies) {
- const dc0 = getCookieValueByKey('d_c0');
-
- const xzse93 = '101_3_3.0';
- const f = `${xzse93}+${apiPath}+${dc0}`;
- const xzse96 = '2.0_' + g_encrypt(md5(f));
-
- // If __zse_ck is absent from ZHIHU_COOKIES, fetch it automatically from
- // Zhihu's public static JS. The value is site-wide (not user-specific)
- // and requires no login, but it expires and must be kept up to date.
- let cookieStr = config.zhihu.cookies;
- if (!getCookieValueByKey('__zse_ck')) {
- const zseCk = await cache.tryGet('zhihu:zse_ck', async () => {
- const response = await ofetch.raw('https://static.zhihu.com/zse-ck/v3.js');
- const script = await response._data.text();
- return script.match(/__g\.ck\|\|"([\w+/=\\]*)",_=/)?.[1] || '';
- });
- if (zseCk) {
- cookieStr += `; __zse_ck=${zseCk}`;
- }
- }
+export const getCookieValueByKey = (key: string) => getCookieValueFrom(config.zhihu.cookies as string | undefined, key);
- return {
- cookie: cookieStr,
- 'x-zse-96': xzse96,
- 'x-app-za': 'OS=Web',
- 'x-zse-93': xzse93,
- };
+let isUnreachableRuntimeErrorGuarded = false;
+const pendingZseCredentials = new Map>();
+
+const preventUnreachableRuntimeError = () => {
+ if (isUnreachableRuntimeErrorGuarded) {
+ return;
}
- // NOTICE: this method is out of date.
- // Because the API of zhihu.com has changed, we must use the value of `d_c0` (extracted from cookies) to calculate
- // `x-zse-96`. So first get `d_c0`, then get the actual data of a ZhiHu question. In this way, we don't need to
- // require users to set the cookie in environmental variables anymore.
-
- // fisrt: get cookie(dc_0) from zhihu.com
- const { dc0, zseCk } = await cache.tryGet('zhihu:cookies:d_c0', async () => {
- if (getCookieValueByKey('d_c0') && getCookieValueByKey('__zse_ck')) {
- return { dc0: getCookieValueByKey('d_c0'), zseCk: getCookieValueByKey('__zse_ck') };
+ isUnreachableRuntimeErrorGuarded = true;
+ process.on('unhandledRejection', (reason) => {
+ const error = reason as { name?: string; message?: string } | undefined;
+ if (error?.name === 'RuntimeError' && error.message === 'unreachable') {
+ return;
}
- const response1 = await ofetch.raw('https://static.zhihu.com/zse-ck/v3.js');
- const script = await response1._data.text();
- const zseCk = script.match(/__g\.ck\|\|"([\w+/=\\]*)",_=/)?.[1];
- const response2 = zseCk
- ? await ofetch.raw(url, {
- headers: {
- cookie: `${response1.headers
- .getSetCookie()
- .map((s) => s.split(';', 1)[0])
- .join('; ')}; __zse_ck=${zseCk}`,
- },
- })
- : null;
-
- const dc0 =
- (response2 || response1).headers
- .getSetCookie()
- .find((s) => s.startsWith('d_c0='))
+ throw reason;
+ });
+};
+
+const generateZseCk = async (url: string, apiPath: string, configuredDc0: string) => {
+ preventUnreachableRuntimeError();
+
+ // `__zse_ck` is checked against the user-agent that generated it.
+ const ua = generateHeaders()['user-agent'];
+ const headers = { 'user-agent': ua };
+
+ let dc0 = configuredDc0;
+ if (!dc0) {
+ const seed = await ofetch.raw('https://www.zhihu.com/explore', {
+ headers,
+ redirect: 'manual',
+ ignoreResponseError: true,
+ });
+ dc0 =
+ (seed.headers.getSetCookie?.() ?? [])
+ .find((line) => line.startsWith('d_c0='))
?.split(';', 1)[0]
- .trim()
.slice('d_c0='.length) || '';
+ }
+ if (!dc0) {
+ throw new Error('zhihu: failed to obtain a guest d_c0 cookie');
+ }
- return { dc0, zseCk };
+ const challenge = await ofetch.raw(`https://www.zhihu.com${apiPath}`, {
+ headers: {
+ ...headers,
+ cookie: `d_c0=${dc0}; __zse_ck=005_x-x`,
+ referer: url,
+ 'x-requested-with': 'fetch',
+ },
+ ignoreResponseError: true,
});
+ const html = challenge._data as string;
+ const meta = html.match(/id="zh-zse-ck"[^>]*content="([^"]*)"/)?.[1];
+ const hash = html.match(/zse-ck\/v4\/([a-f0-9]+)\.js/)?.[1];
+ if (!meta || !hash) {
+ throw new Error('zhihu: challenge page did not contain an URL to __zse_ck meta/script');
+ }
- // calculate x-zse-96, refer to https://github.com/srx-2000/spider_collection/issues/18
+ const vmScript = await ofetch(`https://static.zhihu.com/zse-ck/v4/${hash}.js`, {
+ headers,
+ parseResponse: (text) => text,
+ });
+ const dom = new JSDOM(``, {
+ url,
+ referrer: 'https://www.zhihu.com/',
+ runScripts: 'outside-only',
+ pretendToBeVisual: true,
+ virtualConsole: new VirtualConsole(),
+ });
+ const { window } = dom;
+ Object.defineProperties(window.navigator, {
+ userAgent: { value: ua, configurable: true },
+ webdriver: { value: false, configurable: true },
+ });
+ window.TextEncoder = TextEncoder;
+ window.TextDecoder = TextDecoder as typeof window.TextDecoder;
+ window.atob = (value: string) => Buffer.from(value, 'base64').toString('binary');
+ window.btoa = (value: string) => Buffer.from(value, 'binary').toString('base64');
+ Object.assign(window, { __g: {} });
+
+ const cookieDescriptor = Object.getOwnPropertyDescriptor(window.Document.prototype, 'cookie');
+ if (!cookieDescriptor?.get || !cookieDescriptor.set) {
+ window.close();
+ throw new Error('zhihu: JSDOM did not provide document.cookie accessors');
+ }
+ const tokenPromise = new Promise((resolve) => {
+ Object.defineProperty(window.document, 'cookie', {
+ configurable: true,
+ get: cookieDescriptor.get,
+ set(value: string) {
+ Reflect.apply(cookieDescriptor.set, window.document, [value]);
+ const token = value.match(/__zse_ck=([^;]+)/)?.[1];
+ if (token?.includes('-')) {
+ resolve(token);
+ }
+ },
+ });
+ });
+
+ let zseCk: string | undefined;
+ try {
+ // Zhihu's challenge is intentionally delivered as executable JavaScript.
+ new Script(vmScript).runInContext(dom.getInternalVMContext());
+ zseCk = (await Promise.race([tokenPromise, wait(3000)])) as string | undefined;
+ } finally {
+ window.close();
+ }
+ if (!zseCk) {
+ throw new Error('zhihu: WASM VM did not produce a __zse_ck');
+ }
+ return { dc0, zseCk, ua };
+};
+
+const getGeneratedZseCredentials = (url: string, apiPath: string, configuredDc0: string) => {
+ const cacheKey = `zhihu:zse-ck:v4:${configuredDc0 ? md5(configuredDc0) : 'guest'}`;
+ const pending = pendingZseCredentials.get(cacheKey);
+ if (pending) {
+ return pending;
+ }
+
+ const created = (async () => {
+ try {
+ return await cache.tryGet(cacheKey, () => generateZseCk(url, apiPath, configuredDc0), config.cache.contentExpire, false);
+ } finally {
+ pendingZseCredentials.delete(cacheKey);
+ }
+ })();
+ pendingZseCredentials.set(cacheKey, created);
+ return created;
+};
+
+const mergeGeneratedCookies = (configured: string, dc0: string, zseCk: string) => {
+ const remaining = configured
+ .split(';')
+ .map((pair) => pair.trim())
+ .filter((pair) => {
+ const name = pair.split('=', 1)[0];
+ return name && name !== 'd_c0' && name !== '__zse_ck';
+ });
+ return [`__zse_ck=${zseCk}`, `d_c0=${dc0}`, ...remaining].join('; ');
+};
+
+export const getSignedHeader = async (url: string, apiPath: string) => {
+ const configured = (config?.zhihu?.cookies as string | undefined) || '';
+
+ const configuredDc0 = getCookieValueFrom(configured, 'd_c0');
+ const configuredZseCk = getCookieValueFrom(configured, '__zse_ck');
+
+ // A configured pair may have been generated with a different user-agent, so
+ // preserve the previous behavior and trust it as-is. Generated credentials
+ // always return their matching user-agent.
+ let cookieStr: string;
+ let ua: string | undefined;
+ if (configuredDc0 && configuredZseCk) {
+ cookieStr = configured;
+ } else {
+ const credentials = await getGeneratedZseCredentials(url, apiPath, configuredDc0);
+ // Login cookies only belong to the configured d_c0 session. Do not mix
+ // an isolated z_c0 with a newly-created guest session.
+ cookieStr = configuredDc0 ? mergeGeneratedCookies(configured, credentials.dc0, credentials.zseCk) : `__zse_ck=${credentials.zseCk}; d_c0=${credentials.dc0}`;
+ ua = credentials.ua;
+ }
+
+ // Sign with the same `d_c0` that is sent, otherwise the backend rejects the
+ // request. Refer to https://github.com/srx-2000/spider_collection/issues/18
+ const dc0 = getCookieValueFrom(cookieStr, 'd_c0');
const xzse93 = '101_3_3.0';
const f = `${xzse93}+${apiPath}+${dc0}`;
const xzse96 = '2.0_' + g_encrypt(md5(f));
- const zc0 = getCookieValueByKey('z_c0');
-
return {
- cookie: `__zse_ck=${zseCk}; d_c0=${dc0}${zc0 ? `;z_c0=${zc0}` : ''}`,
+ cookie: cookieStr,
+ ...(ua && { 'user-agent': ua }),
'x-zse-96': xzse96,
'x-app-za': 'OS=Web',
'x-zse-93': xzse93,
From ecfefda0fe97b7b26c05c6b3bc491c137efb9e42 Mon Sep 17 00:00:00 2001
From: Yulong Ming
Date: Mon, 13 Jul 2026 22:35:39 +0800
Subject: [PATCH 311/670] fix(route/zaobao): update finance route path (#22705)
---
lib/routes/zaobao/realtime.ts | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/lib/routes/zaobao/realtime.ts b/lib/routes/zaobao/realtime.ts
index 1ce55e27f9d6..576082a4ed87 100644
--- a/lib/routes/zaobao/realtime.ts
+++ b/lib/routes/zaobao/realtime.ts
@@ -37,9 +37,7 @@ async function handler(ctx) {
case 'zfinance':
name = '财经';
- // this is for HK version; for SG version, it's redirected to
- // /realtime/finance
- sectionLink = '/finance/realtime';
+ sectionLink = '/realtime/finance';
break;
From 66b2c550b4de85d0e43da31d59a8b681eab41d66 Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Tue, 14 Jul 2026 00:37:46 +0800
Subject: [PATCH 312/670] chore: fix typing
---
.oxlintrc.json | 8 ++++++++
lib/routes/ai-bot/daily-ai-news.ts | 8 +++-----
lib/routes/dailypush/utils.ts | 11 ++++++-----
lib/routes/f95zone/thread.ts | 4 ++--
lib/routes/gigazine/en.ts | 6 +++---
lib/routes/whu/rsgis.ts | 5 +++--
6 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/.oxlintrc.json b/.oxlintrc.json
index 6a3ed7f705a3..b937c76587cd 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -602,6 +602,14 @@
{
"selector": "CallExpression[callee.property.name=\"map\"] > FunctionExpression",
"message": "Use an arrow function instead."
+ },
+ {
+ "selector": "TSTypeReference[typeName.name='ReturnType'] TSTypeQuery[exprName.name='load']",
+ "message": "Usage of ReturnType is not allowed. Please use appropriate types from cheerio instead."
+ },
+ {
+ "selector": "TSTypeReference[typeName.name='ReturnType'] TSTypeReference[typeName.name='CheerioAPI']",
+ "message": "Usage of ReturnType is not allowed. Please use appropriate types from cheerio and domhandler instead."
}
],
diff --git a/lib/routes/ai-bot/daily-ai-news.ts b/lib/routes/ai-bot/daily-ai-news.ts
index 13f42a0cf2ba..d40cb3a59618 100755
--- a/lib/routes/ai-bot/daily-ai-news.ts
+++ b/lib/routes/ai-bot/daily-ai-news.ts
@@ -1,13 +1,11 @@
-import { load } from 'cheerio';
+import { type Cheerio, type CheerioAPI, load } from 'cheerio';
+import type { Element } from 'domhandler';
import type { Data, DataItem, Route } from '@/types';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
-type CheerioInstance = ReturnType;
-type CheerioSelection = ReturnType;
-
interface DateContext {
currentYear: number;
prevMonth: number;
@@ -36,7 +34,7 @@ function parseDateString(dateStr: string, ctx: DateContext): Date | undefined {
return timezone(parseDate(`${ctx.currentYear}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`), 8);
}
-function processNewsList($: CheerioInstance, $newsList: CheerioSelection, ctx: DateContext): DataItem[] {
+function processNewsList($: CheerioAPI, $newsList: Cheerio, ctx: DateContext): DataItem[] {
let currentPubDate: Date | undefined;
return $newsList
diff --git a/lib/routes/dailypush/utils.ts b/lib/routes/dailypush/utils.ts
index 134eca52ff32..695f0cf756ed 100644
--- a/lib/routes/dailypush/utils.ts
+++ b/lib/routes/dailypush/utils.ts
@@ -1,5 +1,6 @@
-import type { CheerioAPI } from 'cheerio';
+import type { Cheerio, CheerioAPI } from 'cheerio';
import { load } from 'cheerio';
+import type { Element } from 'domhandler';
import type { BrowserContext } from 'patchright';
import type { DataItem } from '@/types';
@@ -68,7 +69,7 @@ function tryParseAsDate(text: string): Date | undefined {
/**
* Extract author from article element
*/
-function extractAuthor(article: ReturnType): DataItem['author'] {
+function extractAuthor(article: Cheerio): DataItem['author'] {
const container = article.find('.flex.items-center.gap-3').first();
if (container.length === 0) {
return undefined;
@@ -134,7 +135,7 @@ function extractAuthor(article: ReturnType): DataItem['author'] {
/**
* Extract categories/tags from article element
*/
-function extractCategories(article: ReturnType, $: CheerioAPI): string[] {
+function extractCategories(article: Cheerio, $: CheerioAPI): string[] {
return article
.find('a[href^="/"]')
.toArray()
@@ -155,7 +156,7 @@ function extractCategories(article: ReturnType, $: CheerioAPI): stri
/**
* Extract publication date from article element
*/
-function extractPubDate(article: ReturnType): Date | undefined {
+function extractPubDate(article: Cheerio): Date | undefined {
const container = article.find('.flex.items-center.gap-3').first();
if (container.length === 0) {
return undefined;
@@ -208,7 +209,7 @@ function extractPubDate(article: ReturnType): Date | undefined {
/**
* Parse a single article element into an ArticleItem
*/
-function parseArticle(article: ReturnType, $: CheerioAPI, baseUrl: string): (DataItem & ArticleItem) | null {
+function parseArticle(article: Cheerio, $: CheerioAPI, baseUrl: string): (DataItem & ArticleItem) | null {
// Find the title link in h2 > a
const titleLink = article.find('h2 a[href^="http"]');
if (titleLink.length === 0) {
diff --git a/lib/routes/f95zone/thread.ts b/lib/routes/f95zone/thread.ts
index 97c3b3963365..6bbf15b30eab 100644
--- a/lib/routes/f95zone/thread.ts
+++ b/lib/routes/f95zone/thread.ts
@@ -1,4 +1,4 @@
-import { load } from 'cheerio';
+import { type CheerioAPI, load } from 'cheerio';
import { config } from '@/config';
import type { DataItem, Route } from '@/types';
@@ -61,7 +61,7 @@ Note: If you want to track a specific post's content changes (e.g., first post w
const lastPageLink = $firstPage('ul.pageNav-main li.pageNav-page:last-child a').attr('href');
const totalPages = lastPageLink ? Number(lastPageLink.match(/page-(\d+)/)?.[1] || '1') : 1;
- const extractPosts = ($: ReturnType): DataItem[] =>
+ const extractPosts = ($: CheerioAPI): DataItem[] =>
$('article.message')
.toArray()
.flatMap((article) => {
diff --git a/lib/routes/gigazine/en.ts b/lib/routes/gigazine/en.ts
index 276ed27a800d..baa148eebc64 100644
--- a/lib/routes/gigazine/en.ts
+++ b/lib/routes/gigazine/en.ts
@@ -1,4 +1,4 @@
-import { load } from 'cheerio';
+import { type CheerioAPI, load } from 'cheerio';
import pMap from 'p-map';
import type { DataItem, Route } from '@/types';
@@ -19,12 +19,12 @@ const getRequestOptions = (referer: string) => ({
},
});
const getAbsoluteUrl = (path: string | undefined) => (path ? new URL(path, ROOT_URL).href : undefined);
-const getArticleAuthor = ($: ReturnType) =>
+const getArticleAuthor = ($: CheerioAPI) =>
$('#article .items p')
.text()
.match(/Posted by\s+(\S.*)$/)?.[1]
?.trim();
-const getArticleCategories = ($: ReturnType) => [
+const getArticleCategories = ($: CheerioAPI) => [
...new Set(
$('#article .items p a[href*="/gsc_news/en/C"]')
.toArray()
diff --git a/lib/routes/whu/rsgis.ts b/lib/routes/whu/rsgis.ts
index 283a7661100f..c9ce6eb71255 100644
--- a/lib/routes/whu/rsgis.ts
+++ b/lib/routes/whu/rsgis.ts
@@ -1,5 +1,6 @@
-import type { AnyNode, Cheerio } from 'cheerio';
+import type { Cheerio } from 'cheerio';
import { load } from 'cheerio';
+import type { Element } from 'domhandler';
import type { Context } from 'hono';
import type { DataItem, Route } from '@/types';
@@ -103,7 +104,7 @@ function checkExternal(link: string): boolean {
* @param element
* @returns A list of RSS meta node.
*/
-function parseListLinkDateItem(element: Cheerio, currentUrl: string) {
+function parseListLinkDateItem(element: Cheerio, currentUrl: string) {
const linkElement = element.find('a').first();
const title = linkElement.text();
const href = linkElement.attr('href');
From 875dbcec7464f31e63e5b49edfa16d649e8b285f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 08:15:41 +0000
Subject: [PATCH 313/670] chore(deps): bump @notionhq/client from 5.23.0 to
5.23.1 (#22714)
Bumps [@notionhq/client](https://github.com/makenotion/notion-sdk-js) from 5.23.0 to 5.23.1.
- [Release notes](https://github.com/makenotion/notion-sdk-js/releases)
- [Commits](https://github.com/makenotion/notion-sdk-js/compare/v5.23.0...v5.23.1)
---
updated-dependencies:
- dependency-name: "@notionhq/client"
dependency-version: 5.23.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 ++++++++++++++++------
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 8ebb54a98297..e296b0983bab 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"@hono/node-server": "2.0.8",
"@hono/zod-openapi": "1.4.0",
"@jocmp/mercury-parser": "3.0.9",
- "@notionhq/client": "5.23.0",
+ "@notionhq/client": "5.23.1",
"@opentelemetry/api": "1.9.1",
"@opentelemetry/exporter-prometheus": "0.220.0",
"@opentelemetry/exporter-trace-otlp-http": "0.220.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 59691ad2faba..68a7298136e6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -56,8 +56,8 @@ importers:
specifier: 3.0.9
version: 3.0.9
'@notionhq/client':
- specifier: 5.23.0
- version: 5.23.0
+ specifier: 5.23.1
+ version: 5.23.1
'@opentelemetry/api':
specifier: 1.9.1
version: 1.9.1
@@ -1463,8 +1463,8 @@ packages:
resolution: {integrity: sha512-y3SvzjuY1ygnzWA4Krwx/WaJAsTMP11DN+e21A8Fa8PW1oDtVB5NSRW7LWurAiS2oKRkuCgcjTYMkBuBkcPCRg==}
engines: {node: '>=12.4.0'}
- '@notionhq/client@5.23.0':
- resolution: {integrity: sha512-vTlkart40A89+l7+aRGNXLr+z3Af94dbaj/PFtommcwqCxWF9aByXmKgCGteD77It8u4ePE1DSL8eIVSANFGPg==}
+ '@notionhq/client@5.23.1':
+ resolution: {integrity: sha512-Y0jhh0ulft1x1c3uHFzBMHHQZzdfpCUV5JNFAZxzmjKEIkephQ0fle0g0ZqxTmHl1vP1ZOjzq0v47Ao4udBevw==}
engines: {node: '>=18'}
'@octokit/auth-token@6.0.0':
@@ -5263,6 +5263,10 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.19:
+ resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
postman-request@2.88.1-postman.48:
resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==}
engines: {node: '>= 16'}
@@ -7210,7 +7214,7 @@ snapshots:
'@nolyfill/side-channel@1.0.44': {}
- '@notionhq/client@5.23.0': {}
+ '@notionhq/client@5.23.1': {}
'@octokit/auth-token@6.0.0': {}
@@ -10983,6 +10987,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.19:
+ dependencies:
+ nanoid: 3.3.16
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postman-request@2.88.1-postman.48:
dependencies:
'@postman/form-data': 3.1.1
@@ -11911,7 +11921,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.18
+ postcss: 8.5.19
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
From cbdaca214037b5edb3cfe9cbe4bfbaeaf8e66ad6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:02:59 +0800
Subject: [PATCH 314/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22710)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260713.1 to 5.20260714.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260714.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index e296b0983bab..dc352642ba82 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.4",
- "@cloudflare/workers-types": "5.20260713.1",
+ "@cloudflare/workers-types": "5.20260714.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.73.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 68a7298136e6..e6682971bda2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.4
- version: 0.18.4(@cloudflare/workers-types@5.20260713.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.4(@cloudflare/workers-types@5.20260714.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260713.1
- version: 5.20260713.1
+ specifier: 5.20260714.1
+ version: 5.20260714.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -475,7 +475,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.110.0
- version: 4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -644,8 +644,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260713.1':
- resolution: {integrity: sha512-4YZE9YIzr3iP9eRUV4ekZozLLsYQFFKxmMJfAcsteCuzKJ7RJrLqcCxm1aMzTE9uFcy+D6A89WE+cjJadF2c9g==}
+ '@cloudflare/workers-types@5.20260714.1':
+ resolution: {integrity: sha512-HGCTQVIQwzqAMLrZBCgLDrWKMgOdi6yn+S0Do1rF6z7t8tVvNprQfa53V6EDRRwsVO92uN5gviX2SxASDINZfA==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -3578,7 +3578,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -6580,7 +6580,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260708.1
- '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260713.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260714.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6588,7 +6588,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6610,7 +6610,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260708.1':
optional: true
- '@cloudflare/workers-types@5.20260713.1': {}
+ '@cloudflare/workers-types@5.20260714.1': {}
'@colors/colors@1.6.0': {}
@@ -12044,7 +12044,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260708.1
'@cloudflare/workerd-windows-64': 1.20260708.1
- wrangler@4.110.0(@cloudflare/workers-types@5.20260713.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260708.1)
@@ -12055,7 +12055,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260708.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260713.1
+ '@cloudflare/workers-types': 5.20260714.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From ce488d728c6c400b879e31b74bc428341c38b5fa Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:18:00 +0800
Subject: [PATCH 315/670] chore(deps): bump devenv from `407080f` to `32f6747`
(#22716)
Bumps [devenv](https://github.com/cachix/devenv) from `407080f` to `32f6747`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/407080febcc800abfd0fd688a0d513884aad620c...32f6747aabbd5aeb7413bae53d7e01e224ec77bc)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 32f6747aabbd5aeb7413bae53d7e01e224ec77bc
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/flake.lock b/flake.lock
index b91aca95ad01..25853472584b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1783911906,
- "narHash": "sha256-VKpbIaPO4OkONY88DQHD/nOPSkV6o4wWMra7E4faaXU=",
+ "lastModified": 1783972995,
+ "narHash": "sha256-BIti2dNiCWjOpemU6z0sKaSa214XwdynXckvX5Sirkk=",
"owner": "cachix",
"repo": "devenv",
- "rev": "407080febcc800abfd0fd688a0d513884aad620c",
+ "rev": "32f6747aabbd5aeb7413bae53d7e01e224ec77bc",
"type": "github"
},
"original": {
@@ -226,11 +226,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
- "lastModified": 1780381423,
- "narHash": "sha256-S1BIJiQF4lRtJUKak0e97JwNvbe69/LW78YJJuB18Qk=",
+ "lastModified": 1783935112,
+ "narHash": "sha256-IAQ14nteIKXAz4cd75UcZrsHGEVJ7QNrkUwX9rmeZ/Y=",
"owner": "nix-community",
"repo": "nixd",
- "rev": "0e07c08c448a2995e7793d1098437b29bbe80b02",
+ "rev": "a64cd33e53b316b6b092ea0a966640cd2309bf3d",
"type": "github"
},
"original": {
From 42731bce179d81e86a995fb1b630d7bcddc6b37d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:27:44 +0800
Subject: [PATCH 316/670] chore(deps): bump @hono/zod-openapi from 1.4.0 to
1.5.0 (#22715)
Bumps [@hono/zod-openapi](https://github.com/honojs/middleware/tree/HEAD/packages/zod-openapi) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/honojs/middleware/releases)
- [Changelog](https://github.com/honojs/middleware/blob/main/packages/zod-openapi/CHANGELOG.md)
- [Commits](https://github.com/honojs/middleware/commits/@hono/zod-openapi@1.5.0/packages/zod-openapi)
---
updated-dependencies:
- dependency-name: "@hono/zod-openapi"
dependency-version: 1.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index dc352642ba82..336fe6f27fca 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.14.0",
"@hono/node-server": "2.0.8",
- "@hono/zod-openapi": "1.4.0",
+ "@hono/zod-openapi": "1.5.0",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.1",
"@opentelemetry/api": "1.9.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e6682971bda2..af5b302426b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -50,8 +50,8 @@ importers:
specifier: 2.0.8
version: 2.0.8(hono@4.12.30)
'@hono/zod-openapi':
- specifier: 1.4.0
- version: 1.4.0(hono@4.12.30)(zod@4.4.3)
+ specifier: 1.5.0
+ version: 1.5.0(hono@4.12.30)(zod@4.4.3)
'@jocmp/mercury-parser':
specifier: 3.0.9
version: 3.0.9
@@ -1098,8 +1098,8 @@ packages:
peerDependencies:
hono: ^4
- '@hono/zod-openapi@1.4.0':
- resolution: {integrity: sha512-AFchqR1N/NxfI4hUOSGI2/g8zLROxA1OE7Oh5JJFlTaGxhrdRyH+93gd0tIBpb0z8s9r8hUoNnaOBfHbdb4NMw==}
+ '@hono/zod-openapi@1.5.0':
+ resolution: {integrity: sha512-/clSBZWBht7G4SItlTo+4ElbdIUw+987kZYttaUUJWksJoqK905z1pBNTwoJm/P1ibA2ka8nNbqb39eOlreH2g==}
engines: {node: '>=16.0.0'}
peerDependencies:
hono: '>=4.10.0'
@@ -6908,7 +6908,7 @@ snapshots:
dependencies:
hono: 4.12.30
- '@hono/zod-openapi@1.4.0(hono@4.12.30)(zod@4.4.3)':
+ '@hono/zod-openapi@1.5.0(hono@4.12.30)(zod@4.4.3)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.5.0(zod@4.4.3)
'@hono/zod-validator': 0.8.0(hono@4.12.30)(zod@4.4.3)
From 07df8508d4a2762adca19d1a849c8fb0797de265 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:33:06 +0800
Subject: [PATCH 317/670] chore(deps-dev): bump the typescript-eslint group
with 2 updates (#22713)
Bumps the typescript-eslint group with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser).
Updates `@typescript-eslint/eslint-plugin` from 8.63.0 to 8.64.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.64.0/packages/eslint-plugin)
Updates `@typescript-eslint/parser` from 8.63.0 to 8.64.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.64.0/packages/parser)
---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
dependency-version: 8.64.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
dependency-version: 8.64.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: typescript-eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
pnpm-lock.yaml | 118 ++++++++++++++++++++++++++-----------------------
2 files changed, 64 insertions(+), 58 deletions(-)
diff --git a/package.json b/package.json
index 336fe6f27fca..499e4e3cf549 100644
--- a/package.json
+++ b/package.json
@@ -169,8 +169,8 @@
"@types/module-alias": "2.0.4",
"@types/node": "26.1.1",
"@types/sanitize-html": "2.16.1",
- "@typescript-eslint/eslint-plugin": "8.63.0",
- "@typescript-eslint/parser": "8.63.0",
+ "@typescript-eslint/eslint-plugin": "8.64.0",
+ "@typescript-eslint/parser": "8.64.0",
"@vercel/nft": "1.10.2",
"@vitest/coverage-v8": "4.1.10",
"discord-api-types": "0.38.49",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index af5b302426b7..5a4e27612a13 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -357,11 +357,11 @@ importers:
specifier: 2.16.1
version: 2.16.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.63.0
- version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ specifier: 8.64.0
+ version: 8.64.0(@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@typescript-eslint/parser':
- specifier: 8.63.0
- version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ specifier: 8.64.0
+ version: 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@vercel/nft':
specifier: 1.10.2
version: 1.10.2(rollup@4.62.2)
@@ -2698,39 +2698,39 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
- '@typescript-eslint/eslint-plugin@8.63.0':
- resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==}
+ '@typescript-eslint/eslint-plugin@8.64.0':
+ resolution: {integrity: sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.63.0
+ '@typescript-eslint/parser': ^8.64.0
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/parser@8.63.0':
- resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==}
+ '@typescript-eslint/parser@8.64.0':
+ resolution: {integrity: sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/project-service@8.63.0':
- resolution: {integrity: sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==}
+ '@typescript-eslint/project-service@8.64.0':
+ resolution: {integrity: sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/scope-manager@8.63.0':
- resolution: {integrity: sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==}
+ '@typescript-eslint/scope-manager@8.64.0':
+ resolution: {integrity: sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.63.0':
- resolution: {integrity: sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==}
+ '@typescript-eslint/tsconfig-utils@8.64.0':
+ resolution: {integrity: sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/type-utils@8.63.0':
- resolution: {integrity: sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==}
+ '@typescript-eslint/type-utils@8.64.0':
+ resolution: {integrity: sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
@@ -2740,21 +2740,25 @@ packages:
resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.63.0':
- resolution: {integrity: sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==}
+ '@typescript-eslint/types@8.64.0':
+ resolution: {integrity: sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.64.0':
+ resolution: {integrity: sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/utils@8.63.0':
- resolution: {integrity: sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==}
+ '@typescript-eslint/utils@8.64.0':
+ resolution: {integrity: sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/visitor-keys@8.63.0':
- resolution: {integrity: sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==}
+ '@typescript-eslint/visitor-keys@8.64.0':
+ resolution: {integrity: sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript/typescript-aix-ppc64@7.0.2':
@@ -8144,14 +8148,14 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/scope-manager': 8.63.0
- '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/visitor-keys': 8.63.0
+ '@typescript-eslint/parser': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/scope-manager': 8.64.0
+ '@typescript-eslint/type-utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/visitor-keys': 8.64.0
eslint: 10.7.0
ignore: 7.0.6
natural-compare: 1.4.0
@@ -8160,41 +8164,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
- '@typescript-eslint/scope-manager': 8.63.0
- '@typescript-eslint/types': 8.63.0
- '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/visitor-keys': 8.63.0
+ '@typescript-eslint/scope-manager': 8.64.0
+ '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/visitor-keys': 8.64.0
debug: 4.4.3
eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.63.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/project-service@8.64.0(@typescript/typescript6@6.0.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/types': 8.63.0
+ '@typescript-eslint/tsconfig-utils': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/types': 8.64.0
debug: 4.4.3
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.63.0':
+ '@typescript-eslint/scope-manager@8.64.0':
dependencies:
- '@typescript-eslint/types': 8.63.0
- '@typescript-eslint/visitor-keys': 8.63.0
+ '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/visitor-keys': 8.64.0
- '@typescript-eslint/tsconfig-utils@8.63.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/tsconfig-utils@8.64.0(@typescript/typescript6@6.0.2)':
dependencies:
typescript: '@typescript/typescript6@6.0.2'
- '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/type-utils@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
- '@typescript-eslint/types': 8.63.0
- '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
debug: 4.4.3
eslint: 10.7.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
@@ -8204,12 +8208,14 @@ snapshots:
'@typescript-eslint/types@8.63.0': {}
- '@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/types@8.64.0': {}
+
+ '@typescript-eslint/typescript-estree@8.64.0(@typescript/typescript6@6.0.2)':
dependencies:
- '@typescript-eslint/project-service': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/tsconfig-utils': 8.63.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/types': 8.63.0
- '@typescript-eslint/visitor-keys': 8.63.0
+ '@typescript-eslint/project-service': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/tsconfig-utils': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/visitor-keys': 8.64.0
debug: 4.4.3
minimatch: 10.2.5
semver: 7.8.5
@@ -8219,20 +8225,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/utils@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
- '@typescript-eslint/scope-manager': 8.63.0
- '@typescript-eslint/types': 8.63.0
- '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/scope-manager': 8.64.0
+ '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.63.0':
+ '@typescript-eslint/visitor-keys@8.64.0':
dependencies:
- '@typescript-eslint/types': 8.63.0
+ '@typescript-eslint/types': 8.64.0
eslint-visitor-keys: 5.0.1
'@typescript/typescript-aix-ppc64@7.0.2':
From 7daf53788aea2957ccc9ef0e85e018069ff669ee Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:40:04 +0800
Subject: [PATCH 318/670] chore(deps-dev): bump the oxc group across 1
directory with 5 updates (#22712)
Bumps the oxc group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [@oxlint/plugins](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugins) | `1.73.0` | `1.74.0` |
| [oxc-parser](https://github.com/oxc-project/oxc/tree/HEAD/napi/parser) | `0.139.0` | `0.140.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.58.0` | `0.59.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.73.0` | `1.74.0` |
| [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.73.0` | `1.74.0` |
Updates `@oxlint/plugins` from 1.73.0 to 1.74.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.74.0/npm/oxlint-plugins)
Updates `oxc-parser` from 0.139.0 to 0.140.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/napi/parser/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/crates_v0.140.0/napi/parser)
Updates `oxfmt` from 0.58.0 to 0.59.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.59.0/npm/oxfmt)
Updates `oxlint` from 1.73.0 to 1.74.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.74.0/npm/oxlint)
Updates `oxlint-plugin-eslint` from 1.73.0 to 1.74.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint-plugin-eslint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.74.0/npm/oxlint-plugin-eslint)
---
updated-dependencies:
- dependency-name: "@oxlint/plugins"
dependency-version: 1.74.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxc-parser
dependency-version: 0.140.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxfmt
dependency-version: 0.59.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxlint
dependency-version: 1.74.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxlint-plugin-eslint
dependency-version: 1.74.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 10 +-
pnpm-lock.yaml | 529 +++++++++++++++++++++++++------------------------
2 files changed, 272 insertions(+), 267 deletions(-)
diff --git a/package.json b/package.json
index 499e4e3cf549..6b9f085ec27d 100644
--- a/package.json
+++ b/package.json
@@ -152,7 +152,7 @@
"@cloudflare/workers-types": "5.20260714.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
- "@oxlint/plugins": "1.73.0",
+ "@oxlint/plugins": "1.74.0",
"@stylistic/eslint-plugin": "5.10.0",
"@types/babel__preset-env": "7.10.0",
"@types/crypto-js": "4.2.2",
@@ -192,10 +192,10 @@
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
- "oxc-parser": "0.139.0",
- "oxfmt": "0.58.0",
- "oxlint": "1.73.0",
- "oxlint-plugin-eslint": "1.73.0",
+ "oxc-parser": "0.140.0",
+ "oxfmt": "0.59.0",
+ "oxlint": "1.74.0",
+ "oxlint-plugin-eslint": "1.74.0",
"oxlint-tsgolint": "0.24.0",
"remark": "15.0.1",
"remark-gfm": "4.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5a4e27612a13..c3b4000c941f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -306,8 +306,8 @@ importers:
specifier: 10.0.1
version: 10.0.1(eslint@10.7.0)
'@oxlint/plugins':
- specifier: 1.73.0
- version: 1.73.0
+ specifier: 1.74.0
+ version: 1.74.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
version: 5.10.0(eslint@10.7.0)
@@ -426,17 +426,17 @@ importers:
specifier: 1.0.30
version: 1.0.30(undici@8.7.0)(utf-8-validate@5.0.10)
oxc-parser:
- specifier: 0.139.0
- version: 0.139.0
+ specifier: 0.140.0
+ version: 0.140.0
oxfmt:
- specifier: 0.58.0
- version: 0.58.0
+ specifier: 0.59.0
+ version: 0.59.0
oxlint:
- specifier: 1.73.0
- version: 1.73.0(oxlint-tsgolint@0.24.0)
+ specifier: 1.74.0
+ version: 1.74.0(oxlint-tsgolint@0.24.0)
oxlint-plugin-eslint:
- specifier: 1.73.0
- version: 1.73.0
+ specifier: 1.74.0
+ version: 1.74.0
oxlint-tsgolint:
specifier: 0.24.0
version: 0.24.0
@@ -1624,129 +1624,129 @@ packages:
'@otplib/uri@13.4.1':
resolution: {integrity: sha512-xaIm7bvICMhoB2rZIR5luiaMdssWR5nY5nXnR1fdezUgZuEO58D6zrGzLp7pQuBmlpmL0HagnscDQFoskp9yiA==}
- '@oxc-parser/binding-android-arm-eabi@0.139.0':
- resolution: {integrity: sha512-22EsXTA3Vc7OvrF4bfT48PFln2UbxkVgrp/Tm32qLw76Dv7SmcInfClJe6yPYamnli6HiqasnESZ5ezN+X4ybg==}
+ '@oxc-parser/binding-android-arm-eabi@0.140.0':
+ resolution: {integrity: sha512-ZfjDZ422mo7eo3b3VltqNsV9kmv1qt/sPEAMSl64iOSwhVfd0eIZ9LB79Mbs1xYXJnk7WSROwzBCKDIiVxPTvQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxc-parser/binding-android-arm64@0.139.0':
- resolution: {integrity: sha512-uASQkZV+CUQ6xXvoMzDQyfhd8OMusdv2FyCPfAi5ZDYptesapJlw7erhpGi1Lc+U8QjQV2JUrIh7d/3su2LzmQ==}
+ '@oxc-parser/binding-android-arm64@0.140.0':
+ resolution: {integrity: sha512-Ia8jSvikUX6Sf+Ht+KOCUF/k1HpR0VlmqIYymubmWDebOEGtsyliHDR6JxsZ4IX3/c/GbrB1uh09aVGQv/LQmQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxc-parser/binding-darwin-arm64@0.139.0':
- resolution: {integrity: sha512-vuQOv2WF5pZCkdSPEExul98o853M3MCR24DpWsGrUoPJu5KcnGE34kLXY2yFwBwZwT+eN1x40Tt4q6ZzlEdNUA==}
+ '@oxc-parser/binding-darwin-arm64@0.140.0':
+ resolution: {integrity: sha512-G6VK0nK61pH0d0mBjUqSZbVxGqqO5uzeginLDQj+gOO6ObfJjXRwgkD/ol0w1INcnFeAb6YGGO7qc3ueGHaycQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxc-parser/binding-darwin-x64@0.139.0':
- resolution: {integrity: sha512-zxZB8ChS+7XactZhcyxQ292P/DNiiBaPPKYiVUlb3RC0V/hme5bokNubjcmEmbW9uTfmqLTpveAdkbe66H3pGg==}
+ '@oxc-parser/binding-darwin-x64@0.140.0':
+ resolution: {integrity: sha512-HazBOuZzd2pO1C2uMmp8Gv7mhzMHqKSKDS1OZfcLEvpIcgA+48J92HEtNanVHDIzRD9PRPCV6aS6fkZIWOVl8Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxc-parser/binding-freebsd-x64@0.139.0':
- resolution: {integrity: sha512-iw2MsoCPBQwdJqywRAGsF1jEAcGoZ+DeG2LVzt5pdUvRHqajsMF46BH0rHiWoWtMwcMSia+oQYga7fHo7u7Bcw==}
+ '@oxc-parser/binding-freebsd-x64@0.140.0':
+ resolution: {integrity: sha512-9hSUU+HmTUyOe4JzMHxNGgLWNY7rrO+6ShicZwImNJacEAACDMIkuEQQkvXSL+WJN50jaNtLYJv8s4OcBdpyUQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxc-parser/binding-linux-arm-gnueabihf@0.139.0':
- resolution: {integrity: sha512-SwjD/k3Y5bwGJWOH313VyaDrAuaYg1Pe+4AAXCgUKvSO5IHkj+mZ0oFcOWmB5nTuOM3uwdT+leL8h4OnFlI5hw==}
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
+ resolution: {integrity: sha512-RAEuQsYtS0KcDFqN0ABTjyyNlokS91JeuDuoW9tEbG0JTbRNXnpQUdbYc/16JoA6Z/2ALbNrE3KmxtqDiuIjCQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxc-parser/binding-linux-arm-musleabihf@0.139.0':
- resolution: {integrity: sha512-qbeygDkcvailKFhphb2YGMMXsaZIynHlPtoOrcx4NZB/tRbUKraCCMbw8dPeFtEKasfS2qWh1VnReY+Lcys1zA==}
+ '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
+ resolution: {integrity: sha512-c4CkHvPvqfojouredJ0w3e6+jiBq0SbFyhH61kr/zPb/7XsaYTNKQ54vmlSsopfdQbNDX40ZeK9Abs2Qet6wcw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxc-parser/binding-linux-arm64-gnu@0.139.0':
- resolution: {integrity: sha512-SrlL02KeImKlvx/9rCeopOLH7qKI3rqKKEguK6KBwVwEGLhV/A47dW4DNigf6/LFhrwoovaiayEQryjYAI86dQ==}
+ '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
+ resolution: {integrity: sha512-yrjmLj8ixPB25yqvPGr28meGjb+keed7m1GqqY/0uqkhZIoT4t9zmfwUgFEtC33C7dtE+UQ7TU0IaVxf97SWJg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-arm64-musl@0.139.0':
- resolution: {integrity: sha512-u9e884ChAVRmIZ1jr/m46S96FoDQnruFjISLi4Y0i6Wu/JUUmIiw7+umLyXILJsPfUuqnN5BJLe23t07+Y6+IA==}
+ '@oxc-parser/binding-linux-arm64-musl@0.140.0':
+ resolution: {integrity: sha512-ggGMQTN8Agwxp2WiLMpdY671dt0qTDJWiWlJeig3HnUwTnerRl0J2JdGVghWBeDcss2D9S2V2Js6dZHEiVabVA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-linux-ppc64-gnu@0.139.0':
- resolution: {integrity: sha512-Z9tU2b3GJfAXOdirQmz4gZQkQkVjy53i77gf91l0733MQKa/qtk73KQQE2GzDtMqim+HyjpzvemmqzBtH2IJUA==}
+ '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
+ resolution: {integrity: sha512-IgTs8xYAFgAUGNmR65tIqjlJ8vKgrfXzC515e9goSdfMyKQV4aJpd2pUUudU4u51G64H0/DSEJEXKOraxm9ZCA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-riscv64-gnu@0.139.0':
- resolution: {integrity: sha512-RyUbr7hzPK84YDWKs77PRYk9VBwWbsbuYsQzQWiSmLnARXTg2zntLPGfCH/1wpfUYdmGkp/6SsqTXSsYdw9Jgw==}
+ '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
+ resolution: {integrity: sha512-A1x+PMWZmSGaFVOx2YeNTFau8uD+QO14/vLP4GrcuvUPs3+nBkUOjy9Lus86ftHsDojjYMbvBelmKc3F7Rv08g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-riscv64-musl@0.139.0':
- resolution: {integrity: sha512-dcQhjtcDvtR8BgkUpt03Yz5SzxdzYvTigenIJOEsiSX6G2t6yybEMxGWjp0dOuYGror0BaqcZfTyXR58amCEig==}
+ '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
+ resolution: {integrity: sha512-zBqpfRo2myWPrPo5xUjeZqlnPXPXsX8BcWtWff66/eGRQdbPjhzPgXa/F+AtxT2afUViPxbuDlwscMKzQ5tg+g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-linux-s390x-gnu@0.139.0':
- resolution: {integrity: sha512-iuGrxysV4rGUymdKpn7bgZQ6Vix8Bi/6D/rp71HYIzphq6NKrsBhsGOYsSZte+uBFL43tXh7Xr7TM72sGliJNA==}
+ '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
+ resolution: {integrity: sha512-2M1DPm/8w9I//YzFlFC9qXw+r2tJFh5CYwRlYTq2vUJQS7qoQftEDeCZ8EnN7KHtvSiXvYj8mZI5pR7DpXmcEw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-x64-gnu@0.139.0':
- resolution: {integrity: sha512-NxJdZZyaa2JLLvNfH/iJQXfCNfKcPMylwY4ObMpBVmW4Nq+RyUpVVQXrMMelcQ6rwx3nuhF1Iga8n+eoAKGCIA==}
+ '@oxc-parser/binding-linux-x64-gnu@0.140.0':
+ resolution: {integrity: sha512-8aRDbZ/U/jO8N7go1MO72jtbpb4uswV8d7vOkMvt/BPgZiyEYvl1VIWK4ESxZZhnJ4tqwVldgX7dNiP/eB1Jdg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-x64-musl@0.139.0':
- resolution: {integrity: sha512-ePxBvvtzISmSsJ0RIj8FNikSCn58i1jtccj7XR4U9Li4iSzhkFyYlnJ51cQTUwkairz8WMTD4SpKoot8RyTnQA==}
+ '@oxc-parser/binding-linux-x64-musl@0.140.0':
+ resolution: {integrity: sha512-xRqpeI8U2sQQS1W5BMWRyMTxtagkuLG2dEWruet5lFsWHTvBth11/TpSaJatHdqVVwHN0q3uuoS9zRsGinq8hg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-openharmony-arm64@0.139.0':
- resolution: {integrity: sha512-b/c2+mPXMOxG5x16n8yf9cjor/ntQQScmYnSmLEWIWJ4rfXd5dokMxx0kliSLA+YAGq6DD3K9BWi+aFXHiiV1w==}
+ '@oxc-parser/binding-openharmony-arm64@0.140.0':
+ resolution: {integrity: sha512-GbGRe26MqAKciFRvXeHNQJ6VAHYs9R4miP89sEAncysM3n+f4lnyLWgsa9kklJNpfnxdq2yRoNYHFqwBckVimw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxc-parser/binding-wasm32-wasi@0.139.0':
- resolution: {integrity: sha512-rNU0pO+/CVPC2qZ+xtX5R2cOje9Q75q3UkfgwUCPlplqxMv6Iffd5tMPGVMCLGnPINxPlmi0WPsW94HltbYvfQ==}
+ '@oxc-parser/binding-wasm32-wasi@0.140.0':
+ resolution: {integrity: sha512-vFiC1hqys+hkX1GnQkIoiTQJNiUm43Z0lO35ETKXTw0YtpW7+cN58YRRXFAQQ+TgpkIi3lrhcxdlnqz+Oi3ptQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@oxc-parser/binding-win32-arm64-msvc@0.139.0':
- resolution: {integrity: sha512-JPEmfncZfqAFiGsAN6UZSMIBqnG8wn8buywRacFOWjP+9dZwcs03SsBp4tmyjM/4l/VoH/IuThrW1Jof3OyQUw==}
+ '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
+ resolution: {integrity: sha512-fGSQldwEYKhM+H8uLt76Op8hh5+FYaR6lvvQ1Txw3Mhn86DyQXLcI0fi1EkFlTK7F+46OCk/j0AJMzZQm6g5Xg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxc-parser/binding-win32-ia32-msvc@0.139.0':
- resolution: {integrity: sha512-c06dWBwEnFHof5JN7T9/ts23uATXS9czPEBO60d4xnjH2Am29Bo7OGKdVHRmcWQnw0OBxlTg9fIEXAvtcwOBfw==}
+ '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
+ resolution: {integrity: sha512-sDS2Bai+g3ZWYwfZqmosiSuFDBcVnZ3Ta6pszzsiJoLMqsJEWKcxXXbGa7b7yXr++W2lQNPb3ZRJ8czseqL7RA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxc-parser/binding-win32-x64-msvc@0.139.0':
- resolution: {integrity: sha512-bI3/44urQjW/D495JPXe+c9d+4Q+ONi3DvDNnzwRZYTWHZ3hAlFdmirYK4mzhTfCZiAly02EbMYir7QGU+9O2Q==}
+ '@oxc-parser/binding-win32-x64-msvc@0.140.0':
+ resolution: {integrity: sha512-kHbE1zWyb5OQgJA6/5P4WjiuB01sYdQwtZnSSyE58FQEXDAMnyeeq4vj7KgN75i5SlBzOs8A5MrtlD3gOlDKqQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -1754,6 +1754,9 @@ packages:
'@oxc-project/types@0.139.0':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
+ '@oxc-project/types@0.140.0':
+ resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==}
+
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==}
cpu: [arm]
@@ -1857,124 +1860,124 @@ packages:
cpu: [x64]
os: [win32]
- '@oxfmt/binding-android-arm-eabi@0.58.0':
- resolution: {integrity: sha512-Uz62sHduGGPftXtILGyxdSW4PX82rUg+rfdNqhsgxe881g4rIoXlIqmZQ6HVKcF4f+F8qMhdD03Bx5u7gmeTdg==}
+ '@oxfmt/binding-android-arm-eabi@0.59.0':
+ resolution: {integrity: sha512-bNTnfbuG7sAwb2PakMNaDukx5kXeW9duXOBeWtTOiLz3fXz3q2DlWguufPZ+c2IHEVrRXHD+M4aUgEWm841LDA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxfmt/binding-android-arm64@0.58.0':
- resolution: {integrity: sha512-rD0lRaJp1b+9vw6X4A2dJWKukd6X8yxiicN4JxXcXayolmUypRZxk+lKR+fVOu5q/iYc0fh5fR4bgmfOfVlbaA==}
+ '@oxfmt/binding-android-arm64@0.59.0':
+ resolution: {integrity: sha512-R/Sn7z52QtdAKNqQLLY0EK7hVMjXiz3XUlvoCFCm/60jgIzAnQtiqLKBCFaBkimCQL5rs2ezPMcicpjCsrl54Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxfmt/binding-darwin-arm64@0.58.0':
- resolution: {integrity: sha512-uzbPPk7O6M+w2K65vcQ1woga3wgP8zghjL1KOG5b6qJ8dvYHZJ1VShaslg2KOK6yQIwCQtcMCXqLBM6sqXUNTg==}
+ '@oxfmt/binding-darwin-arm64@0.59.0':
+ resolution: {integrity: sha512-vm/ynUqE4HjC0ZIEjmXv1UJu1/GngccQ+T+TJudTMxUxm6r+GQTg1TO3E5jJfI71pBaXxSzs1+vWHIwuilGHhw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxfmt/binding-darwin-x64@0.58.0':
- resolution: {integrity: sha512-L0nKYDxU32oxeQqJj21W9SlIMnf81VZEhyah6iDvFhf5q0oynq498Fopth7blErUJVBpVtxQ98RMCfMPqpJX6w==}
+ '@oxfmt/binding-darwin-x64@0.59.0':
+ resolution: {integrity: sha512-uTtYDpLN/obfKVWGpgEc8BqYlLZBQTPz2uYEvLRy3HPZxjZ34wiFzukUBU2bf64JuCYZI//GTV1EOMmWlPjf/w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxfmt/binding-freebsd-x64@0.58.0':
- resolution: {integrity: sha512-woNwfD58dC5PGS9LSLSD5JYfo/EFK5iG9vhDWkcCg3q78ag7KC8bpDqgvPHrMoXpx83OLXxoSOhu6z8FsVTHlg==}
+ '@oxfmt/binding-freebsd-x64@0.59.0':
+ resolution: {integrity: sha512-e2UnxL/ifStSPy8ffBCDbdy595SYsGy+U1pur4G65TuMmWxAMBzYGG7atZo/3mp515p8rZdsflxVD/E1FAdPLQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxfmt/binding-linux-arm-gnueabihf@0.58.0':
- resolution: {integrity: sha512-Sqs8nMLxuQpY21NKJ1u4stPDmO5hskBCNNh2E3AdCfI1QqWtf4m+Qn4mGEIUO4KGmuq3SWc/SZ80uy5IiwTCDw==}
+ '@oxfmt/binding-linux-arm-gnueabihf@0.59.0':
+ resolution: {integrity: sha512-LtdeZ1l0urxte3VNi3g8cocZwv1xGM1NKHSgF/fJEEVhyQmlgGh7WFWKFd/pNuO7djfvPNtNO1+MS+FEWkgVSA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm-musleabihf@0.58.0':
- resolution: {integrity: sha512-Vd4exzBI5B5hB9m22JiTQzIL23WvHo/Pe+sNXPNeBLXSP9swCBPKCEBRwKpmpQzYhlgYaCgfPcGXPKAJBRIiZQ==}
+ '@oxfmt/binding-linux-arm-musleabihf@0.59.0':
+ resolution: {integrity: sha512-dBTciSsj9GTMl7p+h2gMSI0hoPn2ijfc/dUsbnWsP0RbwgPl2r0C/5zkMb3Pb+gGj17LH7f1o4qLo9aes/pAvA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm64-gnu@0.58.0':
- resolution: {integrity: sha512-bUWi5mHV+4Vi56RLHE1h6q/HHfwAIT3XoB9vJAVeRzfu5NriXM8y6eeJu0vlKa0C9kq2rq1sOWRClhdLHPocrg==}
+ '@oxfmt/binding-linux-arm64-gnu@0.59.0':
+ resolution: {integrity: sha512-tXVdJ/JINsNWdponPHN0OuKHtC+HdpyoS9sd6IDPNiiEYsRki8b7tefRZ1iMnRkdbyT4SEbguWsr6o+5awvbPQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-arm64-musl@0.58.0':
- resolution: {integrity: sha512-2ZHxemzgHcjtktAuVUwSoyXmGo/t+aF5tS1ciPpPei4rhSyrz3JOqDosXXrmhN/yLUSzJjtuW7ToTWqfQpCj2w==}
+ '@oxfmt/binding-linux-arm64-musl@0.59.0':
+ resolution: {integrity: sha512-RRTq38i2zT5fnw6XGHjvT6w2mh6x/G3m6AZcAZ56OTDTT/lsOeYnG3SVjwmH40z5kPqF+lf+o35e6m6PpKy9Dw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-ppc64-gnu@0.58.0':
- resolution: {integrity: sha512-AwKkVwjVmFQ3bcO7j0McGYAqCKH2a326fswfofng/E8VewCT/raeeGQr4huVhY704deK8AWASSTlxzMj0eZc6Q==}
+ '@oxfmt/binding-linux-ppc64-gnu@0.59.0':
+ resolution: {integrity: sha512-lD3k7glAJSaXW0D6xzu8VOZbYbosvy+0ktOVkfLEoQF5HJlMSxTQ2KNW0JO+08ccP/1ElOKktVEMI0fqRbVB4w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-gnu@0.58.0':
- resolution: {integrity: sha512-xsRpTxfUnJF8D3AUKko/qyWdjw4GZVHlCVFuGlzSCTeewLmykKINW8em1+wx+axsDVtJJcMtvsiaXggXxrlHgw==}
+ '@oxfmt/binding-linux-riscv64-gnu@0.59.0':
+ resolution: {integrity: sha512-WH5ZP1RbuHKBO/yfPRQKpNO/ijHcEDNbnmC4VPf/Bcd3+mbMAZpRiJWRa1PL5bREdIZZHo343mk3sqlc9x7Usw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-musl@0.58.0':
- resolution: {integrity: sha512-Z4AYOTcy7nYEIiXwD62PlerimyYRcfJOgUbQAEBjXz098kxKuERBlRntofGy69HHhe9E0TLVNMl1yspVNu+efw==}
+ '@oxfmt/binding-linux-riscv64-musl@0.59.0':
+ resolution: {integrity: sha512-743wOiaI9RZY4QVGkWkfGRavD5ZJUJ6gscFjVrVu1dP8AZh9jM+a6v3NhlR+OIzHdS6DhLM96w+gcVskskz7rw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-s390x-gnu@0.58.0':
- resolution: {integrity: sha512-A3nhhtZPC/TKVWOPj9q/H3p2znJDCcHWYlJBhWL8hGq/bFmBaNBHC8Np6E581yVq1w9Mi3rMDNzDalWvtUfJtQ==}
+ '@oxfmt/binding-linux-s390x-gnu@0.59.0':
+ resolution: {integrity: sha512-xjRXQsRnrRZCcCkIEnbd2lmsQNobtwwkJxdy2bWXhZ1lIN0ouZwsBXRsoovW3yATuziAYwr9HMiQuR/Cc75NIw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-gnu@0.58.0':
- resolution: {integrity: sha512-2g+tVkgwqphw8R4hgo+kF4oz8+P5RwVOtr9+irsC7uwEp0e9j7Crw8kDGKL20uYlLPD7g02DqA61mC/UNYx98A==}
+ '@oxfmt/binding-linux-x64-gnu@0.59.0':
+ resolution: {integrity: sha512-4hNjqq/Rbr9B+StY9zMMAfm72+mtM4v80xYL5Qkb59Qd72g2vJMI0iFlPj3kf6miMsie/yJ7rt4urJT292HBgA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-musl@0.58.0':
- resolution: {integrity: sha512-rc15P6AbyyB7426aN8AakLd02Trb3a6ML/mmfAQeVHJEfVofWLcWIrBdy6zDEY+DIaL/s8E4GGPboVw+oP3+EA==}
+ '@oxfmt/binding-linux-x64-musl@0.59.0':
+ resolution: {integrity: sha512-NH579iN8EVQYsWowUB8B5vFchcylJtwPVJ7NmUAqEQHNLfhPbDT3K56KrECNAkUN4QpF4qiMgN2vsfZwVvjm7g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-openharmony-arm64@0.58.0':
- resolution: {integrity: sha512-ZWoTM27/HYPOh9iq86DAbhPu9nXb8qKvvGU/h8OfliyVUFAMMNTLDkGsWDKKnDqIkqvZ9+dXlgUOsH1LYO3O7g==}
+ '@oxfmt/binding-openharmony-arm64@0.59.0':
+ resolution: {integrity: sha512-mzZy3Z5Aj1D75Aq9FVlmoRQH5ei8Ga4o/NZmlXkKyeZ5EmPrUXRR7c6BMBteV1ZuZ/356UYDuLRLjAMxTDTiBA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxfmt/binding-win32-arm64-msvc@0.58.0':
- resolution: {integrity: sha512-LHZnqFXe2dEfkRI4XdZS/57nEOT/I4UCRX5IyM9v4GYW9XwQCjGe1IUK59SuKw3POwvcgWQ4pme2cYXmNqTNPg==}
+ '@oxfmt/binding-win32-arm64-msvc@0.59.0':
+ resolution: {integrity: sha512-0CpDJ1gE3jN1Gk6xms1Ie6LPfPcOtY4FAtoOmVLHQoAf8DvO2wd0DW2dIX2f7YTp5dxrr0ND8JeUEjm3DP3k5g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxfmt/binding-win32-ia32-msvc@0.58.0':
- resolution: {integrity: sha512-mZKpg20TpheCJym1rarcZCUJeW1sSruw8zAAaCYWvuVfwIUDN1CXdrPU/JgCWReXTCTrEfCB8Wyo3hh9jSZ2EA==}
+ '@oxfmt/binding-win32-ia32-msvc@0.59.0':
+ resolution: {integrity: sha512-zwdKBu3pt87uW0bRcywZb0oGMS7C6n87qogwRYFUgmk44T90ZzYlPjtlFYXs/DnBFrgNCvlHwCuWKfVWLeE7kw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxfmt/binding-win32-x64-msvc@0.58.0':
- resolution: {integrity: sha512-N/wUU4N5PZ2orBtI+Ko7MnMfYLfE7K91UrGMY/c/pYyHR3lA9kwst1XugkZx+92YcRh/Eo+iv2eTESSWXfiZPA==}
+ '@oxfmt/binding-win32-x64-msvc@0.59.0':
+ resolution: {integrity: sha512-dUUbZkKgWrmAeI/puzv4bxN8lzcYaFnQVwFTFtwO2Gp8M7lZGSE2qJjC58g518+1bltJ8mizjYwD0BGHym0l/w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -2009,130 +2012,130 @@ packages:
cpu: [x64]
os: [win32]
- '@oxlint/binding-android-arm-eabi@1.73.0':
- resolution: {integrity: sha512-HZQRN/UMBu+Ut+/9MiAChkbP4qZqrNOWBcNI45vOT40GVhbGR0JgHB87L48D4iAqFQIdVmeQYtV9RF89AjTKkg==}
+ '@oxlint/binding-android-arm-eabi@1.74.0':
+ resolution: {integrity: sha512-+gHd12muVI9ZLBaWLPkHt3Fj7jihFjgQ1MGtBaRL8vWrWrI0P7dLUty/cHrHS0oqPYIRgQUJsPu2CExQuMcwNw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxlint/binding-android-arm64@1.73.0':
- resolution: {integrity: sha512-Gp+KJRylv2aW7thRpG5p1KTxZq4ZJFbWowrKzufNq9d3ssl3r3JviYV45/+p+7CN1Nv0zDd1e8Ex0b/HUDq4TQ==}
+ '@oxlint/binding-android-arm64@1.74.0':
+ resolution: {integrity: sha512-xjKdoMB+H+RCOByv/7l7nfIGW9mlOisqYdcyC75UqYuQecLpReAeEYUf2CNeDEI3KtmUgxpRw/+c63y4AeF/Bw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxlint/binding-darwin-arm64@1.73.0':
- resolution: {integrity: sha512-3de96NdtXhxERMjIz7wsp2HYMY6pMQycGxFWac2mFecAx6VeARF/IqFb1QIaqiCRIdfzBwzTed+pCTCoiS+CYA==}
+ '@oxlint/binding-darwin-arm64@1.74.0':
+ resolution: {integrity: sha512-iUK7wvc6sejMKsC+Pt67mntoF5weFcyEunhZfLJceU6gL419mexz5wBkSx/EnkFBExMLNtOi9fnDSc5xfK0IzQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxlint/binding-darwin-x64@1.73.0':
- resolution: {integrity: sha512-5zx/uPW32TiaOeVY1dQ/H5iOf0K1HOdFKOJhLqGl4o63+i1fpzoqqu/mKtd7OFgFjNCdhlyTGgjVkQTZm1ELcg==}
+ '@oxlint/binding-darwin-x64@1.74.0':
+ resolution: {integrity: sha512-ggKc/tn5SJ1u2yG2izC6VKODfYKV8MQ2AicJlNzOjuyrC29udvOef6/JzK2r32xqCnBDLFouR1VCkjzEI0/N9Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxlint/binding-freebsd-x64@1.73.0':
- resolution: {integrity: sha512-qNe4gKHaGnLuZJ8toUg90JAa0S2vTVvDw+0bRi3q1avXZXDT4u5mMeECf3nD4HYrbdn1O7dXqWut4onY/yx/Xg==}
+ '@oxlint/binding-freebsd-x64@1.74.0':
+ resolution: {integrity: sha512-u++dH/43jy9hTLbneaWlS0gla/Bp1JdwJ2zgevCl8nDFUh6qRCGMxcL0f0lb7By3A9p/LfFr+7cG4HU1hG856g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxlint/binding-linux-arm-gnueabihf@1.73.0':
- resolution: {integrity: sha512-cCehYh5hTbfShm/fxTD6wwrGUWIpvX+N5OxmAMhFhDeTGXvw+BeNj889tpxsFQ9ZLatQ6wImuY8tsKLZ+FMz7w==}
+ '@oxlint/binding-linux-arm-gnueabihf@1.74.0':
+ resolution: {integrity: sha512-Sj1zmtFDVTPeIbIz4ZfcXAbFHqCmKCXdCUlAJzvTF7I20NTH1RDpoF2PhkqNODutJzVhJYmm3oz0GwgY+tvE2g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm-musleabihf@1.73.0':
- resolution: {integrity: sha512-d5j5GDU/2dMgjVhw7TQT9ITrsIr1Y02KEXKyVGIXUkD+KiaxE9TP65FS2ZdgTBemQvoRL+gSBdbrIm3cQIeacg==}
+ '@oxlint/binding-linux-arm-musleabihf@1.74.0':
+ resolution: {integrity: sha512-//PKyQb/tQXcHArx2f7z+oVI/eMS2Jpv+edNuAtOrgIhWdGcpHxogveAxzmF2rpH1AIHp4Hq04RF/rgJdiICnQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm64-gnu@1.73.0':
- resolution: {integrity: sha512-Eyf1SrP3+yR1DI3OJgOY2Pvrr9dWP9TK37xPaDYycwTtlGlI45erJAVIfH5/m/xosDt6BupJYEFi47bvbTuuyw==}
+ '@oxlint/binding-linux-arm64-gnu@1.74.0':
+ resolution: {integrity: sha512-/k1Me+aX2tjuH10K62mLS0y8cLkJBHX6Ce0xPK+eWeel4bSdEGZ8dv4+hYMzg0GrSmjwy4yAYsDPeEeKBft/2w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-arm64-musl@1.73.0':
- resolution: {integrity: sha512-IlT/OJApEDKaMmCooHuncgJZbbCe7T5QIWmTZBEtYscWvzPQuuEinVcid6kwQRVQOUdb7PUCz4jQHnaYXdfJXw==}
+ '@oxlint/binding-linux-arm64-musl@1.74.0':
+ resolution: {integrity: sha512-3tFSjBxc5D8/zvjEuLvOqcA8ZXKD0+6NuaVO/edeamNc49MoAsbfaC9s1UiwODwgF6slGaF8yJA2TPkukd77tg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-ppc64-gnu@1.73.0':
- resolution: {integrity: sha512-L+JYcb/vdg5fmcH08V6o0YYLU28cTH1SPNulwJdvK9NK49aXSkYy6oNpKBmddArVOXYqNepriDGiZ04G54kh1Q==}
+ '@oxlint/binding-linux-ppc64-gnu@1.74.0':
+ resolution: {integrity: sha512-9QggtPkSPXOCTu8Szis7auOK/sC7KdQaN+/TujP7YVVhzCAOhgdRfgv8uEz0r2tk5xdgus5rLYUrCDoZNtiRUw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-gnu@1.73.0':
- resolution: {integrity: sha512-Qtk0g3bKV6OwWjIm7R8kQN1uOZRKQt/MODK2a8QfkwhTpXBD53ozx5XLVWLGDQAVyp2otLW4D2wB98XfAfMPGA==}
+ '@oxlint/binding-linux-riscv64-gnu@1.74.0':
+ resolution: {integrity: sha512-VM5VPUJ4DJIWiK+AZn8FScUqMr6OFrCAYybMYjEEi7W13ParI64MByiXTkKMqZpBmvQ9zxl9Ebq2VUOiZRJYUg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-musl@1.73.0':
- resolution: {integrity: sha512-wX0NQKZVxltkAOVmzFcpOaMpdaUvsq1Eqpx9tkAfl71UdkTlSo1R4AdAnGccR1Fm2+TzFgZ22CyyGuZ41RDr/A==}
+ '@oxlint/binding-linux-riscv64-musl@1.74.0':
+ resolution: {integrity: sha512-SaDY1gh9rOA592J54g+gu5hkOFFQBZsMmIYHs+NRHG+Uq0OxtuuCXMWQ3vu1830Eugv5uMXyjG+bv2Z9y4IXjw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-s390x-gnu@1.73.0':
- resolution: {integrity: sha512-vPe7UGBMWyiLTtnqS4xxgMQFSFGmtQwhwCxuiw6lXygaO6bVt0D8dFVg8Xv05eaiN3ybC0HXXHUAohFMFvqoCQ==}
+ '@oxlint/binding-linux-s390x-gnu@1.74.0':
+ resolution: {integrity: sha512-ZATQeHZCyr6MbDveg0obD5sxLHFOghtOdC5jwVwYlvFWqtFOxctgFEG6Ef/64hYvZrWyhyCckB10AelqLopeDA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-gnu@1.73.0':
- resolution: {integrity: sha512-2CwIWr9cemFC/CbRBWZvuk5mffz6ObmfFkfcC/9rTQ7f+icNhYr2kOjf9Rt8lLvugvkdGDOmkoVoFFHh6ClCTw==}
+ '@oxlint/binding-linux-x64-gnu@1.74.0':
+ resolution: {integrity: sha512-+aIvJyrdeD7LwCQ2WYLMUWNmnbeDRSPb40aBYtPjD9+PTqUwgJnk+HK5yLfSMeqXrMrDhE9uTmtt2y50tvjhHw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-musl@1.73.0':
- resolution: {integrity: sha512-nDadfJgg7NBBxG0N560wOe7LLX5QiYp6qBaI7viuk5EUORFBktU/NfV0MbTqU3gTqQDCh4VyxKdo5VADxk9w8Q==}
+ '@oxlint/binding-linux-x64-musl@1.74.0':
+ resolution: {integrity: sha512-XyktaR8lhK2qWiCK0Tk8oYD+/cgn+oHA6ddRnxSSXUKkkojkV78CmShZUxQF+yrBFs0SuW+JBOPG6hecyc/iZg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxlint/binding-openharmony-arm64@1.73.0':
- resolution: {integrity: sha512-wGjJC+NLH9xP+IKGn9RDW94ojJR/wPbg5WCnQjj/oReaOtCQthr8ws1zICe77JFmo4ouUdeTHHZL/ESGiF6Pmw==}
+ '@oxlint/binding-openharmony-arm64@1.74.0':
+ resolution: {integrity: sha512-mzbjrPl4neaVUiJ1fUiEUxTGaSZBoiKtaoB6jmIpz9S+VOA2vDYmJpihQ82w6178V5jxziclTg8Cgj5yF6tTDg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxlint/binding-win32-arm64-msvc@1.73.0':
- resolution: {integrity: sha512-I7X47GPGljw225YUQ5SbC/rb1Kkdrd0yQf0x+hYxeKS6DpfjMbo9ccQPQ6LNY6BoJQ1sHhgDUGuMn5Vg5gHT6w==}
+ '@oxlint/binding-win32-arm64-msvc@1.74.0':
+ resolution: {integrity: sha512-vUAe9okpS2Oa5+lX67lqHMuNUvfkleRKwrUDJ/WJBsgmddvZ1mrsh2HVmuFDRzqFELhaJhFaCNOuR6a7L3rtIA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxlint/binding-win32-ia32-msvc@1.73.0':
- resolution: {integrity: sha512-5lWj+3h+74Fm1jYOO9qkJA4xkAlZA099DkXppuXsk7UpnpZLttsefrZU469vChGaG6hcSqrkKXQOvMTZtbjeNg==}
+ '@oxlint/binding-win32-ia32-msvc@1.74.0':
+ resolution: {integrity: sha512-yyXXJyYYSXL4I8K8jAWjJs+J3fa9gH2JmEbo4f5adm+1tNC9itseicBNuwK7BDHvqQ5J534s+yDULu89vYL2ZQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxlint/binding-win32-x64-msvc@1.73.0':
- resolution: {integrity: sha512-WaNRvh4f6zY9CvUQk2YoA1O90ieWrIklI84+HXFr9Isjz9CSESrdqo/RtIYt4Dll/cAchqGDMehfaZd0vqEFZw==}
+ '@oxlint/binding-win32-x64-msvc@1.74.0':
+ resolution: {integrity: sha512-VTC9IYTIMrVUk/i6Ms1ohzzDKZFkWn0KU2OBbPBzgmVZ2V30165T/zK4LztTr0Xgp9fZ1qQZ1rsZAu/rEmySlA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@oxlint/plugins@1.73.0':
- resolution: {integrity: sha512-OhgMQeMmZA0dcFcX4/priaJZWdFECxiClgq6mRX6aatZEcV9PbKC3P3/v8U1hVjviT1i5U+vR8lAtBV6m4FXAA==}
+ '@oxlint/plugins@1.74.0':
+ resolution: {integrity: sha512-3tQlMDPt5hrRYedKl+M+Xq+fRjAEocMCRJaXH6ypLWu8+Oui5GMj51vjaYf/rzj6HT+JzQoUlY/I7Im2VNXzbw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@pinojs/redact@0.4.0':
@@ -5090,15 +5093,15 @@ packages:
resolution: {integrity: sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q==}
engines: {node: '>=12'}
- oxc-parser@0.139.0:
- resolution: {integrity: sha512-cf1TKZN+zc0lwqigeyXKzKVk5+vNRe99Or2+wVJsXLdlhJgC+gsIniYDfj/ZEBzCJ8Xm21ZG6YtMbR262CcS2w==}
+ oxc-parser@0.140.0:
+ resolution: {integrity: sha512-h6QFWd6lBMfjESqgQ27GjzrSDb0qbznp7VDQqp2zvgsrWut4vcchyMIzOVXvGQ2GMZgKw9RWrFNWv9WqGL0p7Q==}
engines: {node: ^20.19.0 || >=22.12.0}
oxc-resolver@11.24.2:
resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==}
- oxfmt@0.58.0:
- resolution: {integrity: sha512-8feG/7NVEHDVwc1OUpP6Pks+TnaDFUw2jLLFIMi5bcmmwxAX2wBQvjSzj62RRTYBf2Op1Wt8xbkmagmPTR5ETg==}
+ oxfmt@0.59.0:
+ resolution: {integrity: sha512-Xqk6cPZS1yMvVa7OAuenaDZUsgMDutvvbZ9/L5gSvAfW64+WN4HVhgipLj5rVERbYQt8fLs9TopyZ1rU1XEG/w==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -5110,16 +5113,16 @@ packages:
vite-plus:
optional: true
- oxlint-plugin-eslint@1.73.0:
- resolution: {integrity: sha512-ZHGk1YDMwxnz2OSxHPysJwgXE7oVIDGWmhlVFeQuvfBDY5AlMfcUlYvixJkjc0sGYNhegYN8we10ZU5UydFLvQ==}
+ oxlint-plugin-eslint@1.74.0:
+ resolution: {integrity: sha512-AtZ4w3owo4xoY5fe/Juy9hmzEnekVPd/DDiPlOVGfR2linDTp/XVu0xK7ODNK4CCLvnnfCob/UeWN6kSiqm2CQ==}
engines: {node: ^20.19.0 || >=22.12.0}
oxlint-tsgolint@0.24.0:
resolution: {integrity: sha512-giCk5sEvG02d5tzPmFMX3hem8ndzEEu1xvGYS5OwNfO2WGl6ZVxt5LjE0yiMDoz94INI7XkXwgFAQiydPvVHDw==}
hasBin: true
- oxlint@1.73.0:
- resolution: {integrity: sha512-u91G9TJzU6yqKWNZUYprQB07W7YvntZXaRxQ6CkoytepYhLWUXWsr1M8zUJ34VatNPuUAr3Z8GH+O2A331CluQ==}
+ oxlint@1.74.0:
+ resolution: {integrity: sha512-odGl2s2x5IOJoj3A0v1k0PGBXVFBZeZ2+AK/+K2MJur7Ghi3bkyX5NuLUWHKqa4js1wjep3hJeuTQJOlr+4+dA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -7404,72 +7407,74 @@ snapshots:
dependencies:
'@otplib/core': 13.4.1
- '@oxc-parser/binding-android-arm-eabi@0.139.0':
+ '@oxc-parser/binding-android-arm-eabi@0.140.0':
optional: true
- '@oxc-parser/binding-android-arm64@0.139.0':
+ '@oxc-parser/binding-android-arm64@0.140.0':
optional: true
- '@oxc-parser/binding-darwin-arm64@0.139.0':
+ '@oxc-parser/binding-darwin-arm64@0.140.0':
optional: true
- '@oxc-parser/binding-darwin-x64@0.139.0':
+ '@oxc-parser/binding-darwin-x64@0.140.0':
optional: true
- '@oxc-parser/binding-freebsd-x64@0.139.0':
+ '@oxc-parser/binding-freebsd-x64@0.140.0':
optional: true
- '@oxc-parser/binding-linux-arm-gnueabihf@0.139.0':
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
optional: true
- '@oxc-parser/binding-linux-arm-musleabihf@0.139.0':
+ '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
optional: true
- '@oxc-parser/binding-linux-arm64-gnu@0.139.0':
+ '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
optional: true
- '@oxc-parser/binding-linux-arm64-musl@0.139.0':
+ '@oxc-parser/binding-linux-arm64-musl@0.140.0':
optional: true
- '@oxc-parser/binding-linux-ppc64-gnu@0.139.0':
+ '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
optional: true
- '@oxc-parser/binding-linux-riscv64-gnu@0.139.0':
+ '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
optional: true
- '@oxc-parser/binding-linux-riscv64-musl@0.139.0':
+ '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
optional: true
- '@oxc-parser/binding-linux-s390x-gnu@0.139.0':
+ '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
optional: true
- '@oxc-parser/binding-linux-x64-gnu@0.139.0':
+ '@oxc-parser/binding-linux-x64-gnu@0.140.0':
optional: true
- '@oxc-parser/binding-linux-x64-musl@0.139.0':
+ '@oxc-parser/binding-linux-x64-musl@0.140.0':
optional: true
- '@oxc-parser/binding-openharmony-arm64@0.139.0':
+ '@oxc-parser/binding-openharmony-arm64@0.140.0':
optional: true
- '@oxc-parser/binding-wasm32-wasi@0.139.0':
+ '@oxc-parser/binding-wasm32-wasi@0.140.0':
dependencies:
- '@emnapi/core': 1.11.1
- '@emnapi/runtime': 1.11.1
- '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)
+ '@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
- '@oxc-parser/binding-win32-arm64-msvc@0.139.0':
+ '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
optional: true
- '@oxc-parser/binding-win32-ia32-msvc@0.139.0':
+ '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
optional: true
- '@oxc-parser/binding-win32-x64-msvc@0.139.0':
+ '@oxc-parser/binding-win32-x64-msvc@0.140.0':
optional: true
'@oxc-project/types@0.139.0': {}
+ '@oxc-project/types@0.140.0': {}
+
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
optional: true
@@ -7531,61 +7536,61 @@ snapshots:
'@oxc-resolver/binding-win32-x64-msvc@11.24.2':
optional: true
- '@oxfmt/binding-android-arm-eabi@0.58.0':
+ '@oxfmt/binding-android-arm-eabi@0.59.0':
optional: true
- '@oxfmt/binding-android-arm64@0.58.0':
+ '@oxfmt/binding-android-arm64@0.59.0':
optional: true
- '@oxfmt/binding-darwin-arm64@0.58.0':
+ '@oxfmt/binding-darwin-arm64@0.59.0':
optional: true
- '@oxfmt/binding-darwin-x64@0.58.0':
+ '@oxfmt/binding-darwin-x64@0.59.0':
optional: true
- '@oxfmt/binding-freebsd-x64@0.58.0':
+ '@oxfmt/binding-freebsd-x64@0.59.0':
optional: true
- '@oxfmt/binding-linux-arm-gnueabihf@0.58.0':
+ '@oxfmt/binding-linux-arm-gnueabihf@0.59.0':
optional: true
- '@oxfmt/binding-linux-arm-musleabihf@0.58.0':
+ '@oxfmt/binding-linux-arm-musleabihf@0.59.0':
optional: true
- '@oxfmt/binding-linux-arm64-gnu@0.58.0':
+ '@oxfmt/binding-linux-arm64-gnu@0.59.0':
optional: true
- '@oxfmt/binding-linux-arm64-musl@0.58.0':
+ '@oxfmt/binding-linux-arm64-musl@0.59.0':
optional: true
- '@oxfmt/binding-linux-ppc64-gnu@0.58.0':
+ '@oxfmt/binding-linux-ppc64-gnu@0.59.0':
optional: true
- '@oxfmt/binding-linux-riscv64-gnu@0.58.0':
+ '@oxfmt/binding-linux-riscv64-gnu@0.59.0':
optional: true
- '@oxfmt/binding-linux-riscv64-musl@0.58.0':
+ '@oxfmt/binding-linux-riscv64-musl@0.59.0':
optional: true
- '@oxfmt/binding-linux-s390x-gnu@0.58.0':
+ '@oxfmt/binding-linux-s390x-gnu@0.59.0':
optional: true
- '@oxfmt/binding-linux-x64-gnu@0.58.0':
+ '@oxfmt/binding-linux-x64-gnu@0.59.0':
optional: true
- '@oxfmt/binding-linux-x64-musl@0.58.0':
+ '@oxfmt/binding-linux-x64-musl@0.59.0':
optional: true
- '@oxfmt/binding-openharmony-arm64@0.58.0':
+ '@oxfmt/binding-openharmony-arm64@0.59.0':
optional: true
- '@oxfmt/binding-win32-arm64-msvc@0.58.0':
+ '@oxfmt/binding-win32-arm64-msvc@0.59.0':
optional: true
- '@oxfmt/binding-win32-ia32-msvc@0.58.0':
+ '@oxfmt/binding-win32-ia32-msvc@0.59.0':
optional: true
- '@oxfmt/binding-win32-x64-msvc@0.58.0':
+ '@oxfmt/binding-win32-x64-msvc@0.59.0':
optional: true
'@oxlint-tsgolint/darwin-arm64@0.24.0':
@@ -7606,64 +7611,64 @@ snapshots:
'@oxlint-tsgolint/win32-x64@0.24.0':
optional: true
- '@oxlint/binding-android-arm-eabi@1.73.0':
+ '@oxlint/binding-android-arm-eabi@1.74.0':
optional: true
- '@oxlint/binding-android-arm64@1.73.0':
+ '@oxlint/binding-android-arm64@1.74.0':
optional: true
- '@oxlint/binding-darwin-arm64@1.73.0':
+ '@oxlint/binding-darwin-arm64@1.74.0':
optional: true
- '@oxlint/binding-darwin-x64@1.73.0':
+ '@oxlint/binding-darwin-x64@1.74.0':
optional: true
- '@oxlint/binding-freebsd-x64@1.73.0':
+ '@oxlint/binding-freebsd-x64@1.74.0':
optional: true
- '@oxlint/binding-linux-arm-gnueabihf@1.73.0':
+ '@oxlint/binding-linux-arm-gnueabihf@1.74.0':
optional: true
- '@oxlint/binding-linux-arm-musleabihf@1.73.0':
+ '@oxlint/binding-linux-arm-musleabihf@1.74.0':
optional: true
- '@oxlint/binding-linux-arm64-gnu@1.73.0':
+ '@oxlint/binding-linux-arm64-gnu@1.74.0':
optional: true
- '@oxlint/binding-linux-arm64-musl@1.73.0':
+ '@oxlint/binding-linux-arm64-musl@1.74.0':
optional: true
- '@oxlint/binding-linux-ppc64-gnu@1.73.0':
+ '@oxlint/binding-linux-ppc64-gnu@1.74.0':
optional: true
- '@oxlint/binding-linux-riscv64-gnu@1.73.0':
+ '@oxlint/binding-linux-riscv64-gnu@1.74.0':
optional: true
- '@oxlint/binding-linux-riscv64-musl@1.73.0':
+ '@oxlint/binding-linux-riscv64-musl@1.74.0':
optional: true
- '@oxlint/binding-linux-s390x-gnu@1.73.0':
+ '@oxlint/binding-linux-s390x-gnu@1.74.0':
optional: true
- '@oxlint/binding-linux-x64-gnu@1.73.0':
+ '@oxlint/binding-linux-x64-gnu@1.74.0':
optional: true
- '@oxlint/binding-linux-x64-musl@1.73.0':
+ '@oxlint/binding-linux-x64-musl@1.74.0':
optional: true
- '@oxlint/binding-openharmony-arm64@1.73.0':
+ '@oxlint/binding-openharmony-arm64@1.74.0':
optional: true
- '@oxlint/binding-win32-arm64-msvc@1.73.0':
+ '@oxlint/binding-win32-arm64-msvc@1.74.0':
optional: true
- '@oxlint/binding-win32-ia32-msvc@1.73.0':
+ '@oxlint/binding-win32-ia32-msvc@1.74.0':
optional: true
- '@oxlint/binding-win32-x64-msvc@1.73.0':
+ '@oxlint/binding-win32-x64-msvc@1.74.0':
optional: true
- '@oxlint/plugins@1.73.0': {}
+ '@oxlint/plugins@1.74.0': {}
'@pinojs/redact@0.4.0': {}
@@ -10750,30 +10755,30 @@ snapshots:
lodash.isequal: 4.5.0
vali-date: 1.0.0
- oxc-parser@0.139.0:
+ oxc-parser@0.140.0:
dependencies:
- '@oxc-project/types': 0.139.0
+ '@oxc-project/types': 0.140.0
optionalDependencies:
- '@oxc-parser/binding-android-arm-eabi': 0.139.0
- '@oxc-parser/binding-android-arm64': 0.139.0
- '@oxc-parser/binding-darwin-arm64': 0.139.0
- '@oxc-parser/binding-darwin-x64': 0.139.0
- '@oxc-parser/binding-freebsd-x64': 0.139.0
- '@oxc-parser/binding-linux-arm-gnueabihf': 0.139.0
- '@oxc-parser/binding-linux-arm-musleabihf': 0.139.0
- '@oxc-parser/binding-linux-arm64-gnu': 0.139.0
- '@oxc-parser/binding-linux-arm64-musl': 0.139.0
- '@oxc-parser/binding-linux-ppc64-gnu': 0.139.0
- '@oxc-parser/binding-linux-riscv64-gnu': 0.139.0
- '@oxc-parser/binding-linux-riscv64-musl': 0.139.0
- '@oxc-parser/binding-linux-s390x-gnu': 0.139.0
- '@oxc-parser/binding-linux-x64-gnu': 0.139.0
- '@oxc-parser/binding-linux-x64-musl': 0.139.0
- '@oxc-parser/binding-openharmony-arm64': 0.139.0
- '@oxc-parser/binding-wasm32-wasi': 0.139.0
- '@oxc-parser/binding-win32-arm64-msvc': 0.139.0
- '@oxc-parser/binding-win32-ia32-msvc': 0.139.0
- '@oxc-parser/binding-win32-x64-msvc': 0.139.0
+ '@oxc-parser/binding-android-arm-eabi': 0.140.0
+ '@oxc-parser/binding-android-arm64': 0.140.0
+ '@oxc-parser/binding-darwin-arm64': 0.140.0
+ '@oxc-parser/binding-darwin-x64': 0.140.0
+ '@oxc-parser/binding-freebsd-x64': 0.140.0
+ '@oxc-parser/binding-linux-arm-gnueabihf': 0.140.0
+ '@oxc-parser/binding-linux-arm-musleabihf': 0.140.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.140.0
+ '@oxc-parser/binding-linux-ppc64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-riscv64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-riscv64-musl': 0.140.0
+ '@oxc-parser/binding-linux-s390x-gnu': 0.140.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.140.0
+ '@oxc-parser/binding-linux-x64-musl': 0.140.0
+ '@oxc-parser/binding-openharmony-arm64': 0.140.0
+ '@oxc-parser/binding-wasm32-wasi': 0.140.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.140.0
+ '@oxc-parser/binding-win32-ia32-msvc': 0.140.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.140.0
oxc-resolver@11.24.2:
optionalDependencies:
@@ -10797,31 +10802,31 @@ snapshots:
'@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
'@oxc-resolver/binding-win32-x64-msvc': 11.24.2
- oxfmt@0.58.0:
+ oxfmt@0.59.0:
dependencies:
tinypool: 2.1.0
optionalDependencies:
- '@oxfmt/binding-android-arm-eabi': 0.58.0
- '@oxfmt/binding-android-arm64': 0.58.0
- '@oxfmt/binding-darwin-arm64': 0.58.0
- '@oxfmt/binding-darwin-x64': 0.58.0
- '@oxfmt/binding-freebsd-x64': 0.58.0
- '@oxfmt/binding-linux-arm-gnueabihf': 0.58.0
- '@oxfmt/binding-linux-arm-musleabihf': 0.58.0
- '@oxfmt/binding-linux-arm64-gnu': 0.58.0
- '@oxfmt/binding-linux-arm64-musl': 0.58.0
- '@oxfmt/binding-linux-ppc64-gnu': 0.58.0
- '@oxfmt/binding-linux-riscv64-gnu': 0.58.0
- '@oxfmt/binding-linux-riscv64-musl': 0.58.0
- '@oxfmt/binding-linux-s390x-gnu': 0.58.0
- '@oxfmt/binding-linux-x64-gnu': 0.58.0
- '@oxfmt/binding-linux-x64-musl': 0.58.0
- '@oxfmt/binding-openharmony-arm64': 0.58.0
- '@oxfmt/binding-win32-arm64-msvc': 0.58.0
- '@oxfmt/binding-win32-ia32-msvc': 0.58.0
- '@oxfmt/binding-win32-x64-msvc': 0.58.0
-
- oxlint-plugin-eslint@1.73.0: {}
+ '@oxfmt/binding-android-arm-eabi': 0.59.0
+ '@oxfmt/binding-android-arm64': 0.59.0
+ '@oxfmt/binding-darwin-arm64': 0.59.0
+ '@oxfmt/binding-darwin-x64': 0.59.0
+ '@oxfmt/binding-freebsd-x64': 0.59.0
+ '@oxfmt/binding-linux-arm-gnueabihf': 0.59.0
+ '@oxfmt/binding-linux-arm-musleabihf': 0.59.0
+ '@oxfmt/binding-linux-arm64-gnu': 0.59.0
+ '@oxfmt/binding-linux-arm64-musl': 0.59.0
+ '@oxfmt/binding-linux-ppc64-gnu': 0.59.0
+ '@oxfmt/binding-linux-riscv64-gnu': 0.59.0
+ '@oxfmt/binding-linux-riscv64-musl': 0.59.0
+ '@oxfmt/binding-linux-s390x-gnu': 0.59.0
+ '@oxfmt/binding-linux-x64-gnu': 0.59.0
+ '@oxfmt/binding-linux-x64-musl': 0.59.0
+ '@oxfmt/binding-openharmony-arm64': 0.59.0
+ '@oxfmt/binding-win32-arm64-msvc': 0.59.0
+ '@oxfmt/binding-win32-ia32-msvc': 0.59.0
+ '@oxfmt/binding-win32-x64-msvc': 0.59.0
+
+ oxlint-plugin-eslint@1.74.0: {}
oxlint-tsgolint@0.24.0:
optionalDependencies:
@@ -10832,27 +10837,27 @@ snapshots:
'@oxlint-tsgolint/win32-arm64': 0.24.0
'@oxlint-tsgolint/win32-x64': 0.24.0
- oxlint@1.73.0(oxlint-tsgolint@0.24.0):
+ oxlint@1.74.0(oxlint-tsgolint@0.24.0):
optionalDependencies:
- '@oxlint/binding-android-arm-eabi': 1.73.0
- '@oxlint/binding-android-arm64': 1.73.0
- '@oxlint/binding-darwin-arm64': 1.73.0
- '@oxlint/binding-darwin-x64': 1.73.0
- '@oxlint/binding-freebsd-x64': 1.73.0
- '@oxlint/binding-linux-arm-gnueabihf': 1.73.0
- '@oxlint/binding-linux-arm-musleabihf': 1.73.0
- '@oxlint/binding-linux-arm64-gnu': 1.73.0
- '@oxlint/binding-linux-arm64-musl': 1.73.0
- '@oxlint/binding-linux-ppc64-gnu': 1.73.0
- '@oxlint/binding-linux-riscv64-gnu': 1.73.0
- '@oxlint/binding-linux-riscv64-musl': 1.73.0
- '@oxlint/binding-linux-s390x-gnu': 1.73.0
- '@oxlint/binding-linux-x64-gnu': 1.73.0
- '@oxlint/binding-linux-x64-musl': 1.73.0
- '@oxlint/binding-openharmony-arm64': 1.73.0
- '@oxlint/binding-win32-arm64-msvc': 1.73.0
- '@oxlint/binding-win32-ia32-msvc': 1.73.0
- '@oxlint/binding-win32-x64-msvc': 1.73.0
+ '@oxlint/binding-android-arm-eabi': 1.74.0
+ '@oxlint/binding-android-arm64': 1.74.0
+ '@oxlint/binding-darwin-arm64': 1.74.0
+ '@oxlint/binding-darwin-x64': 1.74.0
+ '@oxlint/binding-freebsd-x64': 1.74.0
+ '@oxlint/binding-linux-arm-gnueabihf': 1.74.0
+ '@oxlint/binding-linux-arm-musleabihf': 1.74.0
+ '@oxlint/binding-linux-arm64-gnu': 1.74.0
+ '@oxlint/binding-linux-arm64-musl': 1.74.0
+ '@oxlint/binding-linux-ppc64-gnu': 1.74.0
+ '@oxlint/binding-linux-riscv64-gnu': 1.74.0
+ '@oxlint/binding-linux-riscv64-musl': 1.74.0
+ '@oxlint/binding-linux-s390x-gnu': 1.74.0
+ '@oxlint/binding-linux-x64-gnu': 1.74.0
+ '@oxlint/binding-linux-x64-musl': 1.74.0
+ '@oxlint/binding-openharmony-arm64': 1.74.0
+ '@oxlint/binding-win32-arm64-msvc': 1.74.0
+ '@oxlint/binding-win32-ia32-msvc': 1.74.0
+ '@oxlint/binding-win32-x64-msvc': 1.74.0
oxlint-tsgolint: 0.24.0
p-cancelable@4.0.1: {}
From 7379888d01499277adabb863f15593a2b9314407 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Jul 2026 18:44:01 +0800
Subject: [PATCH 319/670] chore(deps): bump actions/setup-node from 6.4.0 to
7.0.0 (#22711)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020)
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/build-assets.yml | 2 +-
.github/workflows/comment-on-issue.yml | 4 ++--
.github/workflows/docker-test-cont.yml | 2 +-
.github/workflows/format.yml | 2 +-
.github/workflows/issue-command.yml | 2 +-
.github/workflows/lint.yml | 2 +-
.github/workflows/npm-publish.yml | 2 +-
.github/workflows/test-full-routes.yml | 2 +-
.github/workflows/test.yml | 6 +++---
9 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml
index 5b03c411b6fd..3158d9791682 100644
--- a/.github/workflows/build-assets.yml
+++ b/.github/workflows/build-assets.yml
@@ -22,7 +22,7 @@ jobs:
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Use Node.js Active LTS
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/comment-on-issue.yml b/.github/workflows/comment-on-issue.yml
index 2b973468ca6d..d2952e479323 100644
--- a/.github/workflows/comment-on-issue.yml
+++ b/.github/workflows/comment-on-issue.yml
@@ -28,7 +28,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
@@ -62,7 +62,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/docker-test-cont.yml b/.github/workflows/docker-test-cont.yml
index 66404d2b89a7..7f20ab28316c 100644
--- a/.github/workflows/docker-test-cont.yml
+++ b/.github/workflows/docker-test-cont.yml
@@ -45,7 +45,7 @@ jobs:
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index 6f6d483e15cd..e60ab6ad85be 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/issue-command.yml b/.github/workflows/issue-command.yml
index 48832e6346e9..732ff9563d89 100644
--- a/.github/workflows/issue-command.yml
+++ b/.github/workflows/issue-command.yml
@@ -114,7 +114,7 @@ jobs:
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Use Node.js Active LTS
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index d5912c5d9a35..9f315d2c15cc 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -22,7 +22,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index 769e6593544c..34117cde510f 100644
--- a/.github/workflows/npm-publish.yml
+++ b/.github/workflows/npm-publish.yml
@@ -24,7 +24,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/test-full-routes.yml b/.github/workflows/test-full-routes.yml
index 7d6d41c0332e..fd36f0f40a60 100644
--- a/.github/workflows/test-full-routes.yml
+++ b/.github/workflows/test-full-routes.yml
@@ -18,7 +18,7 @@ jobs:
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Use Node.js Active LTS
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: lts/*
cache: 'pnpm'
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0a5c54105e35..02bda0de9aff 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -32,7 +32,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
@@ -79,7 +79,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
@@ -128,7 +128,7 @@ jobs:
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
From 2266ac7ec8e812d42020fbbaf6b28ceeccbf3eb8 Mon Sep 17 00:00:00 2001
From: Tony
Date: Tue, 14 Jul 2026 20:37:11 +0800
Subject: [PATCH 320/670] fix(route/telegram): workaround t.me issue (#22717)
---
lib/routes/telegram/channel.ts | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/routes/telegram/channel.ts b/lib/routes/telegram/channel.ts
index 094690c33c7b..c387f3c7b302 100644
--- a/lib/routes/telegram/channel.ts
+++ b/lib/routes/telegram/channel.ts
@@ -1,6 +1,7 @@
import querystring from 'node:querystring';
import { load } from 'cheerio';
+import { FetchError } from 'ofetch';
import { config } from '@/config';
import type { Route } from '@/types';
@@ -195,8 +196,14 @@ async function handler(ctx) {
const data = await cache.tryGet(
resourceUrl,
async () => {
- const _r = await ofetch(resourceUrl);
- return _r;
+ try {
+ return await ofetch(resourceUrl);
+ } catch (error) {
+ if (error instanceof FetchError && error.statusCode) {
+ throw error;
+ }
+ return await ofetch(resourceUrl.replace('https://t.me/', 'https://telegram.me/'));
+ }
},
config.cache.routeExpire,
false
From 097a56187f6b5b799b6e609485585b568aa26c92 Mon Sep 17 00:00:00 2001
From: Tony
Date: Tue, 14 Jul 2026 21:52:50 +0800
Subject: [PATCH 321/670] fix(utils/ofetch): surface root causes in fetch
errors (#22718)
* fix(ofetch): enhance error handling to surface root causes in fetch errors
* fix(errors): remove duplicated error name on dev
---
lib/errors/index.tsx | 8 +++-----
lib/utils/ofetch.test.ts | 9 +++++++++
lib/utils/ofetch.ts | 5 +++++
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/lib/errors/index.tsx b/lib/errors/index.tsx
index cd79d2ce705b..4366f574fe52 100644
--- a/lib/errors/index.tsx
+++ b/lib/errors/index.tsx
@@ -53,7 +53,7 @@ export const errorHandler: ErrorHandler = (error, ctx) => {
});
}
- let errorMessage = (process.env.NODE_ENV || process.env.VERCEL_ENV) === 'production' ? error.message : error.stack || error.message;
+ let errorMessage = (process.env.NODE_ENV || process.env.VERCEL_ENV) === 'production' || !error.stack ? `${error.name}: ${error.message}` : error.stack;
switch (error.name) {
case 'HTTPError':
case 'RequestError':
@@ -75,9 +75,7 @@ export const errorHandler: ErrorHandler = (error, ctx) => {
ctx.status(503);
break;
}
- const message = `${error.name}: ${errorMessage}`;
-
- logger.error(`Error in ${requestPath}: ${message}`);
+ logger.error(`Error in ${requestPath}: ${errorMessage}`);
requestMetric.error({ path: matchedRoute, method: ctx.req.method, status: ctx.res.status });
return config.isPackage || ctx.req.query('format') === 'json'
@@ -86,7 +84,7 @@ export const errorHandler: ErrorHandler = (error, ctx) => {
message: error.message ?? error,
},
})
- : ctx.html();
+ : ctx.html();
};
export const notFoundHandler: NotFoundHandler = (ctx) => errorHandler(new NotFoundError(), ctx);
diff --git a/lib/utils/ofetch.test.ts b/lib/utils/ofetch.test.ts
index bbd5e0eba085..c944d6a4ee4a 100644
--- a/lib/utils/ofetch.test.ts
+++ b/lib/utils/ofetch.test.ts
@@ -36,6 +36,15 @@ describe('ofetch', () => {
expect(warnSpy).toHaveBeenCalled();
});
+ it('surfaces the root cause in fetch error messages', async () => {
+ const { logger, ofetch } = await loadOfetchWithLogger();
+ vi.spyOn(logger, 'error').mockImplementation(() => logger);
+ const networkError = new TypeError('fetch failed', { cause: new Error('getaddrinfo ENOTFOUND t.me') });
+ vi.stubGlobal('fetch', vi.fn().mockRejectedValue(networkError));
+
+ await expect(ofetch('https://t.me/s/telegram', { retry: 0 })).rejects.toThrow('fetch failed (getaddrinfo ENOTFOUND t.me)');
+ });
+
it('logs redirected responses', async () => {
const { logger, ofetch } = await loadOfetchWithLogger();
const httpSpy = vi.spyOn(logger, 'http').mockImplementation(() => logger);
diff --git a/lib/utils/ofetch.ts b/lib/utils/ofetch.ts
index 3d572308a616..f90fa8c28022 100644
--- a/lib/utils/ofetch.ts
+++ b/lib/utils/ofetch.ts
@@ -35,6 +35,11 @@ const rofetch = createFetch({ fetch: (input: Parameters[0], init?:
},
onRequestError({ request, error }) {
logger.error(`Request ${request} fail: ${error.cause} ${error}`);
+ for (let cause: unknown = error.cause; cause instanceof Error; cause = cause.cause) {
+ if (cause.message) {
+ error.message += ` (${cause.message})`;
+ }
+ }
},
onResponse({ request, response }) {
if (response.redirected) {
From f06106e32b3d44187dcfb0ceddf1ac1279074b60 Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Tue, 14 Jul 2026 23:53:46 +0800
Subject: [PATCH 322/670] chore: update allowed and disallowed tools for
WebFetch based on event type
---
.github/workflows/pr-review.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml
index 176dd65bdf75..ba8cee0b2720 100644
--- a/.github/workflows/pr-review.yml
+++ b/.github/workflows/pr-review.yml
@@ -90,8 +90,8 @@ jobs:
display_report: 'true'
claude_args: |
--model ${{ vars.OPENCODE_MODEL }}
- --allowedTools "Bash(base64:*),Bash(cat:*),Bash(echo:*),Bash(gh api:*),Bash(gh auth:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh repo view:*),Bash(gh search:*),Bash(git diff:*),Bash(git log:*),Bash(git show:*),Bash(git status:*),Bash(grep:*),Bash(head:*),Bash(ls:*),Bash(rg:*),Bash(sed:*),Bash(tail:*),Bash(wc:*),WebFetch(domain:docs.rsshub.app)"
- --disallowedTools "WebSearch"
+ --allowedTools "Bash(base64:*),Bash(cat:*),Bash(echo:*),Bash(gh api:*),Bash(gh auth:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh repo view:*),Bash(gh search:*),Bash(git diff:*),Bash(git log:*),Bash(git show:*),Bash(git status:*),Bash(grep:*),Bash(head:*),Bash(ls:*),Bash(rg:*),Bash(sed:*),Bash(tail:*),Bash(wc:*),${{ github.event_name == 'workflow_dispatch' && 'WebFetch,WebSearch' || 'WebFetch(domain:docs.rsshub.app)' }}"
+ ${{ github.event_name != 'workflow_dispatch' && '--disallowedTools "WebSearch"' || '' }}
prompt: |
A pull request has been created or updated in this repository.
From 2155313b44b1e074bac6216448a9f743b8e36e91 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 08:14:42 +0000
Subject: [PATCH 323/670] chore(deps): bump @hono/node-server from 2.0.8 to
2.0.9 (#22724)
Bumps [@hono/node-server](https://github.com/honojs/node-server) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](https://github.com/honojs/node-server/compare/v2.0.8...v2.0.9)
---
updated-dependencies:
- dependency-name: "@hono/node-server"
dependency-version: 2.0.9
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 13 +++++++------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 6b9f085ec27d..2b86a5a8d1b4 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.14.0",
- "@hono/node-server": "2.0.8",
+ "@hono/node-server": "2.0.9",
"@hono/zod-openapi": "1.5.0",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c3b4000c941f..2905148d513e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,8 +47,8 @@ importers:
specifier: 6.14.0
version: 6.14.0
'@hono/node-server':
- specifier: 2.0.8
- version: 2.0.8(hono@4.12.30)
+ specifier: 2.0.9
+ version: 2.0.9(hono@4.12.30)
'@hono/zod-openapi':
specifier: 1.5.0
version: 1.5.0(hono@4.12.30)(zod@4.4.3)
@@ -1092,8 +1092,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- '@hono/node-server@2.0.8':
- resolution: {integrity: sha512-GuCWzLxwg218fy1JaHculFsdcuY12hxit83V+algozTPnwhNjLrRL/Alg9OYjLZLoUZ1rw/S4CdTMsnkSKCmFA==}
+ '@hono/node-server@2.0.9':
+ resolution: {integrity: sha512-cNMw3ziCdDcx0+ldta60zvUL5XO0OLt521n2hjPp0PB0ugczDCEczXsf33qQbkKIXWGFQ03f0LC85u6YK8pCLA==}
engines: {node: '>=20'}
peerDependencies:
hono: ^4
@@ -3585,7 +3585,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.49:
@@ -5757,6 +5757,7 @@ packages:
telegram@2.26.22:
resolution: {integrity: sha512-EIj7Yrjiu0Yosa3FZ/7EyPg9s6UiTi/zDQrFmR/2Mg7pIUU+XjAit1n1u9OU9h2oRnRM5M+67/fxzQluZpaJJg==}
+ deprecated: This package is archived and no longer maintained. Development continues in teleproto (https://npmjs.com/package/teleproto), a largely compatible, actively maintained fork. See the migration guide at https://docs.teleproto.dev/migrating-from-gramjs
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
@@ -6911,7 +6912,7 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.8(hono@4.12.30)':
+ '@hono/node-server@2.0.9(hono@4.12.30)':
dependencies:
hono: 4.12.30
From a20aa2c2a678bc9100e8267bc944297bf71fba9f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 08:21:16 +0000
Subject: [PATCH 324/670] chore(deps): bump @hono/zod-openapi from 1.5.0 to
1.5.1 (#22725)
Bumps [@hono/zod-openapi](https://github.com/honojs/middleware/tree/HEAD/packages/zod-openapi) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/honojs/middleware/releases)
- [Changelog](https://github.com/honojs/middleware/blob/main/packages/zod-openapi/CHANGELOG.md)
- [Commits](https://github.com/honojs/middleware/commits/@hono/zod-openapi@1.5.1/packages/zod-openapi)
---
updated-dependencies:
- dependency-name: "@hono/zod-openapi"
dependency-version: 1.5.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 2b86a5a8d1b4..be080f2ec3a6 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.14.0",
"@hono/node-server": "2.0.9",
- "@hono/zod-openapi": "1.5.0",
+ "@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.1",
"@opentelemetry/api": "1.9.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2905148d513e..cf49b36b1cc9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -50,8 +50,8 @@ importers:
specifier: 2.0.9
version: 2.0.9(hono@4.12.30)
'@hono/zod-openapi':
- specifier: 1.5.0
- version: 1.5.0(hono@4.12.30)(zod@4.4.3)
+ specifier: 1.5.1
+ version: 1.5.1(hono@4.12.30)(zod@4.4.3)
'@jocmp/mercury-parser':
specifier: 3.0.9
version: 3.0.9
@@ -1098,17 +1098,17 @@ packages:
peerDependencies:
hono: ^4
- '@hono/zod-openapi@1.5.0':
- resolution: {integrity: sha512-/clSBZWBht7G4SItlTo+4ElbdIUw+987kZYttaUUJWksJoqK905z1pBNTwoJm/P1ibA2ka8nNbqb39eOlreH2g==}
+ '@hono/zod-openapi@1.5.1':
+ resolution: {integrity: sha512-ZaDdEIkn6PEGjIYHXJeyByg6yhvLzI+UXn968pWtahpwcQ6HMjQYXI3zNffTl0Wl9QZ79nUnGqiN1erEIu23fA==}
engines: {node: '>=16.0.0'}
peerDependencies:
hono: '>=4.10.0'
zod: ^4.0.0
- '@hono/zod-validator@0.8.0':
- resolution: {integrity: sha512-5uS4S1/LKtZQYvD4BtpPUFkOv8d1wNxHHrChm26buMiEYc1FrHWvDUaKVBwkiVtvSExHSpLGDvcnpI2Copyj9w==}
+ '@hono/zod-validator@0.9.0':
+ resolution: {integrity: sha512-n0ZSXmCiHVIp4Y5wlOOyZCeTd/rsawA/qW1cipB8QOYKZ9N8Tk0nZUZCXho9cu374AN4JpDNKioNKBJ/W+LBug==}
peerDependencies:
- hono: '>=4.10.0'
+ hono: '>=4.11.2'
zod: ^3.25.0 || ^4.0.0
'@humanfs/core@0.19.2':
@@ -6916,15 +6916,15 @@ snapshots:
dependencies:
hono: 4.12.30
- '@hono/zod-openapi@1.5.0(hono@4.12.30)(zod@4.4.3)':
+ '@hono/zod-openapi@1.5.1(hono@4.12.30)(zod@4.4.3)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.5.0(zod@4.4.3)
- '@hono/zod-validator': 0.8.0(hono@4.12.30)(zod@4.4.3)
+ '@hono/zod-validator': 0.9.0(hono@4.12.30)(zod@4.4.3)
hono: 4.12.30
openapi3-ts: 4.6.0
zod: 4.4.3
- '@hono/zod-validator@0.8.0(hono@4.12.30)(zod@4.4.3)':
+ '@hono/zod-validator@0.9.0(hono@4.12.30)(zod@4.4.3)':
dependencies:
hono: 4.12.30
zod: 4.4.3
From c70be07dd47419af77a5fed7bb620e4ecebd75a5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 18:29:02 +0800
Subject: [PATCH 325/670] chore(deps-dev): bump the cloudflare group with 3
updates (#22721)
Bumps the cloudflare group with 3 updates: [@cloudflare/vitest-pool-workers](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/vitest-pool-workers), [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/vitest-pool-workers` from 0.18.4 to 0.18.5
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Changelog](https://github.com/cloudflare/workers-sdk/blob/main/packages/vitest-pool-workers/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/@cloudflare/vitest-pool-workers@0.18.5/packages/vitest-pool-workers)
Updates `@cloudflare/workers-types` from 5.20260714.1 to 5.20260715.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.110.0 to 4.111.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.111.0/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/vitest-pool-workers"
dependency-version: 0.18.5
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: cloudflare
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260715.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.111.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +--
pnpm-lock.yaml | 102 ++++++++++++++++++++++++-------------------------
2 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/package.json b/package.json
index be080f2ec3a6..dbfff02ba356 100644
--- a/package.json
+++ b/package.json
@@ -148,8 +148,8 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/vitest-pool-workers": "0.18.4",
- "@cloudflare/workers-types": "5.20260714.1",
+ "@cloudflare/vitest-pool-workers": "0.18.5",
+ "@cloudflare/workers-types": "5.20260715.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
@@ -208,7 +208,7 @@
"unrun": "0.3.1",
"vite-tsconfig-paths": "7.0.0-alpha.1",
"vitest": "4.1.10",
- "wrangler": "4.110.0",
+ "wrangler": "4.111.0",
"yaml-eslint-parser": "2.1.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cf49b36b1cc9..d694622ea6bb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -294,11 +294,11 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/vitest-pool-workers':
- specifier: 0.18.4
- version: 0.18.4(@cloudflare/workers-types@5.20260714.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ specifier: 0.18.5
+ version: 0.18.5(@cloudflare/workers-types@5.20260715.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260714.1
- version: 5.20260714.1
+ specifier: 5.20260715.1
+ version: 5.20260715.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -474,8 +474,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
- specifier: 4.110.0
- version: 4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.111.0
+ version: 4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -607,45 +607,45 @@ packages:
workerd:
optional: true
- '@cloudflare/vitest-pool-workers@0.18.4':
- resolution: {integrity: sha512-jOXvyLoR2b8jFvo3tX+mWxXXwcZ+PbId3d7vGFtZsuKakmDjKSeIq4o/sQjkqNv6q3XacIKSCAvfM8TfkPyrEw==}
+ '@cloudflare/vitest-pool-workers@0.18.5':
+ resolution: {integrity: sha512-Qe00zuHDRyAsOO7DmHnPcOhCiShdkt/NlRf/GrnKHzuXuysmt5YVyU/WaMVPqEkPYrgO+H9bSEJ1c9/7Nbw1Hg==}
peerDependencies:
'@vitest/runner': ^4.1.0
'@vitest/snapshot': ^4.1.0
vitest: ^4.1.0
- '@cloudflare/workerd-darwin-64@1.20260708.1':
- resolution: {integrity: sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg==}
+ '@cloudflare/workerd-darwin-64@1.20260710.1':
+ resolution: {integrity: sha512-OqJl2eWF5+y9jarMm3YqqCTUe7Hd4ihogX5jyRU8iaAgOVyDr/Bk6aXpPCVUi1/MHzO93a18R/TmSTtzmB0sQw==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260708.1':
- resolution: {integrity: sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA==}
+ '@cloudflare/workerd-darwin-arm64@1.20260710.1':
+ resolution: {integrity: sha512-MYBqWgUblO+VlGvO73zYsH3hB9tdRj+yLyt5IHDFWryipb2l1efmNiWtAOkIhSRfypqLYGFrfpaDm2Hg00XVKw==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260708.1':
- resolution: {integrity: sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA==}
+ '@cloudflare/workerd-linux-64@1.20260710.1':
+ resolution: {integrity: sha512-lVWUgqI8qrkqvaCBGElu1kdaUFdAvaS2RD8K4qkCFP9hI3f5TCXumEs5qWSeZkvKum0+X/uJZ5hBFWsYI5SmoQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260708.1':
- resolution: {integrity: sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA==}
+ '@cloudflare/workerd-linux-arm64@1.20260710.1':
+ resolution: {integrity: sha512-kDwDPItBjAI4JL0df9Fma2N+Qggbm77IB/DnroAkEGQ79fpR80sYMyuB/ZQKyjEk9f48Ocq7HCCLq59qVSyNqA==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260708.1':
- resolution: {integrity: sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA==}
+ '@cloudflare/workerd-windows-64@1.20260710.1':
+ resolution: {integrity: sha512-GcLHy1oN1dfK6g1Z7UDV9f5xMGyTfPwcjWQ0sfWKH31IsoEVCRapnj3IC0PoIrDbnoo6irGPP0CwVs3WzdTajw==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260714.1':
- resolution: {integrity: sha512-HGCTQVIQwzqAMLrZBCgLDrWKMgOdi6yn+S0Do1rF6z7t8tVvNprQfa53V6EDRRwsVO92uN5gviX2SxASDINZfA==}
+ '@cloudflare/workers-types@5.20260715.1':
+ resolution: {integrity: sha512-saxo/nMqQJ1dKDUXp1a2y/+IjKENFVD9+QRefHg5EjJZY20OG3xcEge4PGljbqZiF3AiU4o5ZLS3Vm7cayQIxg==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -4883,8 +4883,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260708.1:
- resolution: {integrity: sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA==}
+ miniflare@4.20260710.0:
+ resolution: {integrity: sha512-x1LLRkU6o1p7hiKrB0TRnL0MJn6xFOT+/vrlEQINz5cRDKLP8ru4hBqWTIvXAetzr1acKAnmAaG84pQ4W/K14g==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -6278,17 +6278,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260708.1:
- resolution: {integrity: sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w==}
+ workerd@1.20260710.1:
+ resolution: {integrity: sha512-U2sBPPrb9U97sBKnnMN6Kv8p65903P35nwMkPE9vSH/bRuRqkZ3a1EjUw3jV28RhiyXpkLF77Evzw8XimFxyTw==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.110.0:
- resolution: {integrity: sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg==}
+ wrangler@4.111.0:
+ resolution: {integrity: sha512-bffpI9EyrnpKkF/1S+RaIv8oRD93GtbsA7TlfWwOsGJGB7VO3jVbdGzpC9TU7Bqom3z7jUxcte4Z9MPhaQ4HoQ==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^5.20260708.1
+ '@cloudflare/workers-types': ^5.20260710.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6582,43 +6582,43 @@ snapshots:
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260708.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260708.1
+ workerd: 1.20260710.1
- '@cloudflare/vitest-pool-workers@0.18.4(@cloudflare/workers-types@5.20260714.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260715.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
- miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
- bufferutil
- utf-8-validate
- '@cloudflare/workerd-darwin-64@1.20260708.1':
+ '@cloudflare/workerd-darwin-64@1.20260710.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260708.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260710.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260708.1':
+ '@cloudflare/workerd-linux-64@1.20260710.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260708.1':
+ '@cloudflare/workerd-linux-arm64@1.20260710.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260708.1':
+ '@cloudflare/workerd-windows-64@1.20260710.1':
optional: true
- '@cloudflare/workers-types@5.20260714.1': {}
+ '@cloudflare/workers-types@5.20260715.1': {}
'@colors/colors@1.6.0': {}
@@ -10538,12 +10538,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.28.0
- workerd: 1.20260708.1
+ workerd: 1.20260710.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -12048,26 +12048,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260708.1:
+ workerd@1.20260710.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260708.1
- '@cloudflare/workerd-darwin-arm64': 1.20260708.1
- '@cloudflare/workerd-linux-64': 1.20260708.1
- '@cloudflare/workerd-linux-arm64': 1.20260708.1
- '@cloudflare/workerd-windows-64': 1.20260708.1
+ '@cloudflare/workerd-darwin-64': 1.20260710.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260710.1
+ '@cloudflare/workerd-linux-64': 1.20260710.1
+ '@cloudflare/workerd-linux-arm64': 1.20260710.1
+ '@cloudflare/workerd-windows-64': 1.20260710.1
- wrangler@4.110.0(@cloudflare/workers-types@5.20260714.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260708.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)
blake3-wasm: 2.1.5
esbuild: 0.28.1
- miniflare: 4.20260708.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260708.1
+ workerd: 1.20260710.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260714.1
+ '@cloudflare/workers-types': 5.20260715.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 5b4a2d18c6395d568730b0b3a9dfa418f8f69b1e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 18:42:08 +0800
Subject: [PATCH 326/670] chore(deps-dev): bump tsdown from 0.22.7 to 0.22.8
(#22722)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.7 to 0.22.8.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.7...v0.22.8)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.8
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 220 ++++++++++++++++++++++++-------------------------
2 files changed, 111 insertions(+), 111 deletions(-)
diff --git a/package.json b/package.json
index dbfff02ba356..ed71abf92ac9 100644
--- a/package.json
+++ b/package.json
@@ -201,7 +201,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.7",
+ "tsdown": "0.22.8",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d694622ea6bb..c9fe6de5f791 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -453,8 +453,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.7
- version: 0.22.7(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
+ specifier: 0.22.8
+ version: 0.22.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -2931,125 +2931,125 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.6.1':
- resolution: {integrity: sha512-LDJtpOKtcv9f3V0eDUwFmmy47t2VC+DAuN+gq80R1IA+fa0d408i6sHsVtt6n+g5rf8f86ySoPSAe94lHt6Ixw==}
+ '@yuku-codegen/binding-darwin-arm64@0.6.3':
+ resolution: {integrity: sha512-pbDcFygFmbvo0jGFq5U0m5Sa9U8aVttVJWbBHZDZ68w/X48HdDWS1V4XvBacs8XkmWbTr/ef5fMGG7HsngqTmg==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.6.1':
- resolution: {integrity: sha512-fBwpBOh33W7N87F94SVNExwm2KUV3ROhk51okr3Oy2ost1/JJuBWINVjcgwd2WPKZEFzUXgCzj/03UR/G+WIrQ==}
+ '@yuku-codegen/binding-darwin-x64@0.6.3':
+ resolution: {integrity: sha512-qZMrnA4i8OfqL3NMGoOvLdh1vby8cCGsmNo+tJQIIezXO557m3fdQLenz/57GqtBnnGWzWqd/aDp+faNxWlLwQ==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.6.1':
- resolution: {integrity: sha512-UpMkskQV3a5oPnJV+GFFupIqnLwSBD4ZsZAVUZuNVkrqct433FHKqTwuG+P5JhHZbmhf+++3Ie/V2sgduyXrAQ==}
+ '@yuku-codegen/binding-freebsd-x64@0.6.3':
+ resolution: {integrity: sha512-2+SFpfem2GBH6BlCTAq6R44bZwuieduwRWHkCQnSgbK8tdEjMwB0Ix0IchryVBn6hdiWCZSTkSE3UILliRXsRQ==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.6.1':
- resolution: {integrity: sha512-HICjDelfEDeD6TD8OEz/Dvt8KHxJiETR+paI/Fr7eVTQbjMfRrXJz8O1qV1qGH5SHZUGl2SAw2Rp+MLtXOjCrQ==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.3':
+ resolution: {integrity: sha512-fbxg3cBPdJ++36DXtdzcoKw2xzFov91Wxvmn1khX9MXQbDqJQLJmITZhtokcZsj4uGJe32sUmxAZnKbUtZLjmA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.6.1':
- resolution: {integrity: sha512-pUswnwa+WOmtH2ZGOWL05kFLMNY7/TnEAryfIv1yVFzKQnmSy9TKYi3oIOxGZL3w+cdUKCZ6Q+jaD0oI10ztzA==}
+ '@yuku-codegen/binding-linux-arm-musl@0.6.3':
+ resolution: {integrity: sha512-Jk4P7kocGEisSvUFIm1VuHO3hC01LvS3sYAAmVVu1/ve5TuZ0iXyl9kIGtd1ZrgUvchgvZWNOaB+/Kq/RO63FA==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.1':
- resolution: {integrity: sha512-Zro0FOu9clLCmqCnUKzEWHAu30tss0iEfhs+KDXm9Dpm1FkIHAKu43tF6FQU2hsTA7a8xd93NGddzc2EOJFKUg==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.3':
+ resolution: {integrity: sha512-i1xE8Bx1YZLheWtBZHD0Mq3nAIDrhgiH7o8VB4GiCbHufKb4XKj4CqSDMWSC0RYPmn//E+UEd1NsE2NbOux1tQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.6.1':
- resolution: {integrity: sha512-NZaT+mp9toqWuFEA4MYW5HMRxgIa8DCqnTTnM5SrrojZgm4QoMI/mJfifVet1ZHgl/Dly5m6H6GPpq43uXVj8g==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.3':
+ resolution: {integrity: sha512-ZeLkC6xZrlDoIJTadHfqTABTmsj2f6wCCtYBYx/RPGgdmQcGLA0NALRl7m0tnK2CT45eNRuOYzsfEZyF0XWM/A==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.6.1':
- resolution: {integrity: sha512-M5macseSCBPvJ4yfKNyQpMc7nBQBtj39MNfMt0r+8UkTnR5qJE00JJx06puHgPxT5hnGxMAuAWZ+3a9H2ngqAw==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.3':
+ resolution: {integrity: sha512-HNYt7zjIChPcnjZRG42CZq3Zn5mqaRo4UcFLr4mIbmGqdhX5hDDE8O8US8YgYyOUosfbBTBFdsbvFwVAx1TOkQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.6.1':
- resolution: {integrity: sha512-liAyBZI5AbazZGeeNfWj0jCD/TE2L84hgVYh4KkjJA/N9bNzFQCDf4BvWP76nEO89r2tIGEUjbXdM4mM26riHg==}
+ '@yuku-codegen/binding-linux-x64-musl@0.6.3':
+ resolution: {integrity: sha512-/1ttT31dAQc7hGtXWSEYEgzGtakAyO2C+/GqAzIuKXlGLpNPZgXdR8LZ0iDHDalbEr3AuHIPRV43sWLUrHWdsA==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.6.1':
- resolution: {integrity: sha512-qItzfH3x6MYChPeGfvh22rHD92WLgXQRSuwvspRVSnLvpnubEfZd+9REPRQVT2l9fIuETDCEkDNRqkDROQTkgA==}
+ '@yuku-codegen/binding-win32-arm64@0.6.3':
+ resolution: {integrity: sha512-oAArRDU1lkKg+xFEtiQ7C+/wghpqrkBrFWM05W73S+3sZz8JIHH79Q+Qh5gWls3i8vccitUgCnvln5V7xKn3XQ==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.6.1':
- resolution: {integrity: sha512-DFFkKROZ9ZAHmFMUFRtRTkosZds1KH8BOx5t3UpNULIjT3iuUmEx9V5pWR0xOi66sANY38Ap77nz1kOZraQxEg==}
+ '@yuku-codegen/binding-win32-x64@0.6.3':
+ resolution: {integrity: sha512-bhFDcDsvmp5KuBfWTt4carNo1E4LXH7++S8qqZgDtXVqJxs0xMm7gbuqPihA8kBbphM+NzAUm5qmq6ocfqM6kg==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.6.1':
- resolution: {integrity: sha512-jORysyRZg5zGDgVw15LGMsjZDh7jwjpUIJRBHgFt0ir15O5pEazfvuF2dnwvrJiTF0IT1EgHAVbTAYJWwQLCjg==}
+ '@yuku-parser/binding-darwin-arm64@0.6.3':
+ resolution: {integrity: sha512-Xate6yyZgvi7da/gdnZy+Vu5jlFB0LRlb5m4MY6Y98KSQeJPZIhoVXMK2Vsl48XOmPlDIS8lge414HUVUEo+hg==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.6.1':
- resolution: {integrity: sha512-dTeYFkkFlbP/WCB2DtezXas3NApOPtFlXSdssB7wGtY9wpNp4HAkVo1KBwI5mcHK0e2joyUcqTSf44mFE+q7vg==}
+ '@yuku-parser/binding-darwin-x64@0.6.3':
+ resolution: {integrity: sha512-WKMZ5UU2HBdGZDEpQoLq+21f1FlS+BjroH1FaVE6zCSeqKmZ7xRP5jIRGtQ4vCYj/k2KHgyABZ16lgK9mTe2Sg==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.6.1':
- resolution: {integrity: sha512-GExDp3rebo28mt3EAjvKQs0ZC3gkznAErV0I9TUNDa9muuhvD35kft61Mpsc6+NWeE+BG+kUyKbm6iO5B6ZMMA==}
+ '@yuku-parser/binding-freebsd-x64@0.6.3':
+ resolution: {integrity: sha512-OWX8V2k4bmtl/DNwU3yz3PZa2QXiSqWN3Xk7pNB5IPt7FcJBDlnpkOcX6h3tjMS7CyKE0lMvPUwwcmWSdbjkyA==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.6.1':
- resolution: {integrity: sha512-a9MjABj4J0VE3Z2oROGhmeddZZrhwwrnl4ZWZOuHUhD/smDtDiNtr0LpCbKB7rEYaQ29snopOPdZ/0T3YgLglQ==}
+ '@yuku-parser/binding-linux-arm-gnu@0.6.3':
+ resolution: {integrity: sha512-/4LzmPXPaCWqIpY1j3+XVb8rbXIratqCte3A4sGEjua6aVhvVxEVAqeKlBsoGkORWLeqbpcxhgxKwOGM17eexA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.6.1':
- resolution: {integrity: sha512-ctuvXJgDRKKlmJfHxT4RsTvcAcHEFNJHTCsGbtt4rluQpVDc+ezk9JvQ534ehoIfZ9T0eIHSBgqYAZ4xCatNmQ==}
+ '@yuku-parser/binding-linux-arm-musl@0.6.3':
+ resolution: {integrity: sha512-Df4jk0M/eNKKQfYzXBBKhKkmJBpB+XoX2LkMxmlK3GN+fxUdeb8EM78wX+1+eLVl5dZNo6f7gOd6oDV0gChevw==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.6.1':
- resolution: {integrity: sha512-vRtyoTtT0Ltowuh9LWOl/ZNU9h79J89ilOz5SEGspcw0jfhoUt19i07VNitll4jjfg5p2EN00q+MqX0pAobrFw==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.3':
+ resolution: {integrity: sha512-sRCtDktUgIbbV78SYX3wdGVVm1Hz/nSUS24JgXB4MzUeGNwBNB+eQAWMtBxCGriyJNXK3zwfj+SSgvTmUdPf/A==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.6.1':
- resolution: {integrity: sha512-vCsc3GOe1ylmRyfo/WLjIhjiCmaTtJbWNF4ZtgjNegDjpsRsFuCcP9duXB41QcfnJK38repKVFqFh0LR3l48FA==}
+ '@yuku-parser/binding-linux-arm64-musl@0.6.3':
+ resolution: {integrity: sha512-3J/jV3ROSqlhLyB/6i5EUHxjkom5i59iPvrtiAsnAjHzMsZJJPEke9LSaOsB0rf4MJFH9AmjvsK8gDahTjZy+A==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.6.1':
- resolution: {integrity: sha512-gw3d81RdUHSYwjDW2IG6gEtm4VDoPP4ZOqpuC6Nc8+UBfos+4gTWOgzmuxIOVhkSV2fJCcUDpSJIlPzEU0FLZw==}
+ '@yuku-parser/binding-linux-x64-gnu@0.6.3':
+ resolution: {integrity: sha512-a5mPn/OMSq2Aa2i7eJXcc37Jtw0b89gDO2mDpXN769b06IirEiqOzLNNJd6R7R8DxoadHzY0nLFhYNChE+jyAg==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.6.1':
- resolution: {integrity: sha512-nzU+Doq9UgZvYYvald36lZJ2Neeyheije6WE/YpoFt/oJiNmnjArRgr2CMtb/7gWBl80YSMwcHK4Ju0E+7wfWg==}
+ '@yuku-parser/binding-linux-x64-musl@0.6.3':
+ resolution: {integrity: sha512-kQSjfa6zdvotuXEGNKQ9vZZxE+lcEEbTUMSuvY/5+0crlwBCjEqrf9/W9ViFDoQAEt8WJiu/mtVNYkKAOkjLmA==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.6.1':
- resolution: {integrity: sha512-r3tXFVDliWCPe7TL6DVxUkT4rkqnXyeFVSEDf+V9My6Gztq99/gIe3POQqFbshTRuSrpEYMGMbGxeFh+m+stxA==}
+ '@yuku-parser/binding-win32-arm64@0.6.3':
+ resolution: {integrity: sha512-ZawdN3R0YKr48BeXCpbax+WDWbgEG6nWyDosVeZasrT5TjgfF4XMP5SfuyMNvRJ4gbTitrcYHZkENSXZ9ncqcg==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.6.1':
- resolution: {integrity: sha512-FqYMOqeCS2XTdn5yvaKlOhtSQ84mVO3aTXp6LGfMd9Zq8RsV4H8qLWv+sxJsgPCXfuBV64u8/f+CTr3uIwNLWA==}
+ '@yuku-parser/binding-win32-x64@0.6.3':
+ resolution: {integrity: sha512-NcqZwBXQhKyfC0Eb+yBxXQcPjZoUstD1Dbr3X4UlOD1QiYfnvAYRKCZJ6nQ6KQ5p30dGaKkQeBL4t3qQtDQNWA==}
cpu: [x64]
os: [win32]
@@ -5491,14 +5491,14 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown-plugin-dts@0.27.8:
- resolution: {integrity: sha512-IjBTFpkrYYJPRUmIjUJFsZdR1zeHskFcEwFDzSfFDoC2pZcSNgLrBUcDFY9K0Q+A1TZJR3q9MlVomxMDP8AuLQ==}
+ rolldown-plugin-dts@0.27.9:
+ resolution: {integrity: sha512-d54yt65+ZF/Mk8H6P36As02PAMdaiWRSzVNtJRc1h7nCgUFjuRI4cN2DyTfJyfVpPH6pgy7/2D7YQH1/Rh75Yg==}
engines: {node: ^22.18.0 || >=24.11.0}
peerDependencies:
'@ts-macro/tsc': ^0.3.6
- '@typescript/native-preview': '>=7.0.0-dev.20260325.1'
+ '@typescript/native-preview': '*'
rolldown: ^1.0.0
- typescript: ^5.0.0 || ^6.0.0 || ^7.0.0
+ typescript: ^5.0.0 || ^6.0.0 || ~7.0.0
vue-tsc: ~3.2.0 || ~3.3.0
peerDependenciesMeta:
'@ts-macro/tsc':
@@ -5882,14 +5882,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.7:
- resolution: {integrity: sha512-4egbOzc9dxVv/QS+gDV75FIxDIjQQeOnXBlUuikyjmn0ozuc6FW11djJjEEo3vqkuJRygpnKHurnj+Iwftk4VA==}
+ tsdown@0.22.8:
+ resolution: {integrity: sha512-6FOLlr1iLcE3LheqQt13hVUWtTduJNwF2akPskPe8Tf1hr+N5UULHzrNZYTMNwL6lr2UyQ8iefVBB6tdqp1PCQ==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.7
- '@tsdown/exe': 0.22.7
+ '@tsdown/css': 0.22.8
+ '@tsdown/exe': 0.22.8
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6414,11 +6414,11 @@ packages:
yuku-ast@0.1.7:
resolution: {integrity: sha512-2RiMEWv500TixY5rJy6OZd4fSy9WYZKWh6gGbIJ7y7vAGcuCugWOWwOLGaQcRZrXcPUfqtLtvpaJ3SdXtWlhKA==}
- yuku-codegen@0.6.1:
- resolution: {integrity: sha512-6RJqqON2xYhMEp/sZv5oOSI3uOpWwRwzAi2fc/rMcRFjcqedAC5Fyp4AD9Vn2b8SB7hf9ESqVW+YwbDs/KvyKA==}
+ yuku-codegen@0.6.3:
+ resolution: {integrity: sha512-3c9H521tf1RRDu4cNUySfH01sKlALve4HKu2sITk33gLl5HhsvI6ngSuarpWxMPAiJEgqJc/HTvojWQRnYm9/g==}
- yuku-parser@0.6.1:
- resolution: {integrity: sha512-dPE3/+H2VBw9LhjoIVeW/axKidYGd+XzNtrwGGseZ0325cQFl0Dpwyh0R74XWe/WqQn4M8CR5YApsv2KF2zN1A==}
+ yuku-parser@0.6.3:
+ resolution: {integrity: sha512-iI6uABvvup9mvv8Mcpz7Tp//gehQlvcSnX4A4/0bf9i6X3RVQDuVUZel8jdpljwlF7WrbKsvD19y55Mc6+sKZw==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -8386,70 +8386,70 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.6.1':
+ '@yuku-codegen/binding-darwin-arm64@0.6.3':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.6.1':
+ '@yuku-codegen/binding-darwin-x64@0.6.3':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.6.1':
+ '@yuku-codegen/binding-freebsd-x64@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.6.1':
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.6.1':
+ '@yuku-codegen/binding-linux-arm-musl@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.1':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.6.1':
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.6.1':
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.3':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.6.1':
+ '@yuku-codegen/binding-linux-x64-musl@0.6.3':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.6.1':
+ '@yuku-codegen/binding-win32-arm64@0.6.3':
optional: true
- '@yuku-codegen/binding-win32-x64@0.6.1':
+ '@yuku-codegen/binding-win32-x64@0.6.3':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.6.1':
+ '@yuku-parser/binding-darwin-arm64@0.6.3':
optional: true
- '@yuku-parser/binding-darwin-x64@0.6.1':
+ '@yuku-parser/binding-darwin-x64@0.6.3':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.6.1':
+ '@yuku-parser/binding-freebsd-x64@0.6.3':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.6.1':
+ '@yuku-parser/binding-linux-arm-gnu@0.6.3':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.6.1':
+ '@yuku-parser/binding-linux-arm-musl@0.6.3':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.6.1':
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.3':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.6.1':
+ '@yuku-parser/binding-linux-arm64-musl@0.6.3':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.6.1':
+ '@yuku-parser/binding-linux-x64-gnu@0.6.3':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.6.1':
+ '@yuku-parser/binding-linux-x64-musl@0.6.3':
optional: true
- '@yuku-parser/binding-win32-arm64@0.6.1':
+ '@yuku-parser/binding-win32-arm64@0.6.3':
optional: true
- '@yuku-parser/binding-win32-x64@0.6.1':
+ '@yuku-parser/binding-win32-x64@0.6.3':
optional: true
'@yuku-toolchain/types@0.5.43': {}
@@ -11251,15 +11251,15 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5):
+ rolldown-plugin-dts@0.27.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5):
dependencies:
dts-resolver: 3.0.0(oxc-resolver@11.24.2)
get-tsconfig: 5.0.0-beta.5
obug: 2.1.3
rolldown: 1.1.5
yuku-ast: 0.1.7
- yuku-codegen: 0.6.1
- yuku-parser: 0.6.1
+ yuku-codegen: 0.6.3
+ yuku-parser: 0.6.3
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11683,7 +11683,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.7(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
+ tsdown@0.22.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11694,7 +11694,7 @@ snapshots:
obug: 2.1.3
picomatch: 4.0.5
rolldown: 1.1.5
- rolldown-plugin-dts: 0.27.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5)
+ rolldown-plugin-dts: 0.27.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5)
semver: 7.8.5
tinyexec: 1.2.4
tinyglobby: 0.2.17
@@ -12200,37 +12200,37 @@ snapshots:
dependencies:
'@yuku-toolchain/types': 0.5.43
- yuku-codegen@0.6.1:
+ yuku-codegen@0.6.3:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.6.1
- '@yuku-codegen/binding-darwin-x64': 0.6.1
- '@yuku-codegen/binding-freebsd-x64': 0.6.1
- '@yuku-codegen/binding-linux-arm-gnu': 0.6.1
- '@yuku-codegen/binding-linux-arm-musl': 0.6.1
- '@yuku-codegen/binding-linux-arm64-gnu': 0.6.1
- '@yuku-codegen/binding-linux-arm64-musl': 0.6.1
- '@yuku-codegen/binding-linux-x64-gnu': 0.6.1
- '@yuku-codegen/binding-linux-x64-musl': 0.6.1
- '@yuku-codegen/binding-win32-arm64': 0.6.1
- '@yuku-codegen/binding-win32-x64': 0.6.1
-
- yuku-parser@0.6.1:
+ '@yuku-codegen/binding-darwin-arm64': 0.6.3
+ '@yuku-codegen/binding-darwin-x64': 0.6.3
+ '@yuku-codegen/binding-freebsd-x64': 0.6.3
+ '@yuku-codegen/binding-linux-arm-gnu': 0.6.3
+ '@yuku-codegen/binding-linux-arm-musl': 0.6.3
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.6.3
+ '@yuku-codegen/binding-linux-arm64-musl': 0.6.3
+ '@yuku-codegen/binding-linux-x64-gnu': 0.6.3
+ '@yuku-codegen/binding-linux-x64-musl': 0.6.3
+ '@yuku-codegen/binding-win32-arm64': 0.6.3
+ '@yuku-codegen/binding-win32-x64': 0.6.3
+
+ yuku-parser@0.6.3:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.6.1
- '@yuku-parser/binding-darwin-x64': 0.6.1
- '@yuku-parser/binding-freebsd-x64': 0.6.1
- '@yuku-parser/binding-linux-arm-gnu': 0.6.1
- '@yuku-parser/binding-linux-arm-musl': 0.6.1
- '@yuku-parser/binding-linux-arm64-gnu': 0.6.1
- '@yuku-parser/binding-linux-arm64-musl': 0.6.1
- '@yuku-parser/binding-linux-x64-gnu': 0.6.1
- '@yuku-parser/binding-linux-x64-musl': 0.6.1
- '@yuku-parser/binding-win32-arm64': 0.6.1
- '@yuku-parser/binding-win32-x64': 0.6.1
+ '@yuku-parser/binding-darwin-arm64': 0.6.3
+ '@yuku-parser/binding-darwin-x64': 0.6.3
+ '@yuku-parser/binding-freebsd-x64': 0.6.3
+ '@yuku-parser/binding-linux-arm-gnu': 0.6.3
+ '@yuku-parser/binding-linux-arm-musl': 0.6.3
+ '@yuku-parser/binding-linux-arm64-gnu': 0.6.3
+ '@yuku-parser/binding-linux-arm64-musl': 0.6.3
+ '@yuku-parser/binding-linux-x64-gnu': 0.6.3
+ '@yuku-parser/binding-linux-x64-musl': 0.6.3
+ '@yuku-parser/binding-win32-arm64': 0.6.3
+ '@yuku-parser/binding-win32-x64': 0.6.3
zod@3.25.76: {}
From 267db2e768208207b7d1962908409ee12ab18954 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 18:50:30 +0800
Subject: [PATCH 327/670] chore(deps): bump nixpkgs from `e7a3ca8` to `18b9261`
(#22727)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `e7a3ca8` to `18b9261`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3...18b9261cb3294b6d2a06d03f96872827b8fe2698)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: 18b9261cb3294b6d2a06d03f96872827b8fe2698
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 25853472584b..37797bbc0ce4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1783776592,
- "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=",
+ "lastModified": 1784007870,
+ "narHash": "sha256-djcLt/JJphyNt4eDY9XTly+/WbCK5lqWq9lSgCmJkkQ=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3",
+ "rev": "18b9261cb3294b6d2a06d03f96872827b8fe2698",
"type": "github"
},
"original": {
From 65c2e34402c8f0e964135ef6747bf5d0ab049960 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 19:17:07 +0800
Subject: [PATCH 328/670] chore(deps): bump devenv from `32f6747` to `83e8d7d`
(#22726)
Bumps [devenv](https://github.com/cachix/devenv) from `32f6747` to `83e8d7d`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/32f6747aabbd5aeb7413bae53d7e01e224ec77bc...83e8d7d34bdebad98ab936b6af53d57ae67af420)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 83e8d7d34bdebad98ab936b6af53d57ae67af420
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 37797bbc0ce4..db12d9d22846 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1783972995,
- "narHash": "sha256-BIti2dNiCWjOpemU6z0sKaSa214XwdynXckvX5Sirkk=",
+ "lastModified": 1784066496,
+ "narHash": "sha256-0ULUc0h8q6wAuvNZE89opjnhKUMMiC4GGKM8d+9dh/8=",
"owner": "cachix",
"repo": "devenv",
- "rev": "32f6747aabbd5aeb7413bae53d7e01e224ec77bc",
+ "rev": "83e8d7d34bdebad98ab936b6af53d57ae67af420",
"type": "github"
},
"original": {
From 6bce9493b5b90e7330e38cb7547cc9871d7e04a6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 23:11:15 +0800
Subject: [PATCH 329/670] chore(deps-dev): bump eslint-plugin-unicorn from
71.1.0 to 72.0.0 (#22723)
* chore(deps-dev): bump eslint-plugin-unicorn from 71.1.0 to 72.0.0
Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 71.1.0 to 72.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v71.1.0...v72.0.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
dependency-version: 72.0.0
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
* style: fix prefer-dom-node-html-methods
* style: fix prefer-split-limit
* style: fix no-unnecessary-string-trim
* style: fix no-multiple-promise-resolver-calls
* style: add v72 preset
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: TonyRL
---
.oxlintrc.json | 9 ++++-
lib/api/namespace/one.test.ts | 2 +-
lib/routes/acs/journal.tsx | 2 +-
lib/routes/aip/utils.tsx | 2 +-
lib/routes/alternativeto/utils.ts | 2 +-
lib/routes/apkpure/versions.ts | 2 +-
lib/routes/bestofjs/monthly.tsx | 4 +--
lib/routes/bluestacks/release.ts | 4 +--
lib/routes/chinadegrees/province.tsx | 2 +-
lib/routes/cmde/index.ts | 4 +--
lib/routes/cw/utils.ts | 4 +--
lib/routes/domp4/detail.ts | 2 +-
lib/routes/gdut/oa-news.ts | 2 +-
lib/routes/github/pulse.tsx | 2 +-
lib/routes/github/trending.tsx | 2 +-
lib/routes/google/developers.ts | 2 +-
lib/routes/gov/customs/utils.ts | 2 +-
lib/routes/gov/pbc/goutongjiaoliu.ts | 4 +--
lib/routes/gov/pbc/trade-announcement.ts | 4 +--
lib/routes/hitcon/zeroday.tsx | 2 +-
lib/routes/ielts/index.ts | 2 +-
lib/routes/iknowwhatyoudownload/daily.tsx | 2 +-
lib/routes/j-test/news.ts | 2 +-
lib/routes/lancedb/blog.ts | 2 +-
lib/routes/makerworld/utils.ts | 2 +-
lib/routes/missav/new.tsx | 2 +-
lib/routes/nga/post.ts | 2 +-
lib/routes/nytimes/utils.ts | 2 +-
lib/routes/parliament.uk/commonslibrary.ts | 2 +-
lib/routes/parliament.uk/lordslibrary.ts | 2 +-
lib/routes/parliament/section77.ts | 4 +--
lib/routes/perplexity/blog.ts | 4 +--
lib/routes/perplexity/changelog.ts | 4 +--
lib/routes/pincong/utils.ts | 2 +-
lib/routes/pnas/index.tsx | 2 +-
lib/routes/questn/util.ts | 2 +-
lib/routes/researchgate/publications.ts | 4 +--
lib/routes/science/utils.tsx | 2 +-
lib/routes/sse/convert.ts | 2 +-
lib/routes/sse/disclosure.ts | 2 +-
lib/routes/swjtu/scai.ts | 2 +-
lib/routes/syosetu/ranking-isekai.ts | 2 +-
lib/routes/syosetu/ranking-r18.ts | 2 +-
lib/routes/syosetu/ranking.ts | 4 +--
lib/routes/szse/disclosure/listed-notice.ts | 2 +-
lib/routes/telegram/channel-media.ts | 2 +-
lib/routes/twitter/api/web-api/login.ts | 2 +-
lib/routes/uchicago/current.ts | 4 +--
lib/routes/uraaka-joshi/uraaka-joshi-user.ts | 2 +-
lib/routes/uraaka-joshi/uraaka-joshi.ts | 2 +-
lib/routes/xsijishe/utils.ts | 4 +--
lib/routes/xueqiu/cookies.ts | 2 +-
lib/utils/playwright-utils.ts | 2 +-
lib/utils/playwright.test.ts | 4 +--
package.json | 2 +-
pnpm-lock.yaml | 35 +++++++++++++++-----
56 files changed, 102 insertions(+), 78 deletions(-)
diff --git a/.oxlintrc.json b/.oxlintrc.json
index b937c76587cd..5936fe34c6d1 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -237,6 +237,7 @@
"unicorn/no-magic-array-flat-depth": "error",
"unicorn-js/no-mismatched-map-key": "error",
"unicorn-js/no-misrefactored-assignment": "error",
+ "unicorn-js/no-multiple-promise-resolver-calls": "error",
// "unicorn/no-named-default": "error", -> use import/no-named-default
"unicorn-js/no-negated-array-predicate": "error",
"unicorn-js/no-negated-comparison": "error",
@@ -257,12 +258,14 @@
"unicorn-js/no-redundant-comparison": "error",
"unicorn-js/no-return-array-push": "error",
"unicorn-js/no-selector-as-dom-name": "error",
+ // "unicorn-js/no-shorthand-property-overrides": "error", // css
"unicorn/no-single-promise-in-promise-methods": "error",
"unicorn/no-static-only-class": "error",
"unicorn-js/no-subtraction-comparison": "error",
"unicorn/no-thenable": "error",
"unicorn/no-this-assignment": "error",
"unicorn-js/no-this-outside-of-class": "error",
+ // "unicorn-js/no-transition-all": "error", // css
// "unicorn-js/no-top-level-assignment-in-function": "error", // unopinionated
// "unicorn-js/no-top-level-side-effects": "error", // allows dayjs.extend()
"unicorn/no-typeof-undefined": "error",
@@ -279,6 +282,7 @@
"unicorn-js/no-unnecessary-polyfills": "error",
"unicorn/no-unnecessary-slice-end": "error",
"unicorn-js/no-unnecessary-splice": "error",
+ "unicorn-js/no-unnecessary-string-trim": "error",
"unicorn/no-unreadable-array-destructuring": "error",
"unicorn-js/no-unreadable-for-of-expression": "error",
"unicorn/no-unreadable-iife": "error",
@@ -303,6 +307,7 @@
"unicorn-js/no-useless-logical-operand": "error",
"unicorn-js/no-useless-override": "error",
"unicorn/no-useless-promise-resolve-reject": "error",
+ "unicorn-js/no-useless-re-export": "error",
// "unicorn-js/no-useless-recursion": "error", unopinionated
"unicorn/no-useless-spread": "error",
// "unicorn/no-useless-switch-case": "error",
@@ -344,6 +349,7 @@
"unicorn-js/prefer-direct-iteration": "error",
"unicorn/prefer-dom-node-append": "error",
"unicorn/prefer-dom-node-dataset": "error",
+ "unicorn-js/prefer-dom-node-html-methods": "error",
"unicorn/prefer-dom-node-remove": "error",
"unicorn-js/prefer-dom-node-replace-children": "error",
"unicorn/prefer-dom-node-text-content": "error",
@@ -405,7 +411,7 @@
"unicorn-js/prefer-set-methods": "error",
"unicorn/prefer-set-size": "error",
"unicorn-js/prefer-short-arrow-method": "warn",
- "unicorn-js/prefer-simple-condition-first": "error",
+ // "unicorn-js/prefer-simple-condition-first": "error", // unopinionated
"unicorn-js/prefer-simple-sort-comparator": "error",
"unicorn-js/prefer-simplified-conditions": "error",
"unicorn-js/prefer-single-array-predicate": "error",
@@ -426,6 +432,7 @@
"unicorn/prefer-structured-clone": "error",
// "unicorn/prefer-switch": "error",
"unicorn/prefer-ternary": "error",
+ "unicorn-js/prefer-then-catch": "error",
"unicorn-js/prefer-toggle-attribute": "error",
// "unicorn/prefer-top-level-await": "error",
"unicorn/prefer-type-error": "error",
diff --git a/lib/api/namespace/one.test.ts b/lib/api/namespace/one.test.ts
index 20501ab01c96..65ce85bcb443 100644
--- a/lib/api/namespace/one.test.ts
+++ b/lib/api/namespace/one.test.ts
@@ -25,7 +25,7 @@ describe('api/namespace/one', () => {
it('returns a nested namespace', async () => {
expect(nestedKey).toBeDefined();
- const [namespace, sub] = nestedKey.split('/');
+ const [namespace, sub] = nestedKey.split('/', 2);
const result = await oneHandler(createCtx({ namespace, sub }), noopNext);
expect(result).toBe(namespaces[nestedKey]);
});
diff --git a/lib/routes/acs/journal.tsx b/lib/routes/acs/journal.tsx
index d5f2b847817d..24d1278bc3cc 100644
--- a/lib/routes/acs/journal.tsx
+++ b/lib/routes/acs/journal.tsx
@@ -42,7 +42,7 @@ async function handler(ctx) {
});
await page.waitForSelector('.toc');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(html);
diff --git a/lib/routes/aip/utils.tsx b/lib/routes/aip/utils.tsx
index 00826b987be3..c28a7d9ca875 100644
--- a/lib/routes/aip/utils.tsx
+++ b/lib/routes/aip/utils.tsx
@@ -10,7 +10,7 @@ const playwrightGet = async (url, context) => {
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
return html;
};
diff --git a/lib/routes/alternativeto/utils.ts b/lib/routes/alternativeto/utils.ts
index 8160f19c5471..77e9b4f3c65f 100644
--- a/lib/routes/alternativeto/utils.ts
+++ b/lib/routes/alternativeto/utils.ts
@@ -13,7 +13,7 @@ const playwrightGet = (url, cache) =>
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
return html;
});
diff --git a/lib/routes/apkpure/versions.ts b/lib/routes/apkpure/versions.ts
index bce6bb781d1e..93f2e5b6db83 100644
--- a/lib/routes/apkpure/versions.ts
+++ b/lib/routes/apkpure/versions.ts
@@ -39,7 +39,7 @@ async function handler(ctx) {
waitUntil: 'domcontentloaded',
});
- const r = await page.evaluate(() => document.documentElement.innerHTML);
+ const r = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
const $ = load(r);
diff --git a/lib/routes/bestofjs/monthly.tsx b/lib/routes/bestofjs/monthly.tsx
index 6c9d063f7427..7b247b44c199 100644
--- a/lib/routes/bestofjs/monthly.tsx
+++ b/lib/routes/bestofjs/monthly.tsx
@@ -34,12 +34,12 @@ export const route: Route = {
const targetMonths = getLastSixMonths();
const allNeededMonthlyRankings = await Promise.all(
targetMonths.map((data) => {
- const [year, month] = data.split('-');
+ const [year, month] = data.split('-', 2);
return getMonthlyRankings(year, month);
})
);
const items = allNeededMonthlyRankings.flatMap((oneMonthlyRankings, i) => {
- const [year, month] = targetMonths[i].split('-');
+ const [year, month] = targetMonths[i].split('-', 2);
const description = renderToString(
{oneMonthlyRankings.map((item, index) => (
diff --git a/lib/routes/bluestacks/release.ts b/lib/routes/bluestacks/release.ts
index d76a1a7b1ee7..127979f387a3 100644
--- a/lib/routes/bluestacks/release.ts
+++ b/lib/routes/bluestacks/release.ts
@@ -41,7 +41,7 @@ async function handler() {
await page.goto(pageUrl, {
waitUntil: 'domcontentloaded',
});
- const res = await page.evaluate(() => document.documentElement.innerHTML);
+ const res = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(res);
@@ -67,7 +67,7 @@ async function handler() {
await page.goto(item.link, {
waitUntil: 'domcontentloaded',
});
- const res = await page.evaluate(() => document.documentElement.innerHTML);
+ const res = await page.evaluate(() => document.documentElement.getHTML());
const $ = load(res);
await page.close();
diff --git a/lib/routes/chinadegrees/province.tsx b/lib/routes/chinadegrees/province.tsx
index e129324fe2f2..f627575ca911 100644
--- a/lib/routes/chinadegrees/province.tsx
+++ b/lib/routes/chinadegrees/province.tsx
@@ -93,7 +93,7 @@ async function handler(ctx) {
});
await page.waitForSelector('.datalist');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
const $ = load(html);
diff --git a/lib/routes/cmde/index.ts b/lib/routes/cmde/index.ts
index 910b5b16bd7d..aa71731617a6 100644
--- a/lib/routes/cmde/index.ts
+++ b/lib/routes/cmde/index.ts
@@ -29,7 +29,7 @@ async function handler(ctx) {
waitUntil: 'domcontentloaded',
});
await page.waitForSelector('.list');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(html);
@@ -62,7 +62,7 @@ async function handler(ctx) {
});
await page.waitForSelector('.text');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(html);
item.description = $('.text').html();
diff --git a/lib/routes/cw/utils.ts b/lib/routes/cw/utils.ts
index 2e68825e1d13..0cf4b8e2934a 100644
--- a/lib/routes/cw/utils.ts
+++ b/lib/routes/cw/utils.ts
@@ -65,7 +65,7 @@ const parsePage = async (path, context: BrowserContext, ctx) => {
});
await page.waitForSelector('.caption');
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(response);
@@ -100,7 +100,7 @@ const parseItems = (list, context: BrowserContext) =>
await page.goto(item.link, {
waitUntil: 'domcontentloaded',
});
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(response);
diff --git a/lib/routes/domp4/detail.ts b/lib/routes/domp4/detail.ts
index a8500872b358..8ab39562a9d6 100644
--- a/lib/routes/domp4/detail.ts
+++ b/lib/routes/domp4/detail.ts
@@ -45,7 +45,7 @@ export function getItemList($, detailUrl, second) {
const { downurls } = second && data.Data.length > 1 ? data.Data[1] : data.Data[0];
return downurls.map((item) => {
- const [title, downurl] = item.split('$');
+ const [title, downurl] = item.split('$', 2);
const urlType = getUrlType(downurl);
// only magnet need compose trackers
const enclosureUrl = urlType === 'magnet' ? composeMagnetUrl(downurl) : downurl;
diff --git a/lib/routes/gdut/oa-news.ts b/lib/routes/gdut/oa-news.ts
index 60ee8c13f954..1410152fa9b3 100644
--- a/lib/routes/gdut/oa-news.ts
+++ b/lib/routes/gdut/oa-news.ts
@@ -177,7 +177,7 @@ async function handler(ctx) {
delete el.attribs.style;
}
}
- if (el.attribs.class && el.attribs.class.trim().startsWith('Mso')) {
+ if (el.attribs.class && el.attribs.class.trimStart().startsWith('Mso')) {
delete el.attribs.class;
}
if (el.attribs.lang) {
diff --git a/lib/routes/github/pulse.tsx b/lib/routes/github/pulse.tsx
index 77ddf9ce29df..c32d6fd142c2 100644
--- a/lib/routes/github/pulse.tsx
+++ b/lib/routes/github/pulse.tsx
@@ -47,7 +47,7 @@ async function handler(ctx) {
const $mainSections = $('main .Layout-main').children();
const $subheading = $mainSections.eq(0);
- const [periodFrom, periodTo] = $subheading.find('h2').text().split('–');
+ const [periodFrom, periodTo] = $subheading.find('h2').text().split('–', 2);
const $overview = $mainSections.eq(1);
const overviewItems = $overview
diff --git a/lib/routes/github/trending.tsx b/lib/routes/github/trending.tsx
index c3d4ec092c32..d91f45e33a0a 100644
--- a/lib/routes/github/trending.tsx
+++ b/lib/routes/github/trending.tsx
@@ -84,7 +84,7 @@ async function handler(ctx) {
const articles = $('article');
const trendingRepos = articles.toArray().map((item) => {
- const [owner, name] = $(item).find('h2').text().split('/');
+ const [owner, name] = $(item).find('h2').text().split('/', 2);
return {
name: name.trim(),
owner: owner.trim(),
diff --git a/lib/routes/google/developers.ts b/lib/routes/google/developers.ts
index 4322f5f7d45a..58ae3c49d4e2 100644
--- a/lib/routes/google/developers.ts
+++ b/lib/routes/google/developers.ts
@@ -48,7 +48,7 @@ async function handler(ctx: Context) {
.toArray()
.map((element) => {
const dateCategory = $(element).find('.search-result__eyebrow').text().trim();
- const [date, category] = dateCategory.split(' / ');
+ const [date, category] = dateCategory.split(' / ', 2);
const titleElement = $(element).find('.search-result__title a');
const title = titleElement.text().trim();
const link = titleElement.attr('href');
diff --git a/lib/routes/gov/customs/utils.ts b/lib/routes/gov/customs/utils.ts
index 9a2d92359f13..9ede6372e1ad 100644
--- a/lib/routes/gov/customs/utils.ts
+++ b/lib/routes/gov/customs/utils.ts
@@ -11,7 +11,7 @@ const playwrightGet = async (url, context) => {
waitUntil: 'domcontentloaded',
});
await page.waitForSelector('.pubCon');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
return html;
};
diff --git a/lib/routes/gov/pbc/goutongjiaoliu.ts b/lib/routes/gov/pbc/goutongjiaoliu.ts
index 6331b2f84eea..4fc2721ce33d 100644
--- a/lib/routes/gov/pbc/goutongjiaoliu.ts
+++ b/lib/routes/gov/pbc/goutongjiaoliu.ts
@@ -42,7 +42,7 @@ async function handler() {
await page.goto(link, {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
const $ = load(html);
const list = $('font.newslist_style')
@@ -67,7 +67,7 @@ async function handler() {
await detailPage.goto(item.link, {
waitUntil: 'domcontentloaded',
});
- const detailHtml = await detailPage.evaluate(() => document.documentElement.innerHTML);
+ const detailHtml = await detailPage.evaluate(() => document.documentElement.getHTML());
const content = load(detailHtml);
item.description = content('#zoom').html();
item.pubDate = timezone(parseDate(content('.hui12').eq(5).text()), 8);
diff --git a/lib/routes/gov/pbc/trade-announcement.ts b/lib/routes/gov/pbc/trade-announcement.ts
index 90bb55fa9ac9..8a803dd9343b 100644
--- a/lib/routes/gov/pbc/trade-announcement.ts
+++ b/lib/routes/gov/pbc/trade-announcement.ts
@@ -36,7 +36,7 @@ async function handler() {
await page.goto(link, {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
const $ = load(html);
const list = $('font.newslist_style')
.toArray()
@@ -60,7 +60,7 @@ async function handler() {
await detailPage.goto(item.link, {
waitUntil: 'domcontentloaded',
});
- const detailHtml = await detailPage.evaluate(() => document.documentElement.innerHTML);
+ const detailHtml = await detailPage.evaluate(() => document.documentElement.getHTML());
const content = load(detailHtml);
item.description = content('#zoom').html();
item.pubDate = timezone(parseDate(content('#shijian').text()), 8);
diff --git a/lib/routes/hitcon/zeroday.tsx b/lib/routes/hitcon/zeroday.tsx
index 6979fcb4dff0..0719c2883d75 100644
--- a/lib/routes/hitcon/zeroday.tsx
+++ b/lib/routes/hitcon/zeroday.tsx
@@ -58,7 +58,7 @@ async function handler(ctx: Context): Promise {
waitUntil: 'domcontentloaded',
});
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
const $ = load(response);
diff --git a/lib/routes/ielts/index.ts b/lib/routes/ielts/index.ts
index fe782218a21b..52ca7ed59b5d 100644
--- a/lib/routes/ielts/index.ts
+++ b/lib/routes/ielts/index.ts
@@ -39,7 +39,7 @@ async function handler() {
});
await page.waitForSelector('div.container');
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
return html;
},
diff --git a/lib/routes/iknowwhatyoudownload/daily.tsx b/lib/routes/iknowwhatyoudownload/daily.tsx
index fee7539da98a..06994384867c 100644
--- a/lib/routes/iknowwhatyoudownload/daily.tsx
+++ b/lib/routes/iknowwhatyoudownload/daily.tsx
@@ -69,7 +69,7 @@ async function handler(ctx) {
for (const index in labelsList) {
const label = labelsList[index];
const count = dataList[index];
- const [key, percent] = label.split(' ');
+ const [key, percent] = label.split(' ', 2);
tableData.push({
key,
count,
diff --git a/lib/routes/j-test/news.ts b/lib/routes/j-test/news.ts
index be477b443095..f8b7088a9a9c 100644
--- a/lib/routes/j-test/news.ts
+++ b/lib/routes/j-test/news.ts
@@ -35,7 +35,7 @@ async function handler() {
const list = $('#content1 > .center > .col_box1 > .col_body1 > ul > li')
.toArray()
.map((item) => {
- const [title, date] = $(item).text().trim().replaceAll(']', '').split(' [');
+ const [title, date] = $(item).text().trim().replaceAll(']', '').split(' [', 2);
const link = new URL($(item).children('a').attr('href')!, baseUrl).href;
const pubDate = timezone(parseDate(date), 8);
return {
diff --git a/lib/routes/lancedb/blog.ts b/lib/routes/lancedb/blog.ts
index 07bb9b9829fd..0b0dcd11cca9 100644
--- a/lib/routes/lancedb/blog.ts
+++ b/lib/routes/lancedb/blog.ts
@@ -22,7 +22,7 @@ export const handler = async (ctx: Context): Promise => {
const description = $el.find('p.post-description').text().trim();
const meta = $el.find('.post-meta').text().trim().replaceAll(/\s+/g, ' ');
- const [cat, author, dateStr] = meta.split(' / ');
+ const [cat, author, dateStr] = meta.split(' / ', 3);
const pubDate = dateStr ? parseDate(dateStr) : undefined;
return {
diff --git a/lib/routes/makerworld/utils.ts b/lib/routes/makerworld/utils.ts
index f6b0afb7789e..c061f2d86137 100644
--- a/lib/routes/makerworld/utils.ts
+++ b/lib/routes/makerworld/utils.ts
@@ -19,7 +19,7 @@ const fetchViaBrowser = async (url: string, type: 'html' | 'json' = 'html') => {
},
});
try {
- return (await page.evaluate(type === 'html' ? () => document.documentElement.innerHTML : () => document.documentElement.textContent)) ?? '';
+ return (await page.evaluate(type === 'html' ? () => document.documentElement.getHTML() : () => document.documentElement.textContent)) ?? '';
} finally {
await destroy();
}
diff --git a/lib/routes/missav/new.tsx b/lib/routes/missav/new.tsx
index c45a12df3a5d..646ca3670f83 100644
--- a/lib/routes/missav/new.tsx
+++ b/lib/routes/missav/new.tsx
@@ -48,7 +48,7 @@ async function handler() {
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
// const response = await ofetch(`${baseUrl}/dm397/new`, {
diff --git a/lib/routes/nga/post.ts b/lib/routes/nga/post.ts
index 42954b247515..c80bd75a3e9b 100644
--- a/lib/routes/nga/post.ts
+++ b/lib/routes/nga/post.ts
@@ -31,7 +31,7 @@ const customPreset: PresetFactory = presetHTML5.extend((tags) => ({
uid: (node) => ({ tag: 'a', attrs: { href: `https://nga.178.com/nuke.php?func=ucp&uid=${attrValue(node)}` }, content: ['@', ...childrenOf(node)] }),
tid: (node) => ({ tag: 'a', attrs: { href: `https://nga.178.com/read.php?tid=${attrValue(node)}` }, content: node.content }),
pid: (node) => {
- const [pid, tid, page] = attrValue(node).split(',');
+ const [pid, tid, page] = attrValue(node).split(',', 3);
return { tag: 'a', attrs: { href: `https://nga.178.com/read.php?tid=${tid}&page=${page}#pid${pid}Anchor` }, content: node.content };
},
// 分割线
diff --git a/lib/routes/nytimes/utils.ts b/lib/routes/nytimes/utils.ts
index 58b173906efd..d350eef555df 100644
--- a/lib/routes/nytimes/utils.ts
+++ b/lib/routes/nytimes/utils.ts
@@ -25,7 +25,7 @@ const PuppeterGetter = async (ctx, context, link) => {
await page.goto(link, {
waitUntil: 'domcontentloaded',
});
- const response = await page.evaluate(() => document.querySelector('body').innerHTML);
+ const response = await page.evaluate(() => document.querySelector('body').getHTML());
return response;
});
return result;
diff --git a/lib/routes/parliament.uk/commonslibrary.ts b/lib/routes/parliament.uk/commonslibrary.ts
index 5d8dd7c2e741..cde8d382d401 100644
--- a/lib/routes/parliament.uk/commonslibrary.ts
+++ b/lib/routes/parliament.uk/commonslibrary.ts
@@ -36,7 +36,7 @@ async function handler(ctx) {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(html);
const items = $('div.l-box.l-box--no-border.card__text')
diff --git a/lib/routes/parliament.uk/lordslibrary.ts b/lib/routes/parliament.uk/lordslibrary.ts
index 17e2c4ed09a9..0b351228d4a7 100644
--- a/lib/routes/parliament.uk/lordslibrary.ts
+++ b/lib/routes/parliament.uk/lordslibrary.ts
@@ -36,7 +36,7 @@ async function handler(ctx) {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(html);
const items = $('div.l-box.l-box--no-border.card__text')
diff --git a/lib/routes/parliament/section77.ts b/lib/routes/parliament/section77.ts
index f3dbcbe62edf..cb651001096c 100644
--- a/lib/routes/parliament/section77.ts
+++ b/lib/routes/parliament/section77.ts
@@ -41,7 +41,7 @@ async function handler(ctx) {
let title = 'ร่างพระราชบัญญัติที่เปิดรับฟังความคิดเห็นตามมาตรา 77 ของรัฐธรรมนูญ';
if (type) {
- const [presenter, isMonetaryAct = ''] = type.split('-');
+ const [presenter, isMonetaryAct = ''] = type.split('-', 2);
title +=
{
@@ -125,7 +125,7 @@ async function handler(ctx) {
item.description = $('.des').first().html();
// Act draft status
- const [, presenter, monetaryType] = $('.type77 h5').text().split(' ');
+ const [, presenter, monetaryType] = $('.type77 h5').text().split(' ', 3);
item.category = [
...item.category,
$('.container-fluid .bg-status .col-md-8.p-0 h5 span,a')
diff --git a/lib/routes/perplexity/blog.ts b/lib/routes/perplexity/blog.ts
index 08335cd41de5..edacc7dde33d 100644
--- a/lib/routes/perplexity/blog.ts
+++ b/lib/routes/perplexity/blog.ts
@@ -47,7 +47,7 @@ async function handler(ctx: Context) {
},
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
const $ = load(html);
const items: DataItem[] = [];
@@ -123,7 +123,7 @@ async function handler(ctx: Context) {
waitUntil: 'domcontentloaded',
});
- const contentHtml = await contentPage.evaluate(() => document.documentElement.innerHTML);
+ const contentHtml = await contentPage.evaluate(() => document.documentElement.getHTML());
await contentPage.close();
const $content = load(contentHtml);
diff --git a/lib/routes/perplexity/changelog.ts b/lib/routes/perplexity/changelog.ts
index a21df78036d0..81d06e3b7fca 100644
--- a/lib/routes/perplexity/changelog.ts
+++ b/lib/routes/perplexity/changelog.ts
@@ -25,7 +25,7 @@ export const handler = async (ctx: Context): Promise => {
},
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
const $ = load(html);
const language = $('html').attr('lang') ?? 'en';
@@ -112,7 +112,7 @@ export const handler = async (ctx: Context): Promise => {
// Navigate to the item link
await contentPage.goto(item.link!, { waitUntil: 'domcontentloaded' });
- const contentHtml = await contentPage.evaluate(() => document.documentElement.innerHTML);
+ const contentHtml = await contentPage.evaluate(() => document.documentElement.getHTML());
await contentPage.close();
const $content = load(contentHtml);
diff --git a/lib/routes/pincong/utils.ts b/lib/routes/pincong/utils.ts
index 410dd018bfa5..137b4fce0483 100644
--- a/lib/routes/pincong/utils.ts
+++ b/lib/routes/pincong/utils.ts
@@ -13,7 +13,7 @@ const playwrightGet = (url, cache) =>
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.documentElement.innerHTML);
+ const html = await page.evaluate(() => document.documentElement.getHTML());
await context.close();
return html;
});
diff --git a/lib/routes/pnas/index.tsx b/lib/routes/pnas/index.tsx
index 74d873b9bcd5..101e0a22a37a 100644
--- a/lib/routes/pnas/index.tsx
+++ b/lib/routes/pnas/index.tsx
@@ -71,7 +71,7 @@ async function handler(ctx) {
});
await page.waitForSelector('.core-container');
- const res = await page.evaluate(() => document.documentElement.innerHTML);
+ const res = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(res);
diff --git a/lib/routes/questn/util.ts b/lib/routes/questn/util.ts
index 1a09f1de7938..449bfc7c6e51 100644
--- a/lib/routes/questn/util.ts
+++ b/lib/routes/questn/util.ts
@@ -6,7 +6,7 @@ const parseFilterStr = (filterStr) => {
const filterPairs = filterStr.split('&'); // Split by '&'
for (const pair of filterPairs) {
- const [key, value] = pair.split('='); // Split by '='
+ const [key, value] = pair.split('=', 2); // Split by '='
filters[key] = value;
}
diff --git a/lib/routes/researchgate/publications.ts b/lib/routes/researchgate/publications.ts
index 094d1378a88d..3d34f586f323 100644
--- a/lib/routes/researchgate/publications.ts
+++ b/lib/routes/researchgate/publications.ts
@@ -30,7 +30,7 @@ async function handler(ctx) {
request.resourceType() === 'document' || request.resourceType() === 'script' ? route.continue() : route.abort();
});
await page.goto(currentUrl);
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(response);
@@ -55,7 +55,7 @@ async function handler(ctx) {
request.resourceType() === 'document' || request.resourceType() === 'script' ? route.continue() : route.abort();
});
await page.goto(item.link);
- const detailResponse = await page.evaluate(() => document.documentElement.innerHTML);
+ const detailResponse = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const content = load(detailResponse);
diff --git a/lib/routes/science/utils.tsx b/lib/routes/science/utils.tsx
index 156cfce65d36..6f7afeda24b2 100644
--- a/lib/routes/science/utils.tsx
+++ b/lib/routes/science/utils.tsx
@@ -21,7 +21,7 @@ const fetchDesc = (list, context) =>
waitUntil: 'domcontentloaded',
});
await page.waitForSelector('section#bodymatter, .news-article-content, .news-article-content--featured');
- const res = await page.evaluate(() => document.documentElement.innerHTML);
+ const res = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(res);
diff --git a/lib/routes/sse/convert.ts b/lib/routes/sse/convert.ts
index 2311bffd84cb..7db463a13ce9 100644
--- a/lib/routes/sse/convert.ts
+++ b/lib/routes/sse/convert.ts
@@ -28,7 +28,7 @@ async function handler(ctx) {
if (query) {
const pairs = query.split('&');
for (const pair of pairs) {
- const [key, value] = pair.split('=');
+ const [key, value] = pair.split('=', 2);
if (key) {
queries[key] = value;
}
diff --git a/lib/routes/sse/disclosure.ts b/lib/routes/sse/disclosure.ts
index 960953fd2b89..cdba9a91bed5 100644
--- a/lib/routes/sse/disclosure.ts
+++ b/lib/routes/sse/disclosure.ts
@@ -25,7 +25,7 @@ async function handler(ctx) {
const queries: Record = {};
if (query) {
for (const pair of query.split('&')) {
- const [key, value] = pair.split('=');
+ const [key, value] = pair.split('=', 2);
if (key) {
queries[key] = value;
}
diff --git a/lib/routes/swjtu/scai.ts b/lib/routes/swjtu/scai.ts
index 45056316b18b..9adb79a62c2c 100644
--- a/lib/routes/swjtu/scai.ts
+++ b/lib/routes/swjtu/scai.ts
@@ -76,7 +76,7 @@ const getItem = (item, cache) => {
const dateItem = item.find('.calendar'); // 注意 .calendar 是 class
const day = dateItem.find('.day').text().trim(); // "31" (文本需 trim 去空格)
const ymd = dateItem.find('.date').text().trim(); // "2025/03"
- const [year, month] = ymd.split('/'); // ["2025", "03"]
+ const [year, month] = ymd.split('/', 2); // ["2025", "03"]
const dateText = `${year}-${month}-${day.padStart(2, '0')}`;
pubDate = new Date(dateText);
}
diff --git a/lib/routes/syosetu/ranking-isekai.ts b/lib/routes/syosetu/ranking-isekai.ts
index 7bba60dc138b..ed37bc9a3410 100644
--- a/lib/routes/syosetu/ranking-isekai.ts
+++ b/lib/routes/syosetu/ranking-isekai.ts
@@ -9,7 +9,7 @@ import { renderDescription } from './templates/description';
import { IsekaiCategory, isekaiCategoryToJapanese, NovelType, novelTypeToJapanese, periodToJapanese, periodToOrder, periodToPointField, RankingPeriod } from './types/ranking';
export function parseIsekaiRankingType(type: string): { period: RankingPeriod; category: IsekaiCategory; novelType: NovelType } {
- const [periodStr, categoryStr, novelTypeStr = NovelType.TOTAL] = type.split('_');
+ const [periodStr, categoryStr, novelTypeStr = NovelType.TOTAL] = type.split('_', 3);
const period = periodStr as RankingPeriod;
const category = categoryStr as IsekaiCategory;
diff --git a/lib/routes/syosetu/ranking-r18.ts b/lib/routes/syosetu/ranking-r18.ts
index ac933ba02bec..a8eee74e6edf 100644
--- a/lib/routes/syosetu/ranking-r18.ts
+++ b/lib/routes/syosetu/ranking-r18.ts
@@ -121,7 +121,7 @@ For example: \`daily_total\`, \`weekly_r\`, \`monthly_er\`
};
function parseRankingType(type: string): { period: RankingPeriod; novelType: NovelType } {
- const [periodStr, novelTypeStr] = type.split('_');
+ const [periodStr, novelTypeStr] = type.split('_', 2);
const period = periodStr as RankingPeriod;
const novelType = novelTypeStr as NovelType;
diff --git a/lib/routes/syosetu/ranking.ts b/lib/routes/syosetu/ranking.ts
index 46293c0afced..0828ea88bca8 100644
--- a/lib/routes/syosetu/ranking.ts
+++ b/lib/routes/syosetu/ranking.ts
@@ -181,7 +181,7 @@ When multiple works have the same points, their order may differ from syosetu's
};
function parseGeneralRankingType(type: string): { period: RankingPeriod; novelType: NovelType } {
- const [periodStr, novelTypeStr] = type.split('_');
+ const [periodStr, novelTypeStr] = type.split('_', 2);
const period = periodStr as RankingPeriod;
const novelType = novelTypeStr as NovelType;
@@ -196,7 +196,7 @@ function parseGeneralRankingType(type: string): { period: RankingPeriod; novelTy
}
function parseGenreRankingType(type: string): { period: RankingPeriod; genre: number; novelType: NovelType } {
- const [periodStr, genreStr, novelTypeStr = NovelType.TOTAL] = type.split('_');
+ const [periodStr, genreStr, novelTypeStr = NovelType.TOTAL] = type.split('_', 3);
const period = periodStr as RankingPeriod;
const genre = Number(genreStr) as Genre;
diff --git a/lib/routes/szse/disclosure/listed-notice.ts b/lib/routes/szse/disclosure/listed-notice.ts
index b3ee6d8d70a3..c615e478f964 100644
--- a/lib/routes/szse/disclosure/listed-notice.ts
+++ b/lib/routes/szse/disclosure/listed-notice.ts
@@ -34,7 +34,7 @@ export const handler = async (ctx: Context): Promise => {
};
if (query) {
for (const pair of query.split('&')) {
- const [key, value] = pair.split('=');
+ const [key, value] = pair.split('=', 2);
if (key) {
queries[key] = value;
}
diff --git a/lib/routes/telegram/channel-media.ts b/lib/routes/telegram/channel-media.ts
index c4f8bccdd1d4..a2bc7bf553cf 100644
--- a/lib/routes/telegram/channel-media.ts
+++ b/lib/routes/telegram/channel-media.ts
@@ -116,7 +116,7 @@ function parseRange(range: string, length: bigInt.BigInteger) {
if (!range) {
return [];
}
- const [typ, segstr] = range.split('=');
+ const [typ, segstr] = range.split('=', 2);
if (typ !== 'bytes') {
throw new InvalidParameterError(`unsupported range: ${typ}`);
}
diff --git a/lib/routes/twitter/api/web-api/login.ts b/lib/routes/twitter/api/web-api/login.ts
index 0c02dfa3025b..357091f9fb1c 100644
--- a/lib/routes/twitter/api/web-api/login.ts
+++ b/lib/routes/twitter/api/web-api/login.ts
@@ -54,7 +54,7 @@ async function login({ username, password, authenticationSecret }) {
const message = data?.data?.home?.home_timeline_urt?.instructions?.[0]?.entries?.[0]?.entryId;
if (message === 'messageprompt-suspended-prompt') {
logger.error(`twitter debug: twitter username ${username} login failed: messageprompt-suspended-prompt`);
- resolve('');
+ return resolve('');
}
const cookies = await page.context().cookies();
for (const cookie of cookies) {
diff --git a/lib/routes/uchicago/current.ts b/lib/routes/uchicago/current.ts
index 3912f2904b37..1dc5523769dd 100644
--- a/lib/routes/uchicago/current.ts
+++ b/lib/routes/uchicago/current.ts
@@ -45,7 +45,7 @@ async function handler(ctx) {
await page.goto(link, {
waitUntil: 'domcontentloaded',
});
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
const cookies = await getCookies(page);
await page.close();
const $ = load(response);
@@ -68,7 +68,7 @@ async function handler(ctx) {
waitUntil: 'domcontentloaded',
referer: link,
});
- const response = await page.evaluate(() => document.documentElement.innerHTML);
+ const response = await page.evaluate(() => document.documentElement.getHTML());
await page.close();
const $ = load(response);
diff --git a/lib/routes/uraaka-joshi/uraaka-joshi-user.ts b/lib/routes/uraaka-joshi/uraaka-joshi-user.ts
index f461fcb1c2c6..827d446d2b8b 100644
--- a/lib/routes/uraaka-joshi/uraaka-joshi-user.ts
+++ b/lib/routes/uraaka-joshi/uraaka-joshi-user.ts
@@ -63,7 +63,7 @@ async function handler(ctx) {
await page.waitForSelector('#pickup04 .grid-cell');
await page.waitForSelector('#main-block .grid-cell');
- html = await page.evaluate(() => document.documentElement.innerHTML);
+ html = await page.evaluate(() => document.documentElement.getHTML());
} catch {
throw new Error('Access denied (403)');
}
diff --git a/lib/routes/uraaka-joshi/uraaka-joshi.ts b/lib/routes/uraaka-joshi/uraaka-joshi.ts
index 615c6e621a27..98ed55ae74a9 100644
--- a/lib/routes/uraaka-joshi/uraaka-joshi.ts
+++ b/lib/routes/uraaka-joshi/uraaka-joshi.ts
@@ -53,7 +53,7 @@ async function handler() {
await page.waitForSelector('#main-block .grid-cell');
const bodyHandle = await page.$('body');
- html = await page.evaluate((body) => body.innerHTML, bodyHandle);
+ html = await page.evaluate((body) => body.getHTML(), bodyHandle);
} catch {
throw new Error('Access denied (403)');
}
diff --git a/lib/routes/xsijishe/utils.ts b/lib/routes/xsijishe/utils.ts
index 7fe22b3d8279..5eac8c3de3e0 100644
--- a/lib/routes/xsijishe/utils.ts
+++ b/lib/routes/xsijishe/utils.ts
@@ -28,7 +28,7 @@ const playwrightGet = async (url: string, context: BrowserContext, waitForSelect
waitUntil: 'domcontentloaded',
});
- let html = await page.evaluate(() => document.documentElement.innerHTML);
+ let html = await page.evaluate(() => document.documentElement.getHTML());
if (html.includes('抱歉,您尚未登录,没有权限访问该版块')) {
return html;
}
@@ -39,7 +39,7 @@ const playwrightGet = async (url: string, context: BrowserContext, waitForSelect
// Return the loaded HTML even when the expected selector is missing.
}
- html = await page.evaluate(() => document.documentElement.innerHTML);
+ html = await page.evaluate(() => document.documentElement.getHTML());
return html;
} finally {
await page.close();
diff --git a/lib/routes/xueqiu/cookies.ts b/lib/routes/xueqiu/cookies.ts
index eb6c690c456d..5bc15737b9ca 100644
--- a/lib/routes/xueqiu/cookies.ts
+++ b/lib/routes/xueqiu/cookies.ts
@@ -17,7 +17,7 @@ export const parseToken = (link: string) =>
await page.goto(link, {
waitUntil: 'domcontentloaded',
});
- await page.evaluate(() => document.documentElement.innerHTML);
+ await page.evaluate(() => document.documentElement.getHTML());
const cookies = await getCookies(page);
return cookies;
},
diff --git a/lib/utils/playwright-utils.ts b/lib/utils/playwright-utils.ts
index 5451e1e66d18..949a894e16fd 100644
--- a/lib/utils/playwright-utils.ts
+++ b/lib/utils/playwright-utils.ts
@@ -26,7 +26,7 @@ const parseCookieArray = (cookies, domainFilter?: string | RegExp) => {
*/
const constructCookieArray = (cookieStr, domain) =>
cookieStr.split('; ').map((item) => {
- const [name, value] = item.split('=');
+ const [name, value] = item.split('=', 2);
return value === undefined ? { name: '', value: name, domain, path: '/' } : { name, value, domain, path: '/' };
});
diff --git a/lib/utils/playwright.test.ts b/lib/utils/playwright.test.ts
index 2d6adf68039e..6fbc10f3c8f0 100644
--- a/lib/utils/playwright.test.ts
+++ b/lib/utils/playwright.test.ts
@@ -112,7 +112,7 @@ describe('playwright', () => {
waitUntil: 'domcontentloaded',
});
- const html = await page.evaluate(() => document.body.innerHTML);
+ const html = await page.evaluate(() => document.body.getHTML());
expect(html.length).toBeGreaterThan(0);
expect(browser?.isConnected()).toBe(true);
@@ -128,7 +128,7 @@ describe('playwright', () => {
const browser = context.browser();
const startTime = Date.now();
- const html = await page.evaluate(() => document.body.innerHTML);
+ const html = await page.evaluate(() => document.body.getHTML());
expect(html.length).toBeGreaterThan(0);
expect(browser?.isConnected()).toBe(true);
diff --git a/package.json b/package.json
index ed71abf92ac9..8a38b5372ea2 100644
--- a/package.json
+++ b/package.json
@@ -180,7 +180,7 @@
"eslint-plugin-n": "18.2.2",
"eslint-plugin-regexp": "3.1.1",
"eslint-plugin-simple-import-sort": "13.0.0",
- "eslint-plugin-unicorn": "71.1.0",
+ "eslint-plugin-unicorn": "72.0.0",
"eslint-plugin-yml": "3.6.0",
"fast-string-width": "3.0.2",
"fs-extra": "11.3.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c9fe6de5f791..55c6d4276747 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -390,8 +390,8 @@ importers:
specifier: 13.0.0
version: 13.0.0(eslint@10.7.0)
eslint-plugin-unicorn:
- specifier: 71.1.0
- version: 71.1.0(eslint@10.7.0)
+ specifier: 72.0.0
+ version: 72.0.0(eslint@10.7.0)
eslint-plugin-yml:
specifier: 3.6.0
version: 3.6.0(eslint@10.7.0)
@@ -1049,6 +1049,10 @@ packages:
resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@eslint/css-tree@4.0.4':
+ resolution: {integrity: sha512-nxMparyhqVWQvadx9x8dIfubfIPOE+X2b2waua8fzdnM9vdp9rgVtwEZlG0TmCwEUz/d/f40fzvO/eqBwdxz0A==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
'@eslint/eslintrc@3.3.6':
resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3661,8 +3665,8 @@ packages:
engines: {node: '>=20'}
hasBin: true
- electron-to-chromium@1.5.389:
- resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==}
+ electron-to-chromium@1.5.392:
+ resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -3817,8 +3821,8 @@ packages:
peerDependencies:
eslint: '>=5.0.0'
- eslint-plugin-unicorn@71.1.0:
- resolution: {integrity: sha512-dn3YmR3qLLUeYyo/os3ubZ7UHQJ1WbBAgC9cIhnLTyMj9J6kivuc2U1fCmYetLexUlTDVYtBqhjSj/VaebTe6Q==}
+ eslint-plugin-unicorn@72.0.0:
+ resolution: {integrity: sha512-hqO6ksoOHO+ZhdseTuKRVQbx9U7PRO/cv8qAR1mctwzdVO2hYud8uS9luAhp43RJgziYgHAph8eHyipT8GL0ng==}
engines: {node: '>=22'}
peerDependencies:
eslint: '>=10.4'
@@ -4760,6 +4764,9 @@ packages:
mdn-data@2.27.1:
resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
+ mdn-data@2.28.1:
+ resolution: {integrity: sha512-U9w+PzSZ00Z5m9rZ5ARVFL5xOfuCHdKYi/1RRwDCJsboFgJDNT3zT6PIPD7mZQYaQLhsZM3GfDRgSMRHhSmVng==}
+
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
@@ -6866,6 +6873,11 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
+ '@eslint/css-tree@4.0.4':
+ dependencies:
+ mdn-data: 2.28.1
+ source-map-js: 1.2.1
+
'@eslint/eslintrc@3.3.6':
dependencies:
ajv: 6.15.0
@@ -8601,7 +8613,7 @@ snapshots:
dependencies:
baseline-browser-mapping: 2.10.43
caniuse-lite: 1.0.30001805
- electron-to-chromium: 1.5.389
+ electron-to-chromium: 1.5.392
node-releases: 2.0.51
update-browserslist-db: 1.2.3(browserslist@4.28.6)
@@ -8987,7 +8999,7 @@ snapshots:
minimatch: 10.2.5
semver: 7.8.5
- electron-to-chromium@1.5.389: {}
+ electron-to-chromium@1.5.392: {}
emoji-regex@10.6.0: {}
@@ -9190,14 +9202,16 @@ snapshots:
dependencies:
eslint: 10.7.0
- eslint-plugin-unicorn@71.1.0(eslint@10.7.0):
+ eslint-plugin-unicorn@72.0.0(eslint@10.7.0):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint/css-tree': 4.0.4
browserslist: 4.28.6
change-case: 5.4.4
ci-info: 4.4.0
core-js-compat: 3.49.0
detect-indent: 7.0.2
+ entities: 4.5.0
eslint: 10.7.0
find-up-simple: 1.0.1
globals: 17.7.0
@@ -9210,6 +9224,7 @@ snapshots:
reserved-identifiers: 1.2.0
semver: 7.8.5
strip-indent: 4.1.1
+ yaml: 2.9.0
eslint-plugin-yml@3.6.0(eslint@10.7.0):
dependencies:
@@ -10316,6 +10331,8 @@ snapshots:
mdn-data@2.27.1: {}
+ mdn-data@2.28.1: {}
+
mdurl@2.0.0: {}
memoizee@0.4.17:
From ec6cbe125562c75819b20cbe42a37786cdfc3c20 Mon Sep 17 00:00:00 2001
From: Vanilla
Date: Thu, 16 Jul 2026 06:30:38 +0800
Subject: [PATCH 330/670] fix(twitter): Allows cookies with socks ProxyAgent.
(#22728)
---
lib/routes/twitter/api/web-api/utils.ts | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/lib/routes/twitter/api/web-api/utils.ts b/lib/routes/twitter/api/web-api/utils.ts
index 1f5a70d5c799..f3d921f96f7b 100644
--- a/lib/routes/twitter/api/web-api/utils.ts
+++ b/lib/routes/twitter/api/web-api/utils.ts
@@ -1,7 +1,7 @@
import { cookie as HttpCookieAgentCookie, CookieAgent } from 'http-cookie-agent/undici';
import queryString from 'query-string';
import { Cookie, CookieJar } from 'tough-cookie';
-import undici, { Client, ProxyAgent } from 'undici';
+import undici, { ProxyAgent } from 'undici';
import { config } from '@/config';
import ConfigNotFoundError from '@/errors/types/config-not-found';
@@ -25,9 +25,8 @@ const token2Cookie = async (token) => {
try {
const agent = proxy.proxyUri
? new ProxyAgent({
- factory: (origin, opts) => new Client(origin as string, opts).compose(HttpCookieAgentCookie({ jar })),
uri: proxy.proxyUri,
- })
+ }).compose(HttpCookieAgentCookie({ jar }))
: new CookieAgent({ cookies: { jar } });
if (token) {
await ofetch('https://x.com', {
@@ -112,9 +111,8 @@ export const twitterGot = async (
const jar = CookieJar.deserializeSync(cookie as any);
const agent = proxy.proxyUri
? new ProxyAgent({
- factory: (origin, opts) => new Client(origin as string, opts).compose(HttpCookieAgentCookie({ jar })),
uri: proxy.proxyUri,
- })
+ }).compose(HttpCookieAgentCookie({ jar }))
: new CookieAgent({ cookies: { jar } });
if (proxy.proxyUri) {
logger.debug(`twitter debug: Proxying request: ${requestUrl}`);
From 6d3fa789760f0479543f4de23e5e224365ae0c85 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 08:13:03 +0000
Subject: [PATCH 331/670] chore(deps): bump @scalar/hono-api-reference from
0.11.9 to 0.11.10 (#22734)
Bumps [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono) from 0.11.9 to 0.11.10.
- [Release notes](https://github.com/scalar/scalar/releases)
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md)
- [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono)
---
updated-dependencies:
- dependency-name: "@scalar/hono-api-reference"
dependency-version: 0.11.10
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 54 +++++++++++++++++++++++++-------------------------
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/package.json b/package.json
index 8a38b5372ea2..8d321cc54342 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,7 @@
"@opentelemetry/sdk-trace-base": "2.9.0",
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
- "@scalar/hono-api-reference": "0.11.9",
+ "@scalar/hono-api-reference": "0.11.10",
"@sentry/node": "10.65.0",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 55c6d4276747..25ed2a6379fd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -83,8 +83,8 @@ importers:
specifier: 0.0.25
version: 0.0.25
'@scalar/hono-api-reference':
- specifier: 0.11.9
- version: 0.11.9(hono@4.12.30)
+ specifier: 0.11.10
+ version: 0.11.10(hono@4.12.30)
'@sentry/node':
specifier: 10.65.0
version: 10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
@@ -2453,30 +2453,30 @@ packages:
'@rss3/sdk@0.0.25':
resolution: {integrity: sha512-jyXT4YTwefxxRZ0tt5xjbnw8e7zPg2OGdo/0xb+h/7qWnMNhLtWpc95DsYs/1C/I0rIyiDpZBhLI2DieQ9y+tw==}
- '@scalar/client-side-rendering@0.3.2':
- resolution: {integrity: sha512-HXgfSnSQSLaTZupSmN2w4O1Gv0wXdFl+GtrZHQEoNQ4HSzgCtk9fKcmSVxaZiPjyx6eon/x3Ic+Ka5T4tXskyA==}
+ '@scalar/client-side-rendering@0.3.3':
+ resolution: {integrity: sha512-QMTKZdwtSSV619jV1jKeRCOd358cgJqRBTHQ663CF7EUCZ354qH4js883K3RYg5/eO4oWxOuka308KIj0sZ/Kg==}
engines: {node: '>=22'}
- '@scalar/helpers@0.9.0':
- resolution: {integrity: sha512-M34CLRCttqC1bXthI/QSzQj0s5C6nrU2PFWf/vOT3RpycbiGDGQbqR+5RfFzpOIQvRqbHfNdcRbeiZBw+vCbkQ==}
+ '@scalar/helpers@0.9.1':
+ resolution: {integrity: sha512-UKSLIPfN++f+zzbsZ+F6I0lNrR4yX4PtokjHgGwGiHapxT5VJqAF4zFTIP2KCd27XG7KnAIA7qq62O4xRBxc6w==}
engines: {node: '>=22'}
- '@scalar/hono-api-reference@0.11.9':
- resolution: {integrity: sha512-/Rx/kozi18sfWLP6y9qK/xhjO68i667o2aFXWnRfxW0TKL2D6A+LGtWCHQTgTONPKZe0TX9iSMSWf0vy0UOsbA==}
+ '@scalar/hono-api-reference@0.11.10':
+ resolution: {integrity: sha512-LluYDOie3F8NqLiAuZ0ESWmtWotSMV9A2/AxIB3NwQk/3JJ+5S9rnIWVY61o7QIDWlwwy6uZ8KqRSV83qmnhZA==}
engines: {node: '>=22'}
peerDependencies:
hono: ^4.12.5
- '@scalar/schemas@0.7.2':
- resolution: {integrity: sha512-6Ble6WcbiKgD3ypIva+wgZv1qIClmeEjXA6jrOo1bKpYUu6sh4e89LZxDK+LULa2jQl/2O5GEaa6aZ0ImlpkHg==}
+ '@scalar/schemas@0.7.3':
+ resolution: {integrity: sha512-B6S/zUptiRfMsmMy92u/LefpULus1h0q3od9l5xgZc+pslkfFhfFns+QsU0UJX3Lqp3tTsf64c3tIRqH7cZgVA==}
engines: {node: '>=22'}
- '@scalar/types@0.16.2':
- resolution: {integrity: sha512-QAlCtDVRsX/UV1N9ctLqPsKQy84eceFf4dMnTZM0JhaRfwS/Ovwp8oFf3POSpqQILNiqLFZLE6IV6p/5rNoAag==}
+ '@scalar/types@0.16.3':
+ resolution: {integrity: sha512-8TVNlK8AdvIekrapAoEVwy+IVRbMTSDYnpprskAJV4XanmZ52Kru6RmS6d+tbEBfMo2dTgQ9cV9P0kqsAu/AuA==}
engines: {node: '>=22'}
- '@scalar/validation@0.6.0':
- resolution: {integrity: sha512-tpmmG+/xRE2Kn9RpflU3AIyZv08v10+E1ZrJCx7z6+/91zHVxy0M73kC1LT4/8PbYNt85ywyC8+n+D99JdMcGA==}
+ '@scalar/validation@0.6.1':
+ resolution: {integrity: sha512-XeJ+pvxag0rguuRT6hxNSXIsxleB8Gcs6WQ55vFRkB4qo2CCO+wIli+uipzM3pILu5cP7agcL3pgADiZzd1ZNg==}
engines: {node: '>=20'}
'@scure/base@2.2.0':
@@ -7890,32 +7890,32 @@ snapshots:
'@rss3/api-core': 0.0.25
'@rss3/api-utils': 0.0.25
- '@scalar/client-side-rendering@0.3.2':
+ '@scalar/client-side-rendering@0.3.3':
dependencies:
- '@scalar/schemas': 0.7.2
- '@scalar/types': 0.16.2
- '@scalar/validation': 0.6.0
+ '@scalar/schemas': 0.7.3
+ '@scalar/types': 0.16.3
+ '@scalar/validation': 0.6.1
- '@scalar/helpers@0.9.0': {}
+ '@scalar/helpers@0.9.1': {}
- '@scalar/hono-api-reference@0.11.9(hono@4.12.30)':
+ '@scalar/hono-api-reference@0.11.10(hono@4.12.30)':
dependencies:
- '@scalar/client-side-rendering': 0.3.2
+ '@scalar/client-side-rendering': 0.3.3
hono: 4.12.30
- '@scalar/schemas@0.7.2':
+ '@scalar/schemas@0.7.3':
dependencies:
- '@scalar/helpers': 0.9.0
- '@scalar/validation': 0.6.0
+ '@scalar/helpers': 0.9.1
+ '@scalar/validation': 0.6.1
- '@scalar/types@0.16.2':
+ '@scalar/types@0.16.3':
dependencies:
- '@scalar/helpers': 0.9.0
+ '@scalar/helpers': 0.9.1
nanoid: 5.1.16
type-fest: 5.8.0
zod: 4.4.3
- '@scalar/validation@0.6.0': {}
+ '@scalar/validation@0.6.1': {}
'@scure/base@2.2.0': {}
From 45264a3e2d1b039c7ca6f44322f5a844e8a527cd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 08:13:21 +0000
Subject: [PATCH 332/670] chore(deps-dev): bump discord-api-types from 0.38.49
to 0.38.50 (#22732)
Bumps [discord-api-types](https://github.com/discordjs/discord-api-types) from 0.38.49 to 0.38.50.
- [Release notes](https://github.com/discordjs/discord-api-types/releases)
- [Changelog](https://github.com/discordjs/discord-api-types/blob/main/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord-api-types/compare/0.38.49...0.38.50)
---
updated-dependencies:
- dependency-name: discord-api-types
dependency-version: 0.38.50
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 8d321cc54342..4df99db52f88 100644
--- a/package.json
+++ b/package.json
@@ -173,7 +173,7 @@
"@typescript-eslint/parser": "8.64.0",
"@vercel/nft": "1.10.2",
"@vitest/coverage-v8": "4.1.10",
- "discord-api-types": "0.38.49",
+ "discord-api-types": "0.38.50",
"domhandler": "6.0.1",
"eslint": "10.7.0",
"eslint-nibble": "9.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 25ed2a6379fd..0dacc8f6f417 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -369,8 +369,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(vitest@4.1.10)
discord-api-types:
- specifier: 0.38.49
- version: 0.38.49
+ specifier: 0.38.50
+ version: 0.38.50
domhandler:
specifier: 6.0.1
version: 6.0.1
@@ -3592,8 +3592,8 @@ packages:
resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
- discord-api-types@0.38.49:
- resolution: {integrity: sha512-XnqcWmnFZFAE8ZM8SHAw9DIV8D3Or00rMQ8iQLotrEA2PmXhl+ykaf6L6q4l474hrSUH1JaYcv+iOMRWp2p6Tg==}
+ discord-api-types@0.38.50:
+ resolution: {integrity: sha512-J2n/bpIETX3DQ6AJ7/0xbsTLmYiJQtO/LKcXKC1YDbB56OUwtDbdXOFE8Q4g8jVGHBR2VAy1+D4ngaIgkMNV9w==}
dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
@@ -8917,7 +8917,7 @@ snapshots:
dependencies:
heap: 0.2.7
- discord-api-types@0.38.49: {}
+ discord-api-types@0.38.50: {}
dom-serializer@1.4.1:
dependencies:
From 32d03b9a72103462e1015624cf8f4f19fbbf6f0c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 08:15:31 +0000
Subject: [PATCH 333/670] chore(deps): bump @hono/node-server from 2.0.9 to
2.0.10 (#22735)
Bumps [@hono/node-server](https://github.com/honojs/node-server) from 2.0.9 to 2.0.10.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](https://github.com/honojs/node-server/compare/v2.0.9...v2.0.10)
---
updated-dependencies:
- dependency-name: "@hono/node-server"
dependency-version: 2.0.10
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 4df99db52f88..62fddf16fe5a 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.14.0",
- "@hono/node-server": "2.0.9",
+ "@hono/node-server": "2.0.10",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0dacc8f6f417..5918f1d9c01a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,8 +47,8 @@ importers:
specifier: 6.14.0
version: 6.14.0
'@hono/node-server':
- specifier: 2.0.9
- version: 2.0.9(hono@4.12.30)
+ specifier: 2.0.10
+ version: 2.0.10(hono@4.12.30)
'@hono/zod-openapi':
specifier: 1.5.1
version: 1.5.1(hono@4.12.30)(zod@4.4.3)
@@ -1096,8 +1096,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- '@hono/node-server@2.0.9':
- resolution: {integrity: sha512-cNMw3ziCdDcx0+ldta60zvUL5XO0OLt521n2hjPp0PB0ugczDCEczXsf33qQbkKIXWGFQ03f0LC85u6YK8pCLA==}
+ '@hono/node-server@2.0.10':
+ resolution: {integrity: sha512-ZcnNVhKTmyDJeg0UlnZjvM73JBsTAuhrH/J4fjwGOw59PwOW51r4J+p6CsKZWXdKSme4MFqU62CZMOsdDrU4CA==}
engines: {node: '>=20'}
peerDependencies:
hono: ^4
@@ -6924,7 +6924,7 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.9(hono@4.12.30)':
+ '@hono/node-server@2.0.10(hono@4.12.30)':
dependencies:
hono: 4.12.30
From 69f6ad79bf1713a2e05922ed5c48f32762df7674 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 08:15:49 +0000
Subject: [PATCH 334/670] chore(deps): bump @notionhq/client from 5.23.1 to
5.23.2 (#22733)
Bumps [@notionhq/client](https://github.com/makenotion/notion-sdk-js) from 5.23.1 to 5.23.2.
- [Release notes](https://github.com/makenotion/notion-sdk-js/releases)
- [Commits](https://github.com/makenotion/notion-sdk-js/compare/v5.23.1...v5.23.2)
---
updated-dependencies:
- dependency-name: "@notionhq/client"
dependency-version: 5.23.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 62fddf16fe5a..a0f0ea9f8c24 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"@hono/node-server": "2.0.10",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
- "@notionhq/client": "5.23.1",
+ "@notionhq/client": "5.23.2",
"@opentelemetry/api": "1.9.1",
"@opentelemetry/exporter-prometheus": "0.220.0",
"@opentelemetry/exporter-trace-otlp-http": "0.220.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5918f1d9c01a..a794b58e2738 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -56,8 +56,8 @@ importers:
specifier: 3.0.9
version: 3.0.9
'@notionhq/client':
- specifier: 5.23.1
- version: 5.23.1
+ specifier: 5.23.2
+ version: 5.23.2
'@opentelemetry/api':
specifier: 1.9.1
version: 1.9.1
@@ -1467,8 +1467,8 @@ packages:
resolution: {integrity: sha512-y3SvzjuY1ygnzWA4Krwx/WaJAsTMP11DN+e21A8Fa8PW1oDtVB5NSRW7LWurAiS2oKRkuCgcjTYMkBuBkcPCRg==}
engines: {node: '>=12.4.0'}
- '@notionhq/client@5.23.1':
- resolution: {integrity: sha512-Y0jhh0ulft1x1c3uHFzBMHHQZzdfpCUV5JNFAZxzmjKEIkephQ0fle0g0ZqxTmHl1vP1ZOjzq0v47Ao4udBevw==}
+ '@notionhq/client@5.23.2':
+ resolution: {integrity: sha512-iyD5VU9MoNxCR0GespotyrMlBpO4kLG+BaZK2JpZW1yfFqrmOYmZGb3wl4xqfq3n1Z9eekFwNcZD6t63SaESig==}
engines: {node: '>=18'}
'@octokit/auth-token@6.0.0':
@@ -7234,7 +7234,7 @@ snapshots:
'@nolyfill/side-channel@1.0.44': {}
- '@notionhq/client@5.23.1': {}
+ '@notionhq/client@5.23.2': {}
'@octokit/auth-token@6.0.0': {}
From 9d08ed9890ed46e15efd43b3112b32423d5a5e9a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 16:41:17 +0800
Subject: [PATCH 335/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22731)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260715.1 to 5.20260716.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260716.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index a0f0ea9f8c24..b8d298202492 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.5",
- "@cloudflare/workers-types": "5.20260715.1",
+ "@cloudflare/workers-types": "5.20260716.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a794b58e2738..a1e69cde9c94 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.5
- version: 0.18.5(@cloudflare/workers-types@5.20260715.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.5(@cloudflare/workers-types@5.20260716.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260715.1
- version: 5.20260715.1
+ specifier: 5.20260716.1
+ version: 5.20260716.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -475,7 +475,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.111.0
- version: 4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -644,8 +644,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260715.1':
- resolution: {integrity: sha512-saxo/nMqQJ1dKDUXp1a2y/+IjKENFVD9+QRefHg5EjJZY20OG3xcEge4PGljbqZiF3AiU4o5ZLS3Vm7cayQIxg==}
+ '@cloudflare/workers-types@5.20260716.1':
+ resolution: {integrity: sha512-LqQPmGAvdpQxzZGAMlDI6fnCsTlr8nRQibWsREaERqD0PucwFl25aXpUskSob70uSY2n6K1sp6Te9xkmzSFgaw==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -3589,7 +3589,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -6595,7 +6595,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260710.1
- '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260715.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260716.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6603,7 +6603,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6625,7 +6625,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260710.1':
optional: true
- '@cloudflare/workers-types@5.20260715.1': {}
+ '@cloudflare/workers-types@5.20260716.1': {}
'@colors/colors@1.6.0': {}
@@ -12073,7 +12073,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260710.1
'@cloudflare/workerd-windows-64': 1.20260710.1
- wrangler@4.111.0(@cloudflare/workers-types@5.20260715.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)
@@ -12084,7 +12084,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260710.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260715.1
+ '@cloudflare/workers-types': 5.20260716.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From ca59e0baab4263b85e17dc484e9573202d1fe66e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 16:42:14 +0800
Subject: [PATCH 336/670] chore(deps): bump cachix/install-nix-action from
31.10.7 to 31.11.0 (#22730)
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 31.10.7 to 31.11.0.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md)
- [Commits](https://github.com/cachix/install-nix-action/compare/a49548c11d9846ad46ecc0115273879b045f001c...630ae543ea3a38a9a4166f03376c02c50f408342)
---
updated-dependencies:
- dependency-name: cachix/install-nix-action
dependency-version: 31.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/update-nix-hash.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/update-nix-hash.yml b/.github/workflows/update-nix-hash.yml
index 1aaae78d1df0..efbb86956d08 100644
--- a/.github/workflows/update-nix-hash.yml
+++ b/.github/workflows/update-nix-hash.yml
@@ -20,7 +20,7 @@ jobs:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install Nix
- uses: cachix/install-nix-action@a49548c11d9846ad46ecc0115273879b045f001c # v31.10.7
+ uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Cache Nix store
From f52757f7c60d9efee1d5f774007244ccd37446c7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 16:42:54 +0800
Subject: [PATCH 337/670] chore(deps): bump devenv from `83e8d7d` to `4ed83c0`
(#22736)
Bumps [devenv](https://github.com/cachix/devenv) from `83e8d7d` to `4ed83c0`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/83e8d7d34bdebad98ab936b6af53d57ae67af420...4ed83c00354d5a6b4cece8aa8c55028b4e4421e4)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 4ed83c00354d5a6b4cece8aa8c55028b4e4421e4
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index db12d9d22846..342cad7627c8 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784066496,
- "narHash": "sha256-0ULUc0h8q6wAuvNZE89opjnhKUMMiC4GGKM8d+9dh/8=",
+ "lastModified": 1784142617,
+ "narHash": "sha256-mN/bY/kthTv86mIVH4trz6NJAfRglO2x4wImvTGkFZ8=",
"owner": "cachix",
"repo": "devenv",
- "rev": "83e8d7d34bdebad98ab936b6af53d57ae67af420",
+ "rev": "4ed83c00354d5a6b4cece8aa8c55028b4e4421e4",
"type": "github"
},
"original": {
From fd185c3edb920730398433be3a16b1fa307722cb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 16 Jul 2026 16:50:20 +0800
Subject: [PATCH 338/670] chore(deps): bump nixpkgs from `18b9261` to `753cc8a`
(#22737)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `18b9261` to `753cc8a`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/18b9261cb3294b6d2a06d03f96872827b8fe2698...753cc8a3a87467296ddd1fa93f0cc3e81120ee46)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: 753cc8a3a87467296ddd1fa93f0cc3e81120ee46
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 342cad7627c8..ea1ec7fc6861 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1784007870,
- "narHash": "sha256-djcLt/JJphyNt4eDY9XTly+/WbCK5lqWq9lSgCmJkkQ=",
+ "lastModified": 1784120854,
+ "narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "18b9261cb3294b6d2a06d03f96872827b8fe2698",
+ "rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
"type": "github"
},
"original": {
From bd24a2fdcd995eb637b70bed02605ad2af7180cd Mon Sep 17 00:00:00 2001
From: Serhii Hospodarchuk <69005134+gosxrgxx@users.noreply.github.com>
Date: Thu, 16 Jul 2026 18:01:26 +0300
Subject: [PATCH 339/670] feat(core): add a new environment variable to
configure the output format (#22738)
---
lib/config.ts | 3 +++
lib/middleware/cache.ts | 2 +-
lib/middleware/template.tsx | 2 +-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/config.ts b/lib/config.ts
index e19ab2b508cb..077dcf19a642 100644
--- a/lib/config.ts
+++ b/lib/config.ts
@@ -67,6 +67,7 @@ type ConfigEnvKeys =
| 'DISABLE_NSFW'
| 'SUFFIX'
| 'TITLE_LENGTH_LIMIT'
+ | 'FORMAT'
// OpenAI
| 'OPENAI_API_KEY'
| 'OPENAI_MODEL'
@@ -340,6 +341,7 @@ export type Config = {
};
suffix?: string;
titleLengthLimit: number;
+ format: string;
openai: {
apiKey?: string;
model?: string;
@@ -842,6 +844,7 @@ const calculateValue = () => {
},
suffix: envs.SUFFIX,
titleLengthLimit: toInt(envs.TITLE_LENGTH_LIMIT, 150),
+ format: envs.FORMAT || 'rss',
openai: {
apiKey: envs.OPENAI_API_KEY,
model: envs.OPENAI_MODEL || 'gpt-3.5-turbo-16k',
diff --git a/lib/middleware/cache.ts b/lib/middleware/cache.ts
index fe5acf34d799..0a9d28cb8869 100644
--- a/lib/middleware/cache.ts
+++ b/lib/middleware/cache.ts
@@ -19,7 +19,7 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
}
const requestPath = ctx.req.path;
- const format = `:${ctx.req.query('format') || 'rss'}`;
+ const format = `:${ctx.req.query('format') || config.format}`;
const limit = ctx.req.query('limit') ? `:${ctx.req.query('limit')}` : '';
const key = 'rsshub:koa-redis-cache:' + h64ToString(requestPath + format + limit);
const controlKey = 'rsshub:path-requested:' + h64ToString(requestPath + format + limit);
diff --git a/lib/middleware/template.tsx b/lib/middleware/template.tsx
index ecc947ee5375..8983b8c2d8d6 100644
--- a/lib/middleware/template.tsx
+++ b/lib/middleware/template.tsx
@@ -20,7 +20,7 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
}
const data: Data = ctx.get('data');
- const outputType = ctx.req.query('format') || 'rss';
+ const outputType = ctx.req.query('format') || config.format;
// only enable when debugInfo=true
if (config.debugInfo) {
From 7ad67ad56dce475d5412c7997986e41fe73b554b Mon Sep 17 00:00:00 2001
From: Tony
Date: Fri, 17 Jul 2026 02:32:37 +0800
Subject: [PATCH 340/670] fix(route/xiaohongshu): use cover as url (#22740)
---
lib/routes/xiaohongshu/user.ts | 19 ++++++++------
lib/routes/xiaohongshu/util.ts | 46 ++++++++++++++--------------------
2 files changed, 30 insertions(+), 35 deletions(-)
diff --git a/lib/routes/xiaohongshu/user.ts b/lib/routes/xiaohongshu/user.ts
index 4550898e4bf0..031d54f84121 100644
--- a/lib/routes/xiaohongshu/user.ts
+++ b/lib/routes/xiaohongshu/user.ts
@@ -98,14 +98,17 @@ async function getUserFeeds(url: string, category: string) {
const renderNote = (notes) =>
notes.flatMap((n) =>
- n.map(({ id, noteCard }) => ({
- title: noteCard.displayTitle,
- link: new URL(noteCard.noteId || id, url).href,
- guid: noteCard.displayTitle,
- description: `.url})
${noteCard.displayTitle}`,
- author: noteCard.user.nickname,
- upvotes: noteCard.interactInfo.likedCount,
- }))
+ n.map(({ noteCard }) => {
+ const coverUrl = noteCard.cover.infoList.pop().url;
+ return {
+ title: noteCard.displayTitle,
+ link: coverUrl,
+ guid: noteCard.displayTitle,
+ description: `
${noteCard.displayTitle}`,
+ author: noteCard.user.nickname,
+ upvotes: noteCard.interactInfo.likedCount,
+ };
+ })
);
const renderCollect = (collect) => {
if (!collect) {
diff --git a/lib/routes/xiaohongshu/util.ts b/lib/routes/xiaohongshu/util.ts
index a3084ff28e88..cf1b40e2e1df 100644
--- a/lib/routes/xiaohongshu/util.ts
+++ b/lib/routes/xiaohongshu/util.ts
@@ -1,3 +1,4 @@
+import type { CheerioAPI } from 'cheerio';
import { load } from 'cheerio';
import { config } from '@/config';
@@ -77,17 +78,22 @@ const getUser = (url, cache) =>
await page.goto(url, {
waitUntil: 'domcontentloaded',
});
- await page.waitForSelector('div.reds-tab-item:nth-child(2), #red-captcha');
+ try {
+ await page.waitForSelector('div.reds-tab-item:nth-child(2), .fe-verify-box', { timeout: 3000 });
+ } catch {
+ //
+ }
- if (await page.$('#red-captcha')) {
+ if (await page.$('.fe-verify-box')) {
throw new CaptchaError('小红书风控校验,请稍后再试');
}
- const initialState = await page.evaluate(() => (window as any).__INITIAL_STATE__);
+ const content = await page.content();
+ const initialState = JSON.parse(extractInitialState(load(content)));
if (!(await page.$('.lock-icon'))) {
- await page.click('div.reds-tab-item:nth-child(2)');
try {
+ await page.click('div.reds-tab-item:nth-child(2)', { timeout: 3000 });
const response = await page.waitForResponse(
(res) => {
const req = res.request();
@@ -105,6 +111,10 @@ const getUser = (url, cache) =>
userPageData = userPageData._rawValue || userPageData;
notes = notes._rawValue || notes;
+ if (!userPageData.basicInfo) {
+ throw new Error(`小红书未返回用户数据,请稍后再试: ${JSON.stringify(userPageData.result)}`);
+ }
+
return { userPageData, notes, collect };
} finally {
await destroy();
@@ -299,38 +309,20 @@ async function getUserWithCookie(url: string) {
}
// Add helper function to extract initial state
-function extractInitialState($) {
- let script = $('script')
- .filter((i, script) => {
- const text = script.children[0]?.data;
- return text?.startsWith('window.__INITIAL_STATE__=');
- })
- .text();
- script = script.slice('window.__INITIAL_STATE__='.length);
+function extractInitialState($: CheerioAPI) {
+ let script = $('script:contains("window.__INITIAL_STATE__=")').text();
+ script = script.slice(script.indexOf('window.__INITIAL_STATE__=') + 'window.__INITIAL_STATE__='.length);
script = script.replaceAll('undefined', 'null');
return script;
}
// Add helper function to extract initial SSR state
-function extractInitialSsrState($) {
- let script = $('script')
- .filter((i, script) => {
- const text = script.children[0]?.data;
- return text?.includes('window.__INITIAL_SSR_STATE__=');
- })
- .text();
+function extractInitialSsrState($: CheerioAPI) {
+ const script = $('script:contains("window.__INITIAL_SSR_STATE__=")').text();
const match = script.match(/window\.__INITIAL_SSR_STATE__\s*=\s*(\{[\s\S]*?\})\s*(?:;|$)/);
if (match) {
return match[1].replaceAll('undefined', 'null');
}
- // Fallback: try simple extraction
- const startMarker = 'window.__INITIAL_SSR_STATE__=';
- const startIndex = script.indexOf(startMarker);
- if (startIndex !== -1) {
- script = script.slice(startIndex + startMarker.length);
- script = script.replaceAll('undefined', 'null');
- return script;
- }
throw new Error('Cannot extract __INITIAL_SSR_STATE__');
}
From 0bc92d27e3ab00b51c5091f24e3f7430d79f280b Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Fri, 17 Jul 2026 03:58:25 +0800
Subject: [PATCH 341/670] feat(index): adaptive theme & icons
---
lib/views/error.tsx | 22 +++++++-----
lib/views/index.tsx | 20 +++++++----
lib/views/layout.tsx | 83 +++++++++++++++++++++++++-------------------
3 files changed, 74 insertions(+), 51 deletions(-)
diff --git a/lib/views/error.tsx b/lib/views/error.tsx
index f4c1dee730ac..5d38b18542cf 100644
--- a/lib/views/error.tsx
+++ b/lib/views/error.tsx
@@ -26,22 +26,22 @@ const Index: FC<{
Error Message:
- {message}
+ {message}
- Route: {errorRoute}
+ Route: {errorRoute}
- Full Route: {requestPath}
+ Full Route: {requestPath}
- Node Version: {nodeVersion}
+ Node Version: {nodeVersion}
- Git Hash: {gitHash}
+ Git Hash: {gitHash}
- Git Date: {gitDate?.toUTCString()}
+ Git Date: {gitDate?.toUTCString()}
@@ -107,7 +107,10 @@ const Index: FC<{
{info.showDebug ? (
@@ -180,7 +180,10 @@ const Index: FC<{ debugQuery: string | undefined }> = ({ debugQuery }) => {
-
+
+
+
+
@@ -189,7 +192,10 @@ const Index: FC<{ debugQuery: string | undefined }> = ({ debugQuery }) => {
-
+
+
+
+
diff --git a/lib/views/layout.tsx b/lib/views/layout.tsx
index 11818378e708..04c93856a825 100644
--- a/lib/views/layout.tsx
+++ b/lib/views/layout.tsx
@@ -4,47 +4,58 @@ export const Layout: FC = (props) => (
Welcome to RSSHub!
+
- {props.children}
+ {props.children}
);
From f71d14fbcbd4fe838ee467c9123ab4c9839d9618 Mon Sep 17 00:00:00 2001
From: Tony
Date: Fri, 17 Jul 2026 09:31:34 +0800
Subject: [PATCH 342/670] feat(route): add ltn (#22741)
---
lib/routes/ltn/def.ts | 109 ++++++++++++++++++++++++++++++++++++
lib/routes/ltn/namespace.ts | 7 +++
2 files changed, 116 insertions(+)
create mode 100644 lib/routes/ltn/def.ts
create mode 100644 lib/routes/ltn/namespace.ts
diff --git a/lib/routes/ltn/def.ts b/lib/routes/ltn/def.ts
new file mode 100644
index 000000000000..f95b76277fe4
--- /dev/null
+++ b/lib/routes/ltn/def.ts
@@ -0,0 +1,109 @@
+import { load } from 'cheerio';
+import type { Context } from 'hono';
+
+import type { DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+const channels = {
+ breakingnewslist: '軍情動態',
+ 'list/10': '國際軍情',
+ 'list/11': '台海軍情',
+ 'list/22': '軍情看板',
+ mitlist: '國防MIT',
+ 'list/12': '國機國造',
+ 'list/13': '國艦國造',
+ 'list/14': '潛艦國造',
+ 'list/23': '飛彈',
+ 'list/24': '戰甲車國造',
+ 'list/15': '國防產業',
+ 'list/25': '其他裝備',
+ pedialist: '軍武百科',
+ 'list/16': '圖解軍武',
+ 'list/17': '陸用裝備',
+ 'list/18': '海軍系統',
+ 'list/19': '空軍系統',
+ historylist: '國防祕辛',
+ stylelist: '軍風尚',
+ 'list/27': '將軍官邸故事',
+ 'list/28': '軍事風餐廳',
+ 'list/29': '軍風文創',
+ 'list/30': '軍風世界',
+ filelist: '軍武書摘',
+ forumlist: '自由講武堂',
+ 'list/20': '投書',
+ 'list/21': '論壇',
+ peoplelist: '軍情人物',
+};
+
+export const route: Route = {
+ path: '/def/:channel{.+}?',
+ categories: ['traditional-media'],
+ example: '/ltn/def/breakingnewslist',
+ parameters: {
+ channel: {
+ description: 'Channel, see the table below',
+ options: Object.entries(channels).map(([value, label]) => ({ value, label })),
+ default: 'breakingnewslist',
+ },
+ },
+ radar: [
+ {
+ source: ['def.ltn.com.tw/:channel'],
+ target: '/def/:channel',
+ },
+ {
+ source: ['def.ltn.com.tw/list/:id'],
+ target: '/def/list/:id',
+ },
+ ],
+ name: '自由軍武頻道',
+ maintainers: ['TonyRL'],
+ handler,
+ url: 'def.ltn.com.tw',
+};
+
+async function handler(ctx: Context) {
+ const { channel = 'breakingnewslist' } = ctx.req.param();
+ const baseUrl = 'https://def.ltn.com.tw';
+
+ const response = await ofetch(`${baseUrl}/ajax/${channel}/1`, { responseType: 'json' });
+
+ const list: DataItem[] = response.map((item) => ({
+ title: item.title,
+ link: item.url,
+ pubDate: timezone(parseDate(item.createTime, 'YYYYMMDDHHmmss'), 8),
+ image: item.url_b,
+ }));
+
+ const items = await Promise.all(
+ list.map((item) =>
+ cache.tryGet(item.link!, async () => {
+ const response = await ofetch(item.link!);
+ const $ = load(response);
+
+ const content = $('.whitecon:not(.template) div[data-desc="內文"]');
+ content.find('.before_ir, .after_ir, [id^="ad"], .appE1121').remove();
+ content.find('img[data-src]').each((_, img) => {
+ $(img).attr('src', $(img).attr('data-src')!).removeAttr('data-src');
+ });
+ content.find('iframe[src^="https://www.youtube.com/embed/"]').each((_, iframe) => {
+ $(iframe).attr('referrerpolicy', 'strict-origin-when-cross-origin').removeAttr('allow');
+ });
+
+ item.description = content.html()?.trim();
+ return item;
+ })
+ )
+ );
+
+ return {
+ title: `${channels[channel] ?? ''} - 自由軍武頻道`,
+ link: `${baseUrl}/${channel}`,
+ language: 'zh-TW' as const,
+ image: `${baseUrl}/assets/images/1200_def.png`,
+ item: items,
+ };
+}
diff --git a/lib/routes/ltn/namespace.ts b/lib/routes/ltn/namespace.ts
new file mode 100644
index 000000000000..7518316429de
--- /dev/null
+++ b/lib/routes/ltn/namespace.ts
@@ -0,0 +1,7 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: '自由時報',
+ url: 'ltn.com.tw',
+ lang: 'zh-TW',
+};
From 18ad0daeb676a17ab75dac2bcc8a064822ed0bca Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 08:17:06 +0000
Subject: [PATCH 343/670] chore(deps-dev): bump tsdown from 0.22.8 to 0.22.9
(#22745)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.8 to 0.22.9.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.8...v0.22.9)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.9
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 410 +++++++++++++++++++++++++++++++++++--------------
2 files changed, 294 insertions(+), 118 deletions(-)
diff --git a/package.json b/package.json
index b8d298202492..7dad1368f8c7 100644
--- a/package.json
+++ b/package.json
@@ -201,7 +201,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.8",
+ "tsdown": "0.22.9",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a1e69cde9c94..531160dfe536 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -453,8 +453,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.8
- version: 0.22.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
+ specifier: 0.22.9
+ version: 0.22.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -2205,30 +2205,60 @@ packages:
cpu: [arm64]
os: [android]
+ '@rolldown/binding-android-arm64@1.2.0':
+ resolution: {integrity: sha512-9yB1l95IrJuNGDFdOYe79vdApdz6WWBCObE+rQ2LUliYUlcyFwSYIb2xb5/Ifw7dAtMy2ZqNyd8QTSOc7duAKw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
'@rolldown/binding-darwin-arm64@1.1.5':
resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
+ '@rolldown/binding-darwin-arm64@1.2.0':
+ resolution: {integrity: sha512-pexNaW9ACLUOaBITOpU6qVu4VrsOFIjTv6bzgu0YUATo4eUJx0V605PxwZfndpPOn0ilqGqvGQ0M8UW0IE24jg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
'@rolldown/binding-darwin-x64@1.1.5':
resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
+ '@rolldown/binding-darwin-x64@1.2.0':
+ resolution: {integrity: sha512-NqKYaq0355ZmNMG4QGpxtEDxsc7tGDhjhCm4PpE0cwnBW+5Il95LJyq414niEiaKLVjnVHBEjSo1wngKxJNiFw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
'@rolldown/binding-freebsd-x64@1.1.5':
resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
+ '@rolldown/binding-freebsd-x64@1.2.0':
+ resolution: {integrity: sha512-3vPoHzh6eBTz9IbB0/qZdSr0Qeks2echn+I4cHu2joV74VriPDdldswksEDzrl1mBB+oPRi+67+3Ib59paxIPQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
'@rolldown/binding-linux-arm-gnueabihf@1.1.5':
resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.0':
+ resolution: {integrity: sha512-E6NNefZ1bUVmKJq2tJkf45J4Zyczj7qm9rUT7NY+Xo2474Y13qWAwc2tvBt0BAVbmtXR1llkxXg0Ou1jbDf2SQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
'@rolldown/binding-linux-arm64-gnu@1.1.5':
resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2236,6 +2266,13 @@ packages:
os: [linux]
libc: [glibc]
+ '@rolldown/binding-linux-arm64-gnu@1.2.0':
+ resolution: {integrity: sha512-D+TgkdgM1vu+7/Fpf8+v0ARW+RXEP9Ccazgm8zQ4JFFd9Q7SrYQ2TakU5S5ihazQDgpKyAgZDOcIFsvoHmTZ8w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
'@rolldown/binding-linux-arm64-musl@1.1.5':
resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2243,6 +2280,13 @@ packages:
os: [linux]
libc: [musl]
+ '@rolldown/binding-linux-arm64-musl@1.2.0':
+ resolution: {integrity: sha512-wUqdwJBbAv0APN87GecstdMUtLjjNTs0hBALpxETD73mccFxdmt/XeizXDtN5RAlBwNKmI+Tg+blect2G+8IeQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
'@rolldown/binding-linux-ppc64-gnu@1.1.5':
resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2250,6 +2294,13 @@ packages:
os: [linux]
libc: [glibc]
+ '@rolldown/binding-linux-ppc64-gnu@1.2.0':
+ resolution: {integrity: sha512-9DtF35qR9/NrfhM4oxLplCzVVjE+KKm8Pjemi0i/sdhAWkUasjmSo8WTTubNJClhSHCfyk2yeyoXDQEDPtDAAw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
'@rolldown/binding-linux-s390x-gnu@1.1.5':
resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2257,6 +2308,13 @@ packages:
os: [linux]
libc: [glibc]
+ '@rolldown/binding-linux-s390x-gnu@1.2.0':
+ resolution: {integrity: sha512-RzuHrBh8X8Hntd2N4VR02QGEciq/9JhcZoTpR/Cee6otRrlILGCf3cg2ygHuih+ZebUnWmMrDX6ITI85btO6rQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
'@rolldown/binding-linux-x64-gnu@1.1.5':
resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2264,6 +2322,13 @@ packages:
os: [linux]
libc: [glibc]
+ '@rolldown/binding-linux-x64-gnu@1.2.0':
+ resolution: {integrity: sha512-MK7L0018jjh1jR3mh21G2j1zAVcpscJBlPo2z19pRjv2XOYGRhaV4LyiD8HO6nCDdZln9IFgCMIV5yt4E3klGQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
'@rolldown/binding-linux-x64-musl@1.1.5':
resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -2271,29 +2336,59 @@ packages:
os: [linux]
libc: [musl]
+ '@rolldown/binding-linux-x64-musl@1.2.0':
+ resolution: {integrity: sha512-gyrxLQ9NfGb/9LoVnC4kb9miUghw1mghnkfYvNHSnVIXriabnfgGPUP4RLcJm87q3KgYz4FYUG8IDiWUT+CpSw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
'@rolldown/binding-openharmony-arm64@1.1.5':
resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
+ '@rolldown/binding-openharmony-arm64@1.2.0':
+ resolution: {integrity: sha512-/6VFMQGRmrhP77KXDC+StIxGzcNp5JOIyYtw0CQ8gPlzhpiIRucYfoM5FaFamHd5BJYIdH86yfP46l1p3WdrFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
'@rolldown/binding-wasm32-wasi@1.1.5':
resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
+ '@rolldown/binding-wasm32-wasi@1.2.0':
+ resolution: {integrity: sha512-rwdbUL465kisF24WEJLvP3JrEG6E5GRuIHt5wpMwHGERtHe4Wm2CIvtf5gTBgr2tGOHKh5NdKEAFS2VkOPE91g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
'@rolldown/binding-win32-arm64-msvc@1.1.5':
resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
+ '@rolldown/binding-win32-arm64-msvc@1.2.0':
+ resolution: {integrity: sha512-+5suHwRiKGmhwyUaNT8a5QbrBvLFh2DbO910TEmGRH1aSxwrCezodvGQnulv4uiWEIv1Kq4ypRsJ5+O+ry1DiA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
'@rolldown/binding-win32-x64-msvc@1.1.5':
resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
+ '@rolldown/binding-win32-x64-msvc@1.2.0':
+ resolution: {integrity: sha512-WfFv6/qGufotqBSBzBYwgpCkJBk8Nj7697LL9vTz/XWc67e0r3oewu8iMRwQj3AUL45GVD7wVsPjCsAAtW66Wg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
'@rolldown/pluginutils@1.0.1':
resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
@@ -2935,125 +3030,125 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.6.3':
- resolution: {integrity: sha512-pbDcFygFmbvo0jGFq5U0m5Sa9U8aVttVJWbBHZDZ68w/X48HdDWS1V4XvBacs8XkmWbTr/ef5fMGG7HsngqTmg==}
+ '@yuku-codegen/binding-darwin-arm64@0.6.5':
+ resolution: {integrity: sha512-uR1OCnftxC89GP6ZLPbaAXU9wdycmXt5BUQAOaDUmU/b38WJefse4RcL793rsOw1rkb8UC3UqP9F8hQ0lDB5xg==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.6.3':
- resolution: {integrity: sha512-qZMrnA4i8OfqL3NMGoOvLdh1vby8cCGsmNo+tJQIIezXO557m3fdQLenz/57GqtBnnGWzWqd/aDp+faNxWlLwQ==}
+ '@yuku-codegen/binding-darwin-x64@0.6.5':
+ resolution: {integrity: sha512-b5m/NymPwAV8OYmWPK0GwVeXw/D7EMIr1GkgL9fW/JCFDvkSkBTz8cbGl5Jkoxr+bamOZy4C1ySngpU///4CFQ==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.6.3':
- resolution: {integrity: sha512-2+SFpfem2GBH6BlCTAq6R44bZwuieduwRWHkCQnSgbK8tdEjMwB0Ix0IchryVBn6hdiWCZSTkSE3UILliRXsRQ==}
+ '@yuku-codegen/binding-freebsd-x64@0.6.5':
+ resolution: {integrity: sha512-wLTe/QeBF37qb4bR++t/jLP3LQ7oS76lsZigk7J10IR2GwD4w8GJqhIm1NsAwho6OjWDNnfxkkw/Oadf/jex4Q==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.6.3':
- resolution: {integrity: sha512-fbxg3cBPdJ++36DXtdzcoKw2xzFov91Wxvmn1khX9MXQbDqJQLJmITZhtokcZsj4uGJe32sUmxAZnKbUtZLjmA==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.5':
+ resolution: {integrity: sha512-Clah7LByDMBFkHKeRsUrqoftiyocoYaAmDc7aM14S9qghvKPnbTAtvrG8QOLMkWviWS+rQ94YWFGqzk1cRxAnA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.6.3':
- resolution: {integrity: sha512-Jk4P7kocGEisSvUFIm1VuHO3hC01LvS3sYAAmVVu1/ve5TuZ0iXyl9kIGtd1ZrgUvchgvZWNOaB+/Kq/RO63FA==}
+ '@yuku-codegen/binding-linux-arm-musl@0.6.5':
+ resolution: {integrity: sha512-3ghZT7Dtp5tzIyfSFWcLFxtwnXjrrqLhO+MTuw3Am03K9Coo2NQICwwA9DN2HBrb8KXES1U43an1rNgzRw9xog==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.3':
- resolution: {integrity: sha512-i1xE8Bx1YZLheWtBZHD0Mq3nAIDrhgiH7o8VB4GiCbHufKb4XKj4CqSDMWSC0RYPmn//E+UEd1NsE2NbOux1tQ==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.5':
+ resolution: {integrity: sha512-9zT+uVEtVJkvm0Ba5BkUgBXNqw3kcolV9RAf0kSgIe44bi5Lp6MPqCRm9JrWnJTZOySzPII3oRNRl9dtBlOdLg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.6.3':
- resolution: {integrity: sha512-ZeLkC6xZrlDoIJTadHfqTABTmsj2f6wCCtYBYx/RPGgdmQcGLA0NALRl7m0tnK2CT45eNRuOYzsfEZyF0XWM/A==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.5':
+ resolution: {integrity: sha512-Uyi/vT++0gyVsyan3XvEii8AWbc+yFJ3M0GEloup7eBx1j4FtK7oq23F6mbQD1gNaozGKkN74fCJpIxF176hZA==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.6.3':
- resolution: {integrity: sha512-HNYt7zjIChPcnjZRG42CZq3Zn5mqaRo4UcFLr4mIbmGqdhX5hDDE8O8US8YgYyOUosfbBTBFdsbvFwVAx1TOkQ==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.5':
+ resolution: {integrity: sha512-JZzAbPDh5eQ2GRAAbo7cKcFabPQ9UEAQglk1BE0psoWUDt1wktp4ZX9ZJgDgF9EbSH3UUACo0lIkWUtSjRyRoQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.6.3':
- resolution: {integrity: sha512-/1ttT31dAQc7hGtXWSEYEgzGtakAyO2C+/GqAzIuKXlGLpNPZgXdR8LZ0iDHDalbEr3AuHIPRV43sWLUrHWdsA==}
+ '@yuku-codegen/binding-linux-x64-musl@0.6.5':
+ resolution: {integrity: sha512-Dmh6Qhoo1UNM10eDLs/DND8E3cLfQQboFfZgnnNNIJ2RQ/G0GXGh7Kzff1QmglUNuRami42NkTrsF9VrkCttZg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.6.3':
- resolution: {integrity: sha512-oAArRDU1lkKg+xFEtiQ7C+/wghpqrkBrFWM05W73S+3sZz8JIHH79Q+Qh5gWls3i8vccitUgCnvln5V7xKn3XQ==}
+ '@yuku-codegen/binding-win32-arm64@0.6.5':
+ resolution: {integrity: sha512-UAq2wLFT0mRN2rzJfZjmaqVMJD9kYywARc6Wk8Ggnm4p8yJYigNxMkJ0gt3bpd0MOnvre4LFEDyAMr4esRubuQ==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.6.3':
- resolution: {integrity: sha512-bhFDcDsvmp5KuBfWTt4carNo1E4LXH7++S8qqZgDtXVqJxs0xMm7gbuqPihA8kBbphM+NzAUm5qmq6ocfqM6kg==}
+ '@yuku-codegen/binding-win32-x64@0.6.5':
+ resolution: {integrity: sha512-hlEo+UIMHaEoLHe8woLr9eI6fz+8LRwdRrid/iegVU1N+53zkh4WMkI8N7e4vUNKKMVN2kJo6Z73J+JfskHO1g==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.6.3':
- resolution: {integrity: sha512-Xate6yyZgvi7da/gdnZy+Vu5jlFB0LRlb5m4MY6Y98KSQeJPZIhoVXMK2Vsl48XOmPlDIS8lge414HUVUEo+hg==}
+ '@yuku-parser/binding-darwin-arm64@0.6.5':
+ resolution: {integrity: sha512-QVdaZzj9T3KdaprM8VYpiYIFJrcJB347P2U3bg683nPQaDNmX733CFtCqpkc1KHccFf199EXx4OazkJlnHvImA==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.6.3':
- resolution: {integrity: sha512-WKMZ5UU2HBdGZDEpQoLq+21f1FlS+BjroH1FaVE6zCSeqKmZ7xRP5jIRGtQ4vCYj/k2KHgyABZ16lgK9mTe2Sg==}
+ '@yuku-parser/binding-darwin-x64@0.6.5':
+ resolution: {integrity: sha512-9omiEXwzJo3hsJiaohFek44wKRmnNy8o8acf8PXJdVo19I9O5eY7c3Nhca1DRTozoLqIJEI68CH8OoR2/Dv7ww==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.6.3':
- resolution: {integrity: sha512-OWX8V2k4bmtl/DNwU3yz3PZa2QXiSqWN3Xk7pNB5IPt7FcJBDlnpkOcX6h3tjMS7CyKE0lMvPUwwcmWSdbjkyA==}
+ '@yuku-parser/binding-freebsd-x64@0.6.5':
+ resolution: {integrity: sha512-0BZ14CHc8H3EHmlAMhxTDVMYijsT1nNZUhl6JTm/xzl+Gaun/vahgdaJaFESuweLeZ1WnwVfPVPvjsdfnbTN8g==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.6.3':
- resolution: {integrity: sha512-/4LzmPXPaCWqIpY1j3+XVb8rbXIratqCte3A4sGEjua6aVhvVxEVAqeKlBsoGkORWLeqbpcxhgxKwOGM17eexA==}
+ '@yuku-parser/binding-linux-arm-gnu@0.6.5':
+ resolution: {integrity: sha512-VidTdzelGosQDkVkU4X/9qrILPT5HunzL5shW9jrq860naAEjGS/41a4s3J5KBRsKRHscwOsbtSzUev1TMdgfg==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.6.3':
- resolution: {integrity: sha512-Df4jk0M/eNKKQfYzXBBKhKkmJBpB+XoX2LkMxmlK3GN+fxUdeb8EM78wX+1+eLVl5dZNo6f7gOd6oDV0gChevw==}
+ '@yuku-parser/binding-linux-arm-musl@0.6.5':
+ resolution: {integrity: sha512-Xes/SwXQiPFPqLMhnwjRv0s6mlm6V7+jpw/kmCMkal9Q0UfS4hVpFo2T5NNIKNLCj5qAZ+2EPtgDBz0S1lH4xg==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.6.3':
- resolution: {integrity: sha512-sRCtDktUgIbbV78SYX3wdGVVm1Hz/nSUS24JgXB4MzUeGNwBNB+eQAWMtBxCGriyJNXK3zwfj+SSgvTmUdPf/A==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.5':
+ resolution: {integrity: sha512-MaFn3Vh+kBETYXtPYBaCQUMsUk5SqSatM+mp9Vz7COuCKXim7cG8kGcUpqq93wegLEkkEnv8pyiDFFx/gmNOiQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.6.3':
- resolution: {integrity: sha512-3J/jV3ROSqlhLyB/6i5EUHxjkom5i59iPvrtiAsnAjHzMsZJJPEke9LSaOsB0rf4MJFH9AmjvsK8gDahTjZy+A==}
+ '@yuku-parser/binding-linux-arm64-musl@0.6.5':
+ resolution: {integrity: sha512-s7GAjJ7kzmnEBVAq5c5B+h/DCOSZG7WqTNpFRYUVGQU+D8wf1gMnfDQ5v8zFdByhpHiW+HNerxI8sml5dl47Rw==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.6.3':
- resolution: {integrity: sha512-a5mPn/OMSq2Aa2i7eJXcc37Jtw0b89gDO2mDpXN769b06IirEiqOzLNNJd6R7R8DxoadHzY0nLFhYNChE+jyAg==}
+ '@yuku-parser/binding-linux-x64-gnu@0.6.5':
+ resolution: {integrity: sha512-5/+mLrZdCtGoKOw/zNJC0+fSy4aKI97JvPm5rr8DXui/l3+BrvU5g7czp1DVHN67I7VzTLizu2n2y5cz2CjzEg==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.6.3':
- resolution: {integrity: sha512-kQSjfa6zdvotuXEGNKQ9vZZxE+lcEEbTUMSuvY/5+0crlwBCjEqrf9/W9ViFDoQAEt8WJiu/mtVNYkKAOkjLmA==}
+ '@yuku-parser/binding-linux-x64-musl@0.6.5':
+ resolution: {integrity: sha512-Svj4h/WZQ1VdAxaFJrakVi85IzUJPYWcNw15gNPoeNg+/SGGTTkTeUzODiMRY/8ioJ/k3+/K7zQwASIEBF7L3Q==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.6.3':
- resolution: {integrity: sha512-ZawdN3R0YKr48BeXCpbax+WDWbgEG6nWyDosVeZasrT5TjgfF4XMP5SfuyMNvRJ4gbTitrcYHZkENSXZ9ncqcg==}
+ '@yuku-parser/binding-win32-arm64@0.6.5':
+ resolution: {integrity: sha512-N96G8zoKihVwhMaH+kLp8MFIA1i3+dRaBO4KYK0otTPVdX+3uS2wpUY5vDLj4JbkKARuQA/DUmfgjleoXL6ugA==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.6.3':
- resolution: {integrity: sha512-NcqZwBXQhKyfC0Eb+yBxXQcPjZoUstD1Dbr3X4UlOD1QiYfnvAYRKCZJ6nQ6KQ5p30dGaKkQeBL4t3qQtDQNWA==}
+ '@yuku-parser/binding-win32-x64@0.6.5':
+ resolution: {integrity: sha512-RP7rz120SodZI/vUc1H4uzIMEZrxeG//d11qWUI5inMbU4YSnufJAScwjV+qQHxD3FAwoueNxsPjrVxagwAymg==}
cpu: [x64]
os: [win32]
@@ -3589,7 +3684,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -5051,6 +5146,10 @@ packages:
resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==}
engines: {node: '>=12.20.0'}
+ obug@2.1.4:
+ resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==}
+ engines: {node: '>=12.20.0'}
+
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
@@ -5498,20 +5597,20 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown-plugin-dts@0.27.9:
- resolution: {integrity: sha512-d54yt65+ZF/Mk8H6P36As02PAMdaiWRSzVNtJRc1h7nCgUFjuRI4cN2DyTfJyfVpPH6pgy7/2D7YQH1/Rh75Yg==}
+ rolldown-plugin-dts@0.27.11:
+ resolution: {integrity: sha512-DnBl4USSTV/h/sgy//QjCLHVo2JypE/52P5QugGeYaEqZmjBz/FYESOld0MhyIhul2U3Vsh41K63UWGHhJU/qQ==}
engines: {node: ^22.18.0 || >=24.11.0}
peerDependencies:
- '@ts-macro/tsc': ^0.3.6
'@typescript/native-preview': '*'
+ '@volar/typescript': ~2.4.0
rolldown: ^1.0.0
typescript: ^5.0.0 || ^6.0.0 || ~7.0.0
vue-tsc: ~3.2.0 || ~3.3.0
peerDependenciesMeta:
- '@ts-macro/tsc':
- optional: true
'@typescript/native-preview':
optional: true
+ '@volar/typescript':
+ optional: true
typescript:
optional: true
vue-tsc:
@@ -5522,6 +5621,11 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
+ rolldown@1.2.0:
+ resolution: {integrity: sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
rollup@4.62.2:
resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -5889,14 +5993,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.8:
- resolution: {integrity: sha512-6FOLlr1iLcE3LheqQt13hVUWtTduJNwF2akPskPe8Tf1hr+N5UULHzrNZYTMNwL6lr2UyQ8iefVBB6tdqp1PCQ==}
+ tsdown@0.22.9:
+ resolution: {integrity: sha512-/0QEjQEhOU1t1YxOIAGzFN7bIssd8P0pBpkOmNLCQi3c5UtrcMF5bvq3f30xHJNW9QCA9aUNcNAorMr2CTd6Lg==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.8
- '@tsdown/exe': 0.22.8
+ '@tsdown/css': 0.22.9
+ '@tsdown/exe': 0.22.9
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6421,11 +6525,11 @@ packages:
yuku-ast@0.1.7:
resolution: {integrity: sha512-2RiMEWv500TixY5rJy6OZd4fSy9WYZKWh6gGbIJ7y7vAGcuCugWOWwOLGaQcRZrXcPUfqtLtvpaJ3SdXtWlhKA==}
- yuku-codegen@0.6.3:
- resolution: {integrity: sha512-3c9H521tf1RRDu4cNUySfH01sKlALve4HKu2sITk33gLl5HhsvI6ngSuarpWxMPAiJEgqJc/HTvojWQRnYm9/g==}
+ yuku-codegen@0.6.5:
+ resolution: {integrity: sha512-g8gbp05j2NNSKe0Uu2ViBRvawzXaWggxS9YwcVJ2d3I99VxbeOeENSUseA8AXPCZj/gcLkQxl7uhTmtK36qh8Q==}
- yuku-parser@0.6.3:
- resolution: {integrity: sha512-iI6uABvvup9mvv8Mcpz7Tp//gehQlvcSnX4A4/0bf9i6X3RVQDuVUZel8jdpljwlF7WrbKsvD19y55Mc6+sKZw==}
+ yuku-parser@0.6.5:
+ resolution: {integrity: sha512-9A5zaOqE3X3wcPOTK97CYInpKwaUGYnwfHWasJaI2Je1OhI4pQmRA6YCSh7oKewEb2iJM4xlJdbwwj4Aydty7w==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -7744,39 +7848,75 @@ snapshots:
'@rolldown/binding-android-arm64@1.1.5':
optional: true
+ '@rolldown/binding-android-arm64@1.2.0':
+ optional: true
+
'@rolldown/binding-darwin-arm64@1.1.5':
optional: true
+ '@rolldown/binding-darwin-arm64@1.2.0':
+ optional: true
+
'@rolldown/binding-darwin-x64@1.1.5':
optional: true
+ '@rolldown/binding-darwin-x64@1.2.0':
+ optional: true
+
'@rolldown/binding-freebsd-x64@1.1.5':
optional: true
+ '@rolldown/binding-freebsd-x64@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-arm-gnueabihf@1.1.5':
optional: true
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-arm64-gnu@1.1.5':
optional: true
+ '@rolldown/binding-linux-arm64-gnu@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-arm64-musl@1.1.5':
optional: true
+ '@rolldown/binding-linux-arm64-musl@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-ppc64-gnu@1.1.5':
optional: true
+ '@rolldown/binding-linux-ppc64-gnu@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-s390x-gnu@1.1.5':
optional: true
+ '@rolldown/binding-linux-s390x-gnu@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-x64-gnu@1.1.5':
optional: true
+ '@rolldown/binding-linux-x64-gnu@1.2.0':
+ optional: true
+
'@rolldown/binding-linux-x64-musl@1.1.5':
optional: true
+ '@rolldown/binding-linux-x64-musl@1.2.0':
+ optional: true
+
'@rolldown/binding-openharmony-arm64@1.1.5':
optional: true
+ '@rolldown/binding-openharmony-arm64@1.2.0':
+ optional: true
+
'@rolldown/binding-wasm32-wasi@1.1.5':
dependencies:
'@emnapi/core': 1.11.1
@@ -7784,12 +7924,25 @@ snapshots:
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)
optional: true
+ '@rolldown/binding-wasm32-wasi@1.2.0':
+ dependencies:
+ '@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
+
'@rolldown/binding-win32-arm64-msvc@1.1.5':
optional: true
+ '@rolldown/binding-win32-arm64-msvc@1.2.0':
+ optional: true
+
'@rolldown/binding-win32-x64-msvc@1.1.5':
optional: true
+ '@rolldown/binding-win32-x64-msvc@1.2.0':
+ optional: true
+
'@rolldown/pluginutils@1.0.1': {}
'@rollup/pluginutils@5.4.0(rollup@4.62.2)':
@@ -8398,70 +8551,70 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.6.3':
+ '@yuku-codegen/binding-darwin-arm64@0.6.5':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.6.3':
+ '@yuku-codegen/binding-darwin-x64@0.6.5':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.6.3':
+ '@yuku-codegen/binding-freebsd-x64@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.6.3':
+ '@yuku-codegen/binding-linux-arm-gnu@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.6.3':
+ '@yuku-codegen/binding-linux-arm-musl@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.3':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.6.3':
+ '@yuku-codegen/binding-linux-arm64-musl@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.6.3':
+ '@yuku-codegen/binding-linux-x64-gnu@0.6.5':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.6.3':
+ '@yuku-codegen/binding-linux-x64-musl@0.6.5':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.6.3':
+ '@yuku-codegen/binding-win32-arm64@0.6.5':
optional: true
- '@yuku-codegen/binding-win32-x64@0.6.3':
+ '@yuku-codegen/binding-win32-x64@0.6.5':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.6.3':
+ '@yuku-parser/binding-darwin-arm64@0.6.5':
optional: true
- '@yuku-parser/binding-darwin-x64@0.6.3':
+ '@yuku-parser/binding-darwin-x64@0.6.5':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.6.3':
+ '@yuku-parser/binding-freebsd-x64@0.6.5':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.6.3':
+ '@yuku-parser/binding-linux-arm-gnu@0.6.5':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.6.3':
+ '@yuku-parser/binding-linux-arm-musl@0.6.5':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.6.3':
+ '@yuku-parser/binding-linux-arm64-gnu@0.6.5':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.6.3':
+ '@yuku-parser/binding-linux-arm64-musl@0.6.5':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.6.3':
+ '@yuku-parser/binding-linux-x64-gnu@0.6.5':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.6.3':
+ '@yuku-parser/binding-linux-x64-musl@0.6.5':
optional: true
- '@yuku-parser/binding-win32-arm64@0.6.3':
+ '@yuku-parser/binding-win32-arm64@0.6.5':
optional: true
- '@yuku-parser/binding-win32-x64@0.6.3':
+ '@yuku-parser/binding-win32-x64@0.6.5':
optional: true
'@yuku-toolchain/types@0.5.43': {}
@@ -10707,6 +10860,8 @@ snapshots:
obug@2.1.3: {}
+ obug@2.1.4: {}
+
ofetch@1.5.1:
dependencies:
destr: 2.0.5
@@ -11268,15 +11423,15 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5):
+ rolldown-plugin-dts@0.27.11(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0):
dependencies:
dts-resolver: 3.0.0(oxc-resolver@11.24.2)
get-tsconfig: 5.0.0-beta.5
- obug: 2.1.3
- rolldown: 1.1.5
+ obug: 2.1.4
+ rolldown: 1.2.0
yuku-ast: 0.1.7
- yuku-codegen: 0.6.3
- yuku-parser: 0.6.3
+ yuku-codegen: 0.6.5
+ yuku-parser: 0.6.5
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11303,6 +11458,27 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.1.5
'@rolldown/binding-win32-x64-msvc': 1.1.5
+ rolldown@1.2.0:
+ dependencies:
+ '@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@4.62.2:
dependencies:
'@types/estree': 1.0.9
@@ -11700,7 +11876,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.8(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
+ tsdown@0.22.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11708,10 +11884,10 @@ snapshots:
empathic: 2.0.1
hookable: 6.1.1
import-without-cache: 0.4.0
- obug: 2.1.3
+ obug: 2.1.4
picomatch: 4.0.5
- rolldown: 1.1.5
- rolldown-plugin-dts: 0.27.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.1.5)
+ rolldown: 1.2.0
+ rolldown-plugin-dts: 0.27.11(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0)
semver: 7.8.5
tinyexec: 1.2.4
tinyglobby: 0.2.17
@@ -11722,8 +11898,8 @@ snapshots:
typescript: '@typescript/typescript6@6.0.2'
unrun: 0.3.1
transitivePeerDependencies:
- - '@ts-macro/tsc'
- '@typescript/native-preview'
+ - '@volar/typescript'
- oxc-resolver
- vue-tsc
@@ -12217,37 +12393,37 @@ snapshots:
dependencies:
'@yuku-toolchain/types': 0.5.43
- yuku-codegen@0.6.3:
+ yuku-codegen@0.6.5:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.6.3
- '@yuku-codegen/binding-darwin-x64': 0.6.3
- '@yuku-codegen/binding-freebsd-x64': 0.6.3
- '@yuku-codegen/binding-linux-arm-gnu': 0.6.3
- '@yuku-codegen/binding-linux-arm-musl': 0.6.3
- '@yuku-codegen/binding-linux-arm64-gnu': 0.6.3
- '@yuku-codegen/binding-linux-arm64-musl': 0.6.3
- '@yuku-codegen/binding-linux-x64-gnu': 0.6.3
- '@yuku-codegen/binding-linux-x64-musl': 0.6.3
- '@yuku-codegen/binding-win32-arm64': 0.6.3
- '@yuku-codegen/binding-win32-x64': 0.6.3
-
- yuku-parser@0.6.3:
+ '@yuku-codegen/binding-darwin-arm64': 0.6.5
+ '@yuku-codegen/binding-darwin-x64': 0.6.5
+ '@yuku-codegen/binding-freebsd-x64': 0.6.5
+ '@yuku-codegen/binding-linux-arm-gnu': 0.6.5
+ '@yuku-codegen/binding-linux-arm-musl': 0.6.5
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.6.5
+ '@yuku-codegen/binding-linux-arm64-musl': 0.6.5
+ '@yuku-codegen/binding-linux-x64-gnu': 0.6.5
+ '@yuku-codegen/binding-linux-x64-musl': 0.6.5
+ '@yuku-codegen/binding-win32-arm64': 0.6.5
+ '@yuku-codegen/binding-win32-x64': 0.6.5
+
+ yuku-parser@0.6.5:
dependencies:
'@yuku-toolchain/types': 0.5.43
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.6.3
- '@yuku-parser/binding-darwin-x64': 0.6.3
- '@yuku-parser/binding-freebsd-x64': 0.6.3
- '@yuku-parser/binding-linux-arm-gnu': 0.6.3
- '@yuku-parser/binding-linux-arm-musl': 0.6.3
- '@yuku-parser/binding-linux-arm64-gnu': 0.6.3
- '@yuku-parser/binding-linux-arm64-musl': 0.6.3
- '@yuku-parser/binding-linux-x64-gnu': 0.6.3
- '@yuku-parser/binding-linux-x64-musl': 0.6.3
- '@yuku-parser/binding-win32-arm64': 0.6.3
- '@yuku-parser/binding-win32-x64': 0.6.3
+ '@yuku-parser/binding-darwin-arm64': 0.6.5
+ '@yuku-parser/binding-darwin-x64': 0.6.5
+ '@yuku-parser/binding-freebsd-x64': 0.6.5
+ '@yuku-parser/binding-linux-arm-gnu': 0.6.5
+ '@yuku-parser/binding-linux-arm-musl': 0.6.5
+ '@yuku-parser/binding-linux-arm64-gnu': 0.6.5
+ '@yuku-parser/binding-linux-arm64-musl': 0.6.5
+ '@yuku-parser/binding-linux-x64-gnu': 0.6.5
+ '@yuku-parser/binding-linux-x64-musl': 0.6.5
+ '@yuku-parser/binding-win32-arm64': 0.6.5
+ '@yuku-parser/binding-win32-x64': 0.6.5
zod@3.25.76: {}
From d9299c695fa3e4cc36a4ef056daec96ffd2e459a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 08:18:35 +0000
Subject: [PATCH 344/670] chore(deps): bump tldts from 7.4.8 to 7.4.9 (#22750)
Bumps [tldts](https://github.com/remusao/tldts) from 7.4.8 to 7.4.9.
- [Release notes](https://github.com/remusao/tldts/releases)
- [Changelog](https://github.com/remusao/tldts/blob/master/CHANGELOG.md)
- [Commits](https://github.com/remusao/tldts/compare/v7.4.8...v7.4.9)
---
updated-dependencies:
- dependency-name: tldts
dependency-version: 7.4.9
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 7dad1368f8c7..05c1c6335c82 100644
--- a/package.json
+++ b/package.json
@@ -128,7 +128,7 @@
"source-map": "0.7.6",
"telegram": "2.26.22",
"title": "4.0.1",
- "tldts": "7.4.8",
+ "tldts": "7.4.9",
"tosource": "2.0.0-alpha.3",
"tough-cookie": "6.0.2",
"tsx": "4.23.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 531160dfe536..4504939587de 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -239,8 +239,8 @@ importers:
specifier: 4.0.1
version: 4.0.1
tldts:
- specifier: 7.4.8
- version: 7.4.8
+ specifier: 7.4.9
+ version: 7.4.9
tosource:
specifier: 2.0.0-alpha.3
version: 2.0.0-alpha.3
@@ -5915,11 +5915,11 @@ packages:
resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==}
hasBin: true
- tldts-core@7.4.8:
- resolution: {integrity: sha512-c1P7u0EhACHj7lPy4MJm8iTFEU8+nB0LCtddH0fhP7noaVoXAqafMtOOeX+ulpuPBqnrRgRhw494RICT3mbhnw==}
+ tldts-core@7.4.9:
+ resolution: {integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==}
- tldts@7.4.8:
- resolution: {integrity: sha512-htwgN/8KRB3z3vnC0BOETVh2m499g5GmyTK9Wq5JBLX3FNz6tSBveAd+fQhzy9hkjif8vy2jwDMR1sGhLtZl2A==}
+ tldts@7.4.9:
+ resolution: {integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==}
hasBin: true
to-no-case@1.0.2:
@@ -11821,11 +11821,11 @@ snapshots:
tlds@1.261.0: {}
- tldts-core@7.4.8: {}
+ tldts-core@7.4.9: {}
- tldts@7.4.8:
+ tldts@7.4.9:
dependencies:
- tldts-core: 7.4.8
+ tldts-core: 7.4.9
to-no-case@1.0.2: {}
@@ -11846,7 +11846,7 @@ snapshots:
tough-cookie@6.0.2:
dependencies:
- tldts: 7.4.8
+ tldts: 7.4.9
tr46@0.0.3: {}
From f40e30e375750264664bb72c316d7103e8d026ae Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 08:20:26 +0000
Subject: [PATCH 345/670] chore(deps): bump @scalar/hono-api-reference from
0.11.10 to 0.11.11 (#22749)
Bumps [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono) from 0.11.10 to 0.11.11.
- [Release notes](https://github.com/scalar/scalar/releases)
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md)
- [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono)
---
updated-dependencies:
- dependency-name: "@scalar/hono-api-reference"
dependency-version: 0.11.11
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 54 +++++++++++++++++++++++++-------------------------
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/package.json b/package.json
index 05c1c6335c82..d4a375b5829e 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,7 @@
"@opentelemetry/sdk-trace-base": "2.9.0",
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
- "@scalar/hono-api-reference": "0.11.10",
+ "@scalar/hono-api-reference": "0.11.11",
"@sentry/node": "10.65.0",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4504939587de..6d996623c147 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -83,8 +83,8 @@ importers:
specifier: 0.0.25
version: 0.0.25
'@scalar/hono-api-reference':
- specifier: 0.11.10
- version: 0.11.10(hono@4.12.30)
+ specifier: 0.11.11
+ version: 0.11.11(hono@4.12.30)
'@sentry/node':
specifier: 10.65.0
version: 10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
@@ -2548,30 +2548,30 @@ packages:
'@rss3/sdk@0.0.25':
resolution: {integrity: sha512-jyXT4YTwefxxRZ0tt5xjbnw8e7zPg2OGdo/0xb+h/7qWnMNhLtWpc95DsYs/1C/I0rIyiDpZBhLI2DieQ9y+tw==}
- '@scalar/client-side-rendering@0.3.3':
- resolution: {integrity: sha512-QMTKZdwtSSV619jV1jKeRCOd358cgJqRBTHQ663CF7EUCZ354qH4js883K3RYg5/eO4oWxOuka308KIj0sZ/Kg==}
+ '@scalar/client-side-rendering@0.3.4':
+ resolution: {integrity: sha512-kb3B+FGjvAUr2DU0fe9dVKBLwot1TjOO+iHCTmY8r8FUJySmYKGQYCicRzzilOyTjvKspiZBCEr03PWaWW+1gw==}
engines: {node: '>=22'}
- '@scalar/helpers@0.9.1':
- resolution: {integrity: sha512-UKSLIPfN++f+zzbsZ+F6I0lNrR4yX4PtokjHgGwGiHapxT5VJqAF4zFTIP2KCd27XG7KnAIA7qq62O4xRBxc6w==}
+ '@scalar/helpers@0.9.2':
+ resolution: {integrity: sha512-hjyMpMZjTBZQhyByZmz5oUgRKUQJO5V5AOiJxsVEGbUmgA7sJRQeTrXLB+BEwzaKS5nm2opJeNyMBYLFNK4hiQ==}
engines: {node: '>=22'}
- '@scalar/hono-api-reference@0.11.10':
- resolution: {integrity: sha512-LluYDOie3F8NqLiAuZ0ESWmtWotSMV9A2/AxIB3NwQk/3JJ+5S9rnIWVY61o7QIDWlwwy6uZ8KqRSV83qmnhZA==}
+ '@scalar/hono-api-reference@0.11.11':
+ resolution: {integrity: sha512-yvJ2oqyG9MC4C55/Xvi/Jny5qBYDxDvoVleABhgNG24A93u9ar17qsdSppli94sQOUdX31Qw/yCTm89LHbBRiQ==}
engines: {node: '>=22'}
peerDependencies:
hono: ^4.12.5
- '@scalar/schemas@0.7.3':
- resolution: {integrity: sha512-B6S/zUptiRfMsmMy92u/LefpULus1h0q3od9l5xgZc+pslkfFhfFns+QsU0UJX3Lqp3tTsf64c3tIRqH7cZgVA==}
+ '@scalar/schemas@0.7.4':
+ resolution: {integrity: sha512-Or31zxR+ceGGhkVU5XBO2Zv7oyGDtjsJOjM2Rr0WRZ1/tRsQc2/FsVv+9kPmCA7sqFL8BKWlNfTXcPITI7WRHw==}
engines: {node: '>=22'}
- '@scalar/types@0.16.3':
- resolution: {integrity: sha512-8TVNlK8AdvIekrapAoEVwy+IVRbMTSDYnpprskAJV4XanmZ52Kru6RmS6d+tbEBfMo2dTgQ9cV9P0kqsAu/AuA==}
+ '@scalar/types@0.16.4':
+ resolution: {integrity: sha512-fLf0ANAC3iQq0sIVdmH6aGM+pFSLyD8GfGBxSWcLpI0jE0iFAzX2A3p0qVZm7vqBT4TQnn0fSwg5U+h+FZ52BA==}
engines: {node: '>=22'}
- '@scalar/validation@0.6.1':
- resolution: {integrity: sha512-XeJ+pvxag0rguuRT6hxNSXIsxleB8Gcs6WQ55vFRkB4qo2CCO+wIli+uipzM3pILu5cP7agcL3pgADiZzd1ZNg==}
+ '@scalar/validation@0.6.2':
+ resolution: {integrity: sha512-Sc1TkcwGV6aVCO51AyKeaGiP8gpwAHxEtO5d3tZzPV+KsnlC/YokQxFxwBrbIXw73k9hmcExnJyGu3k5i6n6VA==}
engines: {node: '>=20'}
'@scure/base@2.2.0':
@@ -8043,32 +8043,32 @@ snapshots:
'@rss3/api-core': 0.0.25
'@rss3/api-utils': 0.0.25
- '@scalar/client-side-rendering@0.3.3':
+ '@scalar/client-side-rendering@0.3.4':
dependencies:
- '@scalar/schemas': 0.7.3
- '@scalar/types': 0.16.3
- '@scalar/validation': 0.6.1
+ '@scalar/schemas': 0.7.4
+ '@scalar/types': 0.16.4
+ '@scalar/validation': 0.6.2
- '@scalar/helpers@0.9.1': {}
+ '@scalar/helpers@0.9.2': {}
- '@scalar/hono-api-reference@0.11.10(hono@4.12.30)':
+ '@scalar/hono-api-reference@0.11.11(hono@4.12.30)':
dependencies:
- '@scalar/client-side-rendering': 0.3.3
+ '@scalar/client-side-rendering': 0.3.4
hono: 4.12.30
- '@scalar/schemas@0.7.3':
+ '@scalar/schemas@0.7.4':
dependencies:
- '@scalar/helpers': 0.9.1
- '@scalar/validation': 0.6.1
+ '@scalar/helpers': 0.9.2
+ '@scalar/validation': 0.6.2
- '@scalar/types@0.16.3':
+ '@scalar/types@0.16.4':
dependencies:
- '@scalar/helpers': 0.9.1
+ '@scalar/helpers': 0.9.2
nanoid: 5.1.16
type-fest: 5.8.0
zod: 4.4.3
- '@scalar/validation@0.6.1': {}
+ '@scalar/validation@0.6.2': {}
'@scure/base@2.2.0': {}
From 8aab862099bf3a4020156db8db3977ffd07db2b0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 18:57:45 +0800
Subject: [PATCH 346/670] chore(deps): bump devenv from `4ed83c0` to `d773046`
(#22751)
Bumps [devenv](https://github.com/cachix/devenv) from `4ed83c0` to `d773046`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/4ed83c00354d5a6b4cece8aa8c55028b4e4421e4...d77304696697c43672e10f29d1da401b33ab2778)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: d77304696697c43672e10f29d1da401b33ab2778
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index ea1ec7fc6861..61885b0dacea 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784142617,
- "narHash": "sha256-mN/bY/kthTv86mIVH4trz6NJAfRglO2x4wImvTGkFZ8=",
+ "lastModified": 1784248563,
+ "narHash": "sha256-rRjR2qADMZbvrDkZzeYrdssLKpbTGymNXLnVdbT6XpQ=",
"owner": "cachix",
"repo": "devenv",
- "rev": "4ed83c00354d5a6b4cece8aa8c55028b4e4421e4",
+ "rev": "d77304696697c43672e10f29d1da401b33ab2778",
"type": "github"
},
"original": {
From 833397548cccbedd72d865423f2bf39c73ed4bea Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:00:28 +0800
Subject: [PATCH 347/670] chore(deps): bump actions/attest from 4.1.1 to 4.2.0
(#22743)
Bumps [actions/attest](https://github.com/actions/attest) from 4.1.1 to 4.2.0.
- [Release notes](https://github.com/actions/attest/releases)
- [Changelog](https://github.com/actions/attest/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest/compare/a1948c3f048ba23858d222213b7c278aabede763...f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6)
---
updated-dependencies:
- dependency-name: actions/attest
dependency-version: 4.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/docker-release.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index ff19902be8e4..10c1227fb8ce 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -118,7 +118,7 @@ jobs:
outputs: type=image,compression=zstd,force-compression=true,push-by-digest=true,name-canonical=true,push=true
- name: Attest (ordinary version)
- uses: actions/attest@a1948c3f048ba23858d222213b7c278aabede763 # v4.1.1
+ uses: actions/attest@f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6 # v4.2.0
with:
subject-name: |
${{ vars.DOCKER_USERNAME }}/${{ steps.repo-name.outputs.repo-name }}
@@ -173,7 +173,7 @@ jobs:
outputs: type=image,compression=zstd,force-compression=true,push-by-digest=true,name-canonical=true,push=true
- name: Attest (Chromium-bundled version)
- uses: actions/attest@a1948c3f048ba23858d222213b7c278aabede763 # v4.1.1
+ uses: actions/attest@f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6 # v4.2.0
with:
subject-name: |
${{ vars.DOCKER_USERNAME }}/${{ steps.repo-name.outputs.repo-name }}
From a35df7a169c1bccbfce88c11c44716728221d5f1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:03:13 +0800
Subject: [PATCH 348/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22742)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260716.1 to 5.20260717.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260717.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index d4a375b5829e..21df6efb6996 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.5",
- "@cloudflare/workers-types": "5.20260716.1",
+ "@cloudflare/workers-types": "5.20260717.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6d996623c147..e744687e7ce1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.5
- version: 0.18.5(@cloudflare/workers-types@5.20260716.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.5(@cloudflare/workers-types@5.20260717.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260716.1
- version: 5.20260716.1
+ specifier: 5.20260717.1
+ version: 5.20260717.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -475,7 +475,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.111.0
- version: 4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -644,8 +644,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260716.1':
- resolution: {integrity: sha512-LqQPmGAvdpQxzZGAMlDI6fnCsTlr8nRQibWsREaERqD0PucwFl25aXpUskSob70uSY2n6K1sp6Te9xkmzSFgaw==}
+ '@cloudflare/workers-types@5.20260717.1':
+ resolution: {integrity: sha512-En+uoU8kbQoUcJMAPOQU+3hyQ4INEpiPO04GIyuh5b0Q5+uPB6az+icvkl+SoSzN3gbQFHZACpShRY+AK3zD1Q==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -6699,7 +6699,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260710.1
- '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260716.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260717.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6707,7 +6707,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6729,7 +6729,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260710.1':
optional: true
- '@cloudflare/workers-types@5.20260716.1': {}
+ '@cloudflare/workers-types@5.20260717.1': {}
'@colors/colors@1.6.0': {}
@@ -12249,7 +12249,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260710.1
'@cloudflare/workerd-windows-64': 1.20260710.1
- wrangler@4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)
@@ -12260,7 +12260,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260710.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260716.1
+ '@cloudflare/workers-types': 5.20260717.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From cf725d3961bb38d3349242d7a98a9187ab03ce8b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:14:29 +0800
Subject: [PATCH 349/670] chore(deps-dev): bump oxlint-tsgolint in the oxc
group (#22744)
Bumps the oxc group with 1 update: [oxlint-tsgolint](https://github.com/oxc-project/tsgolint).
Updates `oxlint-tsgolint` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/oxc-project/tsgolint/releases)
- [Commits](https://github.com/oxc-project/tsgolint/compare/v0.24.0...v0.25.0)
---
updated-dependencies:
- dependency-name: oxlint-tsgolint
dependency-version: 0.25.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 66 +++++++++++++++++++++++++-------------------------
2 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/package.json b/package.json
index 21df6efb6996..8a713518ac25 100644
--- a/package.json
+++ b/package.json
@@ -196,7 +196,7 @@
"oxfmt": "0.59.0",
"oxlint": "1.74.0",
"oxlint-plugin-eslint": "1.74.0",
- "oxlint-tsgolint": "0.24.0",
+ "oxlint-tsgolint": "0.25.0",
"remark": "15.0.1",
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e744687e7ce1..2025c7d8f7bc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -433,13 +433,13 @@ importers:
version: 0.59.0
oxlint:
specifier: 1.74.0
- version: 1.74.0(oxlint-tsgolint@0.24.0)
+ version: 1.74.0(oxlint-tsgolint@0.25.0)
oxlint-plugin-eslint:
specifier: 1.74.0
version: 1.74.0
oxlint-tsgolint:
- specifier: 0.24.0
- version: 0.24.0
+ specifier: 0.25.0
+ version: 0.25.0
remark:
specifier: 15.0.1
version: 15.0.1
@@ -1986,33 +1986,33 @@ packages:
cpu: [x64]
os: [win32]
- '@oxlint-tsgolint/darwin-arm64@0.24.0':
- resolution: {integrity: sha512-C2uMmwK5Bc4ri4ysZ6sA8Rcu+A5zBQTp6ml2u0CLLbRZp4kMFPV3yWk8B5DK9Aw7y9bbjogIm75tUwGLFzlsYQ==}
+ '@oxlint-tsgolint/darwin-arm64@0.25.0':
+ resolution: {integrity: sha512-87opKlwFP8qS9WHAeETV+kA0fC9Oyj4sg7OxWdI4xQY0WC7zlN6BgG66uE5mvtN5mahkt/gL0i/AVEnX6POq2Q==}
cpu: [arm64]
os: [darwin]
- '@oxlint-tsgolint/darwin-x64@0.24.0':
- resolution: {integrity: sha512-Wgvt/1lRbDxmoNqWQKKcL+UIiqLmdJ+EWLpQa1qzoNVAfNB0PJpa82/8dH1twT/3rSs4zrP5TXPWl4juB71WuQ==}
+ '@oxlint-tsgolint/darwin-x64@0.25.0':
+ resolution: {integrity: sha512-HJmuZexsrhqp4WmETn+Soq7Ogt5F0jirv+cYRSniIPe+d/x5beQzLX69xOLhQRE+8FLGETe7FahWMVP8x0dW4g==}
cpu: [x64]
os: [darwin]
- '@oxlint-tsgolint/linux-arm64@0.24.0':
- resolution: {integrity: sha512-PB1rxII7KV83+ASY4sSkXtqvpij6ME66+QCRL49uksi/ofs2Rf/UVboYr095n0Rkbl2wgvlsHGl6DHC361jQUQ==}
+ '@oxlint-tsgolint/linux-arm64@0.25.0':
+ resolution: {integrity: sha512-aNyYsPREvCJi3qjfBA0sQB7DhT3y/W5Ac2JI2D8IJynoTOAhVZj401Si6901oDajlBWyqJqqojudn0VgHB6+7A==}
cpu: [arm64]
os: [linux]
- '@oxlint-tsgolint/linux-x64@0.24.0':
- resolution: {integrity: sha512-xcz3CxKmjTQLREtE/UShh+ruWmm9nAb7UM9zKcD65BStiuYgOakAKkPHl4YS5DztpVcDrE0+HqbOolTlRKYWmw==}
+ '@oxlint-tsgolint/linux-x64@0.25.0':
+ resolution: {integrity: sha512-+60+VjK9Mch3uA5WlTdNHuAm5+WA7wPPjuWdPWlU0F6JJpYpGZXUpO1RPKuFEWsBpNbLcLeJ0LbCJ1doWu58NA==}
cpu: [x64]
os: [linux]
- '@oxlint-tsgolint/win32-arm64@0.24.0':
- resolution: {integrity: sha512-A2i6ZGBec3i20S7RaxkgHc6r3HYtD5Mn7j/mb22NkTz14u0JuudvTu6JggAnbGMcv8+dBKQI//EasxSPJLD8pw==}
+ '@oxlint-tsgolint/win32-arm64@0.25.0':
+ resolution: {integrity: sha512-r53TO+eHp/t53nnUkQJfrYYXODPAxmtf3RUFQG5XsE2hD21IunliOaAdZXP2UwzCx+r/fbNaEelqTaAHcDr57w==}
cpu: [arm64]
os: [win32]
- '@oxlint-tsgolint/win32-x64@0.24.0':
- resolution: {integrity: sha512-0ZbGd9qRB6zs82moekaKdEvncRANq49EAwfNX62JpTS46feXUhKAuoyVDvZMj6Rywejylrmmu79Wo6faYCo4Ew==}
+ '@oxlint-tsgolint/win32-x64@0.25.0':
+ resolution: {integrity: sha512-vqe66B+gL9HarhyHemdlfC2VWT7eoA+o/ufZ7zT6AGHv64boyDZIJS3U+rpZo+ey4O7wZtiS/vYR2fWqDoFeBw==}
cpu: [x64]
os: [win32]
@@ -5223,8 +5223,8 @@ packages:
resolution: {integrity: sha512-AtZ4w3owo4xoY5fe/Juy9hmzEnekVPd/DDiPlOVGfR2linDTp/XVu0xK7ODNK4CCLvnnfCob/UeWN6kSiqm2CQ==}
engines: {node: ^20.19.0 || >=22.12.0}
- oxlint-tsgolint@0.24.0:
- resolution: {integrity: sha512-giCk5sEvG02d5tzPmFMX3hem8ndzEEu1xvGYS5OwNfO2WGl6ZVxt5LjE0yiMDoz94INI7XkXwgFAQiydPvVHDw==}
+ oxlint-tsgolint@0.25.0:
+ resolution: {integrity: sha512-7DBpqyLZCfyoXiivyfzt9Xmju/K1RcN+Y1W7buEwrgRCWWF11v9alypPqWGZBmh2erDkKL/kVyhKUH2Px+t13A==}
hasBin: true
oxlint@1.74.0:
@@ -7710,22 +7710,22 @@ snapshots:
'@oxfmt/binding-win32-x64-msvc@0.59.0':
optional: true
- '@oxlint-tsgolint/darwin-arm64@0.24.0':
+ '@oxlint-tsgolint/darwin-arm64@0.25.0':
optional: true
- '@oxlint-tsgolint/darwin-x64@0.24.0':
+ '@oxlint-tsgolint/darwin-x64@0.25.0':
optional: true
- '@oxlint-tsgolint/linux-arm64@0.24.0':
+ '@oxlint-tsgolint/linux-arm64@0.25.0':
optional: true
- '@oxlint-tsgolint/linux-x64@0.24.0':
+ '@oxlint-tsgolint/linux-x64@0.25.0':
optional: true
- '@oxlint-tsgolint/win32-arm64@0.24.0':
+ '@oxlint-tsgolint/win32-arm64@0.25.0':
optional: true
- '@oxlint-tsgolint/win32-x64@0.24.0':
+ '@oxlint-tsgolint/win32-x64@0.25.0':
optional: true
'@oxlint/binding-android-arm-eabi@1.74.0':
@@ -11001,16 +11001,16 @@ snapshots:
oxlint-plugin-eslint@1.74.0: {}
- oxlint-tsgolint@0.24.0:
+ oxlint-tsgolint@0.25.0:
optionalDependencies:
- '@oxlint-tsgolint/darwin-arm64': 0.24.0
- '@oxlint-tsgolint/darwin-x64': 0.24.0
- '@oxlint-tsgolint/linux-arm64': 0.24.0
- '@oxlint-tsgolint/linux-x64': 0.24.0
- '@oxlint-tsgolint/win32-arm64': 0.24.0
- '@oxlint-tsgolint/win32-x64': 0.24.0
-
- oxlint@1.74.0(oxlint-tsgolint@0.24.0):
+ '@oxlint-tsgolint/darwin-arm64': 0.25.0
+ '@oxlint-tsgolint/darwin-x64': 0.25.0
+ '@oxlint-tsgolint/linux-arm64': 0.25.0
+ '@oxlint-tsgolint/linux-x64': 0.25.0
+ '@oxlint-tsgolint/win32-arm64': 0.25.0
+ '@oxlint-tsgolint/win32-x64': 0.25.0
+
+ oxlint@1.74.0(oxlint-tsgolint@0.25.0):
optionalDependencies:
'@oxlint/binding-android-arm-eabi': 1.74.0
'@oxlint/binding-android-arm64': 1.74.0
@@ -11031,7 +11031,7 @@ snapshots:
'@oxlint/binding-win32-arm64-msvc': 1.74.0
'@oxlint/binding-win32-ia32-msvc': 1.74.0
'@oxlint/binding-win32-x64-msvc': 1.74.0
- oxlint-tsgolint: 0.24.0
+ oxlint-tsgolint: 0.25.0
p-cancelable@4.0.1: {}
From 7fc29de41761a5fa6259b03f2e2020c555bd1dc3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:17:31 +0800
Subject: [PATCH 350/670] chore(deps): bump @sentry/node from 10.65.0 to
10.66.0 (#22746)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 10.65.0 to 10.66.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.65.0...10.66.0)
---
updated-dependencies:
- dependency-name: "@sentry/node"
dependency-version: 10.66.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 95 +++++++++++++++++++++++++-------------------------
2 files changed, 48 insertions(+), 49 deletions(-)
diff --git a/package.json b/package.json
index 8a713518ac25..12a217a6bc61 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
"@scalar/hono-api-reference": "0.11.11",
- "@sentry/node": "10.65.0",
+ "@sentry/node": "10.66.0",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
"cross-env": "10.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2025c7d8f7bc..da1f9396eb42 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -86,8 +86,8 @@ importers:
specifier: 0.11.11
version: 0.11.11(hono@4.12.30)
'@sentry/node':
- specifier: 10.65.0
- version: 10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
+ specifier: 10.66.0
+ version: 10.66.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
cheerio:
specifier: 1.2.0
version: 1.2.0
@@ -500,16 +500,16 @@ packages:
'@actions/io@3.0.2':
resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==}
- '@apm-js-collab/code-transformer-bundler-plugins@0.5.0':
- resolution: {integrity: sha512-YxLBY5nGlurL7QeJLq6e5g0ouBpAp0pwgyA/5rHXEXwhiPLn9ZHbT+Y2LlP90GT872cSocfjWRYu/fnpuBudNQ==}
+ '@apm-js-collab/code-transformer-bundler-plugins@0.6.2':
+ resolution: {integrity: sha512-5vBrtIEL+UVbO0YWWoyYG4QMgR+ZfnIL3xlteIkAmU7YaAPhc28k3md/NM14tnkfXKjKOn9yUzEA9AYUmNpvJg==}
engines: {node: '>=18.0.0'}
- '@apm-js-collab/code-transformer@0.15.0':
- resolution: {integrity: sha512-XmXYVs8CzJ1Aj79noVbn2weUO/XWtRyURpGqx7aU7DOXlUQhR0WKOQNF0okh7PCeY37vxf7kU3v57OAkEPm3ww==}
+ '@apm-js-collab/code-transformer@0.18.0':
+ resolution: {integrity: sha512-aN3Oq8r1J3gPJtCwErP664gM0+HhM1I1lujPr9TMTCcEl/joQQbpGpeMdts9B1+W2wHMsvioDMv5F4PvMWE6gw==}
hasBin: true
- '@apm-js-collab/tracing-hooks@0.10.1':
- resolution: {integrity: sha512-w2OWXR7FWrKqSziuE9+QclaZrStxO/8+OwbXM635s/zs0Eez1Qo3ivSPdB2WsaPY/iznKTytONPx/PitD7IXcA==}
+ '@apm-js-collab/tracing-hooks@0.13.0':
+ resolution: {integrity: sha512-mTvWz9rnQwx1U3h0XPTHaX7bgfkpipLLTQyjlC2cdhQpQEuoLT0AGzoydeoq2NxfEVv6fWOOETcSbb2nptleyw==}
'@asamuzakjp/css-color@5.1.11':
resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
@@ -2585,16 +2585,16 @@ packages:
peerDependencies:
selderee: ~0.12.0
- '@sentry/conventions@0.15.1':
- resolution: {integrity: sha512-ZLP8bRdMON3prWE2tJyImuYscCxdcJeIPIhrOs/rgyFm3C1nCh1B6gdvPj3AZ5zW08oSFFCsq7T+tYEW3h8MNA==}
+ '@sentry/conventions@0.16.0':
+ resolution: {integrity: sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==}
engines: {node: '>=14'}
- '@sentry/core@10.65.0':
- resolution: {integrity: sha512-3aqtmM5NgNGo45BNaaBzi0LPQZAw//NEL4HKS5fXm12pJMa4KEkze8DEKnkTEIrGnWaOJKamecHKlnNg/Mqf/Q==}
+ '@sentry/core@10.66.0':
+ resolution: {integrity: sha512-9UbgSvds7bMJsP561eWmeyMLcfOmnwxtnx2QuW3yLobzP2Ob7CyJCOzP4tGzlTAGDrzShkFEZhiyuBUKiEK2oQ==}
engines: {node: '>=18'}
- '@sentry/node-core@10.65.0':
- resolution: {integrity: sha512-U01X9mPT+jZnsLPmPWfBU67Ka+t/Sdd9RGAuvGoKdrI6N47a/9PDkM9oCW+kj0fmZwogZHTgSnzJU5oi3pImgA==}
+ '@sentry/node-core@10.66.0':
+ resolution: {integrity: sha512-SUnXHROqSdSetKgZC1goDEKCuMz3OmQ1h4rxzWeexLyqan+pensZXfLouP6jzZXlA8e/HP7uQg78LnfqYDcZlQ==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
@@ -2614,20 +2614,20 @@ packages:
'@opentelemetry/sdk-trace-base':
optional: true
- '@sentry/node@10.65.0':
- resolution: {integrity: sha512-t35dcdyksysVch/m/XdLgGJqGKJhr9eMD30Ctn3TeQ8yMB0wNXySfjPR5Yg93fpjmfaHtzc6iYIXRAvgNVfrvA==}
+ '@sentry/node@10.66.0':
+ resolution: {integrity: sha512-5Ow7iQiRjaSaEOmqEIkYV368hFFzShIZCXPoj+wX3JtOmKFrsNu6lr8/VJlQs7cyjFS6tzE50PrLrD8iAPS/8w==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.65.0':
- resolution: {integrity: sha512-8C6FPvm3XBvUrkM52dX3Gz0p2H0Ij8t4sahUA+GTiCz0WM0fnyPeQPGC/b6I4jamV9UXyCZRnE1UEEGCoD+c7A==}
+ '@sentry/opentelemetry@10.66.0':
+ resolution: {integrity: sha512-K5Y9IettN9yIOnpqCs40HRLGqaGUoaQ50+ZsLqX2kPCk3TzJVpKZ9icKwaJ4Nxm72QgGVT5Ovfr/9FXbgd3b/Q==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
'@opentelemetry/core': ^1.30.1 || ^2.1.0
'@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
- '@sentry/server-utils@10.65.0':
- resolution: {integrity: sha512-80toEFD6s+0Le7jrYB6pHWLF703WSg0WyavAWqrBGWG8JkREHgedAxzFYgoY5GlMI756qk6Ea7UzhJTHd2zAXA==}
+ '@sentry/server-utils@10.66.0':
+ resolution: {integrity: sha512-h9EM9Wz9Mc6w2Vn7Fyh6ozjy4JC2UbUvWf9Ra1HYA4KMeYqjFA5/o0oB4pg4w/TF+rb+9OF/HNqxjuczxpudpA==}
engines: {node: '>=18'}
'@sindresorhus/is@4.6.0':
@@ -6573,14 +6573,14 @@ snapshots:
'@actions/io@3.0.2': {}
- '@apm-js-collab/code-transformer-bundler-plugins@0.5.0':
+ '@apm-js-collab/code-transformer-bundler-plugins@0.6.2':
dependencies:
- '@apm-js-collab/code-transformer': 0.15.0
+ '@apm-js-collab/code-transformer': 0.18.0
es-module-lexer: 2.3.1
magic-string: 0.30.21
module-details-from-path: 1.0.4
- '@apm-js-collab/code-transformer@0.15.0':
+ '@apm-js-collab/code-transformer@0.18.0':
dependencies:
'@types/estree': 1.0.9
astring: 1.9.0
@@ -6589,9 +6589,9 @@ snapshots:
semifies: 1.0.0
source-map: 0.6.1
- '@apm-js-collab/tracing-hooks@0.10.1':
+ '@apm-js-collab/tracing-hooks@0.13.0':
dependencies:
- '@apm-js-collab/code-transformer': 0.15.0
+ '@apm-js-collab/code-transformer': 0.18.0
debug: 4.4.3
module-details-from-path: 1.0.4
transitivePeerDependencies:
@@ -8080,17 +8080,17 @@ snapshots:
domhandler: 5.0.3
selderee: 0.12.0
- '@sentry/conventions@0.15.1': {}
+ '@sentry/conventions@0.16.0': {}
- '@sentry/core@10.65.0':
+ '@sentry/core@10.66.0':
dependencies:
- '@sentry/conventions': 0.15.1
+ '@sentry/conventions': 0.16.0
- '@sentry/node-core@10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node-core@10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
- '@sentry/conventions': 0.15.1
- '@sentry/core': 10.65.0
- '@sentry/opentelemetry': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/conventions': 0.16.0
+ '@sentry/core': 10.66.0
+ '@sentry/opentelemetry': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
import-in-the-middle: 3.3.1
optionalDependencies:
'@opentelemetry/api': 1.9.1
@@ -8099,38 +8099,37 @@ snapshots:
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
- '@sentry/node@10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node@10.66.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
- '@sentry/conventions': 0.15.1
- '@sentry/core': 10.65.0
- '@sentry/node-core': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/opentelemetry': 10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/server-utils': 10.65.0
+ '@sentry/conventions': 0.16.0
+ '@sentry/core': 10.66.0
+ '@sentry/node-core': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/opentelemetry': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/server-utils': 10.66.0
import-in-the-middle: 3.3.1
transitivePeerDependencies:
- '@opentelemetry/core'
- '@opentelemetry/exporter-trace-otlp-http'
- supports-color
- '@sentry/opentelemetry@10.65.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/opentelemetry@10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
- '@sentry/conventions': 0.15.1
- '@sentry/core': 10.65.0
+ '@sentry/conventions': 0.16.0
+ '@sentry/core': 10.66.0
- '@sentry/server-utils@10.65.0':
+ '@sentry/server-utils@10.66.0':
dependencies:
- '@apm-js-collab/code-transformer': 0.15.0
- '@apm-js-collab/code-transformer-bundler-plugins': 0.5.0
- '@apm-js-collab/tracing-hooks': 0.10.1
- '@sentry/conventions': 0.15.1
- '@sentry/core': 10.65.0
- magic-string: 0.30.21
+ '@apm-js-collab/code-transformer': 0.18.0
+ '@apm-js-collab/code-transformer-bundler-plugins': 0.6.2
+ '@apm-js-collab/tracing-hooks': 0.13.0
+ '@sentry/conventions': 0.16.0
+ '@sentry/core': 10.66.0
transitivePeerDependencies:
- supports-color
From de7e6ff5c4144bceb115cb3b73d708f1a1aeab66 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:24:18 +0800
Subject: [PATCH 351/670] chore(deps-dev): bump
eslint-plugin-simple-import-sort (#22747)
Bumps [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) from 13.0.0 to 14.0.0.
- [Changelog](https://github.com/lydell/eslint-plugin-simple-import-sort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lydell/eslint-plugin-simple-import-sort/compare/v13.0.0...v14.0.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-simple-import-sort
dependency-version: 14.0.0
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 12a217a6bc61..92cec76f167c 100644
--- a/package.json
+++ b/package.json
@@ -179,7 +179,7 @@
"eslint-nibble": "9.1.1",
"eslint-plugin-n": "18.2.2",
"eslint-plugin-regexp": "3.1.1",
- "eslint-plugin-simple-import-sort": "13.0.0",
+ "eslint-plugin-simple-import-sort": "14.0.0",
"eslint-plugin-unicorn": "72.0.0",
"eslint-plugin-yml": "3.6.0",
"fast-string-width": "3.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index da1f9396eb42..07feedc776ae 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -387,8 +387,8 @@ importers:
specifier: 3.1.1
version: 3.1.1(eslint@10.7.0)
eslint-plugin-simple-import-sort:
- specifier: 13.0.0
- version: 13.0.0(eslint@10.7.0)
+ specifier: 14.0.0
+ version: 14.0.0(eslint@10.7.0)
eslint-plugin-unicorn:
specifier: 72.0.0
version: 72.0.0(eslint@10.7.0)
@@ -3911,8 +3911,8 @@ packages:
peerDependencies:
eslint: '>=9.38.0'
- eslint-plugin-simple-import-sort@13.0.0:
- resolution: {integrity: sha512-McAc+/Nlvcg4byY/CABGH8kqnefWBj8s3JA2okEtz8ixbECQgU46p0HkTUKa4YS7wvgGceimlc34p1nXqbWqtA==}
+ eslint-plugin-simple-import-sort@14.0.0:
+ resolution: {integrity: sha512-NUJO0+XFCkk+o5EsAJruTgnfMEpeWrPWeJS15UVF60GgXmqz1BJ9/3hzlvG7lkL8Bubzos5cCLptThbFfPnSMQ==}
peerDependencies:
eslint: '>=5.0.0'
@@ -9350,7 +9350,7 @@ snapshots:
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-simple-import-sort@13.0.0(eslint@10.7.0):
+ eslint-plugin-simple-import-sort@14.0.0(eslint@10.7.0):
dependencies:
eslint: 10.7.0
From d4a2bb4871f027eecb8575ad54742a5f71e0f79e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 19:45:06 +0800
Subject: [PATCH 352/670] chore(deps-dev): bump pnpm from 10.34.4 to 10.34.5
(#22748)
* chore(deps-dev): bump magic-string from 0.30.21 to 1.0.0
Bumps [magic-string](https://github.com/Rich-Harris/magic-string) from 0.30.21 to 1.0.0.
- [Release notes](https://github.com/Rich-Harris/magic-string/releases)
- [Changelog](https://github.com/Rich-Harris/magic-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0)
---
updated-dependencies:
- dependency-name: magic-string
dependency-version: 1.0.0
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
* chore: remove magic-string dependency and rebuild pnpm lock
* chore: update packageManager to pnpm@10.34.5
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
---
package.json | 3 +--
pnpm-lock.yaml | 5 +----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 92cec76f167c..33cda42fed25 100644
--- a/package.json
+++ b/package.json
@@ -188,7 +188,6 @@
"husky": "9.1.7",
"js-beautify": "2.0.3",
"lint-staged": "17.0.8",
- "magic-string": "0.30.21",
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
@@ -229,7 +228,7 @@
"engines": {
"node": "^22.20.0 || ^24"
},
- "packageManager": "pnpm@10.34.4+sha512.8768be55200ae3f2226b6527fcca2687e14bc4e5f12d7721a0f25da3df47915177058648db4177baf348120fa0ba2752d8d8d93f6beaf1fe64ae18da8de961af",
+ "packageManager": "pnpm@10.34.5+sha512.a4ee05f2f73658255bd6a89859c065a45c28a57daefae2c893a168ee2b73168c37b91e83e57ea67654ad03f03031746430e8bce38e362e042605fb8abc80192e",
"pnpm": {
"onlyBuiltDependencies": [
"bufferutil",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 07feedc776ae..dcf6915ccd43 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -413,9 +413,6 @@ importers:
lint-staged:
specifier: 17.0.8
version: 17.0.8
- magic-string:
- specifier: 0.30.21
- version: 0.30.21
mockdate:
specifier: 3.0.5
version: 3.0.5
@@ -3684,7 +3681,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, integrity: sha512-OG2C++3YYIzflFjA9irnexBs9eUS6KUOViAssV4oSo4W8HAl86TV+DoFYhdSXVaFd4z5htsM3zzs64WJybH4cQ==, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
From dcebbcb68fccbc05550ad5b03c2a6d824884c390 Mon Sep 17 00:00:00 2001
From: YuruShiMaShiMaRin <71917424+xiaobailoves@users.noreply.github.com>
Date: Sat, 18 Jul 2026 17:12:59 +0800
Subject: [PATCH 353/670] fix(route/comic-walker): add radar rule for episode
detail pages (#22753)
---
lib/routes/comic-walker/manga.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/routes/comic-walker/manga.ts b/lib/routes/comic-walker/manga.ts
index 77bdf53afcdd..bbcbc9f4bec1 100644
--- a/lib/routes/comic-walker/manga.ts
+++ b/lib/routes/comic-walker/manga.ts
@@ -24,6 +24,10 @@ export const route: Route = {
source: ['comic-walker.com/detail/:id'],
target: '/manga/:id',
},
+ {
+ source: ['comic-walker.com/detail/:id/episodes/:episodeId'],
+ target: '/manga/:id',
+ },
],
name: '漫画详情',
maintainers: ['xiaobailoves'],
From 631a33d490733786782d988a401b8df55729cfea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=99=8E=E6=95=85=E6=B4=9E?=
<55782476+TigerCubDen@users.noreply.github.com>
Date: Sun, 19 Jul 2026 03:08:41 +0800
Subject: [PATCH 354/670] docs(route/bilibili): update cookie retrieval
instructions for followings dynamic (#22754)
---
lib/routes/bilibili/followings-dynamic.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/routes/bilibili/followings-dynamic.ts b/lib/routes/bilibili/followings-dynamic.ts
index 566e5da1aed2..d4b966e91d1c 100644
--- a/lib/routes/bilibili/followings-dynamic.ts
+++ b/lib/routes/bilibili/followings-dynamic.ts
@@ -37,7 +37,7 @@ export const route: Route = {
1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8)
2. 打开控制台,切换到 Network 面板,刷新
3. 点击 dynamic_new 请求,找到 Cookie
- 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`,
+ 4. 复制整段 Cookie,删掉其中的 \`bili_ticket\` 和 \`bili_ticket_expires\` 字段来延长有效期`,
},
],
requirePuppeteer: false,
From 9d486c3bda61192852544de49d8a53ad1bd95187 Mon Sep 17 00:00:00 2001
From: Tony
Date: Mon, 20 Jul 2026 01:09:29 +0800
Subject: [PATCH 355/670] fix(route/picnob): fix image and video selector
(#22757)
---
lib/routes/picnob/user.ts | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/lib/routes/picnob/user.ts b/lib/routes/picnob/user.ts
index 98c621713600..80525a864709 100644
--- a/lib/routes/picnob/user.ts
+++ b/lib/routes/picnob/user.ts
@@ -67,13 +67,18 @@ async function handler(ctx) {
const coverLink = $item.find('.cover_link').attr('href');
const image = $item.find('.cover .cover_link img');
const alt = image.attr('alt') || '';
+ const downloadUrl = new URL($item.find('.downbtn').attr('href')!, baseUrl);
+ downloadUrl.searchParams.delete('dl');
+ const fullImage = new URL(image.attr('data-src')!);
+ fullImage.searchParams.set('o', Buffer.from(downloadUrl.href).toString('base64'));
const sum = $item.find('.sum');
const title = sum.text().split('\n', 1)[0] || alt;
const content = sum.html()?.replaceAll('\n', '
') || alt;
+ const isVideo = $item.find('.corner .icon_video, .corner .icon_tv').length;
return {
title,
- description: `})
${content}`,
+ description: ` : fullImage.href})
${content}`,
link: `${baseUrl}${coverLink}`,
guid: coverLink?.split('/', 3)?.[2],
pubDate: parseRelativeDate($item.find('.time .txt').text()),
@@ -114,7 +119,7 @@ async function handler(ctx) {
return $item.html() || '';
})
.join('')
- : $('.view .video').html() || '';
+ : $('.view video').prop('outerHTML') || '';
item.description = `${media}
${item.description}`;
}
From 39aa7af02c6569a621b93802bd906000192037cd Mon Sep 17 00:00:00 2001
From: Jiakai Gu
Date: Mon, 20 Jul 2026 01:08:00 -0400
Subject: [PATCH 356/670] fix(route): harden njxzc, gxmzu and jou routes
(#22435)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(route): harden njxzc, gxmzu and jou routes
- parse all observed date formats (ISO, slash, Chinese with optional
time) instead of a fixed YYYY-MM-DD pattern
- fall back to list data when an article page fails or lacks content,
instead of crashing the whole feed on cheerio load(null)
- skip content fetching for off-site links (e.g. WeChat posts)
- only override title/pubDate when found on the detail page
- resolve relative links and images against the article URL
- deduplicate the list/detail scaffold into per-namespace utils
- remove dead response.status checks, unused ctx params and noise
comments; fix namespace URLs and antiCrawler flags
* refactor(route): address review feedback for gxmzu, jou and njxzc
- translate code comments to English (AGENTS.md rule 53)
- select the date cell via $(selector, context) instead of .find(selector)
to avoid unicorn/no-array-callback-reference false positives
* refactor(route): simplify gxmzu, jou and njxzc per review
- drop the unused type exports, unnecessary .first() calls and the
unreachable no-content early returns
- restore the original selector object order in gxmzu/jou call sites
- gxmzu/jou: drop try-catch in resolveArticles (no failing article
observed); keep the same-host guard for off-site list entries
- njxzc: drop the same-host guard (list links are same-host /_redirect
URLs); keep try-catch for redirects to intranet-only subdomains
- gxmzu/lib: read the link text directly (library rows have no title
attribute)
* refactor(route): drop jou host guard and njxzc intranet handling
- jou: remove the same-host guard — no off-site rows on the current
first pages, which are all the route reads
- njxzc: remove the intranet-notice branch and the try-catch — every
article on the current first pages loads fine from off-campus; drop
the now-stale route descriptions as well
---------
Co-authored-by: real-jiakai
---
lib/routes/gxmzu/ai.ts | 22 +++--
lib/routes/gxmzu/lib.ts | 64 ++++++---------
lib/routes/gxmzu/namespace.ts | 2 +-
lib/routes/gxmzu/utils/index.ts | 139 +++++++++++++++++++-------------
lib/routes/gxmzu/yjs.ts | 23 ++++--
lib/routes/jou/home.ts | 28 ++++---
lib/routes/jou/utils/index.ts | 126 +++++++++++++++++------------
lib/routes/jou/yz.ts | 28 ++++---
lib/routes/njxzc/home.ts | 48 ++++++-----
lib/routes/njxzc/lib.ts | 88 +++++---------------
lib/routes/njxzc/namespace.ts | 3 +-
lib/routes/njxzc/utils/index.ts | 106 ++++++++++++------------
12 files changed, 348 insertions(+), 329 deletions(-)
diff --git a/lib/routes/gxmzu/ai.ts b/lib/routes/gxmzu/ai.ts
index f62b7bf43b91..43edc652cbe0 100644
--- a/lib/routes/gxmzu/ai.ts
+++ b/lib/routes/gxmzu/ai.ts
@@ -1,9 +1,11 @@
+import { load } from 'cheerio';
+
import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
-import { getNoticeList } from './utils';
+import { parseNoticeList, resolveArticles } from './utils';
-const url = 'https://ai.gxmzu.edu.cn/index/tzgg.htm';
-const host = 'https://ai.gxmzu.edu.cn';
+const pageUrl = 'https://ai.gxmzu.edu.cn/index/tzgg.htm';
export const route: Route = {
path: '/aitzgg',
@@ -13,7 +15,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: true,
+ antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -29,8 +31,12 @@ export const route: Route = {
url: 'ai.gxmzu.edu.cn/index/tzgg.htm',
};
-async function handler(ctx) {
- const out = await getNoticeList(ctx, url, host, 'a', '.timestyle55267', {
+async function handler() {
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
+
+ const list = parseNoticeList($, pageUrl, 'table.winstyle55267 tr[height="20"]', '.timestyle55267');
+ const items = await resolveArticles(list, pageUrl, {
title: '.titlestyle55269',
content: '#vsb_newscontent',
date: '.timestyle55269',
@@ -38,7 +44,7 @@ async function handler(ctx) {
return {
title: '广西民族大学人工智能学院 -- 通知公告',
- link: url,
- item: out,
+ link: pageUrl,
+ item: items,
};
}
diff --git a/lib/routes/gxmzu/lib.ts b/lib/routes/gxmzu/lib.ts
index 4b53c925caa5..c46527f8abfc 100644
--- a/lib/routes/gxmzu/lib.ts
+++ b/lib/routes/gxmzu/lib.ts
@@ -1,13 +1,11 @@
import { load } from 'cheerio';
import type { Route } from '@/types';
-import cache from '@/utils/cache';
-import ofetch from '@/utils/ofetch'; // 使用ofetch库代替got
-import { parseDate } from '@/utils/parse-date';
-import timezone from '@/utils/timezone';
+import ofetch from '@/utils/ofetch';
-const url = 'https://library.gxmzu.edu.cn/news/news_list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1010';
-const host = 'https://library.gxmzu.edu.cn';
+import { parsePubDate, resolveArticles } from './utils';
+
+const pageUrl = 'https://library.gxmzu.edu.cn/news/news_list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1010';
export const route: Route = {
path: '/libzxxx',
@@ -17,7 +15,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: true,
+ antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -31,50 +29,38 @@ export const route: Route = {
maintainers: ['real-jiakai'],
handler,
url: 'library.gxmzu.edu.cn/news/news_list.jsp',
+ description: '部分消息发布于微信公众号等站外页面,此类消息仅输出标题与原文链接。',
};
async function handler() {
- const response = await ofetch(url);
- if (!response) {
- return;
- }
+ const response = await ofetch(pageUrl);
const $ = load(response);
const list = $('#newslist ul li')
.toArray()
- .map((item) => {
- item = $(item);
+ .map((el) => {
+ const $item = $(el);
+ const $link = $item.find('a');
+ const href = $link.attr('href');
+ if (!href) {
+ return null;
+ }
return {
- title: item.find('a').text(),
- link: new URL(item.find('a').attr('href'), host).href,
- pubDate: timezone(parseDate(item.find('span').text(), 'YYYY-MM-DD'), 8),
+ title: $link.text().trim(),
+ link: new URL(href, pageUrl).href,
+ pubDate: parsePubDate($item.find('span').text()),
};
- });
-
- const out = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- if (item.link && !item.link.startsWith('https://library.gxmzu.edu.cn/')) {
- item.description = '该通知无法直接预览,请点击原文链接↑查看';
- return item;
- }
+ })
+ .filter((item) => item !== null);
- const response = await ofetch(item.link);
- if (!response || (response.status >= 300 && response.status < 400)) {
- item.description = '该通知无法直接预览,请点击原文链接↑查看';
- } else {
- const $ = load(response);
- item.title = $('h2').text();
- item.description = $('.v_news_content').html();
- }
- return item;
- })
- )
- );
+ const items = await resolveArticles(list, pageUrl, {
+ title: 'h2',
+ content: '.v_news_content',
+ });
return {
title: '广西民族大学图书馆 -- 最新消息',
- link: url,
- item: out,
+ link: pageUrl,
+ item: items,
};
}
diff --git a/lib/routes/gxmzu/namespace.ts b/lib/routes/gxmzu/namespace.ts
index 63abd273436b..6fa510453a9c 100644
--- a/lib/routes/gxmzu/namespace.ts
+++ b/lib/routes/gxmzu/namespace.ts
@@ -2,6 +2,6 @@ import type { Namespace } from '@/types';
export const namespace: Namespace = {
name: '广西民族大学',
- url: 'ai.gxmzu.edu.cn',
+ url: 'www.gxmzu.edu.cn',
lang: 'zh-CN',
};
diff --git a/lib/routes/gxmzu/utils/index.ts b/lib/routes/gxmzu/utils/index.ts
index 7caa1cb5ed49..beb5b78f19f4 100644
--- a/lib/routes/gxmzu/utils/index.ts
+++ b/lib/routes/gxmzu/utils/index.ts
@@ -1,72 +1,99 @@
-import { load } from 'cheerio';
+import { type CheerioAPI, load } from 'cheerio';
+import type { DataItem } from '@/types';
import cache from '@/utils/cache';
-import ofetch from '@/utils/ofetch'; // 使用ofetch库代替got
+import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
-async function getNoticeList(ctx, url, host, titleSelector, dateSelector, contentSelector) {
- const response = await ofetch(url);
- if (!response) {
- return [];
+const FALLBACK_DESCRIPTION = '该通知无法直接预览,请点击原文链接↑查看';
+
+interface NoticeItem extends DataItem {
+ link: string;
+}
+
+interface DetailSelectors {
+ title: string;
+ content: string;
+ date?: string;
+}
+
+// Date formats vary across sites: 2026-05-28, 2026/06/02 or 2026年05月28日 14:53, often prefixed with a label such as "发布日期:"
+export function parsePubDate(text?: string): Date | undefined {
+ const match = text?.match(/(\d{4})[-/.年]\s*(\d{1,2})[-/.月]\s*(\d{1,2})/);
+ if (!match) {
+ return undefined;
}
- const $ = load(response);
+ const [, year, month, day] = match;
+ const time = text?.match(/(\d{1,2}:\d{2}(?::\d{2})?)/)?.[1];
+ return timezone(parseDate(`${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}${time ? ` ${time}` : ''}`), 8);
+}
- const list = $('tr[height=20]')
+export function parseNoticeList($: CheerioAPI, pageUrl: string, rowSelector: string, dateSelector: string): NoticeItem[] {
+ return $(rowSelector)
.toArray()
- .map((item) => {
- item = $(item);
+ .map((el) => {
+ const $row = $(el);
+ const $link = $row.find('a');
+ const href = $link.attr('href');
+ if (!href) {
+ return null;
+ }
return {
- title: item.find(titleSelector).attr('title'),
- link: new URL(item.find(titleSelector).attr('href'), host).href,
- pubDate: timezone(parseDate(item.find(dateSelector).text().trim(), 'YYYY-MM-DD'), 8),
+ title: $link.attr('title') || $link.text().trim(),
+ link: new URL(href, pageUrl).href,
+ pubDate: parsePubDate($(dateSelector, $row).text()),
};
- });
+ })
+ .filter((item) => item !== null);
+}
- const out = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- if (item.link.includes('.jsp')) {
- // 特殊处理.jsp文件,直接显示消息而不尝试爬取
- return {
- ...item,
- description: '该通知无法直接预览,请点击原文链接↑查看',
- };
- }
- const response = await ofetch(item.link);
- if (!response || (response.status >= 300 && response.status < 400)) {
- item.description = '该通知无法直接预览,请点击原文链接↑查看';
- } else {
- const $ = load(response);
+async function fetchArticle(item: NoticeItem, selectors: DetailSelectors): Promise {
+ const response = await ofetch(item.link);
+ const $ = load(response);
+
+ // Pages whose body is an embedded PDF have no extractable content
+ if ($('script:contains("showVsbpdfIframe")').length > 0) {
+ return { ...item, description: FALLBACK_DESCRIPTION };
+ }
- item.title = $(contentSelector.title).text();
- const hasEmbeddedPDFScript = $('script:contains("showVsbpdfIframe")').length > 0;
+ const $content = $(selectors.content);
- if (hasEmbeddedPDFScript) {
- item.description = '该通知无法直接预览,请点击原文链接↑查看';
- } else {
- const $content = load($(contentSelector.content).html());
- $content('a').each((_, el) => {
- const a = $(el);
- const href = a.attr('href');
- if (href && !href.startsWith('http')) {
- a.attr('href', new URL(href, host).href);
- }
- });
- item.description = $content.html();
- }
- const preDate = $(contentSelector.date)
- .text()
- .replaceAll(/年|月/g, '-')
- .replaceAll('日', '');
- item.pubDate = timezone(parseDate(preDate), 8);
- }
- return item;
- })
- )
- );
+ $content.find('a').each((_, el) => {
+ const $a = $(el);
+ const href = $a.attr('href');
+ if (href) {
+ $a.attr('href', new URL(href, item.link).href);
+ }
+ });
+ $content.find('img').each((_, el) => {
+ const $img = $(el);
+ const src = $img.attr('src');
+ if (src) {
+ $img.attr('src', new URL(src, item.link).href);
+ }
+ });
- return out;
+ const title = $(selectors.title).text().trim();
+ const pubDate = selectors.date ? parsePubDate($(selectors.date).text()) : undefined;
+
+ return {
+ ...item,
+ title: title || item.title,
+ pubDate: pubDate ?? item.pubDate,
+ description: $content.html() ?? item.description,
+ };
}
-export { getNoticeList };
+// Content of off-site links (e.g. WeChat posts or sibling-subdomain sites) is not fetched
+export function resolveArticles(list: NoticeItem[], pageUrl: string, selectors: DetailSelectors): Promise {
+ const pageHost = new URL(pageUrl).host;
+ return Promise.all(
+ list.map((item) => {
+ if (new URL(item.link).host !== pageHost) {
+ return { ...item, description: FALLBACK_DESCRIPTION };
+ }
+ return cache.tryGet(item.link, () => fetchArticle(item, selectors)) as Promise;
+ })
+ );
+}
diff --git a/lib/routes/gxmzu/yjs.ts b/lib/routes/gxmzu/yjs.ts
index 1ca62e1dc90f..653ae8b32095 100644
--- a/lib/routes/gxmzu/yjs.ts
+++ b/lib/routes/gxmzu/yjs.ts
@@ -1,9 +1,11 @@
+import { load } from 'cheerio';
+
import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
-import { getNoticeList } from './utils';
+import { parseNoticeList, resolveArticles } from './utils';
-const url = 'https://yjs.gxmzu.edu.cn/tzgg/zsgg.htm';
-const host = 'https://yjs.gxmzu.edu.cn';
+const pageUrl = 'https://yjs.gxmzu.edu.cn/tzgg/zsgg.htm';
export const route: Route = {
path: '/yjszsgg',
@@ -13,7 +15,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: true,
+ antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -29,8 +31,13 @@ export const route: Route = {
url: 'yjs.gxmzu.edu.cn/tzgg/zsgg.htm',
};
-async function handler(ctx) {
- const out = await getNoticeList(ctx, url, host, 'a', '.timestyle55267', {
+async function handler() {
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
+
+ // The graduate school shares the same Boda CMS template with the AI college, so the list and article style IDs are identical
+ const list = parseNoticeList($, pageUrl, 'table.winstyle55267 tr[height="20"]', '.timestyle55267');
+ const items = await resolveArticles(list, pageUrl, {
title: '.titlestyle55269',
content: '#vsb_newscontent',
date: '.timestyle55269',
@@ -38,7 +45,7 @@ async function handler(ctx) {
return {
title: '广西民族大学研究生院 -- 招生公告',
- link: url,
- item: out,
+ link: pageUrl,
+ item: items,
};
}
diff --git a/lib/routes/jou/home.ts b/lib/routes/jou/home.ts
index 7c9d147eba62..77ce1ff9a97a 100644
--- a/lib/routes/jou/home.ts
+++ b/lib/routes/jou/home.ts
@@ -1,9 +1,11 @@
+import { load } from 'cheerio';
+
import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
-import { getItems } from './utils';
+import { parseNoticeList, resolveArticles } from './utils';
-const url = 'https://www.jou.edu.cn/index/tzgg.htm';
-const host = 'https://www.jou.edu.cn';
+const pageUrl = 'https://www.jou.edu.cn/index/tzgg.htm';
export const route: Route = {
path: '/tzgg',
@@ -29,16 +31,20 @@ export const route: Route = {
url: 'www.jou.edu.cn/index/tzgg.htm',
};
-async function handler(ctx) {
- const out = await getItems(ctx, url, host, 'winstyle106390', 'timestyle106390', 'titlestyle106402', 'timestyle106402');
+async function handler() {
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
+
+ const list = parseNoticeList($, pageUrl, 'table.winstyle106390 tr[height="20"]', '.timestyle106390');
+ const items = await resolveArticles(list, {
+ title: '.titlestyle106402',
+ content: '.v_news_content',
+ date: '.timestyle106402',
+ });
- // 生成RSS源
return {
- // 项目标题
title: '江苏海洋大学 -- 通知公告',
- // 项目链接
- link: url,
- // items的内容
- item: out,
+ link: pageUrl,
+ item: items,
};
}
diff --git a/lib/routes/jou/utils/index.ts b/lib/routes/jou/utils/index.ts
index 352071792253..edfd2a7fbcbf 100644
--- a/lib/routes/jou/utils/index.ts
+++ b/lib/routes/jou/utils/index.ts
@@ -1,70 +1,90 @@
-import { load } from 'cheerio';
+import { type CheerioAPI, load } from 'cheerio';
+import type { DataItem } from '@/types';
import cache from '@/utils/cache';
-import ofetch from '@/utils/ofetch'; // 使用ofetch库
+import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
-async function getItems(ctx, url, host, tableClass, timeStyleClass1, titleStyleClass, timeStyleClass2) {
- const response = await ofetch(url);
- if (!response) {
- return [];
+const FALLBACK_DESCRIPTION = '该通知无法直接预览,请点击原文链接↑查看';
+
+interface NoticeItem extends DataItem {
+ link: string;
+}
+
+interface DetailSelectors {
+ title: string;
+ content: string;
+ date?: string;
+}
+
+// Date formats vary across sites: 2026-03-30, 2026/05/06 or 2026年03月30日 14:37, often prefixed with a label such as "发布时间:"
+export function parsePubDate(text?: string): Date | undefined {
+ const match = text?.match(/(\d{4})[-/.年]\s*(\d{1,2})[-/.月]\s*(\d{1,2})/);
+ if (!match) {
+ return undefined;
}
- const $ = load(response);
+ const [, year, month, day] = match;
+ const time = text?.match(/(\d{1,2}:\d{2}(?::\d{2})?)/)?.[1];
+ return timezone(parseDate(`${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}${time ? ` ${time}` : ''}`), 8);
+}
- const list = $(`table.${tableClass} > tbody > tr[height=20]`)
+export function parseNoticeList($: CheerioAPI, pageUrl: string, rowSelector: string, dateSelector: string): NoticeItem[] {
+ return $(rowSelector)
.toArray()
- .map((item) => {
- const currentItem = $(item);
- const item1 = currentItem.find('td:eq(1)');
- const item2 = currentItem.find('td:eq(2)');
- const link = new URL(item1.find('a').attr('href'), host).href;
-
+ .map((el) => {
+ const $row = $(el);
+ const $link = $row.find('a');
+ const href = $link.attr('href');
+ if (!href) {
+ return null;
+ }
return {
- title: item1.find('a').attr('title'),
- link,
- pubDate: timezone(parseDate(item2.find(`.${timeStyleClass1}`).text(), 'YYYY-MM-DD'), 8),
+ title: $link.attr('title') || $link.text().trim(),
+ link: new URL(href, pageUrl).href,
+ pubDate: parsePubDate($(dateSelector, $row).text()),
};
- });
+ })
+ .filter((item) => item !== null);
+}
+
+async function fetchArticle(item: NoticeItem, selectors: DetailSelectors): Promise {
+ const response = await ofetch(item.link);
+ const $ = load(response);
- const out = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- const response = await ofetch(item.link);
- if (!response || (response.status >= 300 && response.status < 400)) {
- // 响应为空或状态码表明发生了重定向
- return {
- ...item,
- description: '该通知无法直接预览,请点击原文链接↑查看',
- };
- }
- const $ = load(response);
+ // Pages whose body is an embedded PDF have no extractable content
+ if ($('script:contains("showVsbpdfIframe")').length > 0) {
+ return { ...item, description: FALLBACK_DESCRIPTION };
+ }
- item.title = $(`.${titleStyleClass}`).text();
- const hasEmbeddedPDFScript = $('script:contains("showVsbpdfIframe")').length > 0;
+ const $content = $(selectors.content);
- if (hasEmbeddedPDFScript) {
- item.description = '该通知无法直接预览,请点击原文链接↑查看';
- } else {
- const contentHtml = $('.v_news_content').html();
- const $content = load(contentHtml);
- $content('a').each((_, el) => {
- const a = $(el);
- const href = a.attr('href');
- if (href && !href.startsWith('http')) {
- a.attr('href', new URL(href, host).href);
- }
- });
- item.description = $content.html();
- }
- item.pubDate = timezone(parseDate($(`.${timeStyleClass2}`).text().replace('发布时间:', '')), 8);
+ $content.find('a').each((_, el) => {
+ const $a = $(el);
+ const href = $a.attr('href');
+ if (href) {
+ $a.attr('href', new URL(href, item.link).href);
+ }
+ });
+ $content.find('img').each((_, el) => {
+ const $img = $(el);
+ const src = $img.attr('src');
+ if (src) {
+ $img.attr('src', new URL(src, item.link).href);
+ }
+ });
- return item;
- })
- )
- );
+ const title = $(selectors.title).text().trim();
+ const pubDate = selectors.date ? parsePubDate($(selectors.date).text()) : undefined;
- return out;
+ return {
+ ...item,
+ title: title || item.title,
+ pubDate: pubDate ?? item.pubDate,
+ description: $content.html() ?? item.description,
+ };
}
-export { getItems };
+export function resolveArticles(list: NoticeItem[], selectors: DetailSelectors): Promise {
+ return Promise.all(list.map((item) => cache.tryGet(item.link, () => fetchArticle(item, selectors)) as Promise));
+}
diff --git a/lib/routes/jou/yz.ts b/lib/routes/jou/yz.ts
index 031c0c03112a..dfc602e4fea5 100644
--- a/lib/routes/jou/yz.ts
+++ b/lib/routes/jou/yz.ts
@@ -1,9 +1,11 @@
+import { load } from 'cheerio';
+
import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
-import { getItems } from './utils';
+import { parseNoticeList, resolveArticles } from './utils';
-const url = 'https://yz.jou.edu.cn/index/zxgg.htm';
-const host = 'https://yz.jou.edu.cn';
+const pageUrl = 'https://yz.jou.edu.cn/index/zxgg.htm';
export const route: Route = {
path: '/yztzgg',
@@ -29,16 +31,20 @@ export const route: Route = {
url: 'yz.jou.edu.cn/index/zxgg.htm',
};
-async function handler(ctx) {
- const out = await getItems(ctx, url, host, 'winstyle207638', 'timestyle207638', 'titlestyle207543', 'timestyle207543');
+async function handler() {
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
+
+ const list = parseNoticeList($, pageUrl, 'table.winstyle207638 tr[height="20"]', '.timestyle207638');
+ const items = await resolveArticles(list, {
+ title: '.titlestyle207543',
+ content: '.v_news_content',
+ date: '.timestyle207543',
+ });
- // 生成RSS源
return {
- // 项目标题
title: '江苏海洋大学 -- 研招通知公告',
- // 项目链接
- link: url,
- // items的内容
- item: out,
+ link: pageUrl,
+ item: items,
};
}
diff --git a/lib/routes/njxzc/home.ts b/lib/routes/njxzc/home.ts
index 5975c6f22c39..ec1f0ffd3bda 100644
--- a/lib/routes/njxzc/home.ts
+++ b/lib/routes/njxzc/home.ts
@@ -1,9 +1,11 @@
+import { load } from 'cheerio';
+
import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
-import { getNoticeList } from './utils';
+import { parsePubDate, resolveArticles } from './utils';
-const url = 'https://www.njxzc.edu.cn/89/list.htm';
-const host = 'https://www.njxzc.edu.cn';
+const pageUrl = 'https://www.njxzc.edu.cn/89/list.htm';
export const route: Route = {
path: '/tzgg',
@@ -13,7 +15,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: true,
+ antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -29,24 +31,30 @@ export const route: Route = {
url: 'www.njxzc.edu.cn/89/list.htm',
};
-async function handler(ctx) {
- const out = await getNoticeList(
- ctx,
- url,
- host,
- 'a',
- '.news_meta',
- {
- title: '.arti_title',
- content: '.wp_articlecontent',
- date: '.arti_update',
- },
- '.news_list .news'
- );
+async function handler() {
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
+
+ const list = $('.news_list .news')
+ .toArray()
+ .map((el) => {
+ const $item = $(el);
+ const $link = $item.find('a');
+ const href = $link.attr('href');
+ if (!href) {
+ return null;
+ }
+ return {
+ title: $link.attr('title') || $link.text().trim(),
+ link: new URL(href, pageUrl).href,
+ pubDate: parsePubDate($item.find('.news_meta').text()),
+ };
+ })
+ .filter((item) => item !== null);
return {
title: '南京晓庄学院 -- 通知公告',
- link: url,
- item: out,
+ link: pageUrl,
+ item: await resolveArticles(list),
};
}
diff --git a/lib/routes/njxzc/lib.ts b/lib/routes/njxzc/lib.ts
index 38f0508d7710..04c2b45e79f1 100644
--- a/lib/routes/njxzc/lib.ts
+++ b/lib/routes/njxzc/lib.ts
@@ -1,13 +1,11 @@
import { load } from 'cheerio';
import type { Route } from '@/types';
-import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
-import { parseDate } from '@/utils/parse-date';
-import timezone from '@/utils/timezone';
-const url = 'https://lib.njxzc.edu.cn/pxyhd/list.htm';
-const host = 'https://lib.njxzc.edu.cn';
+import { parsePubDate, resolveArticles } from './utils';
+
+const pageUrl = 'https://lib.njxzc.edu.cn/pxyhd/list.htm';
export const route: Route = {
path: '/libtzgg',
@@ -17,7 +15,7 @@ export const route: Route = {
features: {
requireConfig: false,
requirePuppeteer: false,
- antiCrawler: true,
+ antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
@@ -34,76 +32,30 @@ export const route: Route = {
};
async function handler() {
- const response = await ofetch(url);
- if (!response) {
- return {
- title: '南京晓庄学院 -- 图书馆通知公告',
- link: url,
- item: [],
- };
- }
+ const response = await ofetch(pageUrl);
const $ = load(response);
const list = $('a.btt-2')
.toArray()
- .map((item) => {
- const $item = $(item);
- const href = $item.attr('href') || '';
- const link = href.startsWith('http') ? href : new URL(href, host).href;
- const day = $item.find('.tm-1').text().trim();
- const yearMonth = $item.find('.tm-2').text().trim();
- const dateStr = `${yearMonth}-${day}`;
+ .map((el) => {
+ const $link = $(el);
+ const href = $link.attr('href');
+ if (!href) {
+ return null;
+ }
+ const day = $link.find('.tm-1').text().trim();
+ const yearMonth = $link.find('.tm-2').text().trim();
return {
- title: $item.find('.btt-4').text().trim(),
- link,
- pubDate: timezone(parseDate(dateStr, 'YYYY-MM-DD'), 8),
+ title: $link.find('.btt-4').text().trim(),
+ link: new URL(href, pageUrl).href,
+ pubDate: parsePubDate(`${yearMonth}-${day}`),
};
- });
-
- const out = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- const response = await ofetch(item.link);
- const $ = load(response);
-
- if ($('.wp_error_msg').length > 0) {
- item.description = '您当前ip并非校内地址,该信息仅允许校内地址访问';
- } else {
- const $content = $('.wp_articlecontent');
- // Convert wp_pdf_player iframes to download links
- $content.find('.wp_pdf_player').each((_, el) => {
- const $iframe = $(el);
- const pdfSrc = $iframe.attr('pdfsrc') || '';
- const pdfUrl = pdfSrc.startsWith('http') ? pdfSrc : new URL(pdfSrc, host).href;
- $iframe.replaceWith(`附件下载
`);
- });
- // Fix relative URLs
- $content.find('a').each((_, el) => {
- const $a = $(el);
- const href = $a.attr('href');
- if (href && !href.startsWith('http')) {
- $a.attr('href', new URL(href, host).href);
- }
- });
- item.description = $content.html() || '';
- const title = $('.arti_title').text().trim();
- if (title) {
- item.title = title;
- }
- const dateText = $('.arti_update').text().replace('发布时间:', '').trim();
- if (dateText) {
- item.pubDate = timezone(parseDate(dateText, 'YYYY-MM-DD'), 8);
- }
- }
-
- return item;
- })
- )
- );
+ })
+ .filter((item) => item !== null);
return {
title: '南京晓庄学院 -- 图书馆通知公告',
- link: url,
- item: out,
+ link: pageUrl,
+ item: await resolveArticles(list),
};
}
diff --git a/lib/routes/njxzc/namespace.ts b/lib/routes/njxzc/namespace.ts
index 98e099e9e9b0..ad57813d949a 100644
--- a/lib/routes/njxzc/namespace.ts
+++ b/lib/routes/njxzc/namespace.ts
@@ -2,6 +2,7 @@ import type { Namespace } from '@/types';
export const namespace: Namespace = {
name: '南京晓庄学院',
- url: 'lib.njxzc.edu.cn',
+ url: 'www.njxzc.edu.cn',
+ description: '部分文章仅限校内 IP 访问,此类文章仅输出标题与原文链接',
lang: 'zh-CN',
};
diff --git a/lib/routes/njxzc/utils/index.ts b/lib/routes/njxzc/utils/index.ts
index 20875a3be5cc..da92a4f7a008 100644
--- a/lib/routes/njxzc/utils/index.ts
+++ b/lib/routes/njxzc/utils/index.ts
@@ -1,67 +1,67 @@
import { load } from 'cheerio';
+import type { DataItem } from '@/types';
import cache from '@/utils/cache';
-import ofetch from '@/utils/ofetch'; // 使用默认导出的方式导入ofetch
+import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
-async function getNoticeList(ctx, url, host, titleSelector, dateSelector, contentSelector, listSelector) {
- const response = await ofetch(url);
- if (!response) {
- return [];
+interface NoticeItem extends DataItem {
+ link: string;
+}
+
+// Date formats vary across the site: 2026-07-01, 2026/07/01 or 2026年07月01日 14:53, often prefixed with a label such as "发布时间:"
+export function parsePubDate(text?: string): Date | undefined {
+ const match = text?.match(/(\d{4})[-/.年]\s*(\d{1,2})[-/.月]\s*(\d{1,2})/);
+ if (!match) {
+ return undefined;
}
- const $ = load(response);
+ const [, year, month, day] = match;
+ const time = text?.match(/(\d{1,2}:\d{2}(?::\d{2})?)/)?.[1];
+ return timezone(parseDate(`${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}${time ? ` ${time}` : ''}`), 8);
+}
- const list = $(listSelector)
- .toArray()
- .map((item) => {
- item = $(item);
- const href = item.find(titleSelector).attr('href') || '';
- const link = href.startsWith('http') ? href : new URL(href, host).href;
- return {
- title: item.find(titleSelector).attr('title'),
- link,
- pubDate: timezone(parseDate(item.find(dateSelector).text(), 'YYYY-MM-DD'), 8),
- };
- });
+async function fetchArticle(item: NoticeItem): Promise {
+ const response = await ofetch(item.link);
+ const $ = load(response);
- const out = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- const response = await ofetch(item.link);
- const $ = load(response);
+ const $content = $('.wp_articlecontent');
- if ($('.wp_error_msg').length > 0) {
- item.description = '您当前ip并非校内地址,该信息仅允许校内地址访问';
- } else {
- const $content = $(contentSelector.content);
- // Convert wp_pdf_player iframes to download links
- $content.find('.wp_pdf_player').each((_, el) => {
- const $iframe = $(el);
- const pdfSrc = $iframe.attr('pdfsrc') || '';
- const pdfUrl = pdfSrc.startsWith('http') ? pdfSrc : new URL(pdfSrc, host).href;
- $iframe.replaceWith(`附件下载
`);
- });
- // Fix relative URLs
- $content.find('a').each((_, el) => {
- const $a = $(el);
- const href = $a.attr('href');
- if (href && !href.startsWith('http')) {
- $a.attr('href', new URL(href, host).href);
- }
- });
- item.description = $content.html() || '';
- item.title = $(contentSelector.title).text();
- const dateText = $(contentSelector.date).text().replace('编辑:', '').replace('发布日期:', '').replace('发布时间:', '');
- item.pubDate = timezone(parseDate(dateText, 'YYYY-MM-DD'), 8);
- }
+ $content.find('.wp_pdf_player').each((_, el) => {
+ const $player = $(el);
+ const pdfSrc = $player.attr('pdfsrc');
+ if (pdfSrc) {
+ $player.replaceWith(`附件下载
`);
+ } else {
+ $player.remove();
+ }
+ });
+ $content.find('a').each((_, el) => {
+ const $a = $(el);
+ const href = $a.attr('href');
+ if (href) {
+ $a.attr('href', new URL(href, item.link).href);
+ }
+ });
+ $content.find('img').each((_, el) => {
+ const $img = $(el);
+ const src = $img.attr('src');
+ if (src) {
+ $img.attr('src', new URL(src, item.link).href);
+ }
+ });
- return item;
- })
- )
- );
+ const title = $('.arti_title').text().trim();
+ const pubDate = parsePubDate($('.arti_update').text());
- return out;
+ return {
+ ...item,
+ title: title || item.title,
+ pubDate: pubDate ?? item.pubDate,
+ description: $content.html() ?? item.description,
+ };
}
-export { getNoticeList };
+export function resolveArticles(list: NoticeItem[]): Promise {
+ return Promise.all(list.map((item) => cache.tryGet(item.link, () => fetchArticle(item)) as Promise));
+}
From 2683b4890757d46ae82755a7abd4b9e73c418df1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 08:14:12 +0000
Subject: [PATCH 357/670] chore(deps-dev): bump tsdown from 0.22.9 to 0.22.12
(#22762)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.9 to 0.22.12.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.9...v0.22.12)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.12
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 257 +++++++++++++++++++++++++------------------------
2 files changed, 133 insertions(+), 126 deletions(-)
diff --git a/package.json b/package.json
index 33cda42fed25..b7f43488d810 100644
--- a/package.json
+++ b/package.json
@@ -200,7 +200,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.9",
+ "tsdown": "0.22.12",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dcf6915ccd43..09cff1076421 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -450,8 +450,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.9
- version: 0.22.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
+ specifier: 0.22.12
+ version: 0.22.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -3027,130 +3027,130 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.6.5':
- resolution: {integrity: sha512-uR1OCnftxC89GP6ZLPbaAXU9wdycmXt5BUQAOaDUmU/b38WJefse4RcL793rsOw1rkb8UC3UqP9F8hQ0lDB5xg==}
+ '@yuku-codegen/binding-darwin-arm64@0.7.0':
+ resolution: {integrity: sha512-RLfjSuJUolQJ04zYq3kM2vSUk9BkFFSOhmOWARb7Pc7Gnf0vMLfj/fepnn9IdsyE2FsJjoCJPKM5bBze4ld5pQ==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.6.5':
- resolution: {integrity: sha512-b5m/NymPwAV8OYmWPK0GwVeXw/D7EMIr1GkgL9fW/JCFDvkSkBTz8cbGl5Jkoxr+bamOZy4C1ySngpU///4CFQ==}
+ '@yuku-codegen/binding-darwin-x64@0.7.0':
+ resolution: {integrity: sha512-OI9z6U69j2TvaWgDzheUNlMPSrlNQs8PD3isfyuGxQVbO8Dqi3F7PRT1JnG7pkId+IKvmEu+40sjXWDHRbtlMA==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.6.5':
- resolution: {integrity: sha512-wLTe/QeBF37qb4bR++t/jLP3LQ7oS76lsZigk7J10IR2GwD4w8GJqhIm1NsAwho6OjWDNnfxkkw/Oadf/jex4Q==}
+ '@yuku-codegen/binding-freebsd-x64@0.7.0':
+ resolution: {integrity: sha512-nhoH3yXu2e6itB1Hbpj1+kZJ6yTJtsXBN5dWYm20TKvs1Iq79di6hdCKBlHE12RHFW39aQKcnn+vlFF1J1RGsw==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.6.5':
- resolution: {integrity: sha512-Clah7LByDMBFkHKeRsUrqoftiyocoYaAmDc7aM14S9qghvKPnbTAtvrG8QOLMkWviWS+rQ94YWFGqzk1cRxAnA==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.0':
+ resolution: {integrity: sha512-bgmapvrk/f/1bOSl+XA9KTLKb7vmxuXhqgCchlhTvgNOWnHB4rPLfzu0TkQU5CjVFzZQmHoEmhObf9DKUzcDMA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.6.5':
- resolution: {integrity: sha512-3ghZT7Dtp5tzIyfSFWcLFxtwnXjrrqLhO+MTuw3Am03K9Coo2NQICwwA9DN2HBrb8KXES1U43an1rNgzRw9xog==}
+ '@yuku-codegen/binding-linux-arm-musl@0.7.0':
+ resolution: {integrity: sha512-HpVSId+bxtqSkIsbBUP78J0j4ZUnCvqj14WGmAjKDP25oaQ0SZuFtVIZJmTisuKVSM4AIx1CVBYlJ2CCIm/vsQ==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.5':
- resolution: {integrity: sha512-9zT+uVEtVJkvm0Ba5BkUgBXNqw3kcolV9RAf0kSgIe44bi5Lp6MPqCRm9JrWnJTZOySzPII3oRNRl9dtBlOdLg==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.0':
+ resolution: {integrity: sha512-oL8OGWo99U0arObIl5UKov3ZvsoNGWUMWRJrlXP99P4LpVz+gZC9KwfYCzxlhGnNk9rpp/fcTUUHYHbTskuZwQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.6.5':
- resolution: {integrity: sha512-Uyi/vT++0gyVsyan3XvEii8AWbc+yFJ3M0GEloup7eBx1j4FtK7oq23F6mbQD1gNaozGKkN74fCJpIxF176hZA==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.0':
+ resolution: {integrity: sha512-ULsFt9PnI5vBMCG5pGir1YQtJ03o0Sb5SsRTDYRSeKaVaxdog+kA9Guwnk8q8OMPFsI3s40Fhu/+45cQXHSZ8Q==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.6.5':
- resolution: {integrity: sha512-JZzAbPDh5eQ2GRAAbo7cKcFabPQ9UEAQglk1BE0psoWUDt1wktp4ZX9ZJgDgF9EbSH3UUACo0lIkWUtSjRyRoQ==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.0':
+ resolution: {integrity: sha512-l1TP6G39gnF4eiHEApjViyA12n+YHT18A0y3FDUy1jF5hkZt2RWlBNrU4HPhzTd6kQlozJEWyjhVNja2J3/eBw==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.6.5':
- resolution: {integrity: sha512-Dmh6Qhoo1UNM10eDLs/DND8E3cLfQQboFfZgnnNNIJ2RQ/G0GXGh7Kzff1QmglUNuRami42NkTrsF9VrkCttZg==}
+ '@yuku-codegen/binding-linux-x64-musl@0.7.0':
+ resolution: {integrity: sha512-h8GZdSNSaBWySA4p8eYFWkH8OWdqA4peOAFeWs+DltJo8r9ZXSvVB0XBypMxkLwA0qLDqwtWoVssg2LK1zJKdw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.6.5':
- resolution: {integrity: sha512-UAq2wLFT0mRN2rzJfZjmaqVMJD9kYywARc6Wk8Ggnm4p8yJYigNxMkJ0gt3bpd0MOnvre4LFEDyAMr4esRubuQ==}
+ '@yuku-codegen/binding-win32-arm64@0.7.0':
+ resolution: {integrity: sha512-hVkxv4UTPXex7q5ldvqelSMvvYc6bCAYlDSMMg3wmttHZF9yQzPb4yYw69eWvR4coEMFaUv63ADJNjiGjNxkYg==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.6.5':
- resolution: {integrity: sha512-hlEo+UIMHaEoLHe8woLr9eI6fz+8LRwdRrid/iegVU1N+53zkh4WMkI8N7e4vUNKKMVN2kJo6Z73J+JfskHO1g==}
+ '@yuku-codegen/binding-win32-x64@0.7.0':
+ resolution: {integrity: sha512-g3YQpqvsTbDHjjBDnNGhaO4ejN+m2GpsWc50dcGPR/RUx+yt++uDEXKSEyiAaCpEM2p5PuDIW/YEjXx0oVdsoQ==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.6.5':
- resolution: {integrity: sha512-QVdaZzj9T3KdaprM8VYpiYIFJrcJB347P2U3bg683nPQaDNmX733CFtCqpkc1KHccFf199EXx4OazkJlnHvImA==}
+ '@yuku-parser/binding-darwin-arm64@0.7.0':
+ resolution: {integrity: sha512-LoZ945MxFzc6+ltMenaFtXhJ4rdj11j1IwkRWLR7WPim2jdXUURTfWhAm7VzQDtSCHtnDz8PAH55eIHmNilTlA==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.6.5':
- resolution: {integrity: sha512-9omiEXwzJo3hsJiaohFek44wKRmnNy8o8acf8PXJdVo19I9O5eY7c3Nhca1DRTozoLqIJEI68CH8OoR2/Dv7ww==}
+ '@yuku-parser/binding-darwin-x64@0.7.0':
+ resolution: {integrity: sha512-HVS2bgNGqCl5oU5wP16tZUMmXAO1avgxp/uzDOJcNqA7WOlV1PqTWD3P/1GXaMAijIZNu3VLSXkU1dovwwPpVA==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.6.5':
- resolution: {integrity: sha512-0BZ14CHc8H3EHmlAMhxTDVMYijsT1nNZUhl6JTm/xzl+Gaun/vahgdaJaFESuweLeZ1WnwVfPVPvjsdfnbTN8g==}
+ '@yuku-parser/binding-freebsd-x64@0.7.0':
+ resolution: {integrity: sha512-nVZgLmiuEdkRb8oJsXBoQphfZwsMTcatSEB5t1QL9aH92/hx2TxAGayZy/g326l5rGVMmieCHc9FYxu/MnVFHQ==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.6.5':
- resolution: {integrity: sha512-VidTdzelGosQDkVkU4X/9qrILPT5HunzL5shW9jrq860naAEjGS/41a4s3J5KBRsKRHscwOsbtSzUev1TMdgfg==}
+ '@yuku-parser/binding-linux-arm-gnu@0.7.0':
+ resolution: {integrity: sha512-rIq85RCqwMQFtQSBIvUbmEAkNw0pu89PsrikSt+uVMCxjN1ZjbekTWw4hi0NVax8kAb5t2Xgs6kQrFoapyQ3Xg==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.6.5':
- resolution: {integrity: sha512-Xes/SwXQiPFPqLMhnwjRv0s6mlm6V7+jpw/kmCMkal9Q0UfS4hVpFo2T5NNIKNLCj5qAZ+2EPtgDBz0S1lH4xg==}
+ '@yuku-parser/binding-linux-arm-musl@0.7.0':
+ resolution: {integrity: sha512-BNoI0mP8o3iV6dJEgfJq1U6cAMn7iSYe3gSYkN05DL1FyOU6ni2NwcDScsV6RBBQHj4V1s5123F85JLPhhXfqA==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.6.5':
- resolution: {integrity: sha512-MaFn3Vh+kBETYXtPYBaCQUMsUk5SqSatM+mp9Vz7COuCKXim7cG8kGcUpqq93wegLEkkEnv8pyiDFFx/gmNOiQ==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.0':
+ resolution: {integrity: sha512-YrFNrrc0bq5B+cV2EuxDU4VPhuH0RHkV0M1rne8UTxPbqjPmarWxLcl1JEeyaXcL0856kwnaV728GMeB1o/Gdg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.6.5':
- resolution: {integrity: sha512-s7GAjJ7kzmnEBVAq5c5B+h/DCOSZG7WqTNpFRYUVGQU+D8wf1gMnfDQ5v8zFdByhpHiW+HNerxI8sml5dl47Rw==}
+ '@yuku-parser/binding-linux-arm64-musl@0.7.0':
+ resolution: {integrity: sha512-WaDi6BsjZ/vrO7EgX36C4sLN9fUPZd/vM0Nh+82uOjygCxgFtiRf5NsFxdaLSzqMi+sbGsg+hWM/De4vkana3A==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.6.5':
- resolution: {integrity: sha512-5/+mLrZdCtGoKOw/zNJC0+fSy4aKI97JvPm5rr8DXui/l3+BrvU5g7czp1DVHN67I7VzTLizu2n2y5cz2CjzEg==}
+ '@yuku-parser/binding-linux-x64-gnu@0.7.0':
+ resolution: {integrity: sha512-gxlbaqglGr7ir9UZLF0945JKTImI9MFDZiny57mRiqktCTDVQPnb5Lmj0okKJ6w0nBX1NzwviMX6v4i+rwLSWw==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.6.5':
- resolution: {integrity: sha512-Svj4h/WZQ1VdAxaFJrakVi85IzUJPYWcNw15gNPoeNg+/SGGTTkTeUzODiMRY/8ioJ/k3+/K7zQwASIEBF7L3Q==}
+ '@yuku-parser/binding-linux-x64-musl@0.7.0':
+ resolution: {integrity: sha512-n7pCgW5iNoaKEpt8K3UTkg7ACX87MueWkJQD7cQSOgxyu/Qx0BCdwi0iOs60Gjj88wyKwqkYIBPMN3wKE5P7Yw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.6.5':
- resolution: {integrity: sha512-N96G8zoKihVwhMaH+kLp8MFIA1i3+dRaBO4KYK0otTPVdX+3uS2wpUY5vDLj4JbkKARuQA/DUmfgjleoXL6ugA==}
+ '@yuku-parser/binding-win32-arm64@0.7.0':
+ resolution: {integrity: sha512-kyuC7W1mGIMbJp6t86hIhDjnptFxZiTaOrbHhYkCpfsXPF6pszWNK03DUMc//Udnw3Af3d5w93CRJlRNpCb5eg==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.6.5':
- resolution: {integrity: sha512-RP7rz120SodZI/vUc1H4uzIMEZrxeG//d11qWUI5inMbU4YSnufJAScwjV+qQHxD3FAwoueNxsPjrVxagwAymg==}
+ '@yuku-parser/binding-win32-x64@0.7.0':
+ resolution: {integrity: sha512-xEm5rwtETud7iNbxSocACgXzPrv2x4vkk339BtAqZAKoCS+edaO767EKAGcUO3xo8STBgCud1cAA5oIyzN8APA==}
cpu: [x64]
os: [win32]
- '@yuku-toolchain/types@0.5.43':
- resolution: {integrity: sha512-kSpvPntnXw5+lYjO71ffBEnQ5ycQ74KGIYknh0TS4xeyCuBkOqxyJumxZkMhLBBUCLjDAbx2+Icnr3Zh4ftjpQ==}
+ '@yuku-toolchain/types@0.7.0':
+ resolution: {integrity: sha512-kKleXJmXcZnJ5LUDTeYvK350SB+BXdpoHUwT78GGyOXOhCZ0tWf+seDPAvVnCrjoJhf+FhqtR5HRUfWW+yILQw==}
'@zone-eu/mailsplit@5.4.14':
resolution: {integrity: sha512-rz0FQOhN3Vq1XrSeSSa9+dPcaFbBxmQPjiZm6zS9oxdVHV7rOWIAYX3yP2YAUf0qBncY8CI+NogzPCmMVrMXcw==}
@@ -3681,7 +3681,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, integrity: sha512-OG2C++3YYIzflFjA9irnexBs9eUS6KUOViAssV4oSo4W8HAl86TV+DoFYhdSXVaFd4z5htsM3zzs64WJybH4cQ==, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -5373,8 +5373,8 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.19:
- resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==}
+ postcss@8.5.20:
+ resolution: {integrity: sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==}
engines: {node: ^10 || ^12 || >=14}
postman-request@2.88.1-postman.48:
@@ -5594,8 +5594,8 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown-plugin-dts@0.27.11:
- resolution: {integrity: sha512-DnBl4USSTV/h/sgy//QjCLHVo2JypE/52P5QugGeYaEqZmjBz/FYESOld0MhyIhul2U3Vsh41K63UWGHhJU/qQ==}
+ rolldown-plugin-dts@0.27.12:
+ resolution: {integrity: sha512-DJg5ELVEdLAVhirvtak7GS4nbNvBzLNAtYL1M8hLghDURBFKU2MwEH6ncHibYs6khq1NaRQ97iFMiHvzw+WoSw==}
engines: {node: ^22.18.0 || >=24.11.0}
peerDependencies:
'@typescript/native-preview': '*'
@@ -5990,14 +5990,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.9:
- resolution: {integrity: sha512-/0QEjQEhOU1t1YxOIAGzFN7bIssd8P0pBpkOmNLCQi3c5UtrcMF5bvq3f30xHJNW9QCA9aUNcNAorMr2CTd6Lg==}
+ tsdown@0.22.12:
+ resolution: {integrity: sha512-IzGRfGwSsufXJWOcQ0tmECKMG/dbxhUwDOySTS7JE1AM8pkB9+bpcTPs8bTxxSNrSvGocSczrBlOh97tZObq9Q==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.9
- '@tsdown/exe': 0.22.9
+ '@tsdown/css': 0.22.12
+ '@tsdown/exe': 0.22.12
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6225,6 +6225,10 @@ packages:
resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==}
engines: {node: '>=0.10.0'}
+ verkit@0.1.2:
+ resolution: {integrity: sha512-WqkT8n3hqizuCu71W3bUzf5fjBmkbXcudsehe/NbxA8PgqoKnSOY5K0Ba2ckg1qaRaSpSz7as/n9K1R9JXjQKg==}
+ engines: {node: '>=18.12.0'}
+
verror@1.10.0:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
@@ -6519,14 +6523,14 @@ packages:
youtubei.js@17.2.0:
resolution: {integrity: sha512-XLNsgRKO1h7t4i9tIMWSQSeWdD7Ujkk5v1m5YCaumaHMhu/xuLqtO3M0Hq7CXNup9HlJ1NGrT1Y+HLIHnL6Ujg==}
- yuku-ast@0.1.7:
- resolution: {integrity: sha512-2RiMEWv500TixY5rJy6OZd4fSy9WYZKWh6gGbIJ7y7vAGcuCugWOWwOLGaQcRZrXcPUfqtLtvpaJ3SdXtWlhKA==}
+ yuku-ast@0.7.0:
+ resolution: {integrity: sha512-W5UzqYg/Xuyz41cAyxwo/TIPpDX221OuC9U5f44+NulDAHDwtzvGE3M3Xz3mdcLEutWOmTc/WP/y7NO6ANA2gw==}
- yuku-codegen@0.6.5:
- resolution: {integrity: sha512-g8gbp05j2NNSKe0Uu2ViBRvawzXaWggxS9YwcVJ2d3I99VxbeOeENSUseA8AXPCZj/gcLkQxl7uhTmtK36qh8Q==}
+ yuku-codegen@0.7.0:
+ resolution: {integrity: sha512-RJgoLaIU2AGKRkUHqMtw6gQhYm+NXZm/AFnfn+5YAHgRfApIc/PNJABJHihHoxWltayjbwEOCa68zqxdJafgfA==}
- yuku-parser@0.6.5:
- resolution: {integrity: sha512-9A5zaOqE3X3wcPOTK97CYInpKwaUGYnwfHWasJaI2Je1OhI4pQmRA6YCSh7oKewEb2iJM4xlJdbwwj4Aydty7w==}
+ yuku-parser@0.7.0:
+ resolution: {integrity: sha512-72HXJhlPOolJN4ER0xZy1wtAeWZEG4uXfZnzEm2uD7yAWt32VE/52FwIfVGi2Hs2P0JRZK2+sPwULQMTuEzYtw==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -8547,73 +8551,73 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.6.5':
+ '@yuku-codegen/binding-darwin-arm64@0.7.0':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.6.5':
+ '@yuku-codegen/binding-darwin-x64@0.7.0':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.6.5':
+ '@yuku-codegen/binding-freebsd-x64@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.6.5':
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.6.5':
+ '@yuku-codegen/binding-linux-arm-musl@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.6.5':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.6.5':
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.6.5':
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.0':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.6.5':
+ '@yuku-codegen/binding-linux-x64-musl@0.7.0':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.6.5':
+ '@yuku-codegen/binding-win32-arm64@0.7.0':
optional: true
- '@yuku-codegen/binding-win32-x64@0.6.5':
+ '@yuku-codegen/binding-win32-x64@0.7.0':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.6.5':
+ '@yuku-parser/binding-darwin-arm64@0.7.0':
optional: true
- '@yuku-parser/binding-darwin-x64@0.6.5':
+ '@yuku-parser/binding-darwin-x64@0.7.0':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.6.5':
+ '@yuku-parser/binding-freebsd-x64@0.7.0':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.6.5':
+ '@yuku-parser/binding-linux-arm-gnu@0.7.0':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.6.5':
+ '@yuku-parser/binding-linux-arm-musl@0.7.0':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.6.5':
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.0':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.6.5':
+ '@yuku-parser/binding-linux-arm64-musl@0.7.0':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.6.5':
+ '@yuku-parser/binding-linux-x64-gnu@0.7.0':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.6.5':
+ '@yuku-parser/binding-linux-x64-musl@0.7.0':
optional: true
- '@yuku-parser/binding-win32-arm64@0.6.5':
+ '@yuku-parser/binding-win32-arm64@0.7.0':
optional: true
- '@yuku-parser/binding-win32-x64@0.6.5':
+ '@yuku-parser/binding-win32-x64@0.7.0':
optional: true
- '@yuku-toolchain/types@0.5.43': {}
+ '@yuku-toolchain/types@0.7.0': {}
'@zone-eu/mailsplit@5.4.14':
dependencies:
@@ -11167,7 +11171,7 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.19:
+ postcss@8.5.20:
dependencies:
nanoid: 3.3.16
picocolors: 1.1.1
@@ -11419,15 +11423,15 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.11(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0):
+ rolldown-plugin-dts@0.27.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0):
dependencies:
dts-resolver: 3.0.0(oxc-resolver@11.24.2)
get-tsconfig: 5.0.0-beta.5
obug: 2.1.4
rolldown: 1.2.0
- yuku-ast: 0.1.7
- yuku-codegen: 0.6.5
- yuku-parser: 0.6.5
+ yuku-ast: 0.7.0
+ yuku-codegen: 0.7.0
+ yuku-parser: 0.7.0
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11872,7 +11876,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.9(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
+ tsdown@0.22.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11883,12 +11887,12 @@ snapshots:
obug: 2.1.4
picomatch: 4.0.5
rolldown: 1.2.0
- rolldown-plugin-dts: 0.27.11(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0)
- semver: 7.8.5
+ rolldown-plugin-dts: 0.27.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0)
tinyexec: 1.2.4
tinyglobby: 0.2.17
tree-kill: 1.2.2
unconfig-core: 7.5.0
+ verkit: 0.1.2
optionalDependencies:
tsx: 4.23.1
typescript: '@typescript/typescript6@6.0.2'
@@ -12091,6 +12095,8 @@ snapshots:
vali-date@1.0.0: {}
+ verkit@0.1.2: {}
+
verror@1.10.0:
dependencies:
assert-plus: 1.0.0
@@ -12122,7 +12128,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.19
+ postcss: 8.5.20
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
@@ -12385,41 +12391,42 @@ snapshots:
fflate: 0.8.3
meriyah: 6.1.4
- yuku-ast@0.1.7:
+ yuku-ast@0.7.0:
dependencies:
- '@yuku-toolchain/types': 0.5.43
+ '@yuku-toolchain/types': 0.7.0
- yuku-codegen@0.6.5:
+ yuku-codegen@0.7.0:
dependencies:
- '@yuku-toolchain/types': 0.5.43
+ '@yuku-toolchain/types': 0.7.0
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.6.5
- '@yuku-codegen/binding-darwin-x64': 0.6.5
- '@yuku-codegen/binding-freebsd-x64': 0.6.5
- '@yuku-codegen/binding-linux-arm-gnu': 0.6.5
- '@yuku-codegen/binding-linux-arm-musl': 0.6.5
- '@yuku-codegen/binding-linux-arm64-gnu': 0.6.5
- '@yuku-codegen/binding-linux-arm64-musl': 0.6.5
- '@yuku-codegen/binding-linux-x64-gnu': 0.6.5
- '@yuku-codegen/binding-linux-x64-musl': 0.6.5
- '@yuku-codegen/binding-win32-arm64': 0.6.5
- '@yuku-codegen/binding-win32-x64': 0.6.5
-
- yuku-parser@0.6.5:
- dependencies:
- '@yuku-toolchain/types': 0.5.43
+ '@yuku-codegen/binding-darwin-arm64': 0.7.0
+ '@yuku-codegen/binding-darwin-x64': 0.7.0
+ '@yuku-codegen/binding-freebsd-x64': 0.7.0
+ '@yuku-codegen/binding-linux-arm-gnu': 0.7.0
+ '@yuku-codegen/binding-linux-arm-musl': 0.7.0
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.7.0
+ '@yuku-codegen/binding-linux-arm64-musl': 0.7.0
+ '@yuku-codegen/binding-linux-x64-gnu': 0.7.0
+ '@yuku-codegen/binding-linux-x64-musl': 0.7.0
+ '@yuku-codegen/binding-win32-arm64': 0.7.0
+ '@yuku-codegen/binding-win32-x64': 0.7.0
+
+ yuku-parser@0.7.0:
+ dependencies:
+ '@yuku-toolchain/types': 0.7.0
+ yuku-ast: 0.7.0
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.6.5
- '@yuku-parser/binding-darwin-x64': 0.6.5
- '@yuku-parser/binding-freebsd-x64': 0.6.5
- '@yuku-parser/binding-linux-arm-gnu': 0.6.5
- '@yuku-parser/binding-linux-arm-musl': 0.6.5
- '@yuku-parser/binding-linux-arm64-gnu': 0.6.5
- '@yuku-parser/binding-linux-arm64-musl': 0.6.5
- '@yuku-parser/binding-linux-x64-gnu': 0.6.5
- '@yuku-parser/binding-linux-x64-musl': 0.6.5
- '@yuku-parser/binding-win32-arm64': 0.6.5
- '@yuku-parser/binding-win32-x64': 0.6.5
+ '@yuku-parser/binding-darwin-arm64': 0.7.0
+ '@yuku-parser/binding-darwin-x64': 0.7.0
+ '@yuku-parser/binding-freebsd-x64': 0.7.0
+ '@yuku-parser/binding-linux-arm-gnu': 0.7.0
+ '@yuku-parser/binding-linux-arm-musl': 0.7.0
+ '@yuku-parser/binding-linux-arm64-gnu': 0.7.0
+ '@yuku-parser/binding-linux-arm64-musl': 0.7.0
+ '@yuku-parser/binding-linux-x64-gnu': 0.7.0
+ '@yuku-parser/binding-linux-x64-musl': 0.7.0
+ '@yuku-parser/binding-win32-arm64': 0.7.0
+ '@yuku-parser/binding-win32-x64': 0.7.0
zod@3.25.76: {}
From f74920785b5b69b0eb26659c774def4d8400d034 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 08:16:48 +0000
Subject: [PATCH 358/670] chore(deps): bump hono from 4.12.30 to 4.12.31
(#22765)
Bumps [hono](https://github.com/honojs/hono) from 4.12.30 to 4.12.31.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.30...v4.12.31)
---
updated-dependencies:
- dependency-name: hono
dependency-version: 4.12.31
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 34 +++++++++++++++++-----------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index b7f43488d810..f48a9fc7482b 100644
--- a/package.json
+++ b/package.json
@@ -91,7 +91,7 @@
"fanfou-sdk": "6.0.0",
"google-play-scraper": "10.1.3",
"header-generator": "2.1.82",
- "hono": "4.12.30",
+ "hono": "4.12.31",
"html-to-text": "10.0.0",
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 09cff1076421..845c90422305 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,10 +48,10 @@ importers:
version: 6.14.0
'@hono/node-server':
specifier: 2.0.10
- version: 2.0.10(hono@4.12.30)
+ version: 2.0.10(hono@4.12.31)
'@hono/zod-openapi':
specifier: 1.5.1
- version: 1.5.1(hono@4.12.30)(zod@4.4.3)
+ version: 1.5.1(hono@4.12.31)(zod@4.4.3)
'@jocmp/mercury-parser':
specifier: 3.0.9
version: 3.0.9
@@ -84,7 +84,7 @@ importers:
version: 0.0.25
'@scalar/hono-api-reference':
specifier: 0.11.11
- version: 0.11.11(hono@4.12.30)
+ version: 0.11.11(hono@4.12.31)
'@sentry/node':
specifier: 10.66.0
version: 10.66.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
@@ -128,8 +128,8 @@ importers:
specifier: 2.1.82
version: 2.1.82
hono:
- specifier: 4.12.30
- version: 4.12.30
+ specifier: 4.12.31
+ version: 4.12.31
html-to-text:
specifier: 10.0.0
version: 10.0.0
@@ -4258,8 +4258,8 @@ packages:
hmacsha1@1.0.0:
resolution: {integrity: sha512-4FP6J0oI8jqb6gLLl9tSwVdosWJ/AKSGJ+HwYf6Ixe4MUcEkst4uWzpVQrNOCin0fzTRQbXV8ePheU8WiiDYBw==}
- hono@4.12.30:
- resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==}
+ hono@4.12.31:
+ resolution: {integrity: sha512-zJIHFrl6bq3RDd2YusFNCDlM8qUprxKswyi/OPzPyzKDdyBXDqWx8bZlZ7R+saTdSTatUmb3O7K4SspGPaEOQg==}
engines: {node: '>=16.9.0'}
hookable@6.1.1:
@@ -7029,21 +7029,21 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.10(hono@4.12.30)':
+ '@hono/node-server@2.0.10(hono@4.12.31)':
dependencies:
- hono: 4.12.30
+ hono: 4.12.31
- '@hono/zod-openapi@1.5.1(hono@4.12.30)(zod@4.4.3)':
+ '@hono/zod-openapi@1.5.1(hono@4.12.31)(zod@4.4.3)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.5.0(zod@4.4.3)
- '@hono/zod-validator': 0.9.0(hono@4.12.30)(zod@4.4.3)
- hono: 4.12.30
+ '@hono/zod-validator': 0.9.0(hono@4.12.31)(zod@4.4.3)
+ hono: 4.12.31
openapi3-ts: 4.6.0
zod: 4.4.3
- '@hono/zod-validator@0.9.0(hono@4.12.30)(zod@4.4.3)':
+ '@hono/zod-validator@0.9.0(hono@4.12.31)(zod@4.4.3)':
dependencies:
- hono: 4.12.30
+ hono: 4.12.31
zod: 4.4.3
'@humanfs/core@0.19.2':
@@ -8052,10 +8052,10 @@ snapshots:
'@scalar/helpers@0.9.2': {}
- '@scalar/hono-api-reference@0.11.11(hono@4.12.30)':
+ '@scalar/hono-api-reference@0.11.11(hono@4.12.31)':
dependencies:
'@scalar/client-side-rendering': 0.3.4
- hono: 4.12.30
+ hono: 4.12.31
'@scalar/schemas@0.7.4':
dependencies:
@@ -9785,7 +9785,7 @@ snapshots:
hmacsha1@1.0.0: {}
- hono@4.12.30: {}
+ hono@4.12.31: {}
hookable@6.1.1: {}
From 63771e18b407f10aa1ed36969f9af29fa05315f0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 19:52:27 +0800
Subject: [PATCH 359/670] chore(deps): bump devenv from `d773046` to `5f1cf17`
(#22768)
Bumps [devenv](https://github.com/cachix/devenv) from `d773046` to `5f1cf17`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/d77304696697c43672e10f29d1da401b33ab2778...5f1cf17be0fc48689bd0ecb810de6d2e06d259a1)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 5f1cf17be0fc48689bd0ecb810de6d2e06d259a1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 61885b0dacea..cd29018fcc2a 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784248563,
- "narHash": "sha256-rRjR2qADMZbvrDkZzeYrdssLKpbTGymNXLnVdbT6XpQ=",
+ "lastModified": 1784325378,
+ "narHash": "sha256-Gof6j4d43yX2qSLLp78JILke346IggDFIxTgl3ecVQE=",
"owner": "cachix",
"repo": "devenv",
- "rev": "d77304696697c43672e10f29d1da401b33ab2778",
+ "rev": "5f1cf17be0fc48689bd0ecb810de6d2e06d259a1",
"type": "github"
},
"original": {
From 95758d31a6c861548331f577a263471ce79f01b0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 19:54:23 +0800
Subject: [PATCH 360/670] chore(deps): bump nixpkgs from `753cc8a` to `61b7c44`
(#22767)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `753cc8a` to `61b7c44`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/753cc8a3a87467296ddd1fa93f0cc3e81120ee46...61b7c44c4073f0b827768aff0049561b5110ea5a)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: 61b7c44c4073f0b827768aff0049561b5110ea5a
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index cd29018fcc2a..9c645e227eb6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1784120854,
- "narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
+ "lastModified": 1784356753,
+ "narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
+ "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
"type": "github"
},
"original": {
From ef5506b74c2d0236481f5d0329212af21eb05edd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 19:58:16 +0800
Subject: [PATCH 361/670] chore(deps): bump source-map from 0.7.6 to 0.8.0
(#22766)
Bumps [source-map](https://github.com/mozilla/source-map) from 0.7.6 to 0.8.0.
- [Release notes](https://github.com/mozilla/source-map/releases)
- [Changelog](https://github.com/mozilla/source-map/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mozilla/source-map/compare/0.7.6...v0.8.0)
---
updated-dependencies:
- dependency-name: source-map
dependency-version: 0.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index f48a9fc7482b..ddab1ceb884d 100644
--- a/package.json
+++ b/package.json
@@ -125,7 +125,7 @@
"sanitize-html": "2.17.6",
"simplecc-wasm": "1.1.1",
"socks-proxy-agent": "10.1.0",
- "source-map": "0.7.6",
+ "source-map": "0.8.0",
"telegram": "2.26.22",
"title": "4.0.1",
"tldts": "7.4.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 845c90422305..9803a58c5933 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -230,8 +230,8 @@ importers:
specifier: 10.1.0
version: 10.1.0
source-map:
- specifier: 0.7.6
- version: 0.7.6
+ specifier: 0.8.0
+ version: 0.8.0
telegram:
specifier: 2.26.22
version: 2.26.22
@@ -5733,8 +5733,8 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- source-map@0.7.6:
- resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ source-map@0.8.0:
+ resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==}
engines: {node: '>= 12'}
split-on-first@3.0.0:
@@ -11644,7 +11644,7 @@ snapshots:
source-map@0.6.1: {}
- source-map@0.7.6: {}
+ source-map@0.8.0: {}
split-on-first@3.0.0: {}
From 42a788299aa335b38969af13e8468822efc58643 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 20:01:53 +0800
Subject: [PATCH 362/670] chore(deps-dev): bump the cloudflare group across 1
directory with 3 updates (#22761)
Bumps the cloudflare group with 3 updates in the / directory: [@cloudflare/vitest-pool-workers](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/vitest-pool-workers), [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/vitest-pool-workers` from 0.18.5 to 0.18.6
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Changelog](https://github.com/cloudflare/workers-sdk/blob/main/packages/vitest-pool-workers/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/@cloudflare/vitest-pool-workers@0.18.6/packages/vitest-pool-workers)
Updates `@cloudflare/workers-types` from 5.20260717.1 to 5.20260719.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.111.0 to 4.112.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.112.0/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/vitest-pool-workers"
dependency-version: 0.18.6
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: cloudflare
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260719.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.112.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +--
pnpm-lock.yaml | 104 ++++++++++++++++++++++++-------------------------
2 files changed, 55 insertions(+), 55 deletions(-)
diff --git a/package.json b/package.json
index ddab1ceb884d..958b0b41c0e8 100644
--- a/package.json
+++ b/package.json
@@ -148,8 +148,8 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/vitest-pool-workers": "0.18.5",
- "@cloudflare/workers-types": "5.20260717.1",
+ "@cloudflare/vitest-pool-workers": "0.18.6",
+ "@cloudflare/workers-types": "5.20260719.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
@@ -207,7 +207,7 @@
"unrun": "0.3.1",
"vite-tsconfig-paths": "7.0.0-alpha.1",
"vitest": "4.1.10",
- "wrangler": "4.111.0",
+ "wrangler": "4.112.0",
"yaml-eslint-parser": "2.1.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9803a58c5933..c3816a6938b3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -294,11 +294,11 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/vitest-pool-workers':
- specifier: 0.18.5
- version: 0.18.5(@cloudflare/workers-types@5.20260717.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ specifier: 0.18.6
+ version: 0.18.6(@cloudflare/workers-types@5.20260719.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260717.1
- version: 5.20260717.1
+ specifier: 5.20260719.1
+ version: 5.20260719.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -471,8 +471,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
- specifier: 4.111.0
- version: 4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.112.0
+ version: 4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -604,45 +604,45 @@ packages:
workerd:
optional: true
- '@cloudflare/vitest-pool-workers@0.18.5':
- resolution: {integrity: sha512-Qe00zuHDRyAsOO7DmHnPcOhCiShdkt/NlRf/GrnKHzuXuysmt5YVyU/WaMVPqEkPYrgO+H9bSEJ1c9/7Nbw1Hg==}
+ '@cloudflare/vitest-pool-workers@0.18.6':
+ resolution: {integrity: sha512-6JGqaQsQRZIVq/6jEC4ouJnShZriPIJ2X0yGndwMm+SiPP93pJi5Dp30dYAoztNrNJC7wWK7ec5slLfMBMZ8jA==}
peerDependencies:
'@vitest/runner': ^4.1.0
'@vitest/snapshot': ^4.1.0
vitest: ^4.1.0
- '@cloudflare/workerd-darwin-64@1.20260710.1':
- resolution: {integrity: sha512-OqJl2eWF5+y9jarMm3YqqCTUe7Hd4ihogX5jyRU8iaAgOVyDr/Bk6aXpPCVUi1/MHzO93a18R/TmSTtzmB0sQw==}
+ '@cloudflare/workerd-darwin-64@1.20260714.1':
+ resolution: {integrity: sha512-ZWXqAN8G7Cx9hMRQuk+59ziJhR3j1F4iO+Qs8aHdfKZ3Dq5Yi/57xvkJTgCGBnW1YU/L78r8f6HEy51bwbTpNw==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260710.1':
- resolution: {integrity: sha512-MYBqWgUblO+VlGvO73zYsH3hB9tdRj+yLyt5IHDFWryipb2l1efmNiWtAOkIhSRfypqLYGFrfpaDm2Hg00XVKw==}
+ '@cloudflare/workerd-darwin-arm64@1.20260714.1':
+ resolution: {integrity: sha512-tueWxWC3wyCbMG6zRAxsMXX0YLgrRWbiAPYFQ2uJ7dUH8G+5E7UTWaQS9B1HdJ0bpKFW1NWxhs1o2noKVFSUYg==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260710.1':
- resolution: {integrity: sha512-lVWUgqI8qrkqvaCBGElu1kdaUFdAvaS2RD8K4qkCFP9hI3f5TCXumEs5qWSeZkvKum0+X/uJZ5hBFWsYI5SmoQ==}
+ '@cloudflare/workerd-linux-64@1.20260714.1':
+ resolution: {integrity: sha512-1VChTZRb0l0F7R4e1G5RtLKV4oFi6x+rQgxh2+yu887j3l/3TLgatuv1L8/5zhc9gKEhATTxOh0e52Rtd9dDWQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260710.1':
- resolution: {integrity: sha512-kDwDPItBjAI4JL0df9Fma2N+Qggbm77IB/DnroAkEGQ79fpR80sYMyuB/ZQKyjEk9f48Ocq7HCCLq59qVSyNqA==}
+ '@cloudflare/workerd-linux-arm64@1.20260714.1':
+ resolution: {integrity: sha512-rMm3G+NirG2UdgHIRDdF1asNC6FqgIzZzkRG+VDhhDGcVxAQwvrMT1E38BivEvHr3G04MB4AfhcOczX0+GtRkQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260710.1':
- resolution: {integrity: sha512-GcLHy1oN1dfK6g1Z7UDV9f5xMGyTfPwcjWQ0sfWKH31IsoEVCRapnj3IC0PoIrDbnoo6irGPP0CwVs3WzdTajw==}
+ '@cloudflare/workerd-windows-64@1.20260714.1':
+ resolution: {integrity: sha512-cGqnU3Hg2YZS/k3SAqrMp1DjpdsyFde72tWltdl6ZT9+SFz/Zrk/8gyTU1TcxC4YApXeNVH5TyU5cOGPgUJ0pg==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260717.1':
- resolution: {integrity: sha512-En+uoU8kbQoUcJMAPOQU+3hyQ4INEpiPO04GIyuh5b0Q5+uPB6az+icvkl+SoSzN3gbQFHZACpShRY+AK3zD1Q==}
+ '@cloudflare/workers-types@5.20260719.1':
+ resolution: {integrity: sha512-DcGasbfUuczQilc80vhL2MPPdWcaxWkx0hN5IW9UdNDBdrRvWcal3akSJ6Ccm7e8+/OGeR+8tYrqkykA3YGSZw==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -3681,7 +3681,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -4982,8 +4982,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260710.0:
- resolution: {integrity: sha512-x1LLRkU6o1p7hiKrB0TRnL0MJn6xFOT+/vrlEQINz5cRDKLP8ru4hBqWTIvXAetzr1acKAnmAaG84pQ4W/K14g==}
+ miniflare@4.20260714.0:
+ resolution: {integrity: sha512-MYlTCLdWCPqvrYY2uLwOjXwmglXuiHE3TGGkbOW4BwjUPa1r07E0iuHwrNDIs/sxK21r+o90Jx58AV2KeNdJZw==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -6390,17 +6390,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260710.1:
- resolution: {integrity: sha512-U2sBPPrb9U97sBKnnMN6Kv8p65903P35nwMkPE9vSH/bRuRqkZ3a1EjUw3jV28RhiyXpkLF77Evzw8XimFxyTw==}
+ workerd@1.20260714.1:
+ resolution: {integrity: sha512-oIbQzfdyl9UQUnG6XLegcSq0Mgt/7WKDbFOoqGgOWCS+/fhyGB460uKEgdAQQ9RHCO/ttcNCX/KiMIQzdoeu3Q==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.111.0:
- resolution: {integrity: sha512-bffpI9EyrnpKkF/1S+RaIv8oRD93GtbsA7TlfWwOsGJGB7VO3jVbdGzpC9TU7Bqom3z7jUxcte4Z9MPhaQ4HoQ==}
+ wrangler@4.112.0:
+ resolution: {integrity: sha512-5H+XUD0TySCv1LuktFHDIEOkboH2nTfQs+35L+USt3MtntjDTMVIJprLgQcL2WBjulOyjxpd1vyTiSTJVW5MjQ==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^5.20260710.1
+ '@cloudflare/workers-types': ^5.20260714.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6694,43 +6694,43 @@ snapshots:
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260710.1
+ workerd: 1.20260714.1
- '@cloudflare/vitest-pool-workers@0.18.5(@cloudflare/workers-types@5.20260717.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.6(@cloudflare/workers-types@5.20260719.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
- miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
- bufferutil
- utf-8-validate
- '@cloudflare/workerd-darwin-64@1.20260710.1':
+ '@cloudflare/workerd-darwin-64@1.20260714.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260710.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260714.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260710.1':
+ '@cloudflare/workerd-linux-64@1.20260714.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260710.1':
+ '@cloudflare/workerd-linux-arm64@1.20260714.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260710.1':
+ '@cloudflare/workerd-windows-64@1.20260714.1':
optional: true
- '@cloudflare/workers-types@5.20260717.1': {}
+ '@cloudflare/workers-types@5.20260719.1': {}
'@colors/colors@1.6.0': {}
@@ -10708,12 +10708,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.28.0
- workerd: 1.20260710.1
+ workerd: 1.20260714.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -12243,26 +12243,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260710.1:
+ workerd@1.20260714.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260710.1
- '@cloudflare/workerd-darwin-arm64': 1.20260710.1
- '@cloudflare/workerd-linux-64': 1.20260710.1
- '@cloudflare/workerd-linux-arm64': 1.20260710.1
- '@cloudflare/workerd-windows-64': 1.20260710.1
+ '@cloudflare/workerd-darwin-64': 1.20260714.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260714.1
+ '@cloudflare/workerd-linux-64': 1.20260714.1
+ '@cloudflare/workerd-linux-arm64': 1.20260714.1
+ '@cloudflare/workerd-windows-64': 1.20260714.1
- wrangler@4.111.0(@cloudflare/workers-types@5.20260717.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260710.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1)
blake3-wasm: 2.1.5
esbuild: 0.28.1
- miniflare: 4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260710.1
+ workerd: 1.20260714.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260717.1
+ '@cloudflare/workers-types': 5.20260719.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From e63c66fc2e48d8cac7cc8077516f783494c690a2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 20:04:15 +0800
Subject: [PATCH 363/670] chore(deps): bump MatteoGabriele/agentscan-action
from 2.0.1 to 2.2.0 (#22760)
Bumps [MatteoGabriele/agentscan-action](https://github.com/matteogabriele/agentscan-action) from 2.0.1 to 2.2.0.
- [Release notes](https://github.com/matteogabriele/agentscan-action/releases)
- [Commits](https://github.com/matteogabriele/agentscan-action/compare/c7d61446e7aece6bdd3edcee4558bbfc0392615e...e02ef270c024bfad3541b2a71619c3c9f20b3312)
---
updated-dependencies:
- dependency-name: MatteoGabriele/agentscan-action
dependency-version: 2.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/lint.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 9f315d2c15cc..f07e0e6060d0 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -107,7 +107,7 @@ jobs:
restore-keys: agentscan-cache-
- name: AgentScan
- uses: MatteoGabriele/agentscan-action@c7d61446e7aece6bdd3edcee4558bbfc0392615e # v2.0.1
+ uses: MatteoGabriele/agentscan-action@e02ef270c024bfad3541b2a71619c3c9f20b3312 # v2.2.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
trusted-author-associations: 'collaborator,member,owner'
From 81af981d677eecc0dc50120f0d29a82a63bc7586 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 20:17:37 +0800
Subject: [PATCH 364/670] chore(deps): bump @honeybadger-io/js from 6.14.0 to
6.15.0 (#22764)
Bumps [@honeybadger-io/js](https://github.com/honeybadger-io/honeybadger-js) from 6.14.0 to 6.15.0.
- [Release notes](https://github.com/honeybadger-io/honeybadger-js/releases)
- [Commits](https://github.com/honeybadger-io/honeybadger-js/compare/@honeybadger-io/js@6.14.0...@honeybadger-io/js@6.15.0)
---
updated-dependencies:
- dependency-name: "@honeybadger-io/js"
dependency-version: 6.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 958b0b41c0e8..d7859c270008 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"@bbob/plugin-helper": "4.3.1",
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
- "@honeybadger-io/js": "6.14.0",
+ "@honeybadger-io/js": "6.15.0",
"@hono/node-server": "2.0.10",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c3816a6938b3..de425c260e7f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -44,8 +44,8 @@ importers:
specifier: 33.0.0
version: 33.0.0
'@honeybadger-io/js':
- specifier: 6.14.0
- version: 6.14.0
+ specifier: 6.15.0
+ version: 6.15.0
'@hono/node-server':
specifier: 2.0.10
version: 2.0.10(hono@4.12.31)
@@ -1084,12 +1084,12 @@ packages:
resolution: {integrity: sha512-PW3SdoZ8ULzW0We0lgplyZHjuXJtOdRvU5RL6ErNUlcTeSqjoHtk1pWdHKTwk3brPuIiqUB26K7fX84VroDqRg==}
engines: {node: '>=12.0.0'}
- '@honeybadger-io/core@6.9.0':
- resolution: {integrity: sha512-nHkTigMgqABQ6XuhZ4/2cVIArwImctdWfmu/ckWLoF5E4JlATe9WUL3hMRL8UZPmu/ThmbojxkLwDgHts1LyUA==}
+ '@honeybadger-io/core@6.10.0':
+ resolution: {integrity: sha512-U3hVsd/l55SCV5s7pkYZeOZcMx5dRevnrPcF99AZyjGxsnIbT4+GcCdmd5vfrvzw23SFM/0U40zwd5shR3ohsw==}
engines: {node: '>=14'}
- '@honeybadger-io/js@6.14.0':
- resolution: {integrity: sha512-ZQGop/Ik7vyRJzW/wzE1CL4611fz9+5arrMdS0ivrzDmm/4BQeK4OKZlwfMZqEZtODwfnl32ngh0ayW/jahoSg==}
+ '@honeybadger-io/js@6.15.0':
+ resolution: {integrity: sha512-MYBdQuaq/8tJ+w75+H9CnVRZrZKl0DiBSvu3hkS7w6tGVqJaIW6uDptg9MC/ltOgIvEECQWCy5Db9j+sXxcScg==}
engines: {node: '>=14'}
hasBin: true
@@ -3681,7 +3681,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -7018,14 +7018,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@honeybadger-io/core@6.9.0':
+ '@honeybadger-io/core@6.10.0':
dependencies:
json-nd: 1.0.0
stacktrace-parser: 0.1.11
- '@honeybadger-io/js@6.14.0':
+ '@honeybadger-io/js@6.15.0':
dependencies:
- '@honeybadger-io/core': 6.9.0
+ '@honeybadger-io/core': 6.10.0
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
From 86aa09e61be238dd6923e40304d21f7dcd0e3438 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 20:29:11 +0800
Subject: [PATCH 365/670] chore(deps-dev): bump lint-staged from 17.0.8 to
17.1.0 (#22763)
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 17.0.8 to 17.1.0.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v17.0.8...v17.1.0)
---
updated-dependencies:
- dependency-name: lint-staged
dependency-version: 17.1.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 175 ++-----------------------------------------------
2 files changed, 6 insertions(+), 171 deletions(-)
diff --git a/package.json b/package.json
index d7859c270008..3729837291fa 100644
--- a/package.json
+++ b/package.json
@@ -187,7 +187,7 @@
"globals": "17.7.0",
"husky": "9.1.7",
"js-beautify": "2.0.3",
- "lint-staged": "17.0.8",
+ "lint-staged": "17.1.0",
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index de425c260e7f..6fbec76d9493 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -411,8 +411,8 @@ importers:
specifier: 2.0.3
version: 2.0.3
lint-staged:
- specifier: 17.0.8
- version: 17.0.8
+ specifier: 17.1.0
+ version: 17.1.0
mockdate:
specifier: 3.0.5
version: 3.0.5
@@ -3193,10 +3193,6 @@ packages:
ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
- ansi-escapes@7.3.0:
- resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
- engines: {node: '>=18'}
-
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -3436,14 +3432,6 @@ packages:
class-transformer@0.3.1:
resolution: {integrity: sha512-cKFwohpJbuMovS8xVLmn8N2AUbAuc8pVo4zEfsUVo8qgECOogns1WVk/FkOZoxhOPTyTYFckuoH+13FO+MQ8GA==}
- cli-cursor@5.0.0:
- resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
- engines: {node: '>=18'}
-
- cli-truncate@5.2.0:
- resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==}
- engines: {node: '>=20'}
-
cli-width@4.1.0:
resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
engines: {node: '>= 12'}
@@ -3760,9 +3748,6 @@ packages:
electron-to-chromium@1.5.392:
resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==}
- emoji-regex@10.6.0:
- resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3809,10 +3794,6 @@ packages:
resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
engines: {node: '>=20.19.0'}
- environment@1.1.0:
- resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
- engines: {node: '>=18'}
-
error-stack-parser-es@1.0.5:
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
@@ -3997,9 +3978,6 @@ packages:
event-emitter@0.3.5:
resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
- eventemitter3@5.0.4:
- resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
-
execa@8.0.1:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
@@ -4144,10 +4122,6 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-east-asian-width@1.6.0:
- resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
- engines: {node: '>=18'}
-
get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
@@ -4443,10 +4417,6 @@ packages:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
- is-fullwidth-code-point@5.1.0:
- resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
- engines: {node: '>=18'}
-
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -4730,15 +4700,11 @@ packages:
linkify-it@5.0.2:
resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==}
- lint-staged@17.0.8:
- resolution: {integrity: sha512-B2P/d+jVW0UXOQ0MVMLrB/9ydA1P+zz6jYfdrbbEd9ur3S2rcbduFWKiUCC02Sm5hbC8nrm7y24WuYMG54HfxA==}
+ lint-staged@17.1.0:
+ resolution: {integrity: sha512-d7UQRu/9ZPgfu4+hu/k0wny5GEaIxo+2jb2LJqQDkE7cHRTm1HGqNUDq5UOwsGPpjpaNAFmgAsYo3TR+i9cSJw==}
engines: {node: '>=22.22.1'}
hasBin: true
- listr2@10.2.2:
- resolution: {integrity: sha512-JtNtbZj8q5BnDMR7trpwvwk3RIrANtIVzEUm8w7amp6xelLgyuq+4WZoTH913XaQAoH/cNdYhaNzBPA2U3xbDw==}
- engines: {node: '>=22.13.0'}
-
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -4750,10 +4716,6 @@ packages:
lodash@4.18.1:
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
- log-update@6.1.0:
- resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
- engines: {node: '>=18'}
-
logform@2.7.0:
resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==}
engines: {node: '>= 12.0.0'}
@@ -4974,10 +4936,6 @@ packages:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
- mimic-function@5.0.1:
- resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
- engines: {node: '>=18'}
-
mimic-response@4.0.0:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5161,10 +5119,6 @@ packages:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
- onetime@7.0.0:
- resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
- engines: {node: '>=18'}
-
open@8.4.2:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'}
@@ -5577,19 +5531,12 @@ packages:
resolution: {integrity: sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==}
engines: {node: '>=20'}
- restore-cursor@5.1.0:
- resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
- engines: {node: '>=18'}
-
rettime@0.11.11:
resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==}
rfc4648@1.5.4:
resolution: {integrity: sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==}
- rfdc@1.4.1:
- resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
-
rimraf@5.0.10:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
@@ -5691,14 +5638,6 @@ packages:
simplecc-wasm@1.1.1:
resolution: {integrity: sha512-NHBvSBlnOk7nqiNKvNpG/3DqD4XBkls3CqmTl4t3At4v7N9z1HO2t9g7vK//0o33zcgVOKE59vFcyCcgCuw6zQ==}
- slice-ansi@7.1.2:
- resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
- engines: {node: '>=18'}
-
- slice-ansi@8.0.0:
- resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==}
- engines: {node: '>=20'}
-
slide@1.1.6:
resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==}
@@ -5798,14 +5737,6 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string-width@7.2.0:
- resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
- engines: {node: '>=18'}
-
- string-width@8.2.2:
- resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==}
- engines: {node: '>=20'}
-
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -6405,10 +6336,6 @@ packages:
'@cloudflare/workers-types':
optional: true
- wrap-ansi@10.0.0:
- resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==}
- engines: {node: '>=20'}
-
wrap-ansi@6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
@@ -6421,10 +6348,6 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
- wrap-ansi@9.0.2:
- resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
- engines: {node: '>=18'}
-
write-file-atomic@1.3.4:
resolution: {integrity: sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==}
@@ -8652,10 +8575,6 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- ansi-escapes@7.3.0:
- dependencies:
- environment: 1.1.0
-
ansi-regex@5.0.1: {}
ansi-regex@6.2.2: {}
@@ -8867,15 +8786,6 @@ snapshots:
class-transformer@0.3.1: {}
- cli-cursor@5.0.0:
- dependencies:
- restore-cursor: 5.1.0
-
- cli-truncate@5.2.0:
- dependencies:
- slice-ansi: 8.0.0
- string-width: 8.2.2
-
cli-width@4.1.0: {}
clipboardy@4.0.0:
@@ -9154,8 +9064,6 @@ snapshots:
electron-to-chromium@1.5.392: {}
- emoji-regex@10.6.0: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -9190,8 +9098,6 @@ snapshots:
entities@8.0.0: {}
- environment@1.1.0: {}
-
error-stack-parser-es@1.0.5: {}
es-define-property@1.0.1: {}
@@ -9484,8 +9390,6 @@ snapshots:
d: 1.0.2
es5-ext: 0.10.64
- eventemitter3@5.0.4: {}
-
execa@8.0.1:
dependencies:
cross-spawn: 7.0.6
@@ -9640,8 +9544,6 @@ snapshots:
get-caller-file@2.0.5: {}
- get-east-asian-width@1.6.0: {}
-
get-stream@8.0.1: {}
get-stream@9.0.1:
@@ -9999,10 +9901,6 @@ snapshots:
is-fullwidth-code-point@3.0.0: {}
- is-fullwidth-code-point@5.1.0:
- dependencies:
- get-east-asian-width: 1.6.0
-
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
@@ -10268,23 +10166,14 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- lint-staged@17.0.8:
+ lint-staged@17.1.0:
dependencies:
- listr2: 10.2.2
picomatch: 4.0.5
string-argv: 0.3.2
tinyexec: 1.2.4
optionalDependencies:
yaml: 2.9.0
- listr2@10.2.2:
- dependencies:
- cli-truncate: 5.2.0
- eventemitter3: 5.0.4
- log-update: 6.1.0
- rfdc: 1.4.1
- wrap-ansi: 10.0.0
-
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@@ -10293,14 +10182,6 @@ snapshots:
lodash@4.18.1: {}
- log-update@6.1.0:
- dependencies:
- ansi-escapes: 7.3.0
- cli-cursor: 5.0.0
- slice-ansi: 7.1.2
- strip-ansi: 7.2.0
- wrap-ansi: 9.0.2
-
logform@2.7.0:
dependencies:
'@colors/colors': 1.6.0
@@ -10704,8 +10585,6 @@ snapshots:
mimic-fn@4.0.0: {}
- mimic-function@5.0.1: {}
-
mimic-response@4.0.0: {}
miniflare@4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
@@ -10878,10 +10757,6 @@ snapshots:
dependencies:
mimic-fn: 4.0.0
- onetime@7.0.0:
- dependencies:
- mimic-function: 5.0.1
-
open@8.4.2:
dependencies:
define-lazy-prop: 2.0.0
@@ -11408,17 +11283,10 @@ snapshots:
dependencies:
lowercase-keys: 3.0.0
- restore-cursor@5.1.0:
- dependencies:
- onetime: 7.0.0
- signal-exit: 4.1.0
-
rettime@0.11.11: {}
rfc4648@1.5.4: {}
- rfdc@1.4.1: {}
-
rimraf@5.0.10:
dependencies:
glob: 10.5.0
@@ -11596,16 +11464,6 @@ snapshots:
simplecc-wasm@1.1.1: {}
- slice-ansi@7.1.2:
- dependencies:
- ansi-styles: 6.2.3
- is-fullwidth-code-point: 5.1.0
-
- slice-ansi@8.0.0:
- dependencies:
- ansi-styles: 6.2.3
- is-fullwidth-code-point: 5.1.0
-
slide@1.1.6: {}
smart-buffer@4.2.0: {}
@@ -11702,17 +11560,6 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.2.0
- string-width@7.2.0:
- dependencies:
- emoji-regex: 10.6.0
- get-east-asian-width: 1.6.0
- strip-ansi: 7.2.0
-
- string-width@8.2.2:
- dependencies:
- get-east-asian-width: 1.6.0
- strip-ansi: 7.2.0
-
string_decoder@1.3.0:
dependencies:
safe-buffer: '@nolyfill/safe-buffer@1.0.44'
@@ -12268,12 +12115,6 @@ snapshots:
- bufferutil
- utf-8-validate
- wrap-ansi@10.0.0:
- dependencies:
- ansi-styles: 6.2.3
- string-width: 8.2.2
- strip-ansi: 7.2.0
-
wrap-ansi@6.2.0:
dependencies:
ansi-styles: 4.3.0
@@ -12292,12 +12133,6 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.2.0
- wrap-ansi@9.0.2:
- dependencies:
- ansi-styles: 6.2.3
- string-width: 7.2.0
- strip-ansi: 7.2.0
-
write-file-atomic@1.3.4:
dependencies:
graceful-fs: 4.2.11
From abb7a21e28f6891c95b36cc4b018a2b725ce67bf Mon Sep 17 00:00:00 2001
From: Serhii Hospodarchuk <69005134+gosxrgxx@users.noreply.github.com>
Date: Mon, 20 Jul 2026 16:31:04 +0300
Subject: [PATCH 366/670] feat(core): add summary field support for atom and
json feed (#22758)
* fix(core): summary field in json feed
* feat(core): add summary field to atom
* test: update json view test to match the new summary field
---
lib/types.ts | 1 +
lib/views/atom.test.tsx | 1 +
lib/views/atom.tsx | 1 +
lib/views/json.test.ts | 2 +-
lib/views/json.ts | 2 +-
5 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/types.ts b/lib/types.ts
index 54c128ae3958..a565a21be7dd 100644
--- a/lib/types.ts
+++ b/lib/types.ts
@@ -50,6 +50,7 @@ export type DataItem = {
html: string;
text: string;
};
+ summary?: string;
image?: string;
banner?: string;
updated?: number | string | Date;
diff --git a/lib/views/atom.test.tsx b/lib/views/atom.test.tsx
index 8010a8cec630..59bac8f50593 100644
--- a/lib/views/atom.test.tsx
+++ b/lib/views/atom.test.tsx
@@ -22,6 +22,7 @@ describe('Atom view', () => {
description: 'Entry One',
pubDate: '2024-01-01T00:00:00Z',
updated: '2024-01-02T00:00:00Z',
+ summary: 'Entry One',
author: 'Author One',
category: 'News',
media: {
diff --git a/lib/views/atom.tsx b/lib/views/atom.tsx
index 71ccabd688d5..f2c997663f59 100644
--- a/lib/views/atom.tsx
+++ b/lib/views/atom.tsx
@@ -25,6 +25,7 @@ const RSS: FC<{ data: Data }> = ({ data }) => (
{item.guid || item.link || item.title}
{item.pubDate && {new Date(item.pubDate).toISOString()}}
{new Date(item.updated || item.pubDate || new Date()).toISOString()}
+ {item.summary && {item.summary}}
{item.author && (
{item.author}
diff --git a/lib/views/json.test.ts b/lib/views/json.test.ts
index f18046ca44bc..ddfd7671da2a 100644
--- a/lib/views/json.test.ts
+++ b/lib/views/json.test.ts
@@ -16,7 +16,7 @@ describe('JSON view', () => {
{
title: 'Item One',
link: 'https://example.com/one',
- description: 'Entry One',
+ summary: 'Entry One',
guid: 'guid-1',
content: {
html: 'hello
',
diff --git a/lib/views/json.ts b/lib/views/json.ts
index f79536f50de4..5dfff9a83479 100644
--- a/lib/views/json.ts
+++ b/lib/views/json.ts
@@ -22,7 +22,7 @@ const json = (data: Data) => {
// content_html and content_text are each optional strings — but one or both must be present
content_html: (item.content && item.content.html) || item.description || item.title,
content_text: item.content && item.content.text,
- summary: item.description,
+ summary: item.summary,
image: item.image || item.itunes_item_image,
banner_image: item.banner,
date_published: item.pubDate,
From de93618f1838df9c8bcf09cf21d237499f0444d2 Mon Sep 17 00:00:00 2001
From: Sryvkver <20717854+Sryvkver@users.noreply.github.com>
Date: Tue, 21 Jul 2026 04:03:19 +0200
Subject: [PATCH 367/670] fix(route/fanbox): refactor to use playwright to load
posts (#22681)
* fix(route/fanbox): refactor to use playwright to load posts
* fix(route/fanbox) added missing await
* fix(route/fanbox) closing context after page close
* fix(route/fanbox) Update model to conform to new API response
---------
Co-authored-by: Sryvkver
---
lib/routes/fanbox/index.ts | 38 ++++++++++++++++++++++++++++++++++---
lib/routes/fanbox/types.ts | 4 +++-
lib/routes/fanbox/utils.tsx | 38 ++++++++++++++++++++++++++++++-------
3 files changed, 69 insertions(+), 11 deletions(-)
diff --git a/lib/routes/fanbox/index.ts b/lib/routes/fanbox/index.ts
index 487b5bc98e41..4e8a0d4855d2 100644
--- a/lib/routes/fanbox/index.ts
+++ b/lib/routes/fanbox/index.ts
@@ -1,12 +1,14 @@
import type { Context } from 'hono';
import InvalidParameterError from '@/errors/types/invalid-parameter';
-import type { Data, Route } from '@/types';
+import type { Data, DataItem, Route } from '@/types';
import ofetch from '@/utils/ofetch';
+import playwright from '@/utils/playwright';
+import { setCookies } from '@/utils/playwright-utils';
import { isValidHost } from '@/utils/valid-host';
import type { PostListResponse, UserInfoResponse } from './types';
-import { getHeaders, parseItem } from './utils';
+import { getCookieString, getHeaders, parseItem } from './utils';
export const route: Route = {
path: '/:creator',
@@ -24,6 +26,7 @@ export const route: Route = {
optional: true,
},
],
+ requirePuppeteer: true,
nsfw: true,
},
};
@@ -53,7 +56,36 @@ async function handler(ctx: Context): Promise {
}
const postListResponse = (await ofetch(`https://api.fanbox.cc/post.listCreator?creatorId=${creator}&limit=20&withPinned=true`, { headers: getHeaders() })) as PostListResponse;
- const items = await Promise.all(postListResponse.body.map((i) => parseItem(i)));
+
+ const context = await playwright();
+ const page = await context.newPage();
+
+ const cookieString = getCookieString();
+ if (cookieString) {
+ await setCookies(page, cookieString, '.fanbox.cc');
+ }
+
+ await page.route('**/*', (route) => {
+ const request = route.request();
+
+ if (request.url().startsWith('https://api.fanbox.cc/post.info')) {
+ route.continue();
+ return;
+ }
+
+ request.resourceType() === 'document' ? route.continue() : route.abort();
+ });
+ await page.goto('https://www.fanbox.cc/', {
+ waitUntil: 'domcontentloaded',
+ });
+
+ let items: DataItem[];
+ try {
+ items = await Promise.all(postListResponse.body.map((i) => parseItem(page, i)));
+ } finally {
+ await page.close();
+ await context.close();
+ }
return {
title,
diff --git a/lib/routes/fanbox/types.ts b/lib/routes/fanbox/types.ts
index cb447ef06118..774843c3963d 100644
--- a/lib/routes/fanbox/types.ts
+++ b/lib/routes/fanbox/types.ts
@@ -29,7 +29,9 @@ export interface PostListResponse {
}
export interface PostDetailResponse {
- body: PostDetail;
+ body: {
+ post: PostDetail;
+ };
}
export interface PostItem {
diff --git a/lib/routes/fanbox/utils.tsx b/lib/routes/fanbox/utils.tsx
index f0d6d6713031..2abc076a4a64 100644
--- a/lib/routes/fanbox/utils.tsx
+++ b/lib/routes/fanbox/utils.tsx
@@ -5,18 +5,22 @@ import type { DataItem } from '@/types';
import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
+import type { Page } from '@/utils/playwright';
import type { ArticlePost, FilePost, ImagePost, PostDetailResponse, PostItem, TextPost, VideoPost } from './types';
export function getHeaders() {
- const sessionid = config.fanbox.session;
- const cookie = sessionid ? `FANBOXSESSID=${sessionid}` : '';
return {
origin: 'https://fanbox.cc',
- cookie,
+ cookie: getCookieString(),
};
}
+export function getCookieString() {
+ const sessionid = config.fanbox.session;
+ return sessionid ? `FANBOXSESSID=${sessionid}` : '';
+}
+
function embedUrlMap(urlEmbed: ArticlePost['body']['urlEmbedMap'][string]) {
switch (urlEmbed.type) {
case 'html':
@@ -131,7 +135,7 @@ async function parseArtile(body: ArticlePost['body']) {
return ret.join('');
}
-async function parseDetail(i: PostDetailResponse['body']) {
+async function parseDetail(i: PostDetailResponse['body']['post']) {
let ret = '';
if (i.feeRequired !== 0) {
ret += `Fee Required: ${i.feeRequired} JPY/month
`;
@@ -167,12 +171,32 @@ async function parseDetail(i: PostDetailResponse['body']) {
return ret;
}
-export function parseItem(item: PostItem) {
+export function parseItem(page: Page, item: PostItem) {
return cache.tryGet(`fanbox-${item.id}-${item.updatedDatetime}`, async () => {
- const postDetail = (await ofetch(`https://api.fanbox.cc/post.info?postId=${item.id}`, { headers: { ...getHeaders(), 'User-Agent': config.trueUA } })) as PostDetailResponse;
+ const postDetail: PostDetailResponse = await page.evaluate(
+ async ({ url }) => {
+ const res = await fetch(url, {
+ method: 'GET',
+ credentials: 'include',
+ headers: {
+ 'Sec-Fetch-Dest': 'empty',
+ 'Sec-Fetch-Mode': 'cors',
+ 'Sec-Fetch-Site': 'same-site',
+ },
+ });
+
+ if (!res.ok) {
+ throw new Error(`HTTP error! status: ${res.status}`);
+ }
+
+ return res.json();
+ },
+ { url: `https://api.fanbox.cc/post.info?postId=${item.id}` }
+ );
+
return {
title: item.title || 'No title',
- description: await parseDetail(postDetail.body),
+ description: await parseDetail(postDetail.body.post),
pubDate: parseDate(item.updatedDatetime),
link: `https://${item.creatorId}.fanbox.cc/posts/${item.id}`,
category: item.tags,
From e6b750f22b7e98cee3c8ed65107213018c1467e6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 08:06:52 +0000
Subject: [PATCH 368/670] chore(deps): bump actions/checkout from 7.0.0 to
7.0.1 (#22773)
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 7.0.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/build-assets.yml | 4 ++--
.github/workflows/codeql.yml | 2 +-
.github/workflows/comment-on-issue.yml | 4 ++--
.github/workflows/dependabot-fork.yml | 2 +-
.github/workflows/docker-release.yml | 4 ++--
.github/workflows/docker-test-cont.yml | 2 +-
.github/workflows/docker-test.yml | 2 +-
.github/workflows/format.yml | 2 +-
.github/workflows/issue-command.yml | 8 ++++----
.github/workflows/lint.yml | 2 +-
.github/workflows/npm-publish.yml | 2 +-
.github/workflows/pr-review.yml | 2 +-
.github/workflows/semgrep.yml | 2 +-
.github/workflows/similar-issues.yml | 2 +-
.github/workflows/test-full-routes.yml | 2 +-
.github/workflows/test.yml | 6 +++---
.github/workflows/update-nix-hash.yml | 2 +-
17 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml
index 3158d9791682..4c0798c9c390 100644
--- a/.github/workflows/build-assets.yml
+++ b/.github/workflows/build-assets.yml
@@ -18,7 +18,7 @@ jobs:
contents: write
steps:
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Use Node.js Active LTS
@@ -51,7 +51,7 @@ jobs:
if: ${{ env.DOCS_API_TOKEN != '' }}
run: echo "defined=true" >> $GITHUB_OUTPUT
- name: Checkout docs
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.check-docs-env.outputs.defined == 'true'
with:
repository: 'RSSNext/rsshub-docs'
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index a0093b2d53a7..3edda4f7d8b7 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -48,7 +48,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
# Initializes the CodeQL tools for scanning.
# TODO: use hash pinning when https://github.com/dependabot/dependabot-core/pull/13007 pass
diff --git a/.github/workflows/comment-on-issue.yml b/.github/workflows/comment-on-issue.yml
index d2952e479323..2381ed7aef23 100644
--- a/.github/workflows/comment-on-issue.yml
+++ b/.github/workflows/comment-on-issue.yml
@@ -26,7 +26,7 @@ jobs:
outputs:
closed: ${{ steps.check.outputs.closed }}
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
@@ -60,7 +60,7 @@ jobs:
(needs.checkIssue.result == 'success' || needs.checkIssue.result == 'skipped') &&
needs.checkIssue.outputs.closed != 'true'
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
diff --git a/.github/workflows/dependabot-fork.yml b/.github/workflows/dependabot-fork.yml
index 3de657ec30d2..ab0c6354d717 100644
--- a/.github/workflows/dependabot-fork.yml
+++ b/.github/workflows/dependabot-fork.yml
@@ -10,7 +10,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Comment Dependabot PR
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index 10c1227fb8ce..f6c774e17585 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -61,7 +61,7 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Extract repository name
id: repo-name
@@ -277,7 +277,7 @@ jobs:
if: needs.check-env.outputs.check-docker == 'true'
timeout-minutes: 5
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5.0.0
diff --git a/.github/workflows/docker-test-cont.yml b/.github/workflows/docker-test-cont.yml
index 7f20ab28316c..d193a284f751 100644
--- a/.github/workflows/docker-test-cont.yml
+++ b/.github/workflows/docker-test-cont.yml
@@ -14,7 +14,7 @@ jobs:
actions: read
if: ${{ github.event.workflow_run.conclusion == 'success' }} # skip if unsuccessful
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
# https://github.com/orgs/community/discussions/25220#discussioncomment-11316244
- name: Search the PR that triggered this workflow
diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml
index 9624061fb80e..d3293165f31a 100644
--- a/.github/workflows/docker-test.yml
+++ b/.github/workflows/docker-test.yml
@@ -27,7 +27,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Docker Buildx # needed by `cache-from`
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index e60ab6ad85be..4c5444ab7395 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -14,7 +14,7 @@ jobs:
timeout-minutes: 15
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
diff --git a/.github/workflows/issue-command.yml b/.github/workflows/issue-command.yml
index 732ff9563d89..96ecbfc85a8a 100644
--- a/.github/workflows/issue-command.yml
+++ b/.github/workflows/issue-command.yml
@@ -15,7 +15,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout the latest code
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Automatic Rebase
@@ -49,7 +49,7 @@ jobs:
group: vouch-manage
cancel-in-progress: false
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: vouch
uses: mitchellh/vouch/action/manage-by-issue@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
@@ -102,11 +102,11 @@ jobs:
- name: Checkout
if: ${{ !github.event.issue.pull_request }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Checkout PR
if: github.event.issue.pull_request
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ fromJson(steps.pr-data.outputs.data).head.ref }}
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index f07e0e6060d0..8a06cac56831 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -20,7 +20,7 @@ jobs:
permissions:
security-events: write
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml
index 34117cde510f..e24dbf57f876 100644
--- a/.github/workflows/npm-publish.yml
+++ b/.github/workflows/npm-publish.yml
@@ -22,7 +22,7 @@ jobs:
env:
HUSKY: 0
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml
index ba8cee0b2720..93e7f6df66a8 100644
--- a/.github/workflows/pr-review.yml
+++ b/.github/workflows/pr-review.yml
@@ -22,7 +22,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout repository
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
# https://github.com/orgs/community/discussions/25220#discussioncomment-11316244
- name: Search the PR that triggered this workflow
diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml
index 083e4e78991e..f20c0407ebe7 100644
--- a/.github/workflows/semgrep.yml
+++ b/.github/workflows/semgrep.yml
@@ -22,7 +22,7 @@ jobs:
permissions:
security-events: write
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- run: semgrep ci --sarif > semgrep.sarif
env:
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
diff --git a/.github/workflows/similar-issues.yml b/.github/workflows/similar-issues.yml
index 3269b6822e66..14e95701d0c8 100644
--- a/.github/workflows/similar-issues.yml
+++ b/.github/workflows/similar-issues.yml
@@ -18,7 +18,7 @@ jobs:
issues: write
steps:
- name: Checkout repository
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Check for duplicate issues
uses: anthropics/claude-code-action@v1
diff --git a/.github/workflows/test-full-routes.yml b/.github/workflows/test-full-routes.yml
index fd36f0f40a60..0f7fb60ac3d7 100644
--- a/.github/workflows/test-full-routes.yml
+++ b/.github/workflows/test-full-routes.yml
@@ -14,7 +14,7 @@ jobs:
contents: write
steps:
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Use Node.js Active LTS
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 02bda0de9aff..4b3db5a5dc11 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -30,7 +30,7 @@ jobs:
node-version: [latest, lts/*]
name: Vitest on Node ${{ matrix.node-version }}
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
@@ -77,7 +77,7 @@ jobs:
environment: '{ "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD": "1" }'
name: Vitest Playwright on Node ${{ matrix.node-version }} with ${{ matrix.chromium.name }}
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
@@ -126,7 +126,7 @@ jobs:
node-version: [26, 24]
name: Build radar and maintainer on Node ${{ matrix.node-version }}
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
diff --git a/.github/workflows/update-nix-hash.yml b/.github/workflows/update-nix-hash.yml
index efbb86956d08..6d99b4eeea74 100644
--- a/.github/workflows/update-nix-hash.yml
+++ b/.github/workflows/update-nix-hash.yml
@@ -18,7 +18,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install Nix
uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
with:
From a1f712bb4e1cd5a424d4dec82da851faf69fc59d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 08:20:11 +0000
Subject: [PATCH 369/670] chore(deps): bump p-map from 7.0.5 to 7.0.6 (#22779)
Bumps [p-map](https://github.com/sindresorhus/p-map) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/sindresorhus/p-map/releases)
- [Commits](https://github.com/sindresorhus/p-map/compare/v7.0.5...v7.0.6)
---
updated-dependencies:
- dependency-name: p-map
dependency-version: 7.0.6
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 3729837291fa..f49d7053d6a9 100644
--- a/package.json
+++ b/package.json
@@ -114,7 +114,7 @@
"oauth-1.0a": "2.2.6",
"ofetch": "1.5.1",
"otplib": "13.4.1",
- "p-map": "7.0.5",
+ "p-map": "7.0.6",
"pac-proxy-agent": "9.1.0",
"patchright": "1.61.1",
"query-string": "9.4.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6fbec76d9493..768ae4ba7c78 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -197,8 +197,8 @@ importers:
specifier: 13.4.1
version: 13.4.1
p-map:
- specifier: 7.0.5
- version: 7.0.5
+ specifier: 7.0.6
+ version: 7.0.6
pac-proxy-agent:
specifier: 9.1.0
version: 9.1.0
@@ -5207,8 +5207,8 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- p-map@7.0.5:
- resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==}
+ p-map@7.0.6:
+ resolution: {integrity: sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==}
engines: {node: '>=18'}
p-timeout@6.1.4:
@@ -10922,7 +10922,7 @@ snapshots:
dependencies:
p-limit: 3.1.0
- p-map@7.0.5: {}
+ p-map@7.0.6: {}
p-timeout@6.1.4: {}
From a676fcb8cfbbf9d2aee8998eee43b94f12afd2f2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 08:20:21 +0000
Subject: [PATCH 370/670] chore(deps): bump @honeybadger-io/js from 6.15.0 to
6.15.3 (#22778)
Bumps [@honeybadger-io/js](https://github.com/honeybadger-io/honeybadger-js) from 6.15.0 to 6.15.3.
- [Release notes](https://github.com/honeybadger-io/honeybadger-js/releases)
- [Commits](https://github.com/honeybadger-io/honeybadger-js/compare/@honeybadger-io/js@6.15.0...@honeybadger-io/js@6.15.3)
---
updated-dependencies:
- dependency-name: "@honeybadger-io/js"
dependency-version: 6.15.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index f49d7053d6a9..4696ec466054 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"@bbob/plugin-helper": "4.3.1",
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
- "@honeybadger-io/js": "6.15.0",
+ "@honeybadger-io/js": "6.15.3",
"@hono/node-server": "2.0.10",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 768ae4ba7c78..1b3f5798544e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -44,8 +44,8 @@ importers:
specifier: 33.0.0
version: 33.0.0
'@honeybadger-io/js':
- specifier: 6.15.0
- version: 6.15.0
+ specifier: 6.15.3
+ version: 6.15.3
'@hono/node-server':
specifier: 2.0.10
version: 2.0.10(hono@4.12.31)
@@ -1084,12 +1084,12 @@ packages:
resolution: {integrity: sha512-PW3SdoZ8ULzW0We0lgplyZHjuXJtOdRvU5RL6ErNUlcTeSqjoHtk1pWdHKTwk3brPuIiqUB26K7fX84VroDqRg==}
engines: {node: '>=12.0.0'}
- '@honeybadger-io/core@6.10.0':
- resolution: {integrity: sha512-U3hVsd/l55SCV5s7pkYZeOZcMx5dRevnrPcF99AZyjGxsnIbT4+GcCdmd5vfrvzw23SFM/0U40zwd5shR3ohsw==}
+ '@honeybadger-io/core@6.10.2':
+ resolution: {integrity: sha512-iLj5fmz6v5+ry3+Guv2WFTxZ9Bz1KJUhBYme/uwQfSKguNH4ylgzOnvvoBX8uGDcGaOGSBu3L9OedP6fi1yGYg==}
engines: {node: '>=14'}
- '@honeybadger-io/js@6.15.0':
- resolution: {integrity: sha512-MYBdQuaq/8tJ+w75+H9CnVRZrZKl0DiBSvu3hkS7w6tGVqJaIW6uDptg9MC/ltOgIvEECQWCy5Db9j+sXxcScg==}
+ '@honeybadger-io/js@6.15.3':
+ resolution: {integrity: sha512-SQxuR9JAAqxQx6uglT6NICIxMGiCw7KmP1ULmUsRKEWQ1yykY+LlMW14DarH591+AEjAehp8EPiBwBH6l4xu8g==}
engines: {node: '>=14'}
hasBin: true
@@ -6941,14 +6941,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@honeybadger-io/core@6.10.0':
+ '@honeybadger-io/core@6.10.2':
dependencies:
json-nd: 1.0.0
stacktrace-parser: 0.1.11
- '@honeybadger-io/js@6.15.0':
+ '@honeybadger-io/js@6.15.3':
dependencies:
- '@honeybadger-io/core': 6.10.0
+ '@honeybadger-io/core': 6.10.2
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
From 36ed36ab8e13a83b9a86e80ed3c54930360cfd9d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 08:26:51 +0000
Subject: [PATCH 371/670] chore(deps): bump @hono/node-server from 2.0.10 to
2.0.11 (#22780)
Bumps [@hono/node-server](https://github.com/honojs/node-server) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](https://github.com/honojs/node-server/compare/v2.0.10...v2.0.11)
---
updated-dependencies:
- dependency-name: "@hono/node-server"
dependency-version: 2.0.11
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 4696ec466054..1a4942673416 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.15.3",
- "@hono/node-server": "2.0.10",
+ "@hono/node-server": "2.0.11",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1b3f5798544e..dede323f2443 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,8 +47,8 @@ importers:
specifier: 6.15.3
version: 6.15.3
'@hono/node-server':
- specifier: 2.0.10
- version: 2.0.10(hono@4.12.31)
+ specifier: 2.0.11
+ version: 2.0.11(hono@4.12.31)
'@hono/zod-openapi':
specifier: 1.5.1
version: 1.5.1(hono@4.12.31)(zod@4.4.3)
@@ -1093,8 +1093,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- '@hono/node-server@2.0.10':
- resolution: {integrity: sha512-ZcnNVhKTmyDJeg0UlnZjvM73JBsTAuhrH/J4fjwGOw59PwOW51r4J+p6CsKZWXdKSme4MFqU62CZMOsdDrU4CA==}
+ '@hono/node-server@2.0.11':
+ resolution: {integrity: sha512-bjD221KPLoJTWUwso1J6fGKiTXEUFedG/s0visavY4zakFPkeGURMRNly+FhBHs7T8Dz4qHaZIMX9ZoJHSJtKA==}
engines: {node: '>=20'}
peerDependencies:
hono: ^4
@@ -6952,7 +6952,7 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.10(hono@4.12.31)':
+ '@hono/node-server@2.0.11(hono@4.12.31)':
dependencies:
hono: 4.12.31
From b9c797de3346d7ffd44cddca153b4eba6e43a72b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 16:55:22 +0800
Subject: [PATCH 372/670] chore(deps): bump actions/labeler from 6.2.0 to 7.0.0
(#22774)
Bumps [actions/labeler](https://github.com/actions/labeler) from 6.2.0 to 7.0.0.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/b8dd2d9be0f68b860e7dae5dae7d772984eacd6d...bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13)
---
updated-dependencies:
- dependency-name: actions/labeler
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/lint.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 8a06cac56831..a22f82fa636e 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -65,7 +65,7 @@ jobs:
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- - uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d # v6.2.0
+ - uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
sync-labels: true
From b4848ef7e4ab63608e1a65ef5853e7c8415674f7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 17:00:12 +0800
Subject: [PATCH 373/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22775)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260719.1 to 5.20260721.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260721.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index 1a4942673416..5d87924b51e6 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.6",
- "@cloudflare/workers-types": "5.20260719.1",
+ "@cloudflare/workers-types": "5.20260721.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dede323f2443..4e551dab8fc2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.6
- version: 0.18.6(@cloudflare/workers-types@5.20260719.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.6(@cloudflare/workers-types@5.20260721.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260719.1
- version: 5.20260719.1
+ specifier: 5.20260721.1
+ version: 5.20260721.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -472,7 +472,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.112.0
- version: 4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -641,8 +641,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260719.1':
- resolution: {integrity: sha512-DcGasbfUuczQilc80vhL2MPPdWcaxWkx0hN5IW9UdNDBdrRvWcal3akSJ6Ccm7e8+/OGeR+8tYrqkykA3YGSZw==}
+ '@cloudflare/workers-types@5.20260721.1':
+ resolution: {integrity: sha512-J6HZRuQOP3gVe9G5rxHQVS8kQRjo7NIaF+Lz4kO2lVmaCkQ1E78APOOthaI7KyCQzp+A2NbXBQI6QLRIswdWbA==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -3669,7 +3669,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -6623,7 +6623,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260714.1
- '@cloudflare/vitest-pool-workers@0.18.6(@cloudflare/workers-types@5.20260719.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.6(@cloudflare/workers-types@5.20260721.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6631,7 +6631,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6653,7 +6653,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260714.1':
optional: true
- '@cloudflare/workers-types@5.20260719.1': {}
+ '@cloudflare/workers-types@5.20260721.1': {}
'@colors/colors@1.6.0': {}
@@ -12098,7 +12098,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260714.1
'@cloudflare/workerd-windows-64': 1.20260714.1
- wrangler@4.112.0(@cloudflare/workers-types@5.20260719.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1)
@@ -12109,7 +12109,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260714.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260719.1
+ '@cloudflare/workers-types': 5.20260721.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From e449e9509422b27b109bb683a493af9e6f7c25fc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 09:03:37 +0000
Subject: [PATCH 374/670] chore(deps-dev): bump the typescript-eslint group
with 2 updates (#22776)
Bumps the typescript-eslint group with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser).
Updates `@typescript-eslint/eslint-plugin` from 8.64.0 to 8.65.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/eslint-plugin)
Updates `@typescript-eslint/parser` from 8.64.0 to 8.65.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/parser)
---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
dependency-version: 8.65.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: typescript-eslint
- dependency-name: "@typescript-eslint/parser"
dependency-version: 8.65.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: typescript-eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
pnpm-lock.yaml | 118 ++++++++++++++++++++++++-------------------------
2 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/package.json b/package.json
index 5d87924b51e6..4f5f1556f6ae 100644
--- a/package.json
+++ b/package.json
@@ -169,8 +169,8 @@
"@types/module-alias": "2.0.4",
"@types/node": "26.1.1",
"@types/sanitize-html": "2.16.1",
- "@typescript-eslint/eslint-plugin": "8.64.0",
- "@typescript-eslint/parser": "8.64.0",
+ "@typescript-eslint/eslint-plugin": "8.65.0",
+ "@typescript-eslint/parser": "8.65.0",
"@vercel/nft": "1.10.2",
"@vitest/coverage-v8": "4.1.10",
"discord-api-types": "0.38.50",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4e551dab8fc2..0c5933058f31 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -357,11 +357,11 @@ importers:
specifier: 2.16.1
version: 2.16.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.64.0
- version: 8.64.0(@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ specifier: 8.65.0
+ version: 8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@typescript-eslint/parser':
- specifier: 8.64.0
- version: 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ specifier: 8.65.0
+ version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
'@vercel/nft':
specifier: 1.10.2
version: 1.10.2(rollup@4.62.2)
@@ -2797,39 +2797,39 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
- '@typescript-eslint/eslint-plugin@8.64.0':
- resolution: {integrity: sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q==}
+ '@typescript-eslint/eslint-plugin@8.65.0':
+ resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.64.0
+ '@typescript-eslint/parser': ^8.65.0
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/parser@8.64.0':
- resolution: {integrity: sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw==}
+ '@typescript-eslint/parser@8.65.0':
+ resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/project-service@8.64.0':
- resolution: {integrity: sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==}
+ '@typescript-eslint/project-service@8.65.0':
+ resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/scope-manager@8.64.0':
- resolution: {integrity: sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==}
+ '@typescript-eslint/scope-manager@8.65.0':
+ resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.64.0':
- resolution: {integrity: sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==}
+ '@typescript-eslint/tsconfig-utils@8.65.0':
+ resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/type-utils@8.64.0':
- resolution: {integrity: sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg==}
+ '@typescript-eslint/type-utils@8.65.0':
+ resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
@@ -2839,25 +2839,25 @@ packages:
resolution: {integrity: sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/types@8.64.0':
- resolution: {integrity: sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==}
+ '@typescript-eslint/types@8.65.0':
+ resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.64.0':
- resolution: {integrity: sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==}
+ '@typescript-eslint/typescript-estree@8.65.0':
+ resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/utils@8.64.0':
- resolution: {integrity: sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==}
+ '@typescript-eslint/utils@8.65.0':
+ resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
- '@typescript-eslint/visitor-keys@8.64.0':
- resolution: {integrity: sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==}
+ '@typescript-eslint/visitor-keys@8.65.0':
+ resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript/typescript-aix-ppc64@7.0.2':
@@ -8242,14 +8242,14 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/scope-manager': 8.64.0
- '@typescript-eslint/type-utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/visitor-keys': 8.64.0
+ '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/scope-manager': 8.65.0
+ '@typescript-eslint/type-utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/visitor-keys': 8.65.0
eslint: 10.7.0
ignore: 7.0.6
natural-compare: 1.4.0
@@ -8258,41 +8258,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
- '@typescript-eslint/scope-manager': 8.64.0
- '@typescript-eslint/types': 8.64.0
- '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/visitor-keys': 8.64.0
+ '@typescript-eslint/scope-manager': 8.65.0
+ '@typescript-eslint/types': 8.65.0
+ '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/visitor-keys': 8.65.0
debug: 4.4.3
eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.64.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/project-service@8.65.0(@typescript/typescript6@6.0.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.64.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/types': 8.65.0
debug: 4.4.3
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.64.0':
+ '@typescript-eslint/scope-manager@8.65.0':
dependencies:
- '@typescript-eslint/types': 8.64.0
- '@typescript-eslint/visitor-keys': 8.64.0
+ '@typescript-eslint/types': 8.65.0
+ '@typescript-eslint/visitor-keys': 8.65.0
- '@typescript-eslint/tsconfig-utils@8.64.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/tsconfig-utils@8.65.0(@typescript/typescript6@6.0.2)':
dependencies:
typescript: '@typescript/typescript6@6.0.2'
- '@typescript-eslint/type-utils@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/type-utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
- '@typescript-eslint/types': 8.64.0
- '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/utils': 8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/types': 8.65.0
+ '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
debug: 4.4.3
eslint: 10.7.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
@@ -8302,14 +8302,14 @@ snapshots:
'@typescript-eslint/types@8.63.0': {}
- '@typescript-eslint/types@8.64.0': {}
+ '@typescript-eslint/types@8.65.0': {}
- '@typescript-eslint/typescript-estree@8.64.0(@typescript/typescript6@6.0.2)':
+ '@typescript-eslint/typescript-estree@8.65.0(@typescript/typescript6@6.0.2)':
dependencies:
- '@typescript-eslint/project-service': 8.64.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/tsconfig-utils': 8.64.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/types': 8.64.0
- '@typescript-eslint/visitor-keys': 8.64.0
+ '@typescript-eslint/project-service': 8.65.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/types': 8.65.0
+ '@typescript-eslint/visitor-keys': 8.65.0
debug: 4.4.3
minimatch: 10.2.5
semver: 7.8.5
@@ -8319,20 +8319,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.64.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
- '@typescript-eslint/scope-manager': 8.64.0
- '@typescript-eslint/types': 8.64.0
- '@typescript-eslint/typescript-estree': 8.64.0(@typescript/typescript6@6.0.2)
+ '@typescript-eslint/scope-manager': 8.65.0
+ '@typescript-eslint/types': 8.65.0
+ '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
eslint: 10.7.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.64.0':
+ '@typescript-eslint/visitor-keys@8.65.0':
dependencies:
- '@typescript-eslint/types': 8.64.0
+ '@typescript-eslint/types': 8.65.0
eslint-visitor-keys: 5.0.1
'@typescript/typescript-aix-ppc64@7.0.2':
From e238dae4ce9adaf683466cac1c5af8b8ef329d3e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 09:10:54 +0000
Subject: [PATCH 375/670] chore(deps): bump devenv from `5f1cf17` to `29fcc8a`
(#22782)
Bumps [devenv](https://github.com/cachix/devenv) from `5f1cf17` to `29fcc8a`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/5f1cf17be0fc48689bd0ecb810de6d2e06d259a1...29fcc8a9a778c2e3f822ef961cc9667122e79dd5)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 29fcc8a9a778c2e3f822ef961cc9667122e79dd5
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 9c645e227eb6..49abb8ee7546 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784325378,
- "narHash": "sha256-Gof6j4d43yX2qSLLp78JILke346IggDFIxTgl3ecVQE=",
+ "lastModified": 1784586378,
+ "narHash": "sha256-F+K6FU/IBSsaxDu23imNkcpJzMbzYXNjn7bBP/22N3I=",
"owner": "cachix",
"repo": "devenv",
- "rev": "5f1cf17be0fc48689bd0ecb810de6d2e06d259a1",
+ "rev": "29fcc8a9a778c2e3f822ef961cc9667122e79dd5",
"type": "github"
},
"original": {
From c1dd27180d14bc02d9eacff45a62776a13a8ebff Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 17:13:41 +0800
Subject: [PATCH 376/670] chore(deps): bump @sentry/node from 10.66.0 to
10.67.0 (#22777)
Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 10.66.0 to 10.67.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.66.0...10.67.0)
---
updated-dependencies:
- dependency-name: "@sentry/node"
dependency-version: 10.67.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 71 +++++++++++++++++++++++++-------------------------
2 files changed, 36 insertions(+), 37 deletions(-)
diff --git a/package.json b/package.json
index 4f5f1556f6ae..343ba94feed5 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
"@scalar/hono-api-reference": "0.11.11",
- "@sentry/node": "10.66.0",
+ "@sentry/node": "10.67.0",
"cheerio": "1.2.0",
"city-timezones": "1.3.4",
"cross-env": "10.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0c5933058f31..8d6fe5daef31 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -86,8 +86,8 @@ importers:
specifier: 0.11.11
version: 0.11.11(hono@4.12.31)
'@sentry/node':
- specifier: 10.66.0
- version: 10.66.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
+ specifier: 10.67.0
+ version: 10.67.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
cheerio:
specifier: 1.2.0
version: 1.2.0
@@ -497,8 +497,8 @@ packages:
'@actions/io@3.0.2':
resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==}
- '@apm-js-collab/code-transformer-bundler-plugins@0.6.2':
- resolution: {integrity: sha512-5vBrtIEL+UVbO0YWWoyYG4QMgR+ZfnIL3xlteIkAmU7YaAPhc28k3md/NM14tnkfXKjKOn9yUzEA9AYUmNpvJg==}
+ '@apm-js-collab/code-transformer-bundler-plugins@0.7.1':
+ resolution: {integrity: sha512-Yidf5GOl60db80UxUtNdKK3pnY7obU/gs0xOfA0SCdnvVLMCvfYIer/egC3TqpPiT0Jg22eg3RlzcO+zKfPMcA==}
engines: {node: '>=18.0.0'}
'@apm-js-collab/code-transformer@0.18.0':
@@ -2586,12 +2586,12 @@ packages:
resolution: {integrity: sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==}
engines: {node: '>=14'}
- '@sentry/core@10.66.0':
- resolution: {integrity: sha512-9UbgSvds7bMJsP561eWmeyMLcfOmnwxtnx2QuW3yLobzP2Ob7CyJCOzP4tGzlTAGDrzShkFEZhiyuBUKiEK2oQ==}
+ '@sentry/core@10.67.0':
+ resolution: {integrity: sha512-b6U3pJ8AUvN9aouq0vl+VZI8KT8RslBsfGMFuNwRr313zOmdmFJBZqTiUw9VGgJ2jGKxLO9alm9rlxBfX4hf+w==}
engines: {node: '>=18'}
- '@sentry/node-core@10.66.0':
- resolution: {integrity: sha512-SUnXHROqSdSetKgZC1goDEKCuMz3OmQ1h4rxzWeexLyqan+pensZXfLouP6jzZXlA8e/HP7uQg78LnfqYDcZlQ==}
+ '@sentry/node-core@10.67.0':
+ resolution: {integrity: sha512-dBHHRwZyan1pOnFJ+sNBvR8TkXbZAfZU/jpxmALS3JZ2/8AGR7cQKL+b7SleKuJ7iUDZyklN3Nqi0i5JkcA+HA==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
@@ -2611,20 +2611,20 @@ packages:
'@opentelemetry/sdk-trace-base':
optional: true
- '@sentry/node@10.66.0':
- resolution: {integrity: sha512-5Ow7iQiRjaSaEOmqEIkYV368hFFzShIZCXPoj+wX3JtOmKFrsNu6lr8/VJlQs7cyjFS6tzE50PrLrD8iAPS/8w==}
+ '@sentry/node@10.67.0':
+ resolution: {integrity: sha512-SFKpZGqOCEFSmP93NdDP6ikZp4NS7A/JR8+2ofK3jF6Y9Vyox7pX0pxdOnPLpFcPtMybMahfWqSAWJvsFs4RmA==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.66.0':
- resolution: {integrity: sha512-K5Y9IettN9yIOnpqCs40HRLGqaGUoaQ50+ZsLqX2kPCk3TzJVpKZ9icKwaJ4Nxm72QgGVT5Ovfr/9FXbgd3b/Q==}
+ '@sentry/opentelemetry@10.67.0':
+ resolution: {integrity: sha512-oLTOrAK1rOqmYRktOJZwz37B1seXPx1W2FTMVtzTVNjMFA/LZwGzePeZzhUOgzZgfLHixMd/ceWtGqoxAndcjQ==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
'@opentelemetry/core': ^1.30.1 || ^2.1.0
'@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
- '@sentry/server-utils@10.66.0':
- resolution: {integrity: sha512-h9EM9Wz9Mc6w2Vn7Fyh6ozjy4JC2UbUvWf9Ra1HYA4KMeYqjFA5/o0oB4pg4w/TF+rb+9OF/HNqxjuczxpudpA==}
+ '@sentry/server-utils@10.67.0':
+ resolution: {integrity: sha512-GQ9t+RSTx5s3b/aZrLFuL4nrwPLMah5NiZk5cjxJmgmOSgm3nMdO8gdqCedDch5B13F3YsxtaQYjSJnzLz8M5A==}
engines: {node: '>=18'}
'@sindresorhus/is@4.6.0':
@@ -4345,8 +4345,8 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
- import-in-the-middle@3.3.1:
- resolution: {integrity: sha512-0rymlHSFLwZ0ixx8DaQkoIyZojJPY2a0K2nEYslhKJ6jIYO/m0IcCb7iQsFPmS7WmKwISZiIrv5Icstrw/CmqA==}
+ import-in-the-middle@3.3.2:
+ resolution: {integrity: sha512-jTd2FfOgOWOdgjkHuk/1Ms8VKFXkPs15ymYBETw1sAOrO/dY3XeGVRWir9qBbw7pXr0T2eTFwfCZ+N02HmiNGA==}
engines: {node: '>=18'}
import-without-cache@0.4.0:
@@ -6497,7 +6497,7 @@ snapshots:
'@actions/io@3.0.2': {}
- '@apm-js-collab/code-transformer-bundler-plugins@0.6.2':
+ '@apm-js-collab/code-transformer-bundler-plugins@0.7.1':
dependencies:
'@apm-js-collab/code-transformer': 0.18.0
es-module-lexer: 2.3.1
@@ -7361,7 +7361,7 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/api-logs': 0.220.0
- import-in-the-middle: 3.3.1
+ import-in-the-middle: 3.3.2
require-in-the-middle: 8.0.1
transitivePeerDependencies:
- supports-color
@@ -8006,16 +8006,16 @@ snapshots:
'@sentry/conventions@0.16.0': {}
- '@sentry/core@10.66.0':
+ '@sentry/core@10.67.0':
dependencies:
'@sentry/conventions': 0.16.0
- '@sentry/node-core@10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node-core@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
'@sentry/conventions': 0.16.0
- '@sentry/core': 10.66.0
- '@sentry/opentelemetry': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- import-in-the-middle: 3.3.1
+ '@sentry/core': 10.67.0
+ '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ import-in-the-middle: 3.3.2
optionalDependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
@@ -8023,37 +8023,36 @@ snapshots:
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
- '@sentry/node@10.66.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node@10.67.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.16.0
- '@sentry/core': 10.66.0
- '@sentry/node-core': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/opentelemetry': 10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/server-utils': 10.66.0
- import-in-the-middle: 3.3.1
+ '@sentry/core': 10.67.0
+ '@sentry/node-core': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/server-utils': 10.67.0
+ import-in-the-middle: 3.3.2
transitivePeerDependencies:
- '@opentelemetry/core'
- '@opentelemetry/exporter-trace-otlp-http'
- supports-color
- '@sentry/opentelemetry@10.66.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/opentelemetry@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.16.0
- '@sentry/core': 10.66.0
+ '@sentry/core': 10.67.0
- '@sentry/server-utils@10.66.0':
+ '@sentry/server-utils@10.67.0':
dependencies:
- '@apm-js-collab/code-transformer': 0.18.0
- '@apm-js-collab/code-transformer-bundler-plugins': 0.6.2
+ '@apm-js-collab/code-transformer-bundler-plugins': 0.7.1
'@apm-js-collab/tracing-hooks': 0.13.0
'@sentry/conventions': 0.16.0
- '@sentry/core': 10.66.0
+ '@sentry/core': 10.67.0
transitivePeerDependencies:
- supports-color
@@ -9824,7 +9823,7 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- import-in-the-middle@3.3.1:
+ import-in-the-middle@3.3.2:
dependencies:
cjs-module-lexer: 2.2.0
es-module-lexer: 2.3.1
From 8bc0674c9316da3bf36c03f2ddf045eb68add0a7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 17:19:49 +0800
Subject: [PATCH 377/670] chore(deps): bump undici from 8.7.0 to 8.8.0 (#22781)
Bumps [undici](https://github.com/nodejs/undici) from 8.7.0 to 8.8.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0)
---
updated-dependencies:
- dependency-name: undici
dependency-version: 8.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index 343ba94feed5..703f0e9e146a 100644
--- a/package.json
+++ b/package.json
@@ -134,7 +134,7 @@
"tsx": "4.23.1",
"twitter-api-v2": "1.29.0",
"ufo": "1.6.4",
- "undici": "8.7.0",
+ "undici": "8.8.0",
"uuid": "14.0.1",
"winston": "3.19.0",
"xxhash-wasm": "1.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8d6fe5daef31..1f5f495f1e33 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -135,7 +135,7 @@ importers:
version: 10.0.0
http-cookie-agent:
specifier: 8.0.0
- version: 8.0.0(tough-cookie@6.0.2)(undici@8.7.0)
+ version: 8.0.0(tough-cookie@6.0.2)(undici@8.8.0)
https-proxy-agent:
specifier: 9.1.0
version: 9.1.0
@@ -257,8 +257,8 @@ importers:
specifier: 1.6.4
version: 1.6.4
undici:
- specifier: 8.7.0
- version: 8.7.0
+ specifier: 8.8.0
+ version: 8.8.0
uuid:
specifier: 14.0.1
version: 14.0.1
@@ -421,7 +421,7 @@ importers:
version: 2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
node-network-devtools:
specifier: 1.0.30
- version: 1.0.30(undici@8.7.0)(utf-8-validate@5.0.10)
+ version: 1.0.30(undici@8.8.0)(utf-8-validate@5.0.10)
oxc-parser:
specifier: 0.140.0
version: 0.140.0
@@ -6045,8 +6045,8 @@ packages:
resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
engines: {node: '>=20.18.1'}
- undici@8.7.0:
- resolution: {integrity: sha512-N7iQtfyLhIMOFgQubvmLV26svHpO0bqKnAiWotTQCVKCmWrcGbBotPuW1x+xwYZ2VHdSTVUfPQQnlEt1/LouTQ==}
+ undici@8.8.0:
+ resolution: {integrity: sha512-ubshXMXwF3MQIMF1y/WxZdNBnjEKeSg2wF5mcGUtU55YTw34tnVVpKRlLf7ruDXZ5344KokPVX4RBx1wJm64Bw==}
engines: {node: '>=22.19.0'}
unenv@2.0.0-rc.24:
@@ -9729,12 +9729,12 @@ snapshots:
http-cache-semantics@4.2.0: {}
- http-cookie-agent@8.0.0(tough-cookie@6.0.2)(undici@8.7.0):
+ http-cookie-agent@8.0.0(tough-cookie@6.0.2)(undici@8.8.0):
dependencies:
agent-base: 9.0.0
tough-cookie: 6.0.2
optionalDependencies:
- undici: 8.7.0
+ undici: 8.8.0
http-proxy-agent@9.1.0:
dependencies:
@@ -10692,13 +10692,13 @@ snapshots:
dependencies:
write-file-atomic: 1.3.4
- node-network-devtools@1.0.30(undici@8.7.0)(utf-8-validate@5.0.10):
+ node-network-devtools@1.0.30(undici@8.8.0)(utf-8-validate@5.0.10):
dependencies:
bufferutil: 4.1.0
iconv-lite: 0.7.3
inspector: 0.5.0
open: 8.4.2
- undici: 8.7.0
+ undici: 8.8.0
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- utf-8-validate
@@ -11837,7 +11837,7 @@ snapshots:
undici@7.28.0: {}
- undici@8.7.0: {}
+ undici@8.8.0: {}
unenv@2.0.0-rc.24:
dependencies:
From 016e0f7dd002566f88286cf4b3a4aac4d5971911 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Jul 2026 09:22:59 +0000
Subject: [PATCH 378/670] chore(deps): bump nixpkgs from `61b7c44` to `241313f`
(#22783)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `61b7c44` to `241313f`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/61b7c44c4073f0b827768aff0049561b5110ea5a...241313f4e8e508cb9b13278c2b0fa25b9ca27163)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: 241313f4e8e508cb9b13278c2b0fa25b9ca27163
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 49abb8ee7546..b3add4a311a9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1784356753,
- "narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
+ "lastModified": 1784497964,
+ "narHash": "sha256-vlHUuqAcbcH2RKmHbPiuQzbv1pnzzavXnI62RD0bqCU=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
+ "rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163",
"type": "github"
},
"original": {
From 737cf6063bf1f57d4086213b7b941bb5c69cfd53 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Wed, 22 Jul 2026 01:21:36 +0800
Subject: [PATCH 379/670] feat(route): add Guandong Museum Exhibitions and news
route (#22729)
* feat:add Guandong Museum Exhibitions and news
* fix: update selector
---
lib/routes/gdmuseum/exhibition.tsx | 126 +++++++++++++++++++++++++++++
lib/routes/gdmuseum/namespace.ts | 10 +++
lib/routes/gdmuseum/news.ts | 58 +++++++++++++
3 files changed, 194 insertions(+)
create mode 100644 lib/routes/gdmuseum/exhibition.tsx
create mode 100644 lib/routes/gdmuseum/namespace.ts
create mode 100644 lib/routes/gdmuseum/news.ts
diff --git a/lib/routes/gdmuseum/exhibition.tsx b/lib/routes/gdmuseum/exhibition.tsx
new file mode 100644
index 000000000000..b42baebd3fbf
--- /dev/null
+++ b/lib/routes/gdmuseum/exhibition.tsx
@@ -0,0 +1,126 @@
+import { load } from 'cheerio';
+import dayjs from 'dayjs';
+import type { Context } from 'hono';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { DataItem, Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+// convert exhibition date string to YYYY-MM-DD format, e.g. "2023年5月1日" or "2023/5/1" => "2023-05-01"
+const formatExhibitionDate = (d?: string) => {
+ if (!d) {
+ return;
+ }
+ return dayjs(d.replaceAll(/[年月/.]/g, '-').replaceAll('日', '')).format('YYYY-MM-DD');
+};
+
+const parseExhibitionDuration = (duration?: string) => {
+ const allDates = duration?.match(/\d{4}[./年-]\d{1,2}[./月-]\d{1,2}日?/g) || [];
+ return {
+ startDate: formatExhibitionDate(allDates[0]),
+ endDate: formatExhibitionDate(allDates[1]),
+ };
+};
+
+export const route: Route = {
+ path: '/exhibition/:type?',
+ categories: ['travel'],
+ example: '/gdmuseum/exhibition/temp',
+ parameters: {
+ type: 'Exhibition type, supported values: temp(临时展览), default: All exhibitions.',
+ },
+ name: 'Current Exhibitions',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.gdmuseum.org.cn/col9/list'],
+ target: '/exhibition',
+ },
+ ],
+ handler: async (ctx: Context) => {
+ const typeParam = ctx.req.param('type') || 'all';
+
+ const museumName = namespace.zh?.name || namespace.name;
+ const baseUrl = 'https://www.gdmuseum.org.cn';
+ const url = `${baseUrl}/col9/list`;
+
+ const response = await got(url);
+ const $ = load(response.data);
+
+ const list = $('.ULLIST li a[href^="/cn/col"]')
+ .toArray()
+ .map((el) => {
+ const $item = $(el);
+ const title = $item.find('.divtt.qui-dot').text();
+
+ if (typeParam === 'temp') {
+ if (title.includes('常设展览')) {
+ return null;
+ }
+ } else if (typeParam !== 'all') {
+ return null;
+ }
+
+ const rawLink = $item.attr('href');
+ const itemLink = rawLink ? new URL(rawLink, baseUrl).href : '';
+
+ const rawSrc = $item.find('img').attr('src');
+ const imgUrl = rawSrc ? new URL(rawSrc, baseUrl).href : undefined;
+
+ const textDurationAndLocation = $item.find('.quitxt.qui-dot').text().trim();
+ const [fullDuration = '', location = ''] = textDurationAndLocation.split('|').map((p) => p.trim());
+
+ const { startDate, endDate } = parseExhibitionDuration(fullDuration);
+ const pubDate = startDate ? parseDate(startDate) : undefined;
+
+ const description = renderToString(
+
+ {imgUrl &&

}
+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title,
+ link: itemLink,
+ pubDate,
+ description,
+ // For further .ics file processing
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ } as DataItem;
+ })
+ .filter((i): i is DataItem => i !== null);
+
+ return {
+ title: `${museumName} - 正在热展${typeParam === 'temp' ? ' - 临时展览' : ''}`,
+ link: url,
+ language: 'zh-CN',
+ item: list,
+ };
+ },
+};
diff --git a/lib/routes/gdmuseum/namespace.ts b/lib/routes/gdmuseum/namespace.ts
new file mode 100644
index 000000000000..c37b3988de5d
--- /dev/null
+++ b/lib/routes/gdmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Guangdong Museum',
+ url: 'gdmuseum.org.cn',
+
+ zh: {
+ name: '广东省博物馆',
+ },
+};
diff --git a/lib/routes/gdmuseum/news.ts b/lib/routes/gdmuseum/news.ts
new file mode 100644
index 000000000000..2271f9b77144
--- /dev/null
+++ b/lib/routes/gdmuseum/news.ts
@@ -0,0 +1,58 @@
+import { load } from 'cheerio';
+
+import type { DataItem, Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+export const route: Route = {
+ path: '/information',
+ categories: ['travel'],
+ example: '/gdmuseum/information',
+ name: 'Information',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.gdmuseum.org.cn/cn/col51/list'],
+ target: '/information',
+ },
+ ],
+ handler: async () => {
+ const baseUrl = 'https://www.gdmuseum.org.cn';
+ const apiUrl = `${baseUrl}/cn/col51/list`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got(apiUrl);
+ const $ = load(response.data);
+
+ const list = $('.ULLIST li a[href^="/cn/col"]')
+ .toArray()
+ .map((el) => {
+ const $item = $(el);
+
+ const rawLink = $item.attr('href') || '';
+ const itemLink = new URL(rawLink, baseUrl).href;
+
+ const title = $item.find('h3.h3.qui-dot').text();
+ const day = $item.find('time b').text().trim();
+ const yearMonth = $item.find('time i').text().trim();
+
+ const pubDate = timezone(parseDate(`${yearMonth}-${day}`), 8);
+
+ return {
+ title,
+ link: itemLink,
+ pubDate,
+ } as DataItem;
+ });
+
+ return {
+ title: `${museumName} - 公告`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: list,
+ };
+ },
+};
From 0eb05b56a9055c5a36aae0169f2da1aee71f2de7 Mon Sep 17 00:00:00 2001
From: Ananya <84459091+ananyatimalsina@users.noreply.github.com>
Date: Tue, 21 Jul 2026 21:00:44 +0200
Subject: [PATCH 380/670] fix(route/pawchive): add enclosure support and fix
media URLs (#22739)
* fix(route): pawchive - add enclosure support and fix media URLs
* Address github-advanced-security problems
* Change namespace to pawchive.pw
* Fix pawchive domain in radar
---
lib/routes/pawchive/const.ts | 12 ++++++--
lib/routes/pawchive/index.tsx | 52 +++++++++++++++++++++++++-------
lib/routes/pawchive/namespace.ts | 2 +-
3 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/lib/routes/pawchive/const.ts b/lib/routes/pawchive/const.ts
index b56caaf74030..f060dd1b6b2a 100644
--- a/lib/routes/pawchive/const.ts
+++ b/lib/routes/pawchive/const.ts
@@ -1,4 +1,10 @@
-export const baseUrl = 'https://pawchive.st';
+export const baseUrl = 'https://pawchive.pw';
export const apiBaseUrl = `${baseUrl}/api/v1`;
-export const thumbnailUrl = 'https://img.pawchive.st/thumbnail/data';
-export const fileUrl = 'https://file.pawchive.st/data';
+export const thumbnailUrl = 'https://img.pawchive.pw/thumbnail/data';
+export const fileUrl = 'https://file.pawchive.pw/data';
+
+export const MIME_TYPE_MAP = {
+ m4a: 'audio/mp4',
+ mp3: 'audio/mpeg',
+ mp4: 'video/mp4',
+} as const;
diff --git a/lib/routes/pawchive/index.tsx b/lib/routes/pawchive/index.tsx
index 9403b57190b4..5228b75e1bb5 100644
--- a/lib/routes/pawchive/index.tsx
+++ b/lib/routes/pawchive/index.tsx
@@ -1,3 +1,4 @@
+import { load } from 'cheerio';
import type { Context } from 'hono';
import { raw } from 'hono/html';
import { renderToString } from 'hono/jsx/dom/server';
@@ -7,9 +8,34 @@ import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
-import { apiBaseUrl, baseUrl, fileUrl, thumbnailUrl } from './const';
+import { apiBaseUrl, baseUrl, fileUrl, MIME_TYPE_MAP, thumbnailUrl } from './const';
import type { PawchiveFile, PawchivePost } from './types';
+function generateEnclosureInfo(htmlContent: string): { enclosure_url?: string; enclosure_type?: string } {
+ const $ = load(htmlContent);
+ let enclosureInfo = {};
+
+ $('audio source, video source').each((_, el) => {
+ const src = $(el).attr('src');
+ if (!src) {
+ return;
+ }
+
+ const extension = src.replace(/.*\./, '').toLowerCase();
+ const mimeType = MIME_TYPE_MAP[extension as keyof typeof MIME_TYPE_MAP];
+
+ if (mimeType) {
+ enclosureInfo = {
+ enclosure_url: src,
+ enclosure_type: mimeType,
+ };
+ return false;
+ }
+ });
+
+ return enclosureInfo;
+}
+
export const route: Route = {
path: '/:service/:id',
categories: ['anime'],
@@ -29,11 +55,11 @@ export const route: Route = {
},
radar: [
{
- source: ['pawchive.st/'],
+ source: ['pawchive.pw/'],
target: '',
},
{
- source: ['pawchive.st/:service/user/:id'],
+ source: ['pawchive.pw/:service/user/:id'],
target: '/:service/:id',
},
],
@@ -119,14 +145,18 @@ async function handler(ctx: Context) {
return data.name || 'Unknown User';
})) as Promise;
- const items = response.map((post) => ({
- title: post.title || 'Untitled Post',
- description: render(post, processPostFiles(post)),
- author,
- pubDate: parseDate(post.published),
- link: `${baseUrl}/${post.service}/user/${post.user}/post/${post.id}`,
- guid: `pawchive:${post.service}:${post.user}:post:${post.id}`,
- }));
+ const items = response.map((post) => {
+ const description = render(post, processPostFiles(post));
+ return {
+ title: post.title || 'Untitled Post',
+ description,
+ author,
+ pubDate: parseDate(post.published),
+ link: `${baseUrl}/${post.service}/user/${post.user}/post/${post.id}`,
+ guid: `pawchive:${post.service}:${post.user}:post:${post.id}`,
+ ...generateEnclosureInfo(description),
+ };
+ });
return {
title: `Posts of ${author} from ${service} | Pawchive`,
diff --git a/lib/routes/pawchive/namespace.ts b/lib/routes/pawchive/namespace.ts
index 127e5537d921..3ee8cf763c7d 100644
--- a/lib/routes/pawchive/namespace.ts
+++ b/lib/routes/pawchive/namespace.ts
@@ -2,6 +2,6 @@ import type { Namespace } from '@/types';
export const namespace: Namespace = {
name: 'Pawchive',
- url: 'pawchive.st',
+ url: 'pawchive.pw',
lang: 'en',
};
From a0a388b51b06d2c6a8c33f2ee6db96d71142d65d Mon Sep 17 00:00:00 2001
From: aaro-n <45537680+aaro-n@users.noreply.github.com>
Date: Wed, 22 Jul 2026 03:12:50 +0800
Subject: [PATCH 381/670] fix(route/xiaoyuzhou): add POST body to
editor-pick/list request (#22759)
* fix(route/xiaoyuzhou): add POST body to editor-pick/list request
* docs: add back route metadata
---
lib/routes/xiaoyuzhou/pickup.ts | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/routes/xiaoyuzhou/pickup.ts b/lib/routes/xiaoyuzhou/pickup.ts
index 44843a06304c..c84883f49906 100644
--- a/lib/routes/xiaoyuzhou/pickup.ts
+++ b/lib/routes/xiaoyuzhou/pickup.ts
@@ -42,6 +42,7 @@ const ProcessFeed = async () => {
...headers,
'x-jike-access-token': token_updated.data['x-jike-access-token'],
},
+ json: {},
});
const data = response.data.data;
@@ -87,10 +88,15 @@ export const route: Route = {
target: '',
},
],
- name: 'Unknown',
+ name: '发现',
+ example: '/xiaoyuzhou',
+ categories: ['multimedia'],
maintainers: ['prnake', 'Maecenas'],
handler,
url: 'xiaoyuzhoufm.com/',
+ description: `::: warning
+小宇宙的 api 需要验证 \`x-jike-device-id\`、\`x-jike-access-token\` 和 \`x-jike-refresh-token\` 。必要时需要自行配置,具体见部署文档。
+:::`,
};
async function handler() {
From 2c5929347a8283005df2a7b771f40ee324c38cfe Mon Sep 17 00:00:00 2001
From: Tony
Date: Wed, 22 Jul 2026 04:43:03 +0800
Subject: [PATCH 382/670] fix(route/daily): remove innerSharedContent parameter
(#22786)
---
lib/routes/daily/discussed.ts | 20 +++++++++-----------
lib/routes/daily/popular.ts | 14 +++-----------
lib/routes/daily/source.ts | 14 +++-----------
lib/routes/daily/squads.ts | 16 +++-------------
lib/routes/daily/upvoted.ts | 14 +++-----------
lib/routes/daily/user.ts | 15 ++-------------
lib/routes/daily/utils.tsx | 22 +++++++---------------
7 files changed, 30 insertions(+), 85 deletions(-)
diff --git a/lib/routes/daily/discussed.ts b/lib/routes/daily/discussed.ts
index 6b012d0c88e9..1baec6df5a98 100644
--- a/lib/routes/daily/discussed.ts
+++ b/lib/routes/daily/discussed.ts
@@ -21,6 +21,13 @@ const query = /* GraphQL */ `
fragment FeedPost on Post {
...SharedPostInfo
+ type
+ sharedPost {
+ title
+ summary
+ image
+ permalink
+ }
}
fragment SharedPostInfo on Post {
@@ -51,7 +58,7 @@ const query = /* GraphQL */ `
`;
export const route: Route = {
- path: '/discussed/:period?/:innerSharedContent?/:dateSort?',
+ path: '/discussed/:period?/:dateSort?',
example: '/daily/discussed/30',
view: ViewType.Articles,
radar: [
@@ -64,14 +71,6 @@ export const route: Route = {
handler,
url: 'app.daily.dev/discussed',
parameters: {
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
dateSort: {
description: 'Sort posts by publication date instead of popularity',
default: 'true',
@@ -94,7 +93,6 @@ export const route: Route = {
async function handler(ctx) {
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const dateSort = ctx.req.param('dateSort') ? JSON.parse(ctx.req.param('dateSort')) : true;
const period = ctx.req.param('period') ? Number(ctx.req.param('period')) : 7;
@@ -108,7 +106,7 @@ async function handler(ctx) {
period,
},
});
- const items = getList(data, innerSharedContent, dateSort);
+ const items = getList(data, dateSort);
return {
title: 'Real-time discussions in the developer community | daily.dev',
diff --git a/lib/routes/daily/popular.ts b/lib/routes/daily/popular.ts
index 8b48490beb64..d4331342a3ce 100644
--- a/lib/routes/daily/popular.ts
+++ b/lib/routes/daily/popular.ts
@@ -29,6 +29,7 @@ const query = /* GraphQL */ `
sharedPost {
id
title
+ summary
image
readTime
permalink
@@ -110,7 +111,7 @@ const query = /* GraphQL */ `
`;
export const route: Route = {
- path: '/popular/:innerSharedContent?/:dateSort?',
+ path: '/popular/:dateSort?',
example: '/daily/popular',
view: ViewType.Articles,
radar: [
@@ -119,14 +120,6 @@ export const route: Route = {
},
],
parameters: {
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
dateSort: {
description: 'Sort posts by publication date instead of popularity',
default: 'true',
@@ -145,7 +138,6 @@ export const route: Route = {
async function handler(ctx) {
const link = `${baseUrl}/posts`;
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 15;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const dateSort = ctx.req.param('dateSort') ? JSON.parse(ctx.req.param('dateSort')) : true;
const data = await getData({
@@ -156,7 +148,7 @@ async function handler(ctx) {
first: limit,
},
});
- const items = getList(data, innerSharedContent, dateSort);
+ const items = getList(data, dateSort);
return {
title: 'Popular posts on daily.dev',
diff --git a/lib/routes/daily/source.ts b/lib/routes/daily/source.ts
index 104b5fdebe64..3f06cbb2eaf8 100644
--- a/lib/routes/daily/source.ts
+++ b/lib/routes/daily/source.ts
@@ -42,6 +42,7 @@ const sourceFeedQuery = /* GraphQL */ `
sharedPost {
id
title
+ summary
image
readTime
permalink
@@ -121,18 +122,10 @@ const sourceFeedQuery = /* GraphQL */ `
`;
export const route: Route = {
- path: '/source/:sourceId/:innerSharedContent?',
+ path: '/source/:sourceId',
example: '/daily/source/hn',
parameters: {
sourceId: 'The source id',
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
},
radar: [
{
@@ -148,7 +141,6 @@ export const route: Route = {
async function handler(ctx) {
const sourceId = ctx.req.param('sourceId');
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 10;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const link = `${baseUrl}/sources/${sourceId}`;
const buildId = await getBuildId();
@@ -172,7 +164,7 @@ async function handler(ctx) {
loggedIn: false,
},
});
- return getList(edges, innerSharedContent, true);
+ return getList(edges, true);
},
config.cache.routeExpire,
false
diff --git a/lib/routes/daily/squads.ts b/lib/routes/daily/squads.ts
index c71880192536..783316d90072 100644
--- a/lib/routes/daily/squads.ts
+++ b/lib/routes/daily/squads.ts
@@ -107,6 +107,7 @@ const query = /* GraphQL */ `
sharedPost {
id
title
+ summary
image
readTime
permalink
@@ -188,19 +189,9 @@ const query = /* GraphQL */ `
`;
export const route: Route = {
- path: '/squads/:squads/:innerSharedContent?',
+ path: '/squads/:squads',
example: '/daily/squads/watercooler',
view: ViewType.Articles,
- parameters: {
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
- },
radar: [
{
source: ['app.daily.dev/squads/:squads'],
@@ -214,7 +205,6 @@ export const route: Route = {
async function handler(ctx) {
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const squads = ctx.req.param('squads');
const link = `${baseUrl}/squads/${squads}`;
@@ -239,7 +229,7 @@ async function handler(ctx) {
first: limit,
},
});
- const items = getList(data, innerSharedContent, true);
+ const items = getList(data, true);
return {
title: `${name} - daily.dev`,
diff --git a/lib/routes/daily/upvoted.ts b/lib/routes/daily/upvoted.ts
index 43f9f27238e3..5f17c2f34175 100644
--- a/lib/routes/daily/upvoted.ts
+++ b/lib/routes/daily/upvoted.ts
@@ -29,6 +29,7 @@ const query = /* GraphQL */ `
sharedPost {
id
title
+ summary
image
readTime
permalink
@@ -110,7 +111,7 @@ const query = /* GraphQL */ `
`;
export const route: Route = {
- path: '/upvoted/:period?/:innerSharedContent?/:dateSort?',
+ path: '/upvoted/:period?/:dateSort?',
example: '/daily/upvoted/7',
view: ViewType.Articles,
radar: [
@@ -119,14 +120,6 @@ export const route: Route = {
},
],
parameters: {
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
dateSort: {
description: 'Sort posts by publication date instead of popularity',
default: 'true',
@@ -154,7 +147,6 @@ export const route: Route = {
async function handler(ctx) {
const link = `${baseUrl}/posts/upvoted`;
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const dateSort = ctx.req.param('dateSort') ? JSON.parse(ctx.req.param('dateSort')) : true;
const period = ctx.req.param('period') ? Number(ctx.req.param('period')) : 7;
@@ -166,7 +158,7 @@ async function handler(ctx) {
first: limit,
},
});
- const items = getList(data, innerSharedContent, dateSort);
+ const items = getList(data, dateSort);
return {
title: 'Most upvoted posts for developers | daily.dev',
diff --git a/lib/routes/daily/user.ts b/lib/routes/daily/user.ts
index d3eda7ba1698..8e7eca68e6ea 100644
--- a/lib/routes/daily/user.ts
+++ b/lib/routes/daily/user.ts
@@ -135,23 +135,13 @@ const userPostQuery = /* GraphQL */ `
`;
export const route: Route = {
- path: '/user/:userId/:innerSharedContent?',
+ path: '/user/:userId',
example: '/daily/user/kramer',
radar: [
{
source: ['app.daily.dev/:userId/posts', 'app.daily.dev/:userId'],
},
],
- parameters: {
- innerSharedContent: {
- description: 'Where to Fetch inner Shared Posts instead of original',
- default: 'false',
- options: [
- { value: 'false', label: 'False' },
- { value: 'true', label: 'True' },
- ],
- },
- },
name: 'User Posts',
maintainers: ['TonyRL'],
handler,
@@ -161,7 +151,6 @@ export const route: Route = {
async function handler(ctx) {
const userId = ctx.req.param('userId');
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 7;
- const innerSharedContent = ctx.req.param('innerSharedContent') ? JSON.parse(ctx.req.param('innerSharedContent')) : false;
const buildId = await getBuildId();
const userData = await cache.tryGet(`daily:user:${userId}`, async () => {
@@ -185,7 +174,7 @@ async function handler(ctx) {
loggedIn: false,
},
});
- return getList(edges, innerSharedContent, true);
+ return getList(edges, true);
},
config.cache.routeExpire,
false
diff --git a/lib/routes/daily/utils.tsx b/lib/routes/daily/utils.tsx
index fb1fbfcf8274..bcc8bf9717f3 100644
--- a/lib/routes/daily/utils.tsx
+++ b/lib/routes/daily/utils.tsx
@@ -46,29 +46,21 @@ const render = ({ image, content }: { image?: string; content?: string }) =>
>
);
-export const getList = (edges, innerSharedContent: boolean, dateSort: boolean) =>
+export const getList = (edges, dateSort: boolean) =>
edges.map(({ node }) => {
- let link: string;
- let title: string;
- if (innerSharedContent && node.type === 'share') {
- link = node.sharedPost.permalink;
- title = node.sharedPost.title;
- } else {
- link = node.commentsPermalink ?? node.permalink;
- title = node.title;
- }
+ const post = node.type === 'share' ? node.sharedPost : node;
return {
id: node.id,
- title,
- link,
+ title: post.title,
+ link: node.commentsPermalink ?? node.permalink,
guid: node.permalink,
description: render({
- image: node.image,
- content: node.contentHtml?.replaceAll('\n', '
') ?? node.summary,
+ image: post.image?.includes('/public/Placeholder') ? undefined : post.image,
+ content: node.contentHtml?.replaceAll('\n', '
') ?? post.summary,
}),
author: node.author?.name,
- itunes_item_image: node.image,
+ itunes_item_image: post.image,
pubDate: dateSort ? parseDate(node.createdAt) : '',
upvotes: node.numUpvotes,
comments: node.numComments,
From e3e96490029d3b5bd513561518f36b4040a2969e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 08:17:14 +0000
Subject: [PATCH 383/670] chore(deps): bump imapflow from 1.4.7 to 1.4.8
(#22795)
Bumps [imapflow](https://github.com/postalsys/imapflow) from 1.4.7 to 1.4.8.
- [Release notes](https://github.com/postalsys/imapflow/releases)
- [Changelog](https://github.com/postalsys/imapflow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postalsys/imapflow/compare/v1.4.7...v1.4.8)
---
updated-dependencies:
- dependency-name: imapflow
dependency-version: 1.4.8
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 703f0e9e146a..2ada9ba6bb31 100644
--- a/package.json
+++ b/package.json
@@ -96,7 +96,7 @@
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
"iconv-lite": "0.7.3",
- "imapflow": "1.4.7",
+ "imapflow": "1.4.8",
"instagram-private-api": "1.46.1",
"ioredis": "5.11.1",
"ip-regex": "5.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1f5f495f1e33..ec9b7f37eb69 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -143,8 +143,8 @@ importers:
specifier: 0.7.3
version: 0.7.3
imapflow:
- specifier: 1.4.7
- version: 1.4.7
+ specifier: 1.4.8
+ version: 1.4.8
instagram-private-api:
specifier: 1.46.1
version: 1.46.1
@@ -3669,7 +3669,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -4338,8 +4338,8 @@ packages:
engines: {node: '>=6.9.0'}
hasBin: true
- imapflow@1.4.7:
- resolution: {integrity: sha512-nK03WfN16inwm0//0Q70T21G0g4H9ArMVyzKDRjAshOVV8iw71PP9HTpAXNmWB9giZWfPiS+ltHByi37cqwSgg==}
+ imapflow@1.4.8:
+ resolution: {integrity: sha512-cHa23g7h0X04a2v+H9luLg0GWMQ0vApmQ+UxL5swglOgBypNpqxurLMa1JS9mjpTekCsQhKrCZwaziPRBbHp8Q==}
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
@@ -5327,8 +5327,8 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.20:
- resolution: {integrity: sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==}
+ postcss@8.5.21:
+ resolution: {integrity: sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==}
engines: {node: ^10 || ^12 || >=14}
postman-request@2.88.1-postman.48:
@@ -9806,7 +9806,7 @@ snapshots:
image-size@0.7.5: {}
- imapflow@1.4.7:
+ imapflow@1.4.8:
dependencies:
'@zone-eu/mailsplit': 5.4.14
encoding-japanese: 2.2.0
@@ -11045,7 +11045,7 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.20:
+ postcss@8.5.21:
dependencies:
nanoid: 3.3.16
picocolors: 1.1.1
@@ -11974,7 +11974,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.20
+ postcss: 8.5.21
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
From 86a3168bfcc2111ab0276f00b8de90bbc71de6dc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 08:17:27 +0000
Subject: [PATCH 384/670] chore(deps-dev): bump lint-staged from 17.1.0 to
17.1.1 (#22793)
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 17.1.0 to 17.1.1.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v17.1.0...v17.1.1)
---
updated-dependencies:
- dependency-name: lint-staged
dependency-version: 17.1.1
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 2ada9ba6bb31..14bddc0bad02 100644
--- a/package.json
+++ b/package.json
@@ -187,7 +187,7 @@
"globals": "17.7.0",
"husky": "9.1.7",
"js-beautify": "2.0.3",
- "lint-staged": "17.1.0",
+ "lint-staged": "17.1.1",
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ec9b7f37eb69..8a7b769a1a1e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -411,8 +411,8 @@ importers:
specifier: 2.0.3
version: 2.0.3
lint-staged:
- specifier: 17.1.0
- version: 17.1.0
+ specifier: 17.1.1
+ version: 17.1.1
mockdate:
specifier: 3.0.5
version: 3.0.5
@@ -4700,8 +4700,8 @@ packages:
linkify-it@5.0.2:
resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==}
- lint-staged@17.1.0:
- resolution: {integrity: sha512-d7UQRu/9ZPgfu4+hu/k0wny5GEaIxo+2jb2LJqQDkE7cHRTm1HGqNUDq5UOwsGPpjpaNAFmgAsYo3TR+i9cSJw==}
+ lint-staged@17.1.1:
+ resolution: {integrity: sha512-FnHWpSe5cPRtrDG+soOuNdBxb4XQb2gN5EqpEWKdweyqyOfpl4QSjbrz3ilcIf0WXmkiNQGZZRQ23R5YtB3TEw==}
engines: {node: '>=22.22.1'}
hasBin: true
@@ -10165,7 +10165,7 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- lint-staged@17.1.0:
+ lint-staged@17.1.1:
dependencies:
picomatch: 4.0.5
string-argv: 0.3.2
From 82769b801735ddeeec4b2541eb30d6f2b91385d3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 08:18:24 +0000
Subject: [PATCH 385/670] chore(deps-dev): bump tsdown from 0.22.12 to 0.22.13
(#22794)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.12 to 0.22.13.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.12...v0.22.13)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.13
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 232 ++++++++++++++++++++++++-------------------------
2 files changed, 117 insertions(+), 117 deletions(-)
diff --git a/package.json b/package.json
index 14bddc0bad02..5520cb422b77 100644
--- a/package.json
+++ b/package.json
@@ -200,7 +200,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.12",
+ "tsdown": "0.22.13",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8a7b769a1a1e..e4cacae62a28 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -450,8 +450,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.12
- version: 0.22.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
+ specifier: 0.22.13
+ version: 0.22.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -3027,130 +3027,130 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.7.0':
- resolution: {integrity: sha512-RLfjSuJUolQJ04zYq3kM2vSUk9BkFFSOhmOWARb7Pc7Gnf0vMLfj/fepnn9IdsyE2FsJjoCJPKM5bBze4ld5pQ==}
+ '@yuku-codegen/binding-darwin-arm64@0.7.3':
+ resolution: {integrity: sha512-hbssEr7iLNCWWdUbEt8cuOjUQ9loI+U/BVmdhNQ4CV1wAFGvWDO3niK9JD2WwTC9iib7E498qgZ3L/xJnoSb3A==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.7.0':
- resolution: {integrity: sha512-OI9z6U69j2TvaWgDzheUNlMPSrlNQs8PD3isfyuGxQVbO8Dqi3F7PRT1JnG7pkId+IKvmEu+40sjXWDHRbtlMA==}
+ '@yuku-codegen/binding-darwin-x64@0.7.3':
+ resolution: {integrity: sha512-WqwST3vVcNBTd1zaT1vP6pU8NkjJlLWN37Kqomc2c6TG9eky6sbAfHIhZEjSSyqFrMqsAt3mIu0jQZAODi401g==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.7.0':
- resolution: {integrity: sha512-nhoH3yXu2e6itB1Hbpj1+kZJ6yTJtsXBN5dWYm20TKvs1Iq79di6hdCKBlHE12RHFW39aQKcnn+vlFF1J1RGsw==}
+ '@yuku-codegen/binding-freebsd-x64@0.7.3':
+ resolution: {integrity: sha512-mCci4UPkZXYflXuHnPGl5sDsotBPLaBryFylDwZcqposktmumoOBIKp2gpzEmxQL/XlGdVWksmpYw9IRY43FNQ==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.7.0':
- resolution: {integrity: sha512-bgmapvrk/f/1bOSl+XA9KTLKb7vmxuXhqgCchlhTvgNOWnHB4rPLfzu0TkQU5CjVFzZQmHoEmhObf9DKUzcDMA==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.3':
+ resolution: {integrity: sha512-F1QIaRH5SeahrYjZVrVvIb5nHCZQMF7+YWAy6yTJh0Y2r2wLgqOQuhbOWcoKk+AyBiTOO2nAsFHNpVqRq2GjGw==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.7.0':
- resolution: {integrity: sha512-HpVSId+bxtqSkIsbBUP78J0j4ZUnCvqj14WGmAjKDP25oaQ0SZuFtVIZJmTisuKVSM4AIx1CVBYlJ2CCIm/vsQ==}
+ '@yuku-codegen/binding-linux-arm-musl@0.7.3':
+ resolution: {integrity: sha512-JvkWNmN8MFbboX/5grRsAldGaB8ArRFgAaUYfQoohsqcuJZee8SLtc6itvwuntPbN9MGStn4GzdWk2lmSURqbA==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.7.0':
- resolution: {integrity: sha512-oL8OGWo99U0arObIl5UKov3ZvsoNGWUMWRJrlXP99P4LpVz+gZC9KwfYCzxlhGnNk9rpp/fcTUUHYHbTskuZwQ==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.3':
+ resolution: {integrity: sha512-DUnMTE/HCA7j1BAipWclGZCYfLZ/4SV5lldmV2kDmVMIywcw4PhtQ4Rfd/tO1K82JkjhQ+4a8XApcOIksOacnQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.7.0':
- resolution: {integrity: sha512-ULsFt9PnI5vBMCG5pGir1YQtJ03o0Sb5SsRTDYRSeKaVaxdog+kA9Guwnk8q8OMPFsI3s40Fhu/+45cQXHSZ8Q==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.3':
+ resolution: {integrity: sha512-pNnXMnm9dlqd3V8C7nHaXgZnMLwP/CyM8B4mSAnkqVlhj2t3b8CMjesEV85SCbFlagzJk8FapfSghfxcXKuBow==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.7.0':
- resolution: {integrity: sha512-l1TP6G39gnF4eiHEApjViyA12n+YHT18A0y3FDUy1jF5hkZt2RWlBNrU4HPhzTd6kQlozJEWyjhVNja2J3/eBw==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.3':
+ resolution: {integrity: sha512-o5GRppYvYvPl4UJbgRSZpXXDh6rOWQzX0yLB+tDzv31T7mOuLitU6zgQZxzw5rwhPJDffCt/AVKMbtizEo+UtA==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.7.0':
- resolution: {integrity: sha512-h8GZdSNSaBWySA4p8eYFWkH8OWdqA4peOAFeWs+DltJo8r9ZXSvVB0XBypMxkLwA0qLDqwtWoVssg2LK1zJKdw==}
+ '@yuku-codegen/binding-linux-x64-musl@0.7.3':
+ resolution: {integrity: sha512-GdiyLD1bM3lhTUeGkA9ZZLjqU+xt5uVihgPm0e6TdBjCi6DMZORWe02oDlRbn9OZaV7AZosngXAq2jLk3TrBEw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.7.0':
- resolution: {integrity: sha512-hVkxv4UTPXex7q5ldvqelSMvvYc6bCAYlDSMMg3wmttHZF9yQzPb4yYw69eWvR4coEMFaUv63ADJNjiGjNxkYg==}
+ '@yuku-codegen/binding-win32-arm64@0.7.3':
+ resolution: {integrity: sha512-uQrxQDBQFIAUgHJIxcB/FAAUk0Wkyj3xGpHrp/C258nXnCTAH0KDaqyK5RN/TCkVYrpH+uCl+rGnwDLSGnPBkQ==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.7.0':
- resolution: {integrity: sha512-g3YQpqvsTbDHjjBDnNGhaO4ejN+m2GpsWc50dcGPR/RUx+yt++uDEXKSEyiAaCpEM2p5PuDIW/YEjXx0oVdsoQ==}
+ '@yuku-codegen/binding-win32-x64@0.7.3':
+ resolution: {integrity: sha512-UoF7tqMnVMUmIXPgDjFLhRezea6HaypwLDWNenCFxfJCzQNEa41lcHpxq1AN2Xl6GLzIDfAb+lQDi/O+zPCfyg==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.7.0':
- resolution: {integrity: sha512-LoZ945MxFzc6+ltMenaFtXhJ4rdj11j1IwkRWLR7WPim2jdXUURTfWhAm7VzQDtSCHtnDz8PAH55eIHmNilTlA==}
+ '@yuku-parser/binding-darwin-arm64@0.7.3':
+ resolution: {integrity: sha512-JcFQSNEnjtyHQRjXO0G5rQt5xHq5MR+9nHqh+wt5MP30XIiccUYlcMIa3s7CBmj8E8WPGZC08k7LNGrA1OISTA==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.7.0':
- resolution: {integrity: sha512-HVS2bgNGqCl5oU5wP16tZUMmXAO1avgxp/uzDOJcNqA7WOlV1PqTWD3P/1GXaMAijIZNu3VLSXkU1dovwwPpVA==}
+ '@yuku-parser/binding-darwin-x64@0.7.3':
+ resolution: {integrity: sha512-U0kNeI3VygP/+8sTOLTeLTjUyTYZfl9Wuq6xVKWPXHb2K7oI0sm8JXJ5xlhAbkUDQRi0N6yK5TKxS0sQT5M6UQ==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.7.0':
- resolution: {integrity: sha512-nVZgLmiuEdkRb8oJsXBoQphfZwsMTcatSEB5t1QL9aH92/hx2TxAGayZy/g326l5rGVMmieCHc9FYxu/MnVFHQ==}
+ '@yuku-parser/binding-freebsd-x64@0.7.3':
+ resolution: {integrity: sha512-Xc08FQTvxovy6pX+Co9fgv3N1H0OpLpph/ClbwnJkcdphY3kzN2GgIfir35kpPp8mOzlQgtAVQdeDyAYyjwx4w==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.7.0':
- resolution: {integrity: sha512-rIq85RCqwMQFtQSBIvUbmEAkNw0pu89PsrikSt+uVMCxjN1ZjbekTWw4hi0NVax8kAb5t2Xgs6kQrFoapyQ3Xg==}
+ '@yuku-parser/binding-linux-arm-gnu@0.7.3':
+ resolution: {integrity: sha512-6bHeDiUd+0bmoJJ5wZVG+PcJkXQUdjy/AzHsOVcOSUtHtRTX2H3Z5RIHyPAh5OveLtT4RHyqaO3fEQGnHGX5/Q==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.7.0':
- resolution: {integrity: sha512-BNoI0mP8o3iV6dJEgfJq1U6cAMn7iSYe3gSYkN05DL1FyOU6ni2NwcDScsV6RBBQHj4V1s5123F85JLPhhXfqA==}
+ '@yuku-parser/binding-linux-arm-musl@0.7.3':
+ resolution: {integrity: sha512-trGERNLJGvXkkyvdWBKspTOBATd4lcmpPFPcy5HI5kC3rC3ZMHQDJ356OMSVUsR2NQnl++F0ZTZQucao9hrbeQ==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.7.0':
- resolution: {integrity: sha512-YrFNrrc0bq5B+cV2EuxDU4VPhuH0RHkV0M1rne8UTxPbqjPmarWxLcl1JEeyaXcL0856kwnaV728GMeB1o/Gdg==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.3':
+ resolution: {integrity: sha512-p1ELmzhqAX7SFUvH/tR5zSb8NsWZQ8ulw7PqatfXNmJMy34bkivtL0z2jPpVoMJXf5o2+TwBN29Z31CLL0wvkA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.7.0':
- resolution: {integrity: sha512-WaDi6BsjZ/vrO7EgX36C4sLN9fUPZd/vM0Nh+82uOjygCxgFtiRf5NsFxdaLSzqMi+sbGsg+hWM/De4vkana3A==}
+ '@yuku-parser/binding-linux-arm64-musl@0.7.3':
+ resolution: {integrity: sha512-dZ79SrJ002ZXfBDmpQ47SF+06Q5bGOjFeoSK8xO97ter/bjLBgxSO4d7i9hhf+uj4xkrTPc/OFNVaeBAF3L4dA==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.7.0':
- resolution: {integrity: sha512-gxlbaqglGr7ir9UZLF0945JKTImI9MFDZiny57mRiqktCTDVQPnb5Lmj0okKJ6w0nBX1NzwviMX6v4i+rwLSWw==}
+ '@yuku-parser/binding-linux-x64-gnu@0.7.3':
+ resolution: {integrity: sha512-LjT64hVGWWbOmOYS+Fd8qScgyRxgUbudhFJbw8aeUVnhiNR1np36KnE0VFWrJeu7rTdNxuzVyV5o9JLqhBDTVQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.7.0':
- resolution: {integrity: sha512-n7pCgW5iNoaKEpt8K3UTkg7ACX87MueWkJQD7cQSOgxyu/Qx0BCdwi0iOs60Gjj88wyKwqkYIBPMN3wKE5P7Yw==}
+ '@yuku-parser/binding-linux-x64-musl@0.7.3':
+ resolution: {integrity: sha512-5Nw3v5BqYbOi0ZdV+SImgVYa0KDBVAY/ZNPilTsJJU4phqa2cqEW4+aMgyieE/4bqpojt/B931kM+7pipazP9g==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.7.0':
- resolution: {integrity: sha512-kyuC7W1mGIMbJp6t86hIhDjnptFxZiTaOrbHhYkCpfsXPF6pszWNK03DUMc//Udnw3Af3d5w93CRJlRNpCb5eg==}
+ '@yuku-parser/binding-win32-arm64@0.7.3':
+ resolution: {integrity: sha512-lFYXgHiq8tJKa6/e1/q8Su+IJVV4/CjoXbIJ7/GdPXPp9Hx0gh/8HqmGSsrwlY2w8/ohBcar9wxjm1rQ8D16bg==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.7.0':
- resolution: {integrity: sha512-xEm5rwtETud7iNbxSocACgXzPrv2x4vkk339BtAqZAKoCS+edaO767EKAGcUO3xo8STBgCud1cAA5oIyzN8APA==}
+ '@yuku-parser/binding-win32-x64@0.7.3':
+ resolution: {integrity: sha512-wy/fs4OrHBhKW8LDyZJRMyMQ3QOfbSQDp0WtMbtzWCVui/vTQEUJMGnwvRCppjchS/qIQfbWzIw/HSjogJqZFA==}
cpu: [x64]
os: [win32]
- '@yuku-toolchain/types@0.7.0':
- resolution: {integrity: sha512-kKleXJmXcZnJ5LUDTeYvK350SB+BXdpoHUwT78GGyOXOhCZ0tWf+seDPAvVnCrjoJhf+FhqtR5HRUfWW+yILQw==}
+ '@yuku-toolchain/types@0.7.3':
+ resolution: {integrity: sha512-ezarjq3dcl8Nx3iJ9VeAc7vhzvHyRoSvr7bLX76T+ljRq73IbZ11X2RFCblfK6YxW2DsjkzU6MPnr3JWDYqYYQ==}
'@zone-eu/mailsplit@5.4.14':
resolution: {integrity: sha512-rz0FQOhN3Vq1XrSeSSa9+dPcaFbBxmQPjiZm6zS9oxdVHV7rOWIAYX3yP2YAUf0qBncY8CI+NogzPCmMVrMXcw==}
@@ -5921,14 +5921,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.12:
- resolution: {integrity: sha512-IzGRfGwSsufXJWOcQ0tmECKMG/dbxhUwDOySTS7JE1AM8pkB9+bpcTPs8bTxxSNrSvGocSczrBlOh97tZObq9Q==}
+ tsdown@0.22.13:
+ resolution: {integrity: sha512-XaYFhtiKRUvTpXv/YAehsHdbEb3LN/iMlzjSINbjlaATtXN2zVPKox2STKhcyFPlh++8Zg7suNN27E679IfAUA==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.12
- '@tsdown/exe': 0.22.12
+ '@tsdown/css': 0.22.13
+ '@tsdown/exe': 0.22.13
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6446,14 +6446,14 @@ packages:
youtubei.js@17.2.0:
resolution: {integrity: sha512-XLNsgRKO1h7t4i9tIMWSQSeWdD7Ujkk5v1m5YCaumaHMhu/xuLqtO3M0Hq7CXNup9HlJ1NGrT1Y+HLIHnL6Ujg==}
- yuku-ast@0.7.0:
- resolution: {integrity: sha512-W5UzqYg/Xuyz41cAyxwo/TIPpDX221OuC9U5f44+NulDAHDwtzvGE3M3Xz3mdcLEutWOmTc/WP/y7NO6ANA2gw==}
+ yuku-ast@0.7.3:
+ resolution: {integrity: sha512-occyAXtcU4hcl5UPEclWwLqz4J1ZAV8Us4LllmTqAe1YjL5aMbh3GCpzHt6O0sOF+dwBI3BZAcFQqbyX1RiaWg==}
- yuku-codegen@0.7.0:
- resolution: {integrity: sha512-RJgoLaIU2AGKRkUHqMtw6gQhYm+NXZm/AFnfn+5YAHgRfApIc/PNJABJHihHoxWltayjbwEOCa68zqxdJafgfA==}
+ yuku-codegen@0.7.3:
+ resolution: {integrity: sha512-hhyJW0TIEwm4kex8XVCS4CZIXHS/3TWWNUum+95Ji5/4W+iaLfUnvwSxJwyNfTzS8cxmd1np+EZ4b8ObLguKEA==}
- yuku-parser@0.7.0:
- resolution: {integrity: sha512-72HXJhlPOolJN4ER0xZy1wtAeWZEG4uXfZnzEm2uD7yAWt32VE/52FwIfVGi2Hs2P0JRZK2+sPwULQMTuEzYtw==}
+ yuku-parser@0.7.3:
+ resolution: {integrity: sha512-5kZ7HR+W+OsNpVtZ9LHruQsgmcoJl4TETrffPq2GbliThsFiy+zHzbMLmSxQJrokzyJqfJ/TPfFkdUDOodJCgA==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -8473,73 +8473,73 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.7.0':
+ '@yuku-codegen/binding-darwin-arm64@0.7.3':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.7.0':
+ '@yuku-codegen/binding-darwin-x64@0.7.3':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.7.0':
+ '@yuku-codegen/binding-freebsd-x64@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.7.0':
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.7.0':
+ '@yuku-codegen/binding-linux-arm-musl@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.7.0':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.7.0':
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.7.0':
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.3':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.7.0':
+ '@yuku-codegen/binding-linux-x64-musl@0.7.3':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.7.0':
+ '@yuku-codegen/binding-win32-arm64@0.7.3':
optional: true
- '@yuku-codegen/binding-win32-x64@0.7.0':
+ '@yuku-codegen/binding-win32-x64@0.7.3':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.7.0':
+ '@yuku-parser/binding-darwin-arm64@0.7.3':
optional: true
- '@yuku-parser/binding-darwin-x64@0.7.0':
+ '@yuku-parser/binding-darwin-x64@0.7.3':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.7.0':
+ '@yuku-parser/binding-freebsd-x64@0.7.3':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.7.0':
+ '@yuku-parser/binding-linux-arm-gnu@0.7.3':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.7.0':
+ '@yuku-parser/binding-linux-arm-musl@0.7.3':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.7.0':
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.3':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.7.0':
+ '@yuku-parser/binding-linux-arm64-musl@0.7.3':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.7.0':
+ '@yuku-parser/binding-linux-x64-gnu@0.7.3':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.7.0':
+ '@yuku-parser/binding-linux-x64-musl@0.7.3':
optional: true
- '@yuku-parser/binding-win32-arm64@0.7.0':
+ '@yuku-parser/binding-win32-arm64@0.7.3':
optional: true
- '@yuku-parser/binding-win32-x64@0.7.0':
+ '@yuku-parser/binding-win32-x64@0.7.3':
optional: true
- '@yuku-toolchain/types@0.7.0': {}
+ '@yuku-toolchain/types@0.7.3': {}
'@zone-eu/mailsplit@5.4.14':
dependencies:
@@ -11296,9 +11296,9 @@ snapshots:
get-tsconfig: 5.0.0-beta.5
obug: 2.1.4
rolldown: 1.2.0
- yuku-ast: 0.7.0
- yuku-codegen: 0.7.0
- yuku-parser: 0.7.0
+ yuku-ast: 0.7.3
+ yuku-codegen: 0.7.3
+ yuku-parser: 0.7.3
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11722,7 +11722,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
+ tsdown@0.22.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -12225,42 +12225,42 @@ snapshots:
fflate: 0.8.3
meriyah: 6.1.4
- yuku-ast@0.7.0:
+ yuku-ast@0.7.3:
dependencies:
- '@yuku-toolchain/types': 0.7.0
+ '@yuku-toolchain/types': 0.7.3
- yuku-codegen@0.7.0:
+ yuku-codegen@0.7.3:
dependencies:
- '@yuku-toolchain/types': 0.7.0
+ '@yuku-toolchain/types': 0.7.3
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.7.0
- '@yuku-codegen/binding-darwin-x64': 0.7.0
- '@yuku-codegen/binding-freebsd-x64': 0.7.0
- '@yuku-codegen/binding-linux-arm-gnu': 0.7.0
- '@yuku-codegen/binding-linux-arm-musl': 0.7.0
- '@yuku-codegen/binding-linux-arm64-gnu': 0.7.0
- '@yuku-codegen/binding-linux-arm64-musl': 0.7.0
- '@yuku-codegen/binding-linux-x64-gnu': 0.7.0
- '@yuku-codegen/binding-linux-x64-musl': 0.7.0
- '@yuku-codegen/binding-win32-arm64': 0.7.0
- '@yuku-codegen/binding-win32-x64': 0.7.0
-
- yuku-parser@0.7.0:
- dependencies:
- '@yuku-toolchain/types': 0.7.0
- yuku-ast: 0.7.0
+ '@yuku-codegen/binding-darwin-arm64': 0.7.3
+ '@yuku-codegen/binding-darwin-x64': 0.7.3
+ '@yuku-codegen/binding-freebsd-x64': 0.7.3
+ '@yuku-codegen/binding-linux-arm-gnu': 0.7.3
+ '@yuku-codegen/binding-linux-arm-musl': 0.7.3
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.7.3
+ '@yuku-codegen/binding-linux-arm64-musl': 0.7.3
+ '@yuku-codegen/binding-linux-x64-gnu': 0.7.3
+ '@yuku-codegen/binding-linux-x64-musl': 0.7.3
+ '@yuku-codegen/binding-win32-arm64': 0.7.3
+ '@yuku-codegen/binding-win32-x64': 0.7.3
+
+ yuku-parser@0.7.3:
+ dependencies:
+ '@yuku-toolchain/types': 0.7.3
+ yuku-ast: 0.7.3
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.7.0
- '@yuku-parser/binding-darwin-x64': 0.7.0
- '@yuku-parser/binding-freebsd-x64': 0.7.0
- '@yuku-parser/binding-linux-arm-gnu': 0.7.0
- '@yuku-parser/binding-linux-arm-musl': 0.7.0
- '@yuku-parser/binding-linux-arm64-gnu': 0.7.0
- '@yuku-parser/binding-linux-arm64-musl': 0.7.0
- '@yuku-parser/binding-linux-x64-gnu': 0.7.0
- '@yuku-parser/binding-linux-x64-musl': 0.7.0
- '@yuku-parser/binding-win32-arm64': 0.7.0
- '@yuku-parser/binding-win32-x64': 0.7.0
+ '@yuku-parser/binding-darwin-arm64': 0.7.3
+ '@yuku-parser/binding-darwin-x64': 0.7.3
+ '@yuku-parser/binding-freebsd-x64': 0.7.3
+ '@yuku-parser/binding-linux-arm-gnu': 0.7.3
+ '@yuku-parser/binding-linux-arm-musl': 0.7.3
+ '@yuku-parser/binding-linux-arm64-gnu': 0.7.3
+ '@yuku-parser/binding-linux-arm64-musl': 0.7.3
+ '@yuku-parser/binding-linux-x64-gnu': 0.7.3
+ '@yuku-parser/binding-linux-x64-musl': 0.7.3
+ '@yuku-parser/binding-win32-arm64': 0.7.3
+ '@yuku-parser/binding-win32-x64': 0.7.3
zod@3.25.76: {}
From 34dd80b3963b0876f8c87c2c32387304b363a633 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 13:01:17 +0000
Subject: [PATCH 386/670] chore(deps-dev): bump the cloudflare group with 3
updates (#22789)
Bumps the cloudflare group with 3 updates: [@cloudflare/vitest-pool-workers](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/vitest-pool-workers), [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/vitest-pool-workers` from 0.18.6 to 0.18.7
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Changelog](https://github.com/cloudflare/workers-sdk/blob/main/packages/vitest-pool-workers/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/@cloudflare/vitest-pool-workers@0.18.7/packages/vitest-pool-workers)
Updates `@cloudflare/workers-types` from 5.20260721.1 to 5.20260722.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.112.0 to 4.113.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.113.0/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/vitest-pool-workers"
dependency-version: 0.18.7
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: cloudflare
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260722.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.113.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +--
pnpm-lock.yaml | 102 ++++++++++++++++++++++++-------------------------
2 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/package.json b/package.json
index 5520cb422b77..f7f7625da9ff 100644
--- a/package.json
+++ b/package.json
@@ -148,8 +148,8 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/vitest-pool-workers": "0.18.6",
- "@cloudflare/workers-types": "5.20260721.1",
+ "@cloudflare/vitest-pool-workers": "0.18.7",
+ "@cloudflare/workers-types": "5.20260722.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.74.0",
@@ -207,7 +207,7 @@
"unrun": "0.3.1",
"vite-tsconfig-paths": "7.0.0-alpha.1",
"vitest": "4.1.10",
- "wrangler": "4.112.0",
+ "wrangler": "4.113.0",
"yaml-eslint-parser": "2.1.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e4cacae62a28..c360b475983e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -294,11 +294,11 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/vitest-pool-workers':
- specifier: 0.18.6
- version: 0.18.6(@cloudflare/workers-types@5.20260721.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ specifier: 0.18.7
+ version: 0.18.7(@cloudflare/workers-types@5.20260722.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260721.1
- version: 5.20260721.1
+ specifier: 5.20260722.1
+ version: 5.20260722.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -471,8 +471,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
- specifier: 4.112.0
- version: 4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.113.0
+ version: 4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -604,45 +604,45 @@ packages:
workerd:
optional: true
- '@cloudflare/vitest-pool-workers@0.18.6':
- resolution: {integrity: sha512-6JGqaQsQRZIVq/6jEC4ouJnShZriPIJ2X0yGndwMm+SiPP93pJi5Dp30dYAoztNrNJC7wWK7ec5slLfMBMZ8jA==}
+ '@cloudflare/vitest-pool-workers@0.18.7':
+ resolution: {integrity: sha512-PGYToiFoGpuRV2Uh33S4fI7JcmSkDxk6LQeneYtgfsITEkVi5iGxc3Vms6yW9Jr6uSzVK4Be9XZfdyZDr5GWYw==}
peerDependencies:
'@vitest/runner': ^4.1.0
'@vitest/snapshot': ^4.1.0
vitest: ^4.1.0
- '@cloudflare/workerd-darwin-64@1.20260714.1':
- resolution: {integrity: sha512-ZWXqAN8G7Cx9hMRQuk+59ziJhR3j1F4iO+Qs8aHdfKZ3Dq5Yi/57xvkJTgCGBnW1YU/L78r8f6HEy51bwbTpNw==}
+ '@cloudflare/workerd-darwin-64@1.20260721.1':
+ resolution: {integrity: sha512-VivNMhiEdZIB4JBWxf1RMJGROErv53qmQ+dvhjA1evrCouvqRYW718VqDideU3PSV7Ythl5Df48NqZYWoaEHpQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260714.1':
- resolution: {integrity: sha512-tueWxWC3wyCbMG6zRAxsMXX0YLgrRWbiAPYFQ2uJ7dUH8G+5E7UTWaQS9B1HdJ0bpKFW1NWxhs1o2noKVFSUYg==}
+ '@cloudflare/workerd-darwin-arm64@1.20260721.1':
+ resolution: {integrity: sha512-k7oye1ZiuwnnBBA2eTMduconr/ud5ZxFtRNTsYwMdmJeeeislw2+M72otrHxxvybCP7JWPPlJ38uhfajpcyhOA==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260714.1':
- resolution: {integrity: sha512-1VChTZRb0l0F7R4e1G5RtLKV4oFi6x+rQgxh2+yu887j3l/3TLgatuv1L8/5zhc9gKEhATTxOh0e52Rtd9dDWQ==}
+ '@cloudflare/workerd-linux-64@1.20260721.1':
+ resolution: {integrity: sha512-hon0lW4ZQ4boAVgaw+0ZFTNS8v5MWPWvK0HZnt4tDpKYnDUviLZawtUW3KqvFmCQTipVHl1S34j3J8Eqb93hGQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260714.1':
- resolution: {integrity: sha512-rMm3G+NirG2UdgHIRDdF1asNC6FqgIzZzkRG+VDhhDGcVxAQwvrMT1E38BivEvHr3G04MB4AfhcOczX0+GtRkQ==}
+ '@cloudflare/workerd-linux-arm64@1.20260721.1':
+ resolution: {integrity: sha512-nAl+HRQqpX5b7xVwWcvLPZmCk8NQ2yjI0yvJTWcHiRswbMEg1ZZckVmjJUAn0PHzZARbCSyIV7v3UjM+SPRmIQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260714.1':
- resolution: {integrity: sha512-cGqnU3Hg2YZS/k3SAqrMp1DjpdsyFde72tWltdl6ZT9+SFz/Zrk/8gyTU1TcxC4YApXeNVH5TyU5cOGPgUJ0pg==}
+ '@cloudflare/workerd-windows-64@1.20260721.1':
+ resolution: {integrity: sha512-9paFG5cMTKz/CRixnEEnZbe5uvFPBFSDthxJHANfCWhUtBj49GSL1FPIokIg+Q+H8DGJEExU0lL92LtxD0lTxQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260721.1':
- resolution: {integrity: sha512-J6HZRuQOP3gVe9G5rxHQVS8kQRjo7NIaF+Lz4kO2lVmaCkQ1E78APOOthaI7KyCQzp+A2NbXBQI6QLRIswdWbA==}
+ '@cloudflare/workers-types@5.20260722.1':
+ resolution: {integrity: sha512-8+kivCgFGzwrAfNOWgSpzy/VDvmT/i5KWBgQhnygv3d1kajNn6mCYTbLKpouG0aY8mXjhv+IQm1a8r2K/H4pqQ==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -4940,8 +4940,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260714.0:
- resolution: {integrity: sha512-MYlTCLdWCPqvrYY2uLwOjXwmglXuiHE3TGGkbOW4BwjUPa1r07E0iuHwrNDIs/sxK21r+o90Jx58AV2KeNdJZw==}
+ miniflare@4.20260721.0:
+ resolution: {integrity: sha512-fBLaCxZ2i/nPH8iyLzvza0C8/sSF4sjD1ma1Skf+pkZVK0TlaW5ujHJlUHwcwR66v2JZt+Q28d4DCX/oaLG0cA==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -6321,17 +6321,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260714.1:
- resolution: {integrity: sha512-oIbQzfdyl9UQUnG6XLegcSq0Mgt/7WKDbFOoqGgOWCS+/fhyGB460uKEgdAQQ9RHCO/ttcNCX/KiMIQzdoeu3Q==}
+ workerd@1.20260721.1:
+ resolution: {integrity: sha512-b/DWhpV0jTudzQpLhDovcOgBz233386q+3Hbari7CLCNT9UXxjQziSTZ9yCoKdT2K3TSx5jrwlOisq8hlLWXYg==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.112.0:
- resolution: {integrity: sha512-5H+XUD0TySCv1LuktFHDIEOkboH2nTfQs+35L+USt3MtntjDTMVIJprLgQcL2WBjulOyjxpd1vyTiSTJVW5MjQ==}
+ wrangler@4.113.0:
+ resolution: {integrity: sha512-ROGzSloJv0y21It6Oc9LaruNcu1tdiQ/XzL3Jc3YkFjzXEMXzTqVhA8vQaGMTdZHTjFP0PVcwAHNgaw3gXu4wA==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^5.20260714.1
+ '@cloudflare/workers-types': ^5.20260721.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6617,43 +6617,43 @@ snapshots:
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260721.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260714.1
+ workerd: 1.20260721.1
- '@cloudflare/vitest-pool-workers@0.18.6(@cloudflare/workers-types@5.20260721.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.7(@cloudflare/workers-types@5.20260722.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
- miniflare: 4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
- bufferutil
- utf-8-validate
- '@cloudflare/workerd-darwin-64@1.20260714.1':
+ '@cloudflare/workerd-darwin-64@1.20260721.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260714.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260721.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260714.1':
+ '@cloudflare/workerd-linux-64@1.20260721.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260714.1':
+ '@cloudflare/workerd-linux-arm64@1.20260721.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260714.1':
+ '@cloudflare/workerd-windows-64@1.20260721.1':
optional: true
- '@cloudflare/workers-types@5.20260721.1': {}
+ '@cloudflare/workers-types@5.20260722.1': {}
'@colors/colors@1.6.0': {}
@@ -10586,12 +10586,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.28.0
- workerd: 1.20260714.1
+ workerd: 1.20260721.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -12089,26 +12089,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260714.1:
+ workerd@1.20260721.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260714.1
- '@cloudflare/workerd-darwin-arm64': 1.20260714.1
- '@cloudflare/workerd-linux-64': 1.20260714.1
- '@cloudflare/workerd-linux-arm64': 1.20260714.1
- '@cloudflare/workerd-windows-64': 1.20260714.1
+ '@cloudflare/workerd-darwin-64': 1.20260721.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260721.1
+ '@cloudflare/workerd-linux-64': 1.20260721.1
+ '@cloudflare/workerd-linux-arm64': 1.20260721.1
+ '@cloudflare/workerd-windows-64': 1.20260721.1
- wrangler@4.112.0(@cloudflare/workers-types@5.20260721.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260714.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260721.1)
blake3-wasm: 2.1.5
esbuild: 0.28.1
- miniflare: 4.20260714.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260714.1
+ workerd: 1.20260721.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260721.1
+ '@cloudflare/workers-types': 5.20260722.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From dd23111183ff0b15fd1ddd51cde25729fcd86957 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 21:13:15 +0800
Subject: [PATCH 387/670] chore(deps): bump devenv from `29fcc8a` to `ef185b5`
(#22792)
Bumps [devenv](https://github.com/cachix/devenv) from `29fcc8a` to `ef185b5`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/29fcc8a9a778c2e3f822ef961cc9667122e79dd5...ef185b5a38445777194bc8469fc1cdebd99e7dbc)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: ef185b5a38445777194bc8469fc1cdebd99e7dbc
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/flake.lock b/flake.lock
index b3add4a311a9..c72b5d9330b6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784586378,
- "narHash": "sha256-F+K6FU/IBSsaxDu23imNkcpJzMbzYXNjn7bBP/22N3I=",
+ "lastModified": 1784696310,
+ "narHash": "sha256-EeZH7UbjqoJHHrN1DkV32DxZ8OMGh/2kla94lpO17eE=",
"owner": "cachix",
"repo": "devenv",
- "rev": "29fcc8a9a778c2e3f822ef961cc9667122e79dd5",
+ "rev": "ef185b5a38445777194bc8469fc1cdebd99e7dbc",
"type": "github"
},
"original": {
@@ -135,11 +135,11 @@
"ghostty": {
"flake": false,
"locked": {
- "lastModified": 1782866021,
- "narHash": "sha256-BOLtzL5iAHmtCOg9/DXtcfw+K86QWol088K72chJB04=",
+ "lastModified": 1784602798,
+ "narHash": "sha256-298x90knBUWX5GHGXh2SKsAKvStjU2ri9UgOGoF79/8=",
"owner": "ghostty-org",
"repo": "ghostty",
- "rev": "e1d31deaaed21aa9225afca78d778fb373c95852",
+ "rev": "88b4cd047fa627cdca6781bc7e7dc8b75a2cecb9",
"type": "github"
},
"original": {
From 1c29f61c6fd23a0c2893b43750933dfd5db2e9b6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 21:20:45 +0800
Subject: [PATCH 388/670] chore(deps): bump the opentelemetry group with 5
updates (#22790)
Bumps the opentelemetry group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [@opentelemetry/exporter-prometheus](https://github.com/open-telemetry/opentelemetry-js) | `0.220.0` | `0.221.0` |
| [@opentelemetry/exporter-trace-otlp-http](https://github.com/open-telemetry/opentelemetry-js) | `0.220.0` | `0.221.0` |
| [@opentelemetry/resources](https://github.com/open-telemetry/opentelemetry-js) | `2.9.0` | `2.10.0` |
| [@opentelemetry/sdk-metrics](https://github.com/open-telemetry/opentelemetry-js) | `2.9.0` | `2.10.0` |
| [@opentelemetry/sdk-trace-base](https://github.com/open-telemetry/opentelemetry-js) | `2.9.0` | `2.10.0` |
Updates `@opentelemetry/exporter-prometheus` from 0.220.0 to 0.221.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.220.0...experimental/v0.221.0)
Updates `@opentelemetry/exporter-trace-otlp-http` from 0.220.0 to 0.221.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.220.0...experimental/v0.221.0)
Updates `@opentelemetry/resources` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/v2.9.0...v2.10.0)
Updates `@opentelemetry/sdk-metrics` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/v2.9.0...v2.10.0)
Updates `@opentelemetry/sdk-trace-base` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-js/compare/v2.9.0...v2.10.0)
---
updated-dependencies:
- dependency-name: "@opentelemetry/exporter-prometheus"
dependency-version: 0.221.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: opentelemetry
- dependency-name: "@opentelemetry/exporter-trace-otlp-http"
dependency-version: 0.221.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: opentelemetry
- dependency-name: "@opentelemetry/resources"
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: opentelemetry
- dependency-name: "@opentelemetry/sdk-metrics"
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: opentelemetry
- dependency-name: "@opentelemetry/sdk-trace-base"
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: opentelemetry
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 10 +--
pnpm-lock.yaml | 166 +++++++++++++++++++++++++------------------------
2 files changed, 91 insertions(+), 85 deletions(-)
diff --git a/package.json b/package.json
index f7f7625da9ff..9dd7b09f77d6 100644
--- a/package.json
+++ b/package.json
@@ -69,11 +69,11 @@
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.2",
"@opentelemetry/api": "1.9.1",
- "@opentelemetry/exporter-prometheus": "0.220.0",
- "@opentelemetry/exporter-trace-otlp-http": "0.220.0",
- "@opentelemetry/resources": "2.9.0",
- "@opentelemetry/sdk-metrics": "2.9.0",
- "@opentelemetry/sdk-trace-base": "2.9.0",
+ "@opentelemetry/exporter-prometheus": "0.221.0",
+ "@opentelemetry/exporter-trace-otlp-http": "0.221.0",
+ "@opentelemetry/resources": "2.10.0",
+ "@opentelemetry/sdk-metrics": "2.10.0",
+ "@opentelemetry/sdk-trace-base": "2.10.0",
"@opentelemetry/semantic-conventions": "1.43.0",
"@rss3/sdk": "0.0.25",
"@scalar/hono-api-reference": "0.11.11",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c360b475983e..9cb81ea3e7d7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -62,20 +62,20 @@ importers:
specifier: 1.9.1
version: 1.9.1
'@opentelemetry/exporter-prometheus':
- specifier: 0.220.0
- version: 0.220.0(@opentelemetry/api@1.9.1)
+ specifier: 0.221.0
+ version: 0.221.0(@opentelemetry/api@1.9.1)
'@opentelemetry/exporter-trace-otlp-http':
- specifier: 0.220.0
- version: 0.220.0(@opentelemetry/api@1.9.1)
+ specifier: 0.221.0
+ version: 0.221.0(@opentelemetry/api@1.9.1)
'@opentelemetry/resources':
- specifier: 2.9.0
- version: 2.9.0(@opentelemetry/api@1.9.1)
+ specifier: 2.10.0
+ version: 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-metrics':
- specifier: 2.9.0
- version: 2.9.0(@opentelemetry/api@1.9.1)
+ specifier: 2.10.0
+ version: 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base':
- specifier: 2.9.0
- version: 2.9.0(@opentelemetry/api@1.9.1)
+ specifier: 2.10.0
+ version: 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions':
specifier: 1.43.0
version: 1.43.0
@@ -87,7 +87,7 @@ importers:
version: 0.11.11(hono@4.12.31)
'@sentry/node':
specifier: 10.67.0
- version: 10.67.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))
+ version: 10.67.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))
cheerio:
specifier: 1.2.0
version: 1.2.0
@@ -1529,24 +1529,28 @@ packages:
resolution: {integrity: sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==}
engines: {node: '>=8.0.0'}
+ '@opentelemetry/api-logs@0.221.0':
+ resolution: {integrity: sha512-OlanaW1vv7ufTqQ3/fPLI4arGt5ZoM+P8abOMki6uEYnpRazepSWDwDnnw+la7kE26SHVC18//SMccrDvLKOXQ==}
+ engines: {node: '>=8.0.0'}
+
'@opentelemetry/api@1.9.1':
resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/core@2.9.0':
- resolution: {integrity: sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw==}
+ '@opentelemetry/core@2.10.0':
+ resolution: {integrity: sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/exporter-prometheus@0.220.0':
- resolution: {integrity: sha512-JZD5DL/NBpVd2BHefvYosm3G40UZ/KzExLv5tc0eZe0CtrsHHtcOk3YPUxR2EINmUeBf8+w5UReTV8fFPn95lA==}
+ '@opentelemetry/exporter-prometheus@0.221.0':
+ resolution: {integrity: sha512-kW79a20qWESIuAdDrxzg9WKM98twV/NBWBFRAH57ap/+ssZhiCo0hckzKT0zpuwR/gSHrFAQhJL0bYDrnEM34g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/exporter-trace-otlp-http@0.220.0':
- resolution: {integrity: sha512-/+ExB3lRkf+erv4PnoywyL7RHKITidxtUpUTS55k7OQ0dB42S7gEF1gry7swb9MSm1hYLUhJg4QQh9W8SpwwqA==}
+ '@opentelemetry/exporter-trace-otlp-http@0.221.0':
+ resolution: {integrity: sha512-AySXiKoC+meiWm6zdVj5T2LnPDZuatveBby1cMOeQteIWsYXAUxs8Sru13G2pVSPrUXz6vF+og7QVBX6GdC/oQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
@@ -1557,44 +1561,44 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/otlp-exporter-base@0.220.0':
- resolution: {integrity: sha512-CXYo8UD5Mn9YbgebO2EL4wejtA+gxLmLiu6HCk2KH2BR7XhFN6/6p1UlCb23DYCjeYkndevLHuejCCN1yx4+OQ==}
+ '@opentelemetry/otlp-exporter-base@0.221.0':
+ resolution: {integrity: sha512-UFPIq80OH3Ns/oPFHRj14d4DTOxUo+MUFU8hUiCq5jTqFhdeJnfVSANHT+xp92409cA+oxzvlZCe6NM1wvCuBA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/otlp-transformer@0.220.0':
- resolution: {integrity: sha512-lXGrv7KXZ0gNH9SVNUaa6vv6phVYGvJxfXAlMbzbakiXru75f5MZl8Z7oqiMMQD77riVHJCFlQvbZs/VVN2/4A==}
+ '@opentelemetry/otlp-transformer@0.221.0':
+ resolution: {integrity: sha512-lg6lkOU08Az23jVcn/0Els9HP+V8PnR4Km6p0KgpTggS0n/WuhnmY64rSh83Of9iR9nD+dpWr6adlcX8KzAwjg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/resources@2.9.0':
- resolution: {integrity: sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==}
+ '@opentelemetry/resources@2.10.0':
+ resolution: {integrity: sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
- '@opentelemetry/sdk-logs@0.220.0':
- resolution: {integrity: sha512-WywcTkQtv2iNmt+6y5Kcd4rzvx9bLVsBa2Nwcmg01IUaBTkTow3W4d9KE5vNBpEDtb9tp21WcRBY/lANRrApYA==}
+ '@opentelemetry/sdk-logs@0.221.0':
+ resolution: {integrity: sha512-FaDcazjyMp7TZZZAsqbo4IkovP0UegoCu0EBkiNt+qCqvUf7FPAsfcrZ3+ZEkKgXZ/jHafop+JoGPDk3A0SmLg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.4.0 <1.10.0'
- '@opentelemetry/sdk-metrics@2.9.0':
- resolution: {integrity: sha512-Xx8RGS4H5XEBl01WuCreMIpiah9cCXMbSkeuIePPdD2cUpq/vUzYmj8E/MK1OsbOc93FuAD4jfn2WOacKwLn7Q==}
+ '@opentelemetry/sdk-metrics@2.10.0':
+ resolution: {integrity: sha512-t6r1VSvXNtSDnPXU1FbZeetJb7yyovHmgu0wRSoftxtE0g2rSNhQZQUy69sRUCL+iioJpX8SN/S6wq6ZtvLySQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.9.0 <1.10.0'
- '@opentelemetry/sdk-trace-base@2.9.0':
- resolution: {integrity: sha512-cp9zmTl62R8PJrpvFcmc8N2JQU/xfa0S+61q511Nji+QxCfZ8Ifvg7H27G8cANe4crg4RTrWsVvanHiXjSp6ag==}
+ '@opentelemetry/sdk-trace-base@2.10.0':
+ resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
- '@opentelemetry/sdk-trace@2.9.0':
- resolution: {integrity: sha512-sGA19HvtrrSKYsseHphluH6j3p6Xa3fqc7c7y8f/7mYWejc1lyDFcpSdD1kYa50HCLUeEo4zA5bW0pniaPszuw==}
+ '@opentelemetry/sdk-trace@2.10.0':
+ resolution: {integrity: sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
@@ -7333,29 +7337,31 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.1
+ '@opentelemetry/api-logs@0.221.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.1
+
'@opentelemetry/api@1.9.1': {}
- '@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/semantic-conventions': 1.43.0
- '@opentelemetry/exporter-prometheus@0.220.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/exporter-prometheus@0.221.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-metrics': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.43.0
- '@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/otlp-exporter-base': 0.220.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/otlp-transformer': 0.220.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/otlp-exporter-base': 0.221.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1)':
dependencies:
@@ -7366,55 +7372,55 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@opentelemetry/otlp-exporter-base@0.220.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/otlp-exporter-base@0.221.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/otlp-transformer': 0.220.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/otlp-transformer': 0.221.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/otlp-transformer@0.220.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/otlp-transformer@0.221.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/api-logs': 0.220.0
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-logs': 0.220.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-metrics': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/api-logs': 0.221.0
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-logs': 0.221.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-metrics': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources@2.9.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.43.0
- '@opentelemetry/sdk-logs@0.220.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/sdk-logs@0.221.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/api-logs': 0.220.0
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/api-logs': 0.221.0
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.43.0
- '@opentelemetry/sdk-metrics@2.9.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/sdk-metrics@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.43.0
- '@opentelemetry/sdk-trace@2.9.0(@opentelemetry/api@1.9.1)':
+ '@opentelemetry/sdk-trace@2.10.0(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/semantic-conventions': 1.43.0
'@opentelemetry/semantic-conventions@1.43.0': {}
@@ -8010,28 +8016,28 @@ snapshots:
dependencies:
'@sentry/conventions': 0.16.0
- '@sentry/node-core@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node-core@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))':
dependencies:
'@sentry/conventions': 0.16.0
'@sentry/core': 10.67.0
- '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))
import-in-the-middle: 3.3.2
optionalDependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/exporter-trace-otlp-http': 0.220.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/exporter-trace-otlp-http': 0.221.0(@opentelemetry/api@1.9.1)
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1)
- '@sentry/node@10.67.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))':
+ '@sentry/node@10.67.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/instrumentation': 0.220.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.16.0
'@sentry/core': 10.67.0
- '@sentry/node-core': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
- '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))
+ '@sentry/node-core': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.220.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))
+ '@sentry/opentelemetry': 10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))
'@sentry/server-utils': 10.67.0
import-in-the-middle: 3.3.2
transitivePeerDependencies:
@@ -8039,11 +8045,11 @@ snapshots:
- '@opentelemetry/exporter-trace-otlp-http'
- supports-color
- '@sentry/opentelemetry@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.9.0(@opentelemetry/api@1.9.1))':
+ '@sentry/opentelemetry@10.67.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1)
- '@opentelemetry/sdk-trace-base': 2.9.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1)
+ '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1)
'@sentry/conventions': 0.16.0
'@sentry/core': 10.67.0
From e757839be2f1ca06df4686a7cf49541c19a986b2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 22:09:32 +0800
Subject: [PATCH 389/670] chore(deps-dev): bump the oxc group across 1
directory with 6 updates (#22791)
Bumps the oxc group with 6 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [@oxlint/plugins](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugins) | `1.74.0` | `1.75.0` |
| [oxc-parser](https://github.com/oxc-project/oxc/tree/HEAD/napi/parser) | `0.140.0` | `0.141.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.59.0` | `0.60.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.74.0` | `1.75.0` |
| [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.74.0` | `1.75.0` |
| [oxlint-tsgolint](https://github.com/oxc-project/tsgolint) | `0.25.0` | `7.0.2001` |
Updates `@oxlint/plugins` from 1.74.0 to 1.75.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.75.0/npm/oxlint-plugins)
Updates `oxc-parser` from 0.140.0 to 0.141.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/napi/parser/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/crates_v0.141.0/napi/parser)
Updates `oxfmt` from 0.59.0 to 0.60.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.60.0/npm/oxfmt)
Updates `oxlint` from 1.74.0 to 1.75.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.75.0/npm/oxlint)
Updates `oxlint-plugin-eslint` from 1.74.0 to 1.75.0
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint-plugin-eslint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/apps_v1.75.0/npm/oxlint-plugin-eslint)
Updates `oxlint-tsgolint` from 0.25.0 to 7.0.2001
- [Release notes](https://github.com/oxc-project/tsgolint/releases)
- [Commits](https://github.com/oxc-project/tsgolint/compare/v0.25.0...v7.0.2001)
---
updated-dependencies:
- dependency-name: "@oxlint/plugins"
dependency-version: 1.75.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxc-parser
dependency-version: 0.141.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxfmt
dependency-version: 0.60.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxlint
dependency-version: 1.75.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxlint-plugin-eslint
dependency-version: 1.75.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: oxc
- dependency-name: oxlint-tsgolint
dependency-version: 7.0.2001
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: oxc
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 12 +-
pnpm-lock.yaml | 599 +++++++++++++++++++++++++------------------------
2 files changed, 308 insertions(+), 303 deletions(-)
diff --git a/package.json b/package.json
index 9dd7b09f77d6..838e11ba7636 100644
--- a/package.json
+++ b/package.json
@@ -152,7 +152,7 @@
"@cloudflare/workers-types": "5.20260722.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
- "@oxlint/plugins": "1.74.0",
+ "@oxlint/plugins": "1.75.0",
"@stylistic/eslint-plugin": "5.10.0",
"@types/babel__preset-env": "7.10.0",
"@types/crypto-js": "4.2.2",
@@ -191,11 +191,11 @@
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
- "oxc-parser": "0.140.0",
- "oxfmt": "0.59.0",
- "oxlint": "1.74.0",
- "oxlint-plugin-eslint": "1.74.0",
- "oxlint-tsgolint": "0.25.0",
+ "oxc-parser": "0.141.0",
+ "oxfmt": "0.60.0",
+ "oxlint": "1.75.0",
+ "oxlint-plugin-eslint": "1.75.0",
+ "oxlint-tsgolint": "7.0.2001",
"remark": "15.0.1",
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9cb81ea3e7d7..169f2b85851a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -306,8 +306,8 @@ importers:
specifier: 10.0.1
version: 10.0.1(eslint@10.7.0)
'@oxlint/plugins':
- specifier: 1.74.0
- version: 1.74.0
+ specifier: 1.75.0
+ version: 1.75.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
version: 5.10.0(eslint@10.7.0)
@@ -423,20 +423,20 @@ importers:
specifier: 1.0.30
version: 1.0.30(undici@8.8.0)(utf-8-validate@5.0.10)
oxc-parser:
- specifier: 0.140.0
- version: 0.140.0
+ specifier: 0.141.0
+ version: 0.141.0
oxfmt:
- specifier: 0.59.0
- version: 0.59.0
+ specifier: 0.60.0
+ version: 0.60.0
oxlint:
- specifier: 1.74.0
- version: 1.74.0(oxlint-tsgolint@0.25.0)
+ specifier: 1.75.0
+ version: 1.75.0(oxlint-tsgolint@7.0.2001)
oxlint-plugin-eslint:
- specifier: 1.74.0
- version: 1.74.0
+ specifier: 1.75.0
+ version: 1.75.0
oxlint-tsgolint:
- specifier: 0.25.0
- version: 0.25.0
+ specifier: 7.0.2001
+ version: 7.0.2001
remark:
specifier: 15.0.1
version: 15.0.1
@@ -1629,129 +1629,129 @@ packages:
'@otplib/uri@13.4.1':
resolution: {integrity: sha512-xaIm7bvICMhoB2rZIR5luiaMdssWR5nY5nXnR1fdezUgZuEO58D6zrGzLp7pQuBmlpmL0HagnscDQFoskp9yiA==}
- '@oxc-parser/binding-android-arm-eabi@0.140.0':
- resolution: {integrity: sha512-ZfjDZ422mo7eo3b3VltqNsV9kmv1qt/sPEAMSl64iOSwhVfd0eIZ9LB79Mbs1xYXJnk7WSROwzBCKDIiVxPTvQ==}
+ '@oxc-parser/binding-android-arm-eabi@0.141.0':
+ resolution: {integrity: sha512-jk7086MFvR/T4DG9IY7MKBVt1PMxvSZoz/TvnifodvS0pjghVwJHRttnAExhlwdMOgHv1TmLdENnbNpYk2zjvA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxc-parser/binding-android-arm64@0.140.0':
- resolution: {integrity: sha512-Ia8jSvikUX6Sf+Ht+KOCUF/k1HpR0VlmqIYymubmWDebOEGtsyliHDR6JxsZ4IX3/c/GbrB1uh09aVGQv/LQmQ==}
+ '@oxc-parser/binding-android-arm64@0.141.0':
+ resolution: {integrity: sha512-a4XDQ27ZT7e7zwAlxJDTiCA7IBGWDuy2+MhFq85Of7XlBSmpkfcBFml11q0Zx6f7RMuI0B4xCtt2ytBS4yOptg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxc-parser/binding-darwin-arm64@0.140.0':
- resolution: {integrity: sha512-G6VK0nK61pH0d0mBjUqSZbVxGqqO5uzeginLDQj+gOO6ObfJjXRwgkD/ol0w1INcnFeAb6YGGO7qc3ueGHaycQ==}
+ '@oxc-parser/binding-darwin-arm64@0.141.0':
+ resolution: {integrity: sha512-m/kVk6rzYmBeHYnz+1Y5fod00AVTTxMbC71azFfm/zjx1j9XxwKtA0+VfkKuVMC8rbghb9TtfevnuWZa9OuPEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxc-parser/binding-darwin-x64@0.140.0':
- resolution: {integrity: sha512-HazBOuZzd2pO1C2uMmp8Gv7mhzMHqKSKDS1OZfcLEvpIcgA+48J92HEtNanVHDIzRD9PRPCV6aS6fkZIWOVl8Q==}
+ '@oxc-parser/binding-darwin-x64@0.141.0':
+ resolution: {integrity: sha512-o0X+6KZlfucWU/v5oKRQPwdFXsXAjW8jmpo/Gpw/qyKsbKtlfkHoeH9Bjp/m13TwjewvJnCkwF0DWzgpC4HjTQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxc-parser/binding-freebsd-x64@0.140.0':
- resolution: {integrity: sha512-9hSUU+HmTUyOe4JzMHxNGgLWNY7rrO+6ShicZwImNJacEAACDMIkuEQQkvXSL+WJN50jaNtLYJv8s4OcBdpyUQ==}
+ '@oxc-parser/binding-freebsd-x64@0.141.0':
+ resolution: {integrity: sha512-W5KbTnNkTMMMylqj6dYqnsXvkmESVPodPKYLJ5zdzIPdl9fUJtolkpUeSzYEbGGYB4a4A4avl3EePnZ/wLIdJg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
- resolution: {integrity: sha512-RAEuQsYtS0KcDFqN0ABTjyyNlokS91JeuDuoW9tEbG0JTbRNXnpQUdbYc/16JoA6Z/2ALbNrE3KmxtqDiuIjCQ==}
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.141.0':
+ resolution: {integrity: sha512-g3dtbJa8zeOGK36Sr9cQavsdi5H/ie2hVjrSjIxsNAR1qZA40ZYVXnfdfoMAlq8CmB9qFL1yhsSCUHeNmdmt8w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
- resolution: {integrity: sha512-c4CkHvPvqfojouredJ0w3e6+jiBq0SbFyhH61kr/zPb/7XsaYTNKQ54vmlSsopfdQbNDX40ZeK9Abs2Qet6wcw==}
+ '@oxc-parser/binding-linux-arm-musleabihf@0.141.0':
+ resolution: {integrity: sha512-e6hwQqd+3lvP13G2jxvFpoA7dzHcFLN+Mq47JCVMtdNHbbyBRo756JCtbbJH6ca8inTfyqZoqBmS3vhQlzAK2w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
- resolution: {integrity: sha512-yrjmLj8ixPB25yqvPGr28meGjb+keed7m1GqqY/0uqkhZIoT4t9zmfwUgFEtC33C7dtE+UQ7TU0IaVxf97SWJg==}
+ '@oxc-parser/binding-linux-arm64-gnu@0.141.0':
+ resolution: {integrity: sha512-vXz2BLAuypA+4MLyBg94pzEo6THVnzYnCtAjXoihIIQo0t2pnp/AmW+SH1EI+4VbuJnC//KplIJ5yyaCGua4jA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-arm64-musl@0.140.0':
- resolution: {integrity: sha512-ggGMQTN8Agwxp2WiLMpdY671dt0qTDJWiWlJeig3HnUwTnerRl0J2JdGVghWBeDcss2D9S2V2Js6dZHEiVabVA==}
+ '@oxc-parser/binding-linux-arm64-musl@0.141.0':
+ resolution: {integrity: sha512-jMkS/EztNW34HKsXIaT/SoHcmtocq/vWhwFOVduF9kduuuRIVwfwQ6uxzIO+qPKSXdd2TXt54of0BJ2zFMXnmw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
- resolution: {integrity: sha512-IgTs8xYAFgAUGNmR65tIqjlJ8vKgrfXzC515e9goSdfMyKQV4aJpd2pUUudU4u51G64H0/DSEJEXKOraxm9ZCA==}
+ '@oxc-parser/binding-linux-ppc64-gnu@0.141.0':
+ resolution: {integrity: sha512-vo+MR+n3zQJ6Mq92hiP084NZcgDv5iJlVR02gMf28neMvVT1tKVm7VeiW/DxhdqOi3QLeaXIk9cUcLL1qrkngw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
- resolution: {integrity: sha512-A1x+PMWZmSGaFVOx2YeNTFau8uD+QO14/vLP4GrcuvUPs3+nBkUOjy9Lus86ftHsDojjYMbvBelmKc3F7Rv08g==}
+ '@oxc-parser/binding-linux-riscv64-gnu@0.141.0':
+ resolution: {integrity: sha512-oh80w+7RuiO5gBp9Jnoa/H8Qlt3JsHL2MkW+0dwEdlDMdslVZX/YsekSK6EeyEenY66/mhCfypsNATQ7Ph3qlQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
- resolution: {integrity: sha512-zBqpfRo2myWPrPo5xUjeZqlnPXPXsX8BcWtWff66/eGRQdbPjhzPgXa/F+AtxT2afUViPxbuDlwscMKzQ5tg+g==}
+ '@oxc-parser/binding-linux-riscv64-musl@0.141.0':
+ resolution: {integrity: sha512-LOyEmFA8sCnYbEXP1+iQvCC/P1YXHMA/t6x1Ksp0Y9VwhLFsiBJFzV1zIxrOIE2LKaGGhDjQ29xq9cbq6omDXA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
- resolution: {integrity: sha512-2M1DPm/8w9I//YzFlFC9qXw+r2tJFh5CYwRlYTq2vUJQS7qoQftEDeCZ8EnN7KHtvSiXvYj8mZI5pR7DpXmcEw==}
+ '@oxc-parser/binding-linux-s390x-gnu@0.141.0':
+ resolution: {integrity: sha512-3wnwk/l1CvszVE5TJR1wSl/zSEfydRqrNhn6s7Vr9IzSJpUQIroqVsIoPARHRFA+FQwkxAFDAHDAasa7v8OobQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-x64-gnu@0.140.0':
- resolution: {integrity: sha512-8aRDbZ/U/jO8N7go1MO72jtbpb4uswV8d7vOkMvt/BPgZiyEYvl1VIWK4ESxZZhnJ4tqwVldgX7dNiP/eB1Jdg==}
+ '@oxc-parser/binding-linux-x64-gnu@0.141.0':
+ resolution: {integrity: sha512-qtyQVAAebFq57B2tifTlel3TgGqUtsYNI/e+p6aya9rN9lOZVTDvr215fGYSA9XWooxzMxDiVxkBLk2jQHbsOQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxc-parser/binding-linux-x64-musl@0.140.0':
- resolution: {integrity: sha512-xRqpeI8U2sQQS1W5BMWRyMTxtagkuLG2dEWruet5lFsWHTvBth11/TpSaJatHdqVVwHN0q3uuoS9zRsGinq8hg==}
+ '@oxc-parser/binding-linux-x64-musl@0.141.0':
+ resolution: {integrity: sha512-SkGV1nKw40roEc94pv5EaaeH2ay14G6+roe8Q0wIUC1LcEKxzKW921h7+ZuZX0D3q2Mb/7aSFmxEVqnko3lPRw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxc-parser/binding-openharmony-arm64@0.140.0':
- resolution: {integrity: sha512-GbGRe26MqAKciFRvXeHNQJ6VAHYs9R4miP89sEAncysM3n+f4lnyLWgsa9kklJNpfnxdq2yRoNYHFqwBckVimw==}
+ '@oxc-parser/binding-openharmony-arm64@0.141.0':
+ resolution: {integrity: sha512-cVgDM7n8QziQqOaP5hNgUYfMG7S/ZeuPxFWXnnHRv7rh025COk0rfQ6eEdKG3j/GaUuyvNZN4ifF1J8KmuXLLA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxc-parser/binding-wasm32-wasi@0.140.0':
- resolution: {integrity: sha512-vFiC1hqys+hkX1GnQkIoiTQJNiUm43Z0lO35ETKXTw0YtpW7+cN58YRRXFAQQ+TgpkIi3lrhcxdlnqz+Oi3ptQ==}
+ '@oxc-parser/binding-wasm32-wasi@0.141.0':
+ resolution: {integrity: sha512-HggH++Fkn3OilBn+bs3jpgIFQa34oMAyUUHy0vpGum+gt1Eb5nyLc8dNU/RAPSw6lsLrx7ncKtHSZE+3Sp0l2g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
- resolution: {integrity: sha512-fGSQldwEYKhM+H8uLt76Op8hh5+FYaR6lvvQ1Txw3Mhn86DyQXLcI0fi1EkFlTK7F+46OCk/j0AJMzZQm6g5Xg==}
+ '@oxc-parser/binding-win32-arm64-msvc@0.141.0':
+ resolution: {integrity: sha512-KLSEH9GwgbrqbJOjtGHt9STw96s+78yDzp7IDN8Lno+7Ut9sNBfZ4jYZIz4mD50qmWUjoOI7i9I6UENbhNbMZQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
- resolution: {integrity: sha512-sDS2Bai+g3ZWYwfZqmosiSuFDBcVnZ3Ta6pszzsiJoLMqsJEWKcxXXbGa7b7yXr++W2lQNPb3ZRJ8czseqL7RA==}
+ '@oxc-parser/binding-win32-ia32-msvc@0.141.0':
+ resolution: {integrity: sha512-9UVWUOOCI/1YkiSSNjg2zyBJYM9E/t1A/8GNobd48JDn/fQ6mzxcVO3H08jb3rAaW/B1VBf8eCORTvSsO9T08g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxc-parser/binding-win32-x64-msvc@0.140.0':
- resolution: {integrity: sha512-kHbE1zWyb5OQgJA6/5P4WjiuB01sYdQwtZnSSyE58FQEXDAMnyeeq4vj7KgN75i5SlBzOs8A5MrtlD3gOlDKqQ==}
+ '@oxc-parser/binding-win32-x64-msvc@0.141.0':
+ resolution: {integrity: sha512-HI/wsvbWT5RHHw5c37D0fEgeTd8/1Q4OJs5jUmEBc17VZFG6SsCIe4barq7NsAPPks/JW+3ayi3Rp+PQI5h4Kg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -1762,6 +1762,9 @@ packages:
'@oxc-project/types@0.140.0':
resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==}
+ '@oxc-project/types@0.141.0':
+ resolution: {integrity: sha512-S4as7z0j0xQkXcJlyY5ehntwK8/wRkQb9Cyqw+J/N2rkWGQGK0SxD6X6DhQTc7qsxVTBxXbxZtBJh3mr3PtIzQ==}
+
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==}
cpu: [arm]
@@ -1865,282 +1868,282 @@ packages:
cpu: [x64]
os: [win32]
- '@oxfmt/binding-android-arm-eabi@0.59.0':
- resolution: {integrity: sha512-bNTnfbuG7sAwb2PakMNaDukx5kXeW9duXOBeWtTOiLz3fXz3q2DlWguufPZ+c2IHEVrRXHD+M4aUgEWm841LDA==}
+ '@oxfmt/binding-android-arm-eabi@0.60.0':
+ resolution: {integrity: sha512-1q4q4Jc8FlOMVojEisyFAVyl8h1yawNv6phjgmhGVEDeyeOdsSnSr9x0+D4mOnEKvpO5L4mxKZ/DP9X6U3A/Mw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxfmt/binding-android-arm64@0.59.0':
- resolution: {integrity: sha512-R/Sn7z52QtdAKNqQLLY0EK7hVMjXiz3XUlvoCFCm/60jgIzAnQtiqLKBCFaBkimCQL5rs2ezPMcicpjCsrl54Q==}
+ '@oxfmt/binding-android-arm64@0.60.0':
+ resolution: {integrity: sha512-tD41I6nCt9k8SQXft0CSjjU9jg6SwG7uMu7PxodSEHXl+GDW0868oy6tTtoJkyUze8YKFgTpz/k5LuPUnFiGLw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxfmt/binding-darwin-arm64@0.59.0':
- resolution: {integrity: sha512-vm/ynUqE4HjC0ZIEjmXv1UJu1/GngccQ+T+TJudTMxUxm6r+GQTg1TO3E5jJfI71pBaXxSzs1+vWHIwuilGHhw==}
+ '@oxfmt/binding-darwin-arm64@0.60.0':
+ resolution: {integrity: sha512-TTpzPug96Zxdyb46KvTyIUQDdsqbumXh2TKG9C23PCT0kF7JkW56Z/quPuG9rqOFKQIi1gpRNZ7DX18LwxXPnw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxfmt/binding-darwin-x64@0.59.0':
- resolution: {integrity: sha512-uTtYDpLN/obfKVWGpgEc8BqYlLZBQTPz2uYEvLRy3HPZxjZ34wiFzukUBU2bf64JuCYZI//GTV1EOMmWlPjf/w==}
+ '@oxfmt/binding-darwin-x64@0.60.0':
+ resolution: {integrity: sha512-CnOoWgQ7L+JL/YQaRJ+NyATciSfcftncm7y3kqyte1cGtFEGnStaCd1TAyrinkfQ7nRBfHrTs1/vTwUJr3WF2Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxfmt/binding-freebsd-x64@0.59.0':
- resolution: {integrity: sha512-e2UnxL/ifStSPy8ffBCDbdy595SYsGy+U1pur4G65TuMmWxAMBzYGG7atZo/3mp515p8rZdsflxVD/E1FAdPLQ==}
+ '@oxfmt/binding-freebsd-x64@0.60.0':
+ resolution: {integrity: sha512-ychJo7S3hZxdO6eDZ9zM6F2lM9fpJS3EKS5CAUSWyprdLYxTu4gbaUKV/VBPTcMJwQa2Bpo+643y3OJ537pihA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxfmt/binding-linux-arm-gnueabihf@0.59.0':
- resolution: {integrity: sha512-LtdeZ1l0urxte3VNi3g8cocZwv1xGM1NKHSgF/fJEEVhyQmlgGh7WFWKFd/pNuO7djfvPNtNO1+MS+FEWkgVSA==}
+ '@oxfmt/binding-linux-arm-gnueabihf@0.60.0':
+ resolution: {integrity: sha512-36IH5o55T2Fx7E0feDttt+mifxN6yk9pWv4KfhAIsP0dFnUq27331OwbpOsZdoXF9soOLWm7mQUz5+UUmyec4g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm-musleabihf@0.59.0':
- resolution: {integrity: sha512-dBTciSsj9GTMl7p+h2gMSI0hoPn2ijfc/dUsbnWsP0RbwgPl2r0C/5zkMb3Pb+gGj17LH7f1o4qLo9aes/pAvA==}
+ '@oxfmt/binding-linux-arm-musleabihf@0.60.0':
+ resolution: {integrity: sha512-G1Ve7lAa6sFBolVI2LWHfEAqy0YKh4vnioH8uYO9kAEdgM7mR40IksIx9/Zk4+vbYew/sGa4J9Q4tZ3n9gXDHA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm64-gnu@0.59.0':
- resolution: {integrity: sha512-tXVdJ/JINsNWdponPHN0OuKHtC+HdpyoS9sd6IDPNiiEYsRki8b7tefRZ1iMnRkdbyT4SEbguWsr6o+5awvbPQ==}
+ '@oxfmt/binding-linux-arm64-gnu@0.60.0':
+ resolution: {integrity: sha512-LTQdRBf6uzj/h7Xk6lKzbGD2hrF/fK4YI9LIN1c0509tPUn8wRa3mCmrFQpEWJPLYGFrLFFMTYW1Ljj6VqW2Hw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-arm64-musl@0.59.0':
- resolution: {integrity: sha512-RRTq38i2zT5fnw6XGHjvT6w2mh6x/G3m6AZcAZ56OTDTT/lsOeYnG3SVjwmH40z5kPqF+lf+o35e6m6PpKy9Dw==}
+ '@oxfmt/binding-linux-arm64-musl@0.60.0':
+ resolution: {integrity: sha512-2JMo3XPxMPx3hiqddSZYyaH+fKJm6cz0u8n1naYjP/CdOQOZW34i8lKBUfmbWiuFvd6KoYXLmhAyBuvojsYS7Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-ppc64-gnu@0.59.0':
- resolution: {integrity: sha512-lD3k7glAJSaXW0D6xzu8VOZbYbosvy+0ktOVkfLEoQF5HJlMSxTQ2KNW0JO+08ccP/1ElOKktVEMI0fqRbVB4w==}
+ '@oxfmt/binding-linux-ppc64-gnu@0.60.0':
+ resolution: {integrity: sha512-L3C+nBD13lr306tr/PjM3RMll+BVqgFrIgUyoeHuai5oueJrRLgO3j+GO5/Cbhtkf5PSlHYTI1JY7iqBd1qa6A==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-gnu@0.59.0':
- resolution: {integrity: sha512-WH5ZP1RbuHKBO/yfPRQKpNO/ijHcEDNbnmC4VPf/Bcd3+mbMAZpRiJWRa1PL5bREdIZZHo343mk3sqlc9x7Usw==}
+ '@oxfmt/binding-linux-riscv64-gnu@0.60.0':
+ resolution: {integrity: sha512-M4MsmvqlxFiPtSRGyBYQSZxchEf463AOyd+Dh4/9xDpjWBsRtDUTDMFN5EdHinjVK1/eDJQ8MLpcYjpYayaCnA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-musl@0.59.0':
- resolution: {integrity: sha512-743wOiaI9RZY4QVGkWkfGRavD5ZJUJ6gscFjVrVu1dP8AZh9jM+a6v3NhlR+OIzHdS6DhLM96w+gcVskskz7rw==}
+ '@oxfmt/binding-linux-riscv64-musl@0.60.0':
+ resolution: {integrity: sha512-OH+9UskYuxRB+GxqdGkVN8f5UpwhqG8YscNo1wl8+KJ62cd7wZdGga6iGLJIf8kibF1WBwvlfDUx3cez/VXwFg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-s390x-gnu@0.59.0':
- resolution: {integrity: sha512-xjRXQsRnrRZCcCkIEnbd2lmsQNobtwwkJxdy2bWXhZ1lIN0ouZwsBXRsoovW3yATuziAYwr9HMiQuR/Cc75NIw==}
+ '@oxfmt/binding-linux-s390x-gnu@0.60.0':
+ resolution: {integrity: sha512-y7AAFutt9wFWBFOAn6+BHaV39usZmcr3YYH2385f+NHgPNpIF9HpqKp0jgUxPaUOCyG3oaX5VhJduL1Nw164rw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-gnu@0.59.0':
- resolution: {integrity: sha512-4hNjqq/Rbr9B+StY9zMMAfm72+mtM4v80xYL5Qkb59Qd72g2vJMI0iFlPj3kf6miMsie/yJ7rt4urJT292HBgA==}
+ '@oxfmt/binding-linux-x64-gnu@0.60.0':
+ resolution: {integrity: sha512-yKZ9+CXAI+1RO5nH/4Z/9M6DAsfOzd5bw/gtWk81KB4mpalMaRRSXfouc5/tHxazDmBek55HNPepNYBgaCew0Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-musl@0.59.0':
- resolution: {integrity: sha512-NH579iN8EVQYsWowUB8B5vFchcylJtwPVJ7NmUAqEQHNLfhPbDT3K56KrECNAkUN4QpF4qiMgN2vsfZwVvjm7g==}
+ '@oxfmt/binding-linux-x64-musl@0.60.0':
+ resolution: {integrity: sha512-bCUGaF6hJOYnQzLJdHLZbvGsOd5oSvGAyJhPAKum2uyLYUuXmP8vqg690DWi2hqcnIoYpqSqCrjzE5aiUAgwQg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-openharmony-arm64@0.59.0':
- resolution: {integrity: sha512-mzZy3Z5Aj1D75Aq9FVlmoRQH5ei8Ga4o/NZmlXkKyeZ5EmPrUXRR7c6BMBteV1ZuZ/356UYDuLRLjAMxTDTiBA==}
+ '@oxfmt/binding-openharmony-arm64@0.60.0':
+ resolution: {integrity: sha512-GrUeZOvzP30ExxfCuQiyofuUGI+OmvAgFwOO5w5p9mGPlxcyuqI+6Sy9fAKFFfLQrqKYWFgc5sYA2Unj/29nPg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxfmt/binding-win32-arm64-msvc@0.59.0':
- resolution: {integrity: sha512-0CpDJ1gE3jN1Gk6xms1Ie6LPfPcOtY4FAtoOmVLHQoAf8DvO2wd0DW2dIX2f7YTp5dxrr0ND8JeUEjm3DP3k5g==}
+ '@oxfmt/binding-win32-arm64-msvc@0.60.0':
+ resolution: {integrity: sha512-WD4Q954kUl2TDJV/6q7UnE2rlKk047kXLJsr4bJ2mXRaAqNXcmV3nwKUsGCc3mz/jYDBnXtJEaBErJEybK8iQQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxfmt/binding-win32-ia32-msvc@0.59.0':
- resolution: {integrity: sha512-zwdKBu3pt87uW0bRcywZb0oGMS7C6n87qogwRYFUgmk44T90ZzYlPjtlFYXs/DnBFrgNCvlHwCuWKfVWLeE7kw==}
+ '@oxfmt/binding-win32-ia32-msvc@0.60.0':
+ resolution: {integrity: sha512-HqDekjr8JXzVDUP1YthDZ1Y3CBEcuZT4WX3B+1kaxj8CvZA8Y2YhcEsXqoSop3tVsgjACxjnFQFDkBo0r/jq1Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxfmt/binding-win32-x64-msvc@0.59.0':
- resolution: {integrity: sha512-dUUbZkKgWrmAeI/puzv4bxN8lzcYaFnQVwFTFtwO2Gp8M7lZGSE2qJjC58g518+1bltJ8mizjYwD0BGHym0l/w==}
+ '@oxfmt/binding-win32-x64-msvc@0.60.0':
+ resolution: {integrity: sha512-tz78yhmGPKboTMHCHSaUqXK8JrmoSejgDcWeqAtg2s07ZGKQ3rH5Jn8NuXPGNG33CDbY2e9NoQWXIVEmKO21Rw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@oxlint-tsgolint/darwin-arm64@0.25.0':
- resolution: {integrity: sha512-87opKlwFP8qS9WHAeETV+kA0fC9Oyj4sg7OxWdI4xQY0WC7zlN6BgG66uE5mvtN5mahkt/gL0i/AVEnX6POq2Q==}
+ '@oxlint-tsgolint/darwin-arm64@7.0.2001':
+ resolution: {integrity: sha512-CUJEdbSZ54+Xy9OXqOhWLTKZKV0BBiV7C2i/ygyVmXtkUNXx5YCzN8DpSSshTAKktoL7S+tnQ/ftFG/i7X896w==}
cpu: [arm64]
os: [darwin]
- '@oxlint-tsgolint/darwin-x64@0.25.0':
- resolution: {integrity: sha512-HJmuZexsrhqp4WmETn+Soq7Ogt5F0jirv+cYRSniIPe+d/x5beQzLX69xOLhQRE+8FLGETe7FahWMVP8x0dW4g==}
+ '@oxlint-tsgolint/darwin-x64@7.0.2001':
+ resolution: {integrity: sha512-pXfBb5BqONCcgrXQNUZWXgiYmRSWJzd97S8i41VVOh6ut0tyo+cJ5FKFpczDHxiVNfj/3e7c9B4MtztNdpIVCw==}
cpu: [x64]
os: [darwin]
- '@oxlint-tsgolint/linux-arm64@0.25.0':
- resolution: {integrity: sha512-aNyYsPREvCJi3qjfBA0sQB7DhT3y/W5Ac2JI2D8IJynoTOAhVZj401Si6901oDajlBWyqJqqojudn0VgHB6+7A==}
+ '@oxlint-tsgolint/linux-arm64@7.0.2001':
+ resolution: {integrity: sha512-roP7zujb/QDPzDwEKsFFpzNHHy91/Y7oX9vQXk78ekyZtcQj1QXDIMH33gjDdHBfRl4K9pZ36xhRgrP4Zr+R8A==}
cpu: [arm64]
os: [linux]
- '@oxlint-tsgolint/linux-x64@0.25.0':
- resolution: {integrity: sha512-+60+VjK9Mch3uA5WlTdNHuAm5+WA7wPPjuWdPWlU0F6JJpYpGZXUpO1RPKuFEWsBpNbLcLeJ0LbCJ1doWu58NA==}
+ '@oxlint-tsgolint/linux-x64@7.0.2001':
+ resolution: {integrity: sha512-UDezNqdECVmngu2TPnjaS1YoAmcTaBoI5lV9vk3VahBxoi+I5r9k3iJTT7qZoYWOXTD/7T7bNcwRgrocR6BscQ==}
cpu: [x64]
os: [linux]
- '@oxlint-tsgolint/win32-arm64@0.25.0':
- resolution: {integrity: sha512-r53TO+eHp/t53nnUkQJfrYYXODPAxmtf3RUFQG5XsE2hD21IunliOaAdZXP2UwzCx+r/fbNaEelqTaAHcDr57w==}
+ '@oxlint-tsgolint/win32-arm64@7.0.2001':
+ resolution: {integrity: sha512-uJZhqB6pdXLuN+AD1F5082byyQti/NPmJA77GtcFlmT2HzRelqbNls3SaIqxpjdFgvSBF9g0yOKGBkGFg7kX8Q==}
cpu: [arm64]
os: [win32]
- '@oxlint-tsgolint/win32-x64@0.25.0':
- resolution: {integrity: sha512-vqe66B+gL9HarhyHemdlfC2VWT7eoA+o/ufZ7zT6AGHv64boyDZIJS3U+rpZo+ey4O7wZtiS/vYR2fWqDoFeBw==}
+ '@oxlint-tsgolint/win32-x64@7.0.2001':
+ resolution: {integrity: sha512-FkDRm8hx9OwzGQqyWG1tO5QrTLRApff9DzSgpz9QZau37BR8d1VYKOxMLGf6shPZntJFoTwIIJYT68VndYDCog==}
cpu: [x64]
os: [win32]
- '@oxlint/binding-android-arm-eabi@1.74.0':
- resolution: {integrity: sha512-+gHd12muVI9ZLBaWLPkHt3Fj7jihFjgQ1MGtBaRL8vWrWrI0P7dLUty/cHrHS0oqPYIRgQUJsPu2CExQuMcwNw==}
+ '@oxlint/binding-android-arm-eabi@1.75.0':
+ resolution: {integrity: sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxlint/binding-android-arm64@1.74.0':
- resolution: {integrity: sha512-xjKdoMB+H+RCOByv/7l7nfIGW9mlOisqYdcyC75UqYuQecLpReAeEYUf2CNeDEI3KtmUgxpRw/+c63y4AeF/Bw==}
+ '@oxlint/binding-android-arm64@1.75.0':
+ resolution: {integrity: sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxlint/binding-darwin-arm64@1.74.0':
- resolution: {integrity: sha512-iUK7wvc6sejMKsC+Pt67mntoF5weFcyEunhZfLJceU6gL419mexz5wBkSx/EnkFBExMLNtOi9fnDSc5xfK0IzQ==}
+ '@oxlint/binding-darwin-arm64@1.75.0':
+ resolution: {integrity: sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxlint/binding-darwin-x64@1.74.0':
- resolution: {integrity: sha512-ggKc/tn5SJ1u2yG2izC6VKODfYKV8MQ2AicJlNzOjuyrC29udvOef6/JzK2r32xqCnBDLFouR1VCkjzEI0/N9Q==}
+ '@oxlint/binding-darwin-x64@1.75.0':
+ resolution: {integrity: sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxlint/binding-freebsd-x64@1.74.0':
- resolution: {integrity: sha512-u++dH/43jy9hTLbneaWlS0gla/Bp1JdwJ2zgevCl8nDFUh6qRCGMxcL0f0lb7By3A9p/LfFr+7cG4HU1hG856g==}
+ '@oxlint/binding-freebsd-x64@1.75.0':
+ resolution: {integrity: sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxlint/binding-linux-arm-gnueabihf@1.74.0':
- resolution: {integrity: sha512-Sj1zmtFDVTPeIbIz4ZfcXAbFHqCmKCXdCUlAJzvTF7I20NTH1RDpoF2PhkqNODutJzVhJYmm3oz0GwgY+tvE2g==}
+ '@oxlint/binding-linux-arm-gnueabihf@1.75.0':
+ resolution: {integrity: sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm-musleabihf@1.74.0':
- resolution: {integrity: sha512-//PKyQb/tQXcHArx2f7z+oVI/eMS2Jpv+edNuAtOrgIhWdGcpHxogveAxzmF2rpH1AIHp4Hq04RF/rgJdiICnQ==}
+ '@oxlint/binding-linux-arm-musleabihf@1.75.0':
+ resolution: {integrity: sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm64-gnu@1.74.0':
- resolution: {integrity: sha512-/k1Me+aX2tjuH10K62mLS0y8cLkJBHX6Ce0xPK+eWeel4bSdEGZ8dv4+hYMzg0GrSmjwy4yAYsDPeEeKBft/2w==}
+ '@oxlint/binding-linux-arm64-gnu@1.75.0':
+ resolution: {integrity: sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-arm64-musl@1.74.0':
- resolution: {integrity: sha512-3tFSjBxc5D8/zvjEuLvOqcA8ZXKD0+6NuaVO/edeamNc49MoAsbfaC9s1UiwODwgF6slGaF8yJA2TPkukd77tg==}
+ '@oxlint/binding-linux-arm64-musl@1.75.0':
+ resolution: {integrity: sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-ppc64-gnu@1.74.0':
- resolution: {integrity: sha512-9QggtPkSPXOCTu8Szis7auOK/sC7KdQaN+/TujP7YVVhzCAOhgdRfgv8uEz0r2tk5xdgus5rLYUrCDoZNtiRUw==}
+ '@oxlint/binding-linux-ppc64-gnu@1.75.0':
+ resolution: {integrity: sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-gnu@1.74.0':
- resolution: {integrity: sha512-VM5VPUJ4DJIWiK+AZn8FScUqMr6OFrCAYybMYjEEi7W13ParI64MByiXTkKMqZpBmvQ9zxl9Ebq2VUOiZRJYUg==}
+ '@oxlint/binding-linux-riscv64-gnu@1.75.0':
+ resolution: {integrity: sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-musl@1.74.0':
- resolution: {integrity: sha512-SaDY1gh9rOA592J54g+gu5hkOFFQBZsMmIYHs+NRHG+Uq0OxtuuCXMWQ3vu1830Eugv5uMXyjG+bv2Z9y4IXjw==}
+ '@oxlint/binding-linux-riscv64-musl@1.75.0':
+ resolution: {integrity: sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-s390x-gnu@1.74.0':
- resolution: {integrity: sha512-ZATQeHZCyr6MbDveg0obD5sxLHFOghtOdC5jwVwYlvFWqtFOxctgFEG6Ef/64hYvZrWyhyCckB10AelqLopeDA==}
+ '@oxlint/binding-linux-s390x-gnu@1.75.0':
+ resolution: {integrity: sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-gnu@1.74.0':
- resolution: {integrity: sha512-+aIvJyrdeD7LwCQ2WYLMUWNmnbeDRSPb40aBYtPjD9+PTqUwgJnk+HK5yLfSMeqXrMrDhE9uTmtt2y50tvjhHw==}
+ '@oxlint/binding-linux-x64-gnu@1.75.0':
+ resolution: {integrity: sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-musl@1.74.0':
- resolution: {integrity: sha512-XyktaR8lhK2qWiCK0Tk8oYD+/cgn+oHA6ddRnxSSXUKkkojkV78CmShZUxQF+yrBFs0SuW+JBOPG6hecyc/iZg==}
+ '@oxlint/binding-linux-x64-musl@1.75.0':
+ resolution: {integrity: sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxlint/binding-openharmony-arm64@1.74.0':
- resolution: {integrity: sha512-mzbjrPl4neaVUiJ1fUiEUxTGaSZBoiKtaoB6jmIpz9S+VOA2vDYmJpihQ82w6178V5jxziclTg8Cgj5yF6tTDg==}
+ '@oxlint/binding-openharmony-arm64@1.75.0':
+ resolution: {integrity: sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxlint/binding-win32-arm64-msvc@1.74.0':
- resolution: {integrity: sha512-vUAe9okpS2Oa5+lX67lqHMuNUvfkleRKwrUDJ/WJBsgmddvZ1mrsh2HVmuFDRzqFELhaJhFaCNOuR6a7L3rtIA==}
+ '@oxlint/binding-win32-arm64-msvc@1.75.0':
+ resolution: {integrity: sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxlint/binding-win32-ia32-msvc@1.74.0':
- resolution: {integrity: sha512-yyXXJyYYSXL4I8K8jAWjJs+J3fa9gH2JmEbo4f5adm+1tNC9itseicBNuwK7BDHvqQ5J534s+yDULu89vYL2ZQ==}
+ '@oxlint/binding-win32-ia32-msvc@1.75.0':
+ resolution: {integrity: sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxlint/binding-win32-x64-msvc@1.74.0':
- resolution: {integrity: sha512-VTC9IYTIMrVUk/i6Ms1ohzzDKZFkWn0KU2OBbPBzgmVZ2V30165T/zK4LztTr0Xgp9fZ1qQZ1rsZAu/rEmySlA==}
+ '@oxlint/binding-win32-x64-msvc@1.75.0':
+ resolution: {integrity: sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@oxlint/plugins@1.74.0':
- resolution: {integrity: sha512-3tQlMDPt5hrRYedKl+M+Xq+fRjAEocMCRJaXH6ypLWu8+Oui5GMj51vjaYf/rzj6HT+JzQoUlY/I7Im2VNXzbw==}
+ '@oxlint/plugins@1.75.0':
+ resolution: {integrity: sha512-dNQBRuvkeecm9nxi1cXRxXA1oAyqJqHof6cdnjY/WDBU1nZ9V07rp9X9gG7+JgShrjJW4VR2dTo7t2EcX4XD8g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@pinojs/redact@0.4.0':
@@ -3673,7 +3676,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -5154,15 +5157,15 @@ packages:
resolution: {integrity: sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q==}
engines: {node: '>=12'}
- oxc-parser@0.140.0:
- resolution: {integrity: sha512-h6QFWd6lBMfjESqgQ27GjzrSDb0qbznp7VDQqp2zvgsrWut4vcchyMIzOVXvGQ2GMZgKw9RWrFNWv9WqGL0p7Q==}
+ oxc-parser@0.141.0:
+ resolution: {integrity: sha512-uFkGGr1KMWd6aWv9UAqooYrN78trw8MWWmoPvgWokfBEUq1+eiIQ+qfj3wokhy0fxtZWZk+0dHoS7/yRTJtd6w==}
engines: {node: ^20.19.0 || >=22.12.0}
oxc-resolver@11.24.2:
resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==}
- oxfmt@0.59.0:
- resolution: {integrity: sha512-Xqk6cPZS1yMvVa7OAuenaDZUsgMDutvvbZ9/L5gSvAfW64+WN4HVhgipLj5rVERbYQt8fLs9TopyZ1rU1XEG/w==}
+ oxfmt@0.60.0:
+ resolution: {integrity: sha512-fViX6i+gJuZWY+jI/fnR6WRbRj70GZ9RlCd30MygJrHTUNc4DxvKHWw8vBjMjffv3PgU5qWDR0AzmojQByqaZA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -5174,20 +5177,20 @@ packages:
vite-plus:
optional: true
- oxlint-plugin-eslint@1.74.0:
- resolution: {integrity: sha512-AtZ4w3owo4xoY5fe/Juy9hmzEnekVPd/DDiPlOVGfR2linDTp/XVu0xK7ODNK4CCLvnnfCob/UeWN6kSiqm2CQ==}
+ oxlint-plugin-eslint@1.75.0:
+ resolution: {integrity: sha512-pgVC0ctNXubXVG7ObuW85kyAf9jHBDPIZm1uKCDwP8JPP2nCjXFtuEpCapmr4JgzW9F84z8x4fik+OpBep81gQ==}
engines: {node: ^20.19.0 || >=22.12.0}
- oxlint-tsgolint@0.25.0:
- resolution: {integrity: sha512-7DBpqyLZCfyoXiivyfzt9Xmju/K1RcN+Y1W7buEwrgRCWWF11v9alypPqWGZBmh2erDkKL/kVyhKUH2Px+t13A==}
+ oxlint-tsgolint@7.0.2001:
+ resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==}
hasBin: true
- oxlint@1.74.0:
- resolution: {integrity: sha512-odGl2s2x5IOJoj3A0v1k0PGBXVFBZeZ2+AK/+K2MJur7Ghi3bkyX5NuLUWHKqa4js1wjep3hJeuTQJOlr+4+dA==}
+ oxlint@1.75.0:
+ resolution: {integrity: sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
- oxlint-tsgolint: '>=0.24.0'
+ oxlint-tsgolint: '>=7.0.2001'
vite-plus: '*'
peerDependenciesMeta:
oxlint-tsgolint:
@@ -5331,8 +5334,8 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.21:
- resolution: {integrity: sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==}
+ postcss@8.5.22:
+ resolution: {integrity: sha512-KBDEIpLrvpv16pp3K0Fw+UCoZfopFjjgeB+0tA/aaThfEE74kKDLrgg603YvOWJyg3+WYtyq3xYsQWsIyZlPqQ==}
engines: {node: ^10 || ^12 || >=14}
postman-request@2.88.1-postman.48:
@@ -7454,74 +7457,76 @@ snapshots:
dependencies:
'@otplib/core': 13.4.1
- '@oxc-parser/binding-android-arm-eabi@0.140.0':
+ '@oxc-parser/binding-android-arm-eabi@0.141.0':
optional: true
- '@oxc-parser/binding-android-arm64@0.140.0':
+ '@oxc-parser/binding-android-arm64@0.141.0':
optional: true
- '@oxc-parser/binding-darwin-arm64@0.140.0':
+ '@oxc-parser/binding-darwin-arm64@0.141.0':
optional: true
- '@oxc-parser/binding-darwin-x64@0.140.0':
+ '@oxc-parser/binding-darwin-x64@0.141.0':
optional: true
- '@oxc-parser/binding-freebsd-x64@0.140.0':
+ '@oxc-parser/binding-freebsd-x64@0.141.0':
optional: true
- '@oxc-parser/binding-linux-arm-gnueabihf@0.140.0':
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.141.0':
optional: true
- '@oxc-parser/binding-linux-arm-musleabihf@0.140.0':
+ '@oxc-parser/binding-linux-arm-musleabihf@0.141.0':
optional: true
- '@oxc-parser/binding-linux-arm64-gnu@0.140.0':
+ '@oxc-parser/binding-linux-arm64-gnu@0.141.0':
optional: true
- '@oxc-parser/binding-linux-arm64-musl@0.140.0':
+ '@oxc-parser/binding-linux-arm64-musl@0.141.0':
optional: true
- '@oxc-parser/binding-linux-ppc64-gnu@0.140.0':
+ '@oxc-parser/binding-linux-ppc64-gnu@0.141.0':
optional: true
- '@oxc-parser/binding-linux-riscv64-gnu@0.140.0':
+ '@oxc-parser/binding-linux-riscv64-gnu@0.141.0':
optional: true
- '@oxc-parser/binding-linux-riscv64-musl@0.140.0':
+ '@oxc-parser/binding-linux-riscv64-musl@0.141.0':
optional: true
- '@oxc-parser/binding-linux-s390x-gnu@0.140.0':
+ '@oxc-parser/binding-linux-s390x-gnu@0.141.0':
optional: true
- '@oxc-parser/binding-linux-x64-gnu@0.140.0':
+ '@oxc-parser/binding-linux-x64-gnu@0.141.0':
optional: true
- '@oxc-parser/binding-linux-x64-musl@0.140.0':
+ '@oxc-parser/binding-linux-x64-musl@0.141.0':
optional: true
- '@oxc-parser/binding-openharmony-arm64@0.140.0':
+ '@oxc-parser/binding-openharmony-arm64@0.141.0':
optional: true
- '@oxc-parser/binding-wasm32-wasi@0.140.0':
+ '@oxc-parser/binding-wasm32-wasi@0.141.0':
dependencies:
'@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
- '@oxc-parser/binding-win32-arm64-msvc@0.140.0':
+ '@oxc-parser/binding-win32-arm64-msvc@0.141.0':
optional: true
- '@oxc-parser/binding-win32-ia32-msvc@0.140.0':
+ '@oxc-parser/binding-win32-ia32-msvc@0.141.0':
optional: true
- '@oxc-parser/binding-win32-x64-msvc@0.140.0':
+ '@oxc-parser/binding-win32-x64-msvc@0.141.0':
optional: true
'@oxc-project/types@0.139.0': {}
'@oxc-project/types@0.140.0': {}
+ '@oxc-project/types@0.141.0': {}
+
'@oxc-resolver/binding-android-arm-eabi@11.24.2':
optional: true
@@ -7583,139 +7588,139 @@ snapshots:
'@oxc-resolver/binding-win32-x64-msvc@11.24.2':
optional: true
- '@oxfmt/binding-android-arm-eabi@0.59.0':
+ '@oxfmt/binding-android-arm-eabi@0.60.0':
optional: true
- '@oxfmt/binding-android-arm64@0.59.0':
+ '@oxfmt/binding-android-arm64@0.60.0':
optional: true
- '@oxfmt/binding-darwin-arm64@0.59.0':
+ '@oxfmt/binding-darwin-arm64@0.60.0':
optional: true
- '@oxfmt/binding-darwin-x64@0.59.0':
+ '@oxfmt/binding-darwin-x64@0.60.0':
optional: true
- '@oxfmt/binding-freebsd-x64@0.59.0':
+ '@oxfmt/binding-freebsd-x64@0.60.0':
optional: true
- '@oxfmt/binding-linux-arm-gnueabihf@0.59.0':
+ '@oxfmt/binding-linux-arm-gnueabihf@0.60.0':
optional: true
- '@oxfmt/binding-linux-arm-musleabihf@0.59.0':
+ '@oxfmt/binding-linux-arm-musleabihf@0.60.0':
optional: true
- '@oxfmt/binding-linux-arm64-gnu@0.59.0':
+ '@oxfmt/binding-linux-arm64-gnu@0.60.0':
optional: true
- '@oxfmt/binding-linux-arm64-musl@0.59.0':
+ '@oxfmt/binding-linux-arm64-musl@0.60.0':
optional: true
- '@oxfmt/binding-linux-ppc64-gnu@0.59.0':
+ '@oxfmt/binding-linux-ppc64-gnu@0.60.0':
optional: true
- '@oxfmt/binding-linux-riscv64-gnu@0.59.0':
+ '@oxfmt/binding-linux-riscv64-gnu@0.60.0':
optional: true
- '@oxfmt/binding-linux-riscv64-musl@0.59.0':
+ '@oxfmt/binding-linux-riscv64-musl@0.60.0':
optional: true
- '@oxfmt/binding-linux-s390x-gnu@0.59.0':
+ '@oxfmt/binding-linux-s390x-gnu@0.60.0':
optional: true
- '@oxfmt/binding-linux-x64-gnu@0.59.0':
+ '@oxfmt/binding-linux-x64-gnu@0.60.0':
optional: true
- '@oxfmt/binding-linux-x64-musl@0.59.0':
+ '@oxfmt/binding-linux-x64-musl@0.60.0':
optional: true
- '@oxfmt/binding-openharmony-arm64@0.59.0':
+ '@oxfmt/binding-openharmony-arm64@0.60.0':
optional: true
- '@oxfmt/binding-win32-arm64-msvc@0.59.0':
+ '@oxfmt/binding-win32-arm64-msvc@0.60.0':
optional: true
- '@oxfmt/binding-win32-ia32-msvc@0.59.0':
+ '@oxfmt/binding-win32-ia32-msvc@0.60.0':
optional: true
- '@oxfmt/binding-win32-x64-msvc@0.59.0':
+ '@oxfmt/binding-win32-x64-msvc@0.60.0':
optional: true
- '@oxlint-tsgolint/darwin-arm64@0.25.0':
+ '@oxlint-tsgolint/darwin-arm64@7.0.2001':
optional: true
- '@oxlint-tsgolint/darwin-x64@0.25.0':
+ '@oxlint-tsgolint/darwin-x64@7.0.2001':
optional: true
- '@oxlint-tsgolint/linux-arm64@0.25.0':
+ '@oxlint-tsgolint/linux-arm64@7.0.2001':
optional: true
- '@oxlint-tsgolint/linux-x64@0.25.0':
+ '@oxlint-tsgolint/linux-x64@7.0.2001':
optional: true
- '@oxlint-tsgolint/win32-arm64@0.25.0':
+ '@oxlint-tsgolint/win32-arm64@7.0.2001':
optional: true
- '@oxlint-tsgolint/win32-x64@0.25.0':
+ '@oxlint-tsgolint/win32-x64@7.0.2001':
optional: true
- '@oxlint/binding-android-arm-eabi@1.74.0':
+ '@oxlint/binding-android-arm-eabi@1.75.0':
optional: true
- '@oxlint/binding-android-arm64@1.74.0':
+ '@oxlint/binding-android-arm64@1.75.0':
optional: true
- '@oxlint/binding-darwin-arm64@1.74.0':
+ '@oxlint/binding-darwin-arm64@1.75.0':
optional: true
- '@oxlint/binding-darwin-x64@1.74.0':
+ '@oxlint/binding-darwin-x64@1.75.0':
optional: true
- '@oxlint/binding-freebsd-x64@1.74.0':
+ '@oxlint/binding-freebsd-x64@1.75.0':
optional: true
- '@oxlint/binding-linux-arm-gnueabihf@1.74.0':
+ '@oxlint/binding-linux-arm-gnueabihf@1.75.0':
optional: true
- '@oxlint/binding-linux-arm-musleabihf@1.74.0':
+ '@oxlint/binding-linux-arm-musleabihf@1.75.0':
optional: true
- '@oxlint/binding-linux-arm64-gnu@1.74.0':
+ '@oxlint/binding-linux-arm64-gnu@1.75.0':
optional: true
- '@oxlint/binding-linux-arm64-musl@1.74.0':
+ '@oxlint/binding-linux-arm64-musl@1.75.0':
optional: true
- '@oxlint/binding-linux-ppc64-gnu@1.74.0':
+ '@oxlint/binding-linux-ppc64-gnu@1.75.0':
optional: true
- '@oxlint/binding-linux-riscv64-gnu@1.74.0':
+ '@oxlint/binding-linux-riscv64-gnu@1.75.0':
optional: true
- '@oxlint/binding-linux-riscv64-musl@1.74.0':
+ '@oxlint/binding-linux-riscv64-musl@1.75.0':
optional: true
- '@oxlint/binding-linux-s390x-gnu@1.74.0':
+ '@oxlint/binding-linux-s390x-gnu@1.75.0':
optional: true
- '@oxlint/binding-linux-x64-gnu@1.74.0':
+ '@oxlint/binding-linux-x64-gnu@1.75.0':
optional: true
- '@oxlint/binding-linux-x64-musl@1.74.0':
+ '@oxlint/binding-linux-x64-musl@1.75.0':
optional: true
- '@oxlint/binding-openharmony-arm64@1.74.0':
+ '@oxlint/binding-openharmony-arm64@1.75.0':
optional: true
- '@oxlint/binding-win32-arm64-msvc@1.74.0':
+ '@oxlint/binding-win32-arm64-msvc@1.75.0':
optional: true
- '@oxlint/binding-win32-ia32-msvc@1.74.0':
+ '@oxlint/binding-win32-ia32-msvc@1.75.0':
optional: true
- '@oxlint/binding-win32-x64-msvc@1.74.0':
+ '@oxlint/binding-win32-x64-msvc@1.75.0':
optional: true
- '@oxlint/plugins@1.74.0': {}
+ '@oxlint/plugins@1.75.0': {}
'@pinojs/redact@0.4.0': {}
@@ -10808,30 +10813,30 @@ snapshots:
lodash.isequal: 4.5.0
vali-date: 1.0.0
- oxc-parser@0.140.0:
+ oxc-parser@0.141.0:
dependencies:
- '@oxc-project/types': 0.140.0
+ '@oxc-project/types': 0.141.0
optionalDependencies:
- '@oxc-parser/binding-android-arm-eabi': 0.140.0
- '@oxc-parser/binding-android-arm64': 0.140.0
- '@oxc-parser/binding-darwin-arm64': 0.140.0
- '@oxc-parser/binding-darwin-x64': 0.140.0
- '@oxc-parser/binding-freebsd-x64': 0.140.0
- '@oxc-parser/binding-linux-arm-gnueabihf': 0.140.0
- '@oxc-parser/binding-linux-arm-musleabihf': 0.140.0
- '@oxc-parser/binding-linux-arm64-gnu': 0.140.0
- '@oxc-parser/binding-linux-arm64-musl': 0.140.0
- '@oxc-parser/binding-linux-ppc64-gnu': 0.140.0
- '@oxc-parser/binding-linux-riscv64-gnu': 0.140.0
- '@oxc-parser/binding-linux-riscv64-musl': 0.140.0
- '@oxc-parser/binding-linux-s390x-gnu': 0.140.0
- '@oxc-parser/binding-linux-x64-gnu': 0.140.0
- '@oxc-parser/binding-linux-x64-musl': 0.140.0
- '@oxc-parser/binding-openharmony-arm64': 0.140.0
- '@oxc-parser/binding-wasm32-wasi': 0.140.0
- '@oxc-parser/binding-win32-arm64-msvc': 0.140.0
- '@oxc-parser/binding-win32-ia32-msvc': 0.140.0
- '@oxc-parser/binding-win32-x64-msvc': 0.140.0
+ '@oxc-parser/binding-android-arm-eabi': 0.141.0
+ '@oxc-parser/binding-android-arm64': 0.141.0
+ '@oxc-parser/binding-darwin-arm64': 0.141.0
+ '@oxc-parser/binding-darwin-x64': 0.141.0
+ '@oxc-parser/binding-freebsd-x64': 0.141.0
+ '@oxc-parser/binding-linux-arm-gnueabihf': 0.141.0
+ '@oxc-parser/binding-linux-arm-musleabihf': 0.141.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.141.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.141.0
+ '@oxc-parser/binding-linux-ppc64-gnu': 0.141.0
+ '@oxc-parser/binding-linux-riscv64-gnu': 0.141.0
+ '@oxc-parser/binding-linux-riscv64-musl': 0.141.0
+ '@oxc-parser/binding-linux-s390x-gnu': 0.141.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.141.0
+ '@oxc-parser/binding-linux-x64-musl': 0.141.0
+ '@oxc-parser/binding-openharmony-arm64': 0.141.0
+ '@oxc-parser/binding-wasm32-wasi': 0.141.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.141.0
+ '@oxc-parser/binding-win32-ia32-msvc': 0.141.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.141.0
oxc-resolver@11.24.2:
optionalDependencies:
@@ -10855,63 +10860,63 @@ snapshots:
'@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
'@oxc-resolver/binding-win32-x64-msvc': 11.24.2
- oxfmt@0.59.0:
+ oxfmt@0.60.0:
dependencies:
tinypool: 2.1.0
optionalDependencies:
- '@oxfmt/binding-android-arm-eabi': 0.59.0
- '@oxfmt/binding-android-arm64': 0.59.0
- '@oxfmt/binding-darwin-arm64': 0.59.0
- '@oxfmt/binding-darwin-x64': 0.59.0
- '@oxfmt/binding-freebsd-x64': 0.59.0
- '@oxfmt/binding-linux-arm-gnueabihf': 0.59.0
- '@oxfmt/binding-linux-arm-musleabihf': 0.59.0
- '@oxfmt/binding-linux-arm64-gnu': 0.59.0
- '@oxfmt/binding-linux-arm64-musl': 0.59.0
- '@oxfmt/binding-linux-ppc64-gnu': 0.59.0
- '@oxfmt/binding-linux-riscv64-gnu': 0.59.0
- '@oxfmt/binding-linux-riscv64-musl': 0.59.0
- '@oxfmt/binding-linux-s390x-gnu': 0.59.0
- '@oxfmt/binding-linux-x64-gnu': 0.59.0
- '@oxfmt/binding-linux-x64-musl': 0.59.0
- '@oxfmt/binding-openharmony-arm64': 0.59.0
- '@oxfmt/binding-win32-arm64-msvc': 0.59.0
- '@oxfmt/binding-win32-ia32-msvc': 0.59.0
- '@oxfmt/binding-win32-x64-msvc': 0.59.0
-
- oxlint-plugin-eslint@1.74.0: {}
-
- oxlint-tsgolint@0.25.0:
+ '@oxfmt/binding-android-arm-eabi': 0.60.0
+ '@oxfmt/binding-android-arm64': 0.60.0
+ '@oxfmt/binding-darwin-arm64': 0.60.0
+ '@oxfmt/binding-darwin-x64': 0.60.0
+ '@oxfmt/binding-freebsd-x64': 0.60.0
+ '@oxfmt/binding-linux-arm-gnueabihf': 0.60.0
+ '@oxfmt/binding-linux-arm-musleabihf': 0.60.0
+ '@oxfmt/binding-linux-arm64-gnu': 0.60.0
+ '@oxfmt/binding-linux-arm64-musl': 0.60.0
+ '@oxfmt/binding-linux-ppc64-gnu': 0.60.0
+ '@oxfmt/binding-linux-riscv64-gnu': 0.60.0
+ '@oxfmt/binding-linux-riscv64-musl': 0.60.0
+ '@oxfmt/binding-linux-s390x-gnu': 0.60.0
+ '@oxfmt/binding-linux-x64-gnu': 0.60.0
+ '@oxfmt/binding-linux-x64-musl': 0.60.0
+ '@oxfmt/binding-openharmony-arm64': 0.60.0
+ '@oxfmt/binding-win32-arm64-msvc': 0.60.0
+ '@oxfmt/binding-win32-ia32-msvc': 0.60.0
+ '@oxfmt/binding-win32-x64-msvc': 0.60.0
+
+ oxlint-plugin-eslint@1.75.0: {}
+
+ oxlint-tsgolint@7.0.2001:
optionalDependencies:
- '@oxlint-tsgolint/darwin-arm64': 0.25.0
- '@oxlint-tsgolint/darwin-x64': 0.25.0
- '@oxlint-tsgolint/linux-arm64': 0.25.0
- '@oxlint-tsgolint/linux-x64': 0.25.0
- '@oxlint-tsgolint/win32-arm64': 0.25.0
- '@oxlint-tsgolint/win32-x64': 0.25.0
-
- oxlint@1.74.0(oxlint-tsgolint@0.25.0):
+ '@oxlint-tsgolint/darwin-arm64': 7.0.2001
+ '@oxlint-tsgolint/darwin-x64': 7.0.2001
+ '@oxlint-tsgolint/linux-arm64': 7.0.2001
+ '@oxlint-tsgolint/linux-x64': 7.0.2001
+ '@oxlint-tsgolint/win32-arm64': 7.0.2001
+ '@oxlint-tsgolint/win32-x64': 7.0.2001
+
+ oxlint@1.75.0(oxlint-tsgolint@7.0.2001):
optionalDependencies:
- '@oxlint/binding-android-arm-eabi': 1.74.0
- '@oxlint/binding-android-arm64': 1.74.0
- '@oxlint/binding-darwin-arm64': 1.74.0
- '@oxlint/binding-darwin-x64': 1.74.0
- '@oxlint/binding-freebsd-x64': 1.74.0
- '@oxlint/binding-linux-arm-gnueabihf': 1.74.0
- '@oxlint/binding-linux-arm-musleabihf': 1.74.0
- '@oxlint/binding-linux-arm64-gnu': 1.74.0
- '@oxlint/binding-linux-arm64-musl': 1.74.0
- '@oxlint/binding-linux-ppc64-gnu': 1.74.0
- '@oxlint/binding-linux-riscv64-gnu': 1.74.0
- '@oxlint/binding-linux-riscv64-musl': 1.74.0
- '@oxlint/binding-linux-s390x-gnu': 1.74.0
- '@oxlint/binding-linux-x64-gnu': 1.74.0
- '@oxlint/binding-linux-x64-musl': 1.74.0
- '@oxlint/binding-openharmony-arm64': 1.74.0
- '@oxlint/binding-win32-arm64-msvc': 1.74.0
- '@oxlint/binding-win32-ia32-msvc': 1.74.0
- '@oxlint/binding-win32-x64-msvc': 1.74.0
- oxlint-tsgolint: 0.25.0
+ '@oxlint/binding-android-arm-eabi': 1.75.0
+ '@oxlint/binding-android-arm64': 1.75.0
+ '@oxlint/binding-darwin-arm64': 1.75.0
+ '@oxlint/binding-darwin-x64': 1.75.0
+ '@oxlint/binding-freebsd-x64': 1.75.0
+ '@oxlint/binding-linux-arm-gnueabihf': 1.75.0
+ '@oxlint/binding-linux-arm-musleabihf': 1.75.0
+ '@oxlint/binding-linux-arm64-gnu': 1.75.0
+ '@oxlint/binding-linux-arm64-musl': 1.75.0
+ '@oxlint/binding-linux-ppc64-gnu': 1.75.0
+ '@oxlint/binding-linux-riscv64-gnu': 1.75.0
+ '@oxlint/binding-linux-riscv64-musl': 1.75.0
+ '@oxlint/binding-linux-s390x-gnu': 1.75.0
+ '@oxlint/binding-linux-x64-gnu': 1.75.0
+ '@oxlint/binding-linux-x64-musl': 1.75.0
+ '@oxlint/binding-openharmony-arm64': 1.75.0
+ '@oxlint/binding-win32-arm64-msvc': 1.75.0
+ '@oxlint/binding-win32-ia32-msvc': 1.75.0
+ '@oxlint/binding-win32-x64-msvc': 1.75.0
+ oxlint-tsgolint: 7.0.2001
p-cancelable@4.0.1: {}
@@ -11051,7 +11056,7 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.21:
+ postcss@8.5.22:
dependencies:
nanoid: 3.3.16
picocolors: 1.1.1
@@ -11980,7 +11985,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.21
+ postcss: 8.5.22
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
From 1d8bac78eac9afa580c1b819fc7ee154f484a4c6 Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Wed, 22 Jul 2026 22:20:49 +0800
Subject: [PATCH 390/670] fix(config): fix macOS ua version
---
lib/config.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/config.ts b/lib/config.ts
index 077dcf19a642..f93bf95cc752 100644
--- a/lib/config.ts
+++ b/lib/config.ts
@@ -769,7 +769,7 @@ const calculateValue = () => {
disableIPv6: toBoolean(envs.DISABLE_IPV6, false),
requestRetry: toInt(envs.REQUEST_RETRY, 2), // 请求失败重试次数
requestTimeout: toInt(envs.REQUEST_TIMEOUT, 30000), // Milliseconds to wait for the server to end the response before aborting the request
- ua: envs.UA || (toBoolean(envs.NO_RANDOM_UA, false) ? TRUE_UA : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 15_6_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'),
+ ua: envs.UA || (toBoolean(envs.NO_RANDOM_UA, false) ? TRUE_UA : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'),
isDefaultUA: !envs.UA && !toBoolean(envs.NO_RANDOM_UA, false),
trueUA: TRUE_UA,
allowOrigin: envs.ALLOW_ORIGIN,
From 8a9a64ad16cec6b1ea8fa1e7f33f9ce808d03d64 Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Wed, 22 Jul 2026 22:30:24 +0800
Subject: [PATCH 391/670] chore: fix reopening pr
---
.github/workflows/lint.yml | 7 +++++++
scripts/workflow/test-route/identify.mjs | 4 ++++
2 files changed, 11 insertions(+)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index a22f82fa636e..94cb10f25ade 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -81,6 +81,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Check if PR author is denounced
+ id: vouch
uses: mitchellh/vouch/action/check-pr@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
with:
pr-number: ${{ github.event.pull_request.number }}
@@ -88,6 +89,12 @@ jobs:
require-vouch: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Label denounced PR as spam
+ if: ${{ steps.vouch.outputs.status == 'closed' }}
+ run: gh pr edit ${{ github.event.pull_request.number }} --add-label spam
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
agentscan:
name: AgentScan
diff --git a/scripts/workflow/test-route/identify.mjs b/scripts/workflow/test-route/identify.mjs
index a9e12159a685..ba947996a435 100644
--- a/scripts/workflow/test-route/identify.mjs
+++ b/scripts/workflow/test-route/identify.mjs
@@ -102,6 +102,10 @@ export default async function identify({ github, context, core }, body, number,
};
if (isPR) {
+ if (issue.labels.some((e) => e.name === 'spam')) {
+ core.info('PR labeled as spam, skipping');
+ return;
+ }
if (issue.state === 'closed') {
await updatePrState('open');
}
From 588cb9682a92d16fe34db686e90e43cff642dc01 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Thu, 23 Jul 2026 00:51:03 +0800
Subject: [PATCH 392/670] feat(route): add Chongqing China Three Gorges Museum
temp exhibition route (#22755)
---
lib/routes/3gmuseum/exhibition.tsx | 121 +++++++++++++++++++++++++++++
lib/routes/3gmuseum/namespace.ts | 10 +++
2 files changed, 131 insertions(+)
create mode 100644 lib/routes/3gmuseum/exhibition.tsx
create mode 100644 lib/routes/3gmuseum/namespace.ts
diff --git a/lib/routes/3gmuseum/exhibition.tsx b/lib/routes/3gmuseum/exhibition.tsx
new file mode 100644
index 000000000000..eb428c792e69
--- /dev/null
+++ b/lib/routes/3gmuseum/exhibition.tsx
@@ -0,0 +1,121 @@
+import { load } from 'cheerio';
+import dayjs from 'dayjs';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+export const route: Route = {
+ path: '/tempexhibition',
+ categories: ['travel'],
+ example: '/3gmuseum/tempexhibition',
+ name: 'Temporary Exhibition',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.3gmuseum.cn/web/column/col5009287.html'],
+ target: '/tempexhibition',
+ },
+ ],
+ handler: async () => {
+ const baseUrl = 'https://www.3gmuseum.cn';
+ const apiUrl = `${baseUrl}/web/column/col5009287.html`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: apiUrl,
+ });
+
+ // The data is embedded in the HTML as a JSON string inside a script tag, find the 'var newsPageTotal = {...}' part
+ const idx = response.data.indexOf('var newsPageTotal = ');
+ const endIdx = response.data.indexOf('\n', idx);
+ const str = response.data.slice(idx + 'var newsPageTotal = '.length, endIdx).trim();
+
+ const data = JSON.parse(str);
+ const list: any[] = data?.list;
+
+ const items = list.map((item) => {
+ const article = item.article;
+ const itemLink = article.pcUrl;
+ const $listContent = load(article.content);
+ const locationText = $listContent('p:contains("地点:")').text();
+ const location = locationText.replace(/.*?(?:展览|展出)?地点:/, '').trim();
+ const fullDurationText = $listContent('p:contains("时间:")').text();
+ const fullDuration = fullDurationText.replace(/.*?(?:展览|展出)?时间:?/, '').trim();
+
+ let startDate;
+ let endDate;
+
+ if (fullDuration) {
+ // Typical format: 2026年2月10日-5月18日 or 2026年1月27日——2027年1月17日 or 2025.6.18-2026.1.5
+ const dateMatch = fullDuration.match(/(\d{4}[年.]\d{1,2}[月.]\d{1,2}日?)\s*[—\-~至]+\s*(\d{4}[年.])?(\d{1,2}[月.]\d{1,2}日?)/);
+ if (dateMatch) {
+ const startStr = dateMatch[1].replaceAll(/[年月.]/g, '-').replace('日', '');
+ const endYear = dateMatch[2] ? dateMatch[2].replaceAll(/[年.]/g, '-') : startStr.slice(0, 5);
+ const endStr = endYear + dateMatch[3].replaceAll(/[月.]/g, '-').replace('日', '');
+
+ startDate = dayjs(startStr).format('YYYY-MM-DD');
+ endDate = dayjs(endStr).format('YYYY-MM-DD');
+ }
+ } else {
+ // extend_field_starttime may differ from the fullDuration, usually 1 day earlier, so parse fullDuration first, then fallback to extend_field_starttime and extend_field_endtime if fullDuration is not available
+ const formMap = article.formMap;
+ startDate = dayjs(formMap.extend_field_starttime).format('YYYY-MM-DD');
+ endDate = dayjs(formMap.extend_field_endtime).format('YYYY-MM-DD');
+ }
+
+ const pubDate = timezone(parseDate(item.pubTime), 8);
+ const title = item.listTitle;
+ const imgUrl = `https:${item.listImage}`;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title,
+ link: itemLink,
+ pubDate,
+ description,
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ };
+ });
+
+ return {
+ title: `${museumName} - 临时展览`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: items,
+ };
+ },
+};
diff --git a/lib/routes/3gmuseum/namespace.ts b/lib/routes/3gmuseum/namespace.ts
new file mode 100644
index 000000000000..06ba5da30374
--- /dev/null
+++ b/lib/routes/3gmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Chongqing China Three Gorges Museum',
+ url: 'www.3gmuseum.cn',
+
+ zh: {
+ name: '重庆中国三峡博物馆',
+ },
+};
From 5424351562c1b70d7f8395761e3d9769430d4335 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Thu, 23 Jul 2026 05:37:50 +0800
Subject: [PATCH 393/670] feat(route): add Tianjin Museum News and Exhibit
route (#22785)
---
lib/routes/tjbwg/exhibition.tsx | 133 ++++++++++++++++++++++++++++++++
lib/routes/tjbwg/namespace.ts | 9 +++
lib/routes/tjbwg/news.ts | 53 +++++++++++++
3 files changed, 195 insertions(+)
create mode 100644 lib/routes/tjbwg/exhibition.tsx
create mode 100644 lib/routes/tjbwg/namespace.ts
create mode 100644 lib/routes/tjbwg/news.ts
diff --git a/lib/routes/tjbwg/exhibition.tsx b/lib/routes/tjbwg/exhibition.tsx
new file mode 100644
index 000000000000..b26c66614382
--- /dev/null
+++ b/lib/routes/tjbwg/exhibition.tsx
@@ -0,0 +1,133 @@
+import { load } from 'cheerio';
+import dayjs from 'dayjs';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { DataItem, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+// Convert YYYY年M月D日 to YYYY-MM-DD
+const formatDate = (dateString: string | undefined) => {
+ if (!dateString) {
+ return;
+ }
+
+ const date = dayjs(dateString, 'YYYY年M月D日');
+ return date.format('YYYY-MM-DD');
+};
+
+// used for 2026年7月1日-9月30日【在展】 or 2026年5月18日【在展】
+const parseExhibitionDuration = (duration: string) => {
+ if (!duration) {
+ return { startDate: undefined, endDate: undefined };
+ }
+
+ const cleanStr = duration.replaceAll(/【.*?】/g, '').replaceAll(/\s+/g, ''); // Remove【在展】
+ const parts = cleanStr.split('-');
+ const startDateRaw = parts[0];
+ let endDateRaw = parts[1];
+
+ if (endDateRaw && !endDateRaw.includes('年')) {
+ const yearMatch = startDateRaw.match(/^\d{4}年/);
+ if (yearMatch) {
+ endDateRaw = yearMatch[0] + endDateRaw;
+ }
+ }
+
+ return { startDate: formatDate(startDateRaw), endDate: formatDate(endDateRaw) };
+};
+
+export const route: Route = {
+ path: '/exhibition',
+ categories: ['travel'],
+ example: '/tjbwg/exhibition',
+ radar: [
+ {
+ source: ['www.tjbwg.cn/cn/ExhibitionList.aspx'],
+ target: '/exhibition',
+ },
+ ],
+ name: 'Temporary Exhibition',
+ maintainers: ['magazian'],
+ handler: async () => {
+ const baseUrl = 'https://www.tjbwg.cn';
+ const listUrl = `${baseUrl}/cn/ExhibitionList.aspx?TypeId=10939`;
+ const museumName = namespace.zh?.name ?? namespace.name;
+
+ const response = await ofetch(listUrl);
+ const $ = load(response);
+
+ const items: DataItem[] = $('.exhList2 ul li')
+ .toArray()
+ .map((item) => {
+ const $item = $(item);
+ const a = $item.find('a');
+ const href = a.attr('href') ?? '';
+ const link = new URL(href, `${baseUrl}/cn/`).href;
+ const title = a.find('.text h3').text();
+ const rawImgSrc = a.find('.img img').attr('src') ?? '';
+ const imgUrl = new URL(rawImgSrc, baseUrl).href ?? '';
+ const location = a
+ .find('p')
+ .first()
+ .text()
+ .trim()
+ .replace(/^地点:/, '');
+ const fullDuration = a
+ .find('p')
+ .last()
+ .text()
+ .trim()
+ .replace(/^展期:/, '');
+
+ const { startDate, endDate } = parseExhibitionDuration(fullDuration);
+ const pubDate = startDate ? parseDate(startDate) : undefined;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title,
+ link,
+ pubDate,
+ description,
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ } as DataItem;
+ });
+
+ return {
+ title: `${museumName} - 临时展览`,
+ link: listUrl,
+ language: 'zh-CN',
+ item: items,
+ };
+ },
+};
diff --git a/lib/routes/tjbwg/namespace.ts b/lib/routes/tjbwg/namespace.ts
new file mode 100644
index 000000000000..a7d3c60c900d
--- /dev/null
+++ b/lib/routes/tjbwg/namespace.ts
@@ -0,0 +1,9 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Tianjin Museum',
+ url: 'www.tjbwg.cn',
+ zh: {
+ name: '天津博物馆',
+ },
+};
diff --git a/lib/routes/tjbwg/news.ts b/lib/routes/tjbwg/news.ts
new file mode 100644
index 000000000000..e28750ff1690
--- /dev/null
+++ b/lib/routes/tjbwg/news.ts
@@ -0,0 +1,53 @@
+import { load } from 'cheerio';
+
+import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+export const route: Route = {
+ path: '/news',
+ categories: ['travel'],
+ example: '/tjbwg/news',
+ name: 'News',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.tjbwg.cn/cn/NewsList.aspx'],
+ target: '/news',
+ },
+ ],
+ handler: async () => {
+ const baseUrl = 'https://www.tjbwg.cn';
+ const listUrl = `${baseUrl}/cn/NewsList.aspx?TypeId=10926`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await ofetch(listUrl);
+ const $ = load(response);
+
+ const list = $('.newsList1 ul li')
+ .toArray()
+ .map((item) => {
+ const $item = $(item);
+ const a = $item.find('a');
+ const href = a.attr('href') || '';
+ const link = new URL(href, `${baseUrl}/cn/`).href;
+ const title = a.find('h3').text();
+ const dateText = a.find('.time').text().trim();
+
+ return {
+ title,
+ link,
+ pubDate: parseDate(dateText),
+ };
+ });
+
+ return {
+ title: `${museumName} - 最新公告`,
+ link: listUrl,
+ language: 'zh-CN',
+ item: list,
+ };
+ },
+};
From e431b726e90b6101a08a8b91faa57185be4a71e9 Mon Sep 17 00:00:00 2001
From: "Jagger.H"
Date: Thu, 23 Jul 2026 05:58:04 +0800
Subject: [PATCH 394/670] fix(route/163): add radar rules for NetEase Cloud
Music routes (#22788)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The 163 routes carry no radar rules, so RSSHub Radar cannot suggest them
from a music.163.com page. This adds one rule per route, each pointing at
the URL that route already builds in its own `link`.
`user/playlist` declares `:uid` in its path while the page URL carries
`?id=`, so its target binds `:id` — the same convention as acfun/video.ts
(path `:uid`, source/target `:id`).
---
lib/routes/163/music/artist-songs.ts | 7 +++++++
lib/routes/163/music/artist.ts | 7 +++++++
lib/routes/163/music/djradio.tsx | 7 +++++++
lib/routes/163/music/playlist.ts | 7 +++++++
lib/routes/163/music/userevents.tsx | 6 ++++++
lib/routes/163/music/userplaylist.tsx | 7 +++++++
6 files changed, 41 insertions(+)
diff --git a/lib/routes/163/music/artist-songs.ts b/lib/routes/163/music/artist-songs.ts
index 3ebf5cb07b47..f1becb7ef578 100644
--- a/lib/routes/163/music/artist-songs.ts
+++ b/lib/routes/163/music/artist-songs.ts
@@ -12,10 +12,17 @@ export const route: Route = {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
+ supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
+ radar: [
+ {
+ source: ['music.163.com/artist'],
+ target: '/music/artist/songs/:id',
+ },
+ ],
name: '歌手歌曲',
maintainers: ['ZhongMingKun'],
handler,
diff --git a/lib/routes/163/music/artist.ts b/lib/routes/163/music/artist.ts
index 4f4b6edeccb5..5b6e1dd3dba8 100644
--- a/lib/routes/163/music/artist.ts
+++ b/lib/routes/163/music/artist.ts
@@ -12,10 +12,17 @@ export const route: Route = {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
+ supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
+ radar: [
+ {
+ source: ['music.163.com/artist/album'],
+ target: '/music/artist/:id',
+ },
+ ],
name: '歌手专辑',
maintainers: ['metowolf'],
handler,
diff --git a/lib/routes/163/music/djradio.tsx b/lib/routes/163/music/djradio.tsx
index ab876b54b95b..19cdcf1840b3 100644
--- a/lib/routes/163/music/djradio.tsx
+++ b/lib/routes/163/music/djradio.tsx
@@ -15,10 +15,17 @@ export const route: Route = {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
+ supportRadar: true,
supportBT: false,
supportPodcast: true,
supportScihub: false,
},
+ radar: [
+ {
+ source: ['music.163.com/djradio'],
+ target: '/music/djradio/:id',
+ },
+ ],
name: '电台节目',
maintainers: ['magic-akari'],
handler,
diff --git a/lib/routes/163/music/playlist.ts b/lib/routes/163/music/playlist.ts
index 173b3b308b93..0c9eca8f2570 100644
--- a/lib/routes/163/music/playlist.ts
+++ b/lib/routes/163/music/playlist.ts
@@ -19,10 +19,17 @@ export const route: Route = {
],
requirePuppeteer: false,
antiCrawler: true,
+ supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
+ radar: [
+ {
+ source: ['music.163.com/playlist'],
+ target: '/music/playlist/:id',
+ },
+ ],
name: '歌单歌曲',
maintainers: ['DIYgod'],
handler,
diff --git a/lib/routes/163/music/userevents.tsx b/lib/routes/163/music/userevents.tsx
index 6174be14b4fd..911f0df8c403 100644
--- a/lib/routes/163/music/userevents.tsx
+++ b/lib/routes/163/music/userevents.tsx
@@ -23,6 +23,12 @@ const renderDescription = ({ description, pics }) => {
export const route: Route = {
path: '/music/user/events/:id',
categories: ['multimedia'],
+ radar: [
+ {
+ source: ['music.163.com/user/event'],
+ target: '/music/user/events/:id',
+ },
+ ],
name: '用户动态',
maintainers: ['Master-Hash'],
handler,
diff --git a/lib/routes/163/music/userplaylist.tsx b/lib/routes/163/music/userplaylist.tsx
index 4dcf677fb42d..381b08699aa8 100644
--- a/lib/routes/163/music/userplaylist.tsx
+++ b/lib/routes/163/music/userplaylist.tsx
@@ -31,10 +31,17 @@ export const route: Route = {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
+ supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
+ radar: [
+ {
+ source: ['music.163.com/user/home'],
+ target: '/music/user/playlist/:id',
+ },
+ ],
name: '用户歌单',
maintainers: ['DIYgod'],
handler,
From a6e8b8781dc2a345f7ddc5120302ee28edd38760 Mon Sep 17 00:00:00 2001
From: Zifan Hua
Date: Thu, 23 Jul 2026 00:33:20 +0000
Subject: [PATCH 395/670] =?UTF-8?q?feat(route):=20add=20route=20for=20?=
=?UTF-8?q?=E6=B5=99=E6=B1=9F=E5=A4=A7=E5=AD=A6=E6=95=B0=E5=AD=A6=E7=A7=91?=
=?UTF-8?q?=E5=AD=A6=E9=99=A2=20(#22464)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat(route): add route for 浙江大学数学科学院
* fix: adjust publication date parsing to account for timezone
* fix: refine news item selection in fetchNewsItemsByCategory function
* fix: simplify author and publication date extraction in enrichNewsItemWithDetails function
* fix: update fetchNewsItemsByCategory to handle filter links only accessible from intranet
* fix: simplify filtering logic in fetchNewsItemsByCategory function
---
lib/routes/zju/math/index.ts | 144 +++++++++++++++++++++++++++++++++++
1 file changed, 144 insertions(+)
create mode 100644 lib/routes/zju/math/index.ts
diff --git a/lib/routes/zju/math/index.ts b/lib/routes/zju/math/index.ts
new file mode 100644
index 000000000000..9cc43bc85b6e
--- /dev/null
+++ b/lib/routes/zju/math/index.ts
@@ -0,0 +1,144 @@
+import { load } from 'cheerio';
+
+import type { DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+const base = 'http://www.math.zju.edu.cn/';
+
+type NewsItem = {
+ item: DataItem;
+ intranetOnly: boolean;
+};
+
+const categoryMap = new Map([
+ [0, { id: 'zytz/list.htm', title: '浙江大学数学科学院-重要通知' }],
+ [1, { id: 'bkstz/list.htm', title: '浙江大学数学科学院-本科生' }],
+ [2, { id: 'yjstz/list.htm', title: '浙江大学数学科学院-研究生' }],
+ [3, { id: 'kytz/list.htm', title: '浙江大学数学科学院-科研' }],
+ [4, { id: 'jxtz/list.htm', title: '浙江大学数学科学院-教学' }],
+ [5, { id: '38069/list.htm', title: '浙江大学数学科学院-人事' }],
+ [6, { id: 'gs/list.htm', title: '浙江大学数学科学院-公示' }],
+]);
+
+async function fetchNewsItemsByCategory(categoryId: string): Promise {
+ const response = await got({
+ method: 'get',
+ url: new URL(categoryId, base).href,
+ });
+
+ const $ = load(response.data);
+
+ return $('.news_list #wp_news_w12 li')
+ .toArray()
+ .map((item): NewsItem | null => {
+ const element = $(item);
+ const link = element.find('a[href]').first().attr('href');
+ const titleNode = element.find('.title');
+ // if the title node contains an image with src "/_images/news/icon/unopen.gif",
+ // it indicates that the news item is only accessible from the intranet
+ const intranetOnly = titleNode.find('img[src="/_images/news/icon/unopen.gif"]').length > 0;
+ const title = titleNode.text().trim() || element.find('a[href]').first().attr('title');
+ const dateText = `${element.find('.date .y').text().trim()}-${element.find('.date .d').text().trim()}`;
+
+ // If the title or link is missing, we skip this item as it is likely not a valid news entry.
+ if (!(title && link)) {
+ return null;
+ }
+
+ return {
+ item: {
+ title,
+ link: new URL(link, base).href,
+ pubDate: timezone(parseDate(dateText), 8),
+ },
+ intranetOnly,
+ };
+ })
+ .filter(Boolean) as NewsItem[];
+}
+
+async function enrichNewsItemWithDetails(item: NewsItem, refererUrl: string): Promise {
+ const dataItem = item.item as DataItem;
+
+ if (item.intranetOnly || !dataItem.link) {
+ return dataItem;
+ }
+
+ return await cache.tryGet(dataItem.link, async () => {
+ try {
+ const response = await got({
+ method: 'get',
+ url: dataItem.link,
+ headers: {
+ Referer: refererUrl,
+ },
+ });
+
+ const $ = load(response.data);
+ const description = $('.wp_articlecontent').html();
+ const infoText = $('.item_info').text();
+ const [, author, pubDate] = infoText.match(/来源:([\s\S]*?)发布时间:(\d{4}-\d{2}-\d{2})/) ?? [];
+
+ if (description) {
+ dataItem.description = description;
+ }
+
+ if (author) {
+ dataItem.author = author;
+ }
+
+ if (pubDate) {
+ dataItem.pubDate = timezone(parseDate(pubDate), 8);
+ }
+
+ return dataItem;
+ } catch {
+ return dataItem;
+ }
+ });
+}
+
+export const route: Route = {
+ path: '/math/:type',
+ categories: ['university'],
+ example: '/zju/math/0',
+ parameters: { type: '分类,见下表' },
+ features: {
+ requireConfig: false,
+ requirePuppeteer: false,
+ antiCrawler: false,
+ supportBT: false,
+ supportPodcast: false,
+ supportScihub: false,
+ },
+ name: '数学科学学院',
+ description: `| 重要通知 | 本科生 | 研究生 | 科研 | 教学 | 人事 | 公示 |
+| -------- | ------ | ------ | ---- | ---- | ---- | ---- |
+| 0 | 1 | 2 | 3 | 4 | 5 | 6 |`,
+ maintainers: ['Alex222222222222'],
+ handler,
+ url: 'www.math.zju.edu.cn',
+};
+
+async function handler(ctx: { req: { param: (arg0: string) => string } }) {
+ const type = Math.trunc(Number(ctx.req.param('type')));
+ const categoryInfo = categoryMap.get(type);
+
+ if (!categoryInfo) {
+ const validTypes = [...categoryMap.keys().toArray()].join(', ');
+ throw new Error(`Invalid type: ${type}. Valid types are: ${validTypes}`);
+ }
+
+ const categoryUrl = new URL(categoryInfo.id, base).href;
+ const newsItems = await fetchNewsItemsByCategory(categoryInfo.id);
+ const items = await Promise.all(newsItems.map((item) => enrichNewsItemWithDetails(item, categoryUrl)));
+
+ return {
+ title: categoryInfo.title,
+ link: categoryUrl,
+ item: items,
+ };
+}
From 41929e66c21099119e3b175e3620612a3b28f11d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 23 Jul 2026 21:04:32 +0800
Subject: [PATCH 396/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22805)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260722.1 to 5.20260723.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260723.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index 838e11ba7636..3f113deaf4cb 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.7",
- "@cloudflare/workers-types": "5.20260722.1",
+ "@cloudflare/workers-types": "5.20260723.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.75.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 169f2b85851a..be5b5f38c4a0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.7
- version: 0.18.7(@cloudflare/workers-types@5.20260722.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.7(@cloudflare/workers-types@5.20260723.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260722.1
- version: 5.20260722.1
+ specifier: 5.20260723.1
+ version: 5.20260723.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -472,7 +472,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.113.0
- version: 4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -641,8 +641,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260722.1':
- resolution: {integrity: sha512-8+kivCgFGzwrAfNOWgSpzy/VDvmT/i5KWBgQhnygv3d1kajNn6mCYTbLKpouG0aY8mXjhv+IQm1a8r2K/H4pqQ==}
+ '@cloudflare/workers-types@5.20260723.1':
+ resolution: {integrity: sha512-+P5tDo+ZjW5nmWq/zagLVIyV8U/mSk7n8n0mLUHjn3pOdY7kdEDmURUxvhwwYqLJ/VPnyMJPAYtZjHbqAnIpDg==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -6630,7 +6630,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260721.1
- '@cloudflare/vitest-pool-workers@0.18.7(@cloudflare/workers-types@5.20260722.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.7(@cloudflare/workers-types@5.20260723.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6638,7 +6638,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6660,7 +6660,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260721.1':
optional: true
- '@cloudflare/workers-types@5.20260722.1': {}
+ '@cloudflare/workers-types@5.20260723.1': {}
'@colors/colors@1.6.0': {}
@@ -12108,7 +12108,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260721.1
'@cloudflare/workerd-windows-64': 1.20260721.1
- wrangler@4.113.0(@cloudflare/workers-types@5.20260722.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260721.1)
@@ -12119,7 +12119,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260721.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260722.1
+ '@cloudflare/workers-types': 5.20260723.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 33908a122750d9bdf82ce51833a36dcbdc617c5c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 23 Jul 2026 21:49:14 +0800
Subject: [PATCH 397/670] chore(deps): bump imapflow from 1.4.8 to 1.5.0
(#22806)
Bumps [imapflow](https://github.com/postalsys/imapflow) from 1.4.8 to 1.5.0.
- [Release notes](https://github.com/postalsys/imapflow/releases)
- [Changelog](https://github.com/postalsys/imapflow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postalsys/imapflow/compare/v1.4.8...v1.5.0)
---
updated-dependencies:
- dependency-name: imapflow
dependency-version: 1.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 3f113deaf4cb..90e9baf09bd9 100644
--- a/package.json
+++ b/package.json
@@ -96,7 +96,7 @@
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
"iconv-lite": "0.7.3",
- "imapflow": "1.4.8",
+ "imapflow": "1.5.0",
"instagram-private-api": "1.46.1",
"ioredis": "5.11.1",
"ip-regex": "5.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index be5b5f38c4a0..28c4742b1090 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -143,8 +143,8 @@ importers:
specifier: 0.7.3
version: 0.7.3
imapflow:
- specifier: 1.4.8
- version: 1.4.8
+ specifier: 1.5.0
+ version: 1.5.0
instagram-private-api:
specifier: 1.46.1
version: 1.46.1
@@ -3676,7 +3676,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -4345,8 +4345,8 @@ packages:
engines: {node: '>=6.9.0'}
hasBin: true
- imapflow@1.4.8:
- resolution: {integrity: sha512-cHa23g7h0X04a2v+H9luLg0GWMQ0vApmQ+UxL5swglOgBypNpqxurLMa1JS9mjpTekCsQhKrCZwaziPRBbHp8Q==}
+ imapflow@1.5.0:
+ resolution: {integrity: sha512-ayj2xIpRpXT9nXlAQQDhfm694faQxEmfAzRYL881q3YGRR5ofyIWsG3l3Lf7oSThxgLwZ/EQ5kh/nLnKBud3LQ==}
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
@@ -9817,7 +9817,7 @@ snapshots:
image-size@0.7.5: {}
- imapflow@1.4.8:
+ imapflow@1.5.0:
dependencies:
'@zone-eu/mailsplit': 5.4.14
encoding-japanese: 2.2.0
From eeff5a386963bd93ce6d1082d31c3f4bcee33fc0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 23 Jul 2026 21:55:58 +0800
Subject: [PATCH 398/670] chore(deps): bump devenv from `ef185b5` to `9767a1f`
(#22807)
Bumps [devenv](https://github.com/cachix/devenv) from `ef185b5` to `9767a1f`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/ef185b5a38445777194bc8469fc1cdebd99e7dbc...9767a1f458fbd99b487dbb600a130917d4cd2b13)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 9767a1f458fbd99b487dbb600a130917d4cd2b13
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index c72b5d9330b6..c71b955dca92 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784696310,
- "narHash": "sha256-EeZH7UbjqoJHHrN1DkV32DxZ8OMGh/2kla94lpO17eE=",
+ "lastModified": 1784758116,
+ "narHash": "sha256-vcjRSkJHM5/2rLmtCZBhms/WDJpyPNXW9Gi6xeSfc/Y=",
"owner": "cachix",
"repo": "devenv",
- "rev": "ef185b5a38445777194bc8469fc1cdebd99e7dbc",
+ "rev": "9767a1f458fbd99b487dbb600a130917d4cd2b13",
"type": "github"
},
"original": {
From d454ef8f4733f60275eaebf56360cdcbd6ff4f7d Mon Sep 17 00:00:00 2001
From: powerfullz <61956140+powerfullz@users.noreply.github.com>
Date: Thu, 23 Jul 2026 22:17:31 +0800
Subject: [PATCH 399/670] fix(route/csust): various fixes and improvements
(#22704)
* fix(route/csust): self-contained routes, full title extraction, absolute URLs
- Remove factory pattern from utils.ts, keep only getNoticeContent helper
- Each route (tggs/xkxs) now self-contained with inline list parsing
- Extract full title from article page tag to avoid truncation
- Convert relative URLs to absolute in article content
* fix(route/csust): remove redundant logics
---
lib/routes/csust/tggs.ts | 51 ++++++++++++++++------
lib/routes/csust/utils.ts | 92 +++++++--------------------------------
lib/routes/csust/xkxs.ts | 51 ++++++++++++++++------
3 files changed, 90 insertions(+), 104 deletions(-)
diff --git a/lib/routes/csust/tggs.ts b/lib/routes/csust/tggs.ts
index 38d44b98a6c7..6da0a2579cc5 100644
--- a/lib/routes/csust/tggs.ts
+++ b/lib/routes/csust/tggs.ts
@@ -1,25 +1,48 @@
-import type { Route } from '@/types';
+import { load } from 'cheerio';
-import { createCsustHandler } from './utils';
+import type { Data, DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
-const handler = createCsustHandler({
- listPath: '/tggs.htm',
- feedTitle: '长沙理工大学 - 通告公示',
- feedDescription: '长沙理工大学通告公示',
-});
+import { getNoticeContent } from './utils';
+
+const baseUrl = 'https://www.csust.edu.cn';
+const listPath = '/tggs.htm';
+
+async function handler(): Promise {
+ const response = await got(`${baseUrl}${listPath}`);
+ const $ = load(response.body);
+
+ const items: Array = $('.list ul li')
+ .toArray()
+ .map((li) => {
+ const $li = $(li);
+
+ return {
+ title: $li.find('.newTitle').text().trim(),
+ link: new URL($li.find('a').attr('href')!, baseUrl).href,
+ pubDate: timezone(parseDate($li.find('.data1').text().trim(), '发布时间 : YYYY-MM-DD'), 8),
+ };
+ });
+
+ const enrichedItems = await Promise.all(items.map((item) => cache.tryGet(item.link, () => getNoticeContent(item))));
+
+ return {
+ title: '长沙理工大学 - 通告公示',
+ link: `${baseUrl}${listPath}`,
+ description: '长沙理工大学通告公示',
+ item: enrichedItems,
+ };
+}
export const route: Route = {
path: '/tggs',
categories: ['university'],
example: '/csust/tggs',
- parameters: {},
features: {
- requireConfig: false,
- requirePuppeteer: false,
- antiCrawler: false,
- supportBT: false,
- supportPodcast: false,
- supportScihub: false,
+ supportRadar: true,
},
radar: [
{
diff --git a/lib/routes/csust/utils.ts b/lib/routes/csust/utils.ts
index 5e69f612dc8b..ef9638ac1578 100644
--- a/lib/routes/csust/utils.ts
+++ b/lib/routes/csust/utils.ts
@@ -1,86 +1,26 @@
-import type { CheerioAPI } from 'cheerio';
import { load } from 'cheerio';
-import cache from '@/utils/cache';
+import type { DataItem } from '@/types';
import got from '@/utils/got';
-import { parseDate } from '@/utils/parse-date';
-// 抓取并清清理内容
-export async function getNoticeContent(item: any) {
+type NoticeItem = DataItem & { link: string };
+
+export async function getNoticeContent(item: NoticeItem): Promise {
const response = await got(item.link);
const $ = load(response.body);
+ const pageTitle = $('title').text();
const $content = $('.v_news_content');
-
- if ($content.length) {
- // 移除无用元素
- $content.find('script').remove();
- $content.find('style').remove();
- $content.find('.vsbcontent_end').remove();
- $content.find('iframe').remove();
- item.description = $content.html() || item.title;
- } else {
- item.description = item.title;
- }
-
- return item;
-}
-
-// 解析列表页面,返回包含标题、链接与发布日期的条目
-export function parseListItems($: CheerioAPI, baseUrl: string) {
- return $('.list ul li')
- .toArray()
- .map((li) => {
- const element = $(li);
- const title = element.find('.newTitle').text().trim();
- const linkRaw = element.find('a').attr('href');
- const dateText = element.find('.data1').text().trim();
-
- if (!linkRaw || !title) {
- return null;
- }
-
- const dateMatch = dateText.match(/发布时间\s*[::]\s*(\d{4}-\d{1,2}-\d{1,2})/);
- const pubDate = dateMatch ? parseDate(dateMatch[1]) : null;
-
- // 使用 URL 构造函数确保正确拼接 URL
- const link = linkRaw.startsWith('http') ? linkRaw : new URL(linkRaw, baseUrl).href;
-
- return {
- title,
- link,
- pubDate,
- } as any;
- })
- .filter((i) => i !== null) as any[];
-}
-
-// 通用处理器工厂:根据栏目路径与标题信息生成 handler
-export function createCsustHandler({ listPath, feedTitle, feedDescription }: { listPath: string; feedTitle: string; feedDescription: string }) {
- const baseUrl = 'https://www.csust.edu.cn';
- return async function () {
- const response = await got(`${baseUrl}${listPath}`);
- const $ = load(response.body);
-
- const items = parseListItems($, baseUrl);
-
- const item = await Promise.all(
- items.map((it) =>
- cache.tryGet(it.link, async () => {
- try {
- return await getNoticeContent(it);
- } catch {
- return it;
- }
- })
- )
- );
-
- return {
- title: feedTitle,
- link: `${baseUrl}${listPath}`,
- description: feedDescription,
- item,
- };
+ $content.find('script, style, .vsbcontent_end').remove();
+ $content.find('img[src], a[href]').each((_, element) => {
+ const $element = $(element);
+ const attribute = element.tagName === 'img' ? 'src' : 'href';
+ $element.attr(attribute, new URL($element.attr(attribute)!, item.link).href);
+ });
+
+ return {
+ ...item,
+ title: pageTitle.slice(0, pageTitle.lastIndexOf('-')).trim(),
+ description: $content.html()!,
};
}
diff --git a/lib/routes/csust/xkxs.ts b/lib/routes/csust/xkxs.ts
index fa641b293bcc..2149799f52b1 100644
--- a/lib/routes/csust/xkxs.ts
+++ b/lib/routes/csust/xkxs.ts
@@ -1,25 +1,48 @@
-import type { Route } from '@/types';
+import { load } from 'cheerio';
-import { createCsustHandler } from './utils';
+import type { Data, DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
-const handler = createCsustHandler({
- listPath: '/xkxs.htm',
- feedTitle: '长沙理工大学 - 学科学术',
- feedDescription: '长沙理工大学学科学术',
-});
+import { getNoticeContent } from './utils';
+
+const baseUrl = 'https://www.csust.edu.cn';
+const listPath = '/xkxs.htm';
+
+async function handler(): Promise {
+ const response = await got(`${baseUrl}${listPath}`);
+ const $ = load(response.body);
+
+ const items: Array = $('.list ul li')
+ .toArray()
+ .map((li) => {
+ const $li = $(li);
+
+ return {
+ title: $li.find('.newTitle').text().trim(),
+ link: new URL($li.find('a').attr('href')!, baseUrl).href,
+ pubDate: timezone(parseDate($li.find('.data1').text().trim(), '发布时间 : YYYY-MM-DD'), 8),
+ };
+ });
+
+ const enrichedItems = await Promise.all(items.map((item) => cache.tryGet(item.link, () => getNoticeContent(item))));
+
+ return {
+ title: '长沙理工大学 - 学科学术',
+ link: `${baseUrl}${listPath}`,
+ description: '长沙理工大学学科学术',
+ item: enrichedItems,
+ };
+}
export const route: Route = {
path: '/xkxs',
categories: ['university'],
example: '/csust/xkxs',
- parameters: {},
features: {
- requireConfig: false,
- requirePuppeteer: false,
- antiCrawler: false,
- supportBT: false,
- supportPodcast: false,
- supportScihub: false,
+ supportRadar: true,
},
radar: [
{
From b0e556e1185b1fcae607744166d7f929f75a283c Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Fri, 24 Jul 2026 00:32:56 +0800
Subject: [PATCH 400/670] feat(route): add capital museum route for exhibition
and news (#22687)
* feat: add capital museum route for exhibition and news
* fix:update ExhibitionListItem
* fix: update .html() to .text() and news apiUrl
Co-authored-by: Tony
-------
---
lib/routes/capitalmuseum/exhibition.tsx | 170 ++++++++++++++++++++++++
lib/routes/capitalmuseum/namespace.ts | 10 ++
lib/routes/capitalmuseum/news.ts | 96 +++++++++++++
3 files changed, 276 insertions(+)
create mode 100644 lib/routes/capitalmuseum/exhibition.tsx
create mode 100644 lib/routes/capitalmuseum/namespace.ts
create mode 100644 lib/routes/capitalmuseum/news.ts
diff --git a/lib/routes/capitalmuseum/exhibition.tsx b/lib/routes/capitalmuseum/exhibition.tsx
new file mode 100644
index 000000000000..b540ab5c9b85
--- /dev/null
+++ b/lib/routes/capitalmuseum/exhibition.tsx
@@ -0,0 +1,170 @@
+import { load } from 'cheerio';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+// parse exhibition date string like "2024年5月1日 - 2024年6月30日" or "2024年5月1日-" or "2024年5月1日 - 6月30日"
+const parseExhibitionDates = (fullDuration: string | undefined) => {
+ let startDate: string | undefined;
+ let endDate: string | undefined;
+
+ if (fullDuration) {
+ // Regex to capture start and optional end dates.
+ const dateRegex = /(\d{4})年(\d{1,2})月(\d{1,2})日(?:\D+(?:(\d{4})年)?(\d{1,2})月(\d{1,2})日)?/;
+ const match = fullDuration.match(dateRegex);
+
+ if (match) {
+ const startYear = match[1];
+ startDate = `${startYear}-${match[2].padStart(2, '0')}-${match[3].padStart(2, '0')}`;
+
+ if (match[5] && match[6]) {
+ const endYear = match[4] || startYear; // If end year is not present, use start year
+ endDate = `${endYear}-${match[5].padStart(2, '0')}-${match[6].padStart(2, '0')}`;
+ }
+ }
+ }
+
+ return { startDate, endDate };
+};
+
+export const route: Route = {
+ path: '/exhibition/:type?',
+ categories: ['travel'],
+ example: '/capitalmuseum/exhibition',
+ parameters: {
+ type: 'Exhibition type, supported values: new(最新展览), review(展览回顾), default: All exhibitions.',
+ },
+ name: 'Exhibitions',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.capitalmuseum.org.cn/exhibition'],
+ target: '/exhibition',
+ },
+ ],
+
+ handler: async (ctx) => {
+ const typeParam = ctx.req.param('type') || 'all';
+
+ const typeMap: Record = {
+ new: '最新展览',
+ review: '展览回顾',
+ };
+
+ const baseUrl = 'https://www.capitalmuseum.org.cn';
+ const apiUrl = `${baseUrl}/exhibition`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: apiUrl,
+ });
+
+ const $ = load(response.data);
+ const nuxtDataStr = $('#__NUXT_DATA__').text() || ''; // use __NUXT_DATA__ to get the data structure of the page
+ const nuxtData = JSON.parse(nuxtDataStr);
+ const targetType = typeMap[typeParam];
+
+ const exhibitionList = nuxtData.filter((item: any) => {
+ if (typeof item === 'object' && 'eid' in item) {
+ const itemType = nuxtData[item.cid];
+ // when typeParam is 'all', include all items; otherwise, filter by the specific type
+ return typeParam === 'all' ? Object.values(typeMap).includes(itemType) : itemType === targetType;
+ }
+ return false;
+ });
+
+ interface ExhibitionListItem {
+ title: string;
+ itemlink: string;
+ imgUrl: string;
+ }
+
+ const listItems: ExhibitionListItem[] = exhibitionList.map((item: any) => {
+ const eid = nuxtData[item.eid];
+ const title = nuxtData[item.title];
+ const link = `${apiUrl}/${eid}`;
+ const imgUrl = nuxtData[item.titileurl];
+
+ return {
+ title,
+ itemlink: link,
+ imgUrl,
+ };
+ });
+
+ // get location and fullDuration from the detail page of each exhibition
+ const items: DataItem[] = await Promise.all(
+ listItems.map((item: ExhibitionListItem) =>
+ cache.tryGet(item.itemlink, async () => {
+ const detailResponse = await got({
+ method: 'get',
+ url: item.itemlink,
+ });
+
+ const detail$ = load(detailResponse.data);
+ const detailNuxtDataStr = detail$('#__NUXT_DATA__').text() || '';
+ const detailNuxtData = JSON.parse(detailNuxtDataStr);
+
+ const detailObj = detailNuxtData.find((obj: any) => typeof obj === 'object' && 'address' in obj);
+
+ const location = detailNuxtData[detailObj.address];
+ const fullDuration = detailNuxtData[detailObj.open_time];
+ const { startDate, endDate } = parseExhibitionDates(fullDuration);
+ const pubDate = startDate ? timezone(parseDate(startDate, 'YYYY-MM-DD'), 8) : undefined;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title: item.title,
+ link: item.itemlink,
+ pubDate,
+ description,
+ // For further .ics file processing
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ } as DataItem;
+ })
+ )
+ );
+
+ return {
+ title: `${museumName} - 展览陈列${targetType ? ` - ${targetType}` : ''}`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: items as DataItem[],
+ };
+ },
+};
diff --git a/lib/routes/capitalmuseum/namespace.ts b/lib/routes/capitalmuseum/namespace.ts
new file mode 100644
index 000000000000..2b705a4421e7
--- /dev/null
+++ b/lib/routes/capitalmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Capital Museum',
+ url: 'www.capitalmuseum.org.cn/',
+
+ zh: {
+ name: '首都博物馆',
+ },
+};
diff --git a/lib/routes/capitalmuseum/news.ts b/lib/routes/capitalmuseum/news.ts
new file mode 100644
index 000000000000..c78af5622e66
--- /dev/null
+++ b/lib/routes/capitalmuseum/news.ts
@@ -0,0 +1,96 @@
+import { load } from 'cheerio';
+
+import type { DataItem, Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+export const route: Route = {
+ path: '/news/:type?',
+ categories: ['travel'],
+ example: '/capitalmuseum/news/notice',
+ parameters: {
+ type: 'News type, supported values: news(新闻资讯), notice(通知公告). Default: All news.',
+ },
+ name: 'News',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.capitalmuseum.org.cn/news'],
+ target: '/news',
+ },
+ ],
+
+ handler: async (ctx) => {
+ const typeParam = ctx.req.param('type') || 'all';
+
+ const typeMap: Record = {
+ notice: '通知公告',
+ news: '新闻资讯',
+ };
+
+ const targetType = typeMap[typeParam];
+
+ const baseUrl = 'https://www.capitalmuseum.org.cn';
+ const apiUrl = `${baseUrl}/news`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const response = await got({
+ method: 'get',
+ url: apiUrl,
+ });
+
+ const $ = load(response.data);
+ const nuxtDataStr = $('#__NUXT_DATA__').text() || '{}'; // use __NUXT_DATA__ to get the data structure of the page
+ const nuxtData = JSON.parse(nuxtDataStr);
+ // get all the links of the news items by section name
+ const getLinksBySection = (sectionName: string) => {
+ // get the span element that contains the section name
+ const $titleSpan = $(`span:contains("${sectionName}")`);
+
+ // for example, div class="oz09n6" is the container of the news items, which is the next sibling of the span element
+ const $container = $titleSpan.parent().nextAll('div').first();
+
+ // get all the links of the news items in the container
+ return $container
+ .find('a[href^="/news/"]')
+ .toArray()
+ .map((el) => $(el).attr('href') as string);
+ };
+
+ let targetHrefs: string[] = [];
+
+ if (targetType) {
+ targetHrefs = getLinksBySection(targetType);
+ } else if (typeParam === 'all') {
+ targetHrefs = Object.values(typeMap).flatMap((sectionName) => getLinksBySection(sectionName));
+ }
+
+ // match the newsId in the href with the newsId in the nuxtData to get the title and publishtime
+ const items = targetHrefs.map((href) => {
+ const newsId = href.split('/').pop();
+ const link = `${baseUrl}${href}`;
+
+ const newsObj = nuxtData.find((item: any) => nuxtData[item.newsid] === newsId);
+
+ const pubTime = nuxtData[newsObj.publishtime];
+ const pubDate = timezone(parseDate(pubTime, 'YYYY-MM-DD'), 8);
+ const title = nuxtData[newsObj.title];
+
+ return {
+ title,
+ link,
+ pubDate,
+ } as DataItem;
+ });
+
+ return {
+ title: `${museumName} - 首博快讯${targetType ? ` - ${targetType}` : ''}`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: items,
+ };
+ },
+};
From 16cac03373f2a6c1b54615a2049729ec5dc37890 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Fri, 24 Jul 2026 00:55:49 +0800
Subject: [PATCH 401/670] feat(route): add Sichuan Museum Exhibition route
(#22756)
* feat(route): add Sichuan Museum Exhibition route
* fix: fix the radar target
* fix: update key with original format and remove string() for startDate/endDate
Co-authored-by: Tony
--------
---
lib/routes/scmuseum/exhibition.tsx | 130 +++++++++++++++++++++++++++++
lib/routes/scmuseum/namespace.ts | 10 +++
2 files changed, 140 insertions(+)
create mode 100644 lib/routes/scmuseum/exhibition.tsx
create mode 100644 lib/routes/scmuseum/namespace.ts
diff --git a/lib/routes/scmuseum/exhibition.tsx b/lib/routes/scmuseum/exhibition.tsx
new file mode 100644
index 000000000000..2185dbd2c200
--- /dev/null
+++ b/lib/routes/scmuseum/exhibition.tsx
@@ -0,0 +1,130 @@
+import crypto from 'node:crypto';
+
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { Route } from '@/types';
+import got from '@/utils/got';
+import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+
+import { namespace } from './namespace';
+
+// Generate a dynamic token using AES-256-ECB with a static key and timestamp
+function getToken() {
+ const key = 'TYYY3OT3-TOCBW7OW-T33QMVJ3-2IUUVC22'.replaceAll('-', ''); // this key is used for AES-256-ECB encryption, and it is hardcoded in the original code in https://www.scmuseum.cn/js/index.2af39792.chunk.js
+ const t = (Math.random() + '').slice(-6) + Date.now();
+ const cipher = crypto.createCipheriv('aes-256-ecb', Buffer.from(key, 'utf8'), null);
+ cipher.setAutoPadding(true);
+ let token = cipher.update(t, 'utf8', 'base64');
+ token += cipher.final('base64');
+ return token;
+}
+
+export const route: Route = {
+ path: '/exhibition/:type?',
+ categories: ['travel'],
+ example: '/scmuseum/exhibition/temp',
+ parameters: { type: 'Exhibition type, supported values: base (常设展览) or temp (临时展览), default is all exhibitions.' },
+ name: 'Exhibition',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.scmuseum.cn/Visit/Exhibition'],
+ target: '/exhibition',
+ },
+ ],
+ handler: async (ctx) => {
+ const typeParam = ctx.req.param('type');
+
+ const apiConfig = {
+ base: { endpoint: 'queryExhibitionBaseList', name: '常设展览', isBase: true },
+ temp: { endpoint: 'queryExhibitionTempList', name: '临时展览', isBase: false },
+ };
+
+ const fetchTypes = typeParam ? [typeParam] : ['base', 'temp'];
+ const museumName = namespace.zh?.name || namespace.name;
+ const titleTag = fetchTypes.length === 2 ? '' : apiConfig[fetchTypes[0] as keyof typeof apiConfig].name;
+
+ const responses = await Promise.all(
+ fetchTypes.map(async (t) => {
+ const config = apiConfig[t as keyof typeof apiConfig];
+ const apiUrl = `https://www.scmuseum.cn/japi/sw-cms-cloud/api/${config.endpoint}`;
+
+ const response = await got({
+ method: 'post',
+ url: apiUrl,
+ headers: {
+ Appid: '75d98ea426f4412eab623c9076365802', // fixed appid
+ Token: getToken(),
+ },
+ json: {
+ entity: {
+ languageType: 'CN',
+ },
+ param: {
+ pageNum: 1,
+ pageSize: 6,
+ },
+ },
+ });
+
+ const list = response.data?.data?.records || [];
+
+ return list.map((item: any) => {
+ const isBase = config.isBase;
+ const title = isBase ? item.baseName : item.tempName;
+ const linkId = isBase ? item.exhibitionBaseId : item.exhibitionTempId;
+ const itemLink = isBase ? `https://www.scmuseum.cn/Visit/Exhibition/BaseExhibition/${linkId}` : `https://www.scmuseum.cn/Visit/Exhibition/ExhibitiomReview/${linkId}`;
+
+ const pubDate = item.startTime ? timezone(parseDate(item.startTime), 8) : undefined;
+ const startDate = item.startTime ? item.startTime.split(' ', 1)[0] : '';
+ const endDate = item.endTime ? item.endTime.split(' ', 1)[0] : '';
+ const location = isBase ? item.basePlace : item.tempPlace;
+ const imgUrl = `https://www.scmuseum.cn/file/${item.thumb}`;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+
+ );
+
+ return {
+ title,
+ link: itemLink,
+ pubDate,
+ description,
+ // for further .ics process
+ _extra: {
+ museumName,
+ location,
+ startDate, // format: YYYY-MM-DD or '未定/常设'
+ endDate, // format: YYYY-MM-DD or '未定/常设'
+ },
+ };
+ });
+ })
+ );
+
+ const items = responses.flat();
+
+ return {
+ title: `${museumName} - 展览${titleTag ? ` - ${titleTag}` : ''}`,
+ link: 'https://www.scmuseum.cn/Visit/Exhibition',
+ language: 'zh-CN',
+ item: items,
+ };
+ },
+};
diff --git a/lib/routes/scmuseum/namespace.ts b/lib/routes/scmuseum/namespace.ts
new file mode 100644
index 000000000000..e5a1b29da3f8
--- /dev/null
+++ b/lib/routes/scmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Sichuan Museum',
+ url: 'www.scmuseum.cn',
+
+ zh: {
+ name: '四川博物院',
+ },
+};
From 0fafcbba7a99c9b9b0461f8a5376812e96d46c86 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Fri, 24 Jul 2026 01:30:29 +0800
Subject: [PATCH 402/670] feat(route): add Suzhou Museum Special Exhibit route
(#22770)
* feat(route): add Suzhou Museum Special Exhibit route
* fix: patch the malformed header
---
lib/routes/szmuseum/namespace.ts | 10 +++
lib/routes/szmuseum/temporary.tsx | 143 ++++++++++++++++++++++++++++++
2 files changed, 153 insertions(+)
create mode 100644 lib/routes/szmuseum/namespace.ts
create mode 100644 lib/routes/szmuseum/temporary.tsx
diff --git a/lib/routes/szmuseum/namespace.ts b/lib/routes/szmuseum/namespace.ts
new file mode 100644
index 000000000000..2a8765072a2b
--- /dev/null
+++ b/lib/routes/szmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Suzhou Museum',
+ url: 'www.szmuseum.com',
+
+ zh: {
+ name: '苏州博物馆',
+ },
+};
diff --git a/lib/routes/szmuseum/temporary.tsx b/lib/routes/szmuseum/temporary.tsx
new file mode 100644
index 000000000000..88ec25bccc92
--- /dev/null
+++ b/lib/routes/szmuseum/temporary.tsx
@@ -0,0 +1,143 @@
+import { load } from 'cheerio';
+import dayjs from 'dayjs';
+import { renderToString } from 'hono/jsx/dom/server';
+import { Agent, buildConnector } from 'undici';
+
+import type { Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+// szmuseum.com responds with a malformed `Cache Control: no-cache` header
+// (space instead of hyphen), which makes Node.js's strict HTTP parser throw.
+// Patch the bytes on the socket before the parser sees them.
+const connect = buildConnector({});
+const dispatcher = new Agent({
+ connect(opts, cb) {
+ connect(opts, (err, socket) => {
+ if (err || !socket) {
+ cb(err, null);
+ return;
+ }
+ const read = socket.read.bind(socket);
+ socket.read = (...args) => {
+ const chunk = read(...args);
+ if (Buffer.isBuffer(chunk)) {
+ const index = chunk.indexOf('\r\nCache Control:');
+ if (index !== -1) {
+ chunk.write('-', index + 7);
+ }
+ }
+ return chunk;
+ };
+ cb(null, socket);
+ });
+ },
+});
+
+export const route: Route = {
+ path: '/temporary',
+ categories: ['travel'],
+ example: '/szmuseum/temporary',
+ name: 'Special Exhibition',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.szmuseum.com/Exhibition/Temporary'],
+ target: '/temporary',
+ },
+ ],
+ handler: async () => {
+ const baseUrl = 'https://www.szmuseum.com';
+ const apiUrl = `${baseUrl}/Exhibition/Temporary`;
+ const museumName = namespace.zh?.name || namespace.name;
+
+ const content = await ofetch(apiUrl, { dispatcher, parseResponse: (txt) => txt });
+
+ const $ = load(content);
+
+ const list = $('.extemwrap ul li.clearfix')
+ .toArray()
+ .map((item) => {
+ const $item = $(item);
+ const a = $item.find('h1 a');
+ const title = a.text();
+ const link = new URL(a.attr('href') || '', baseUrl).href;
+ const imgUrl = new URL($item.find('.aleftimg img').attr('src') || '', baseUrl).href;
+
+ const fullDuration = $item.find('.activity_r_detail p:nth-child(1) span:nth-child(2)').text().trim();
+ const location = $item.find('.activity_r_detail p:nth-child(2) span:nth-child(2)').text().trim();
+
+ let startDate;
+ let endDate;
+
+ if (fullDuration) {
+ const times = fullDuration.split('-');
+ const startStr = times[0]
+ .replaceAll(/(.*?)/g, '')
+ .trim()
+ .replaceAll(/[年月/.]/g, '-')
+ .replace('日', '');
+ let endStr = times[1]
+ .replaceAll(/(.*?)/g, '')
+ .trim()
+ .replaceAll(/[年月/.]/g, '-')
+ .replace('日', '');
+
+ if (startStr && endStr.split('-').length === 2) {
+ endStr = `${startStr.split('-', 1)[0]}-${endStr}`;
+ }
+
+ startDate = dayjs(startStr).format('YYYY-MM-DD');
+ endDate = dayjs(endStr).format('YYYY-MM-DD');
+ }
+
+ const pubDate = startDate ? parseDate(startDate) : undefined;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title,
+ link,
+ description,
+ pubDate,
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ };
+ });
+
+ return {
+ title: `${museumName} - 临时展览`,
+ link: apiUrl,
+ language: 'zh-CN',
+ item: list,
+ };
+ },
+};
From 534967c4ea475960ac342afdc9272ddea86358ae Mon Sep 17 00:00:00 2001
From: sirius60111
Date: Fri, 24 Jul 2026 05:22:35 +0800
Subject: [PATCH 403/670] fix(route/xueqiu): serialize show.json requests and
skip caching transient failures (#22708)
Co-authored-by: Claude Opus 4.8 (1M context)
---
lib/routes/xueqiu/user.ts | 70 ++++++++++++++++++++++-----------------
1 file changed, 40 insertions(+), 30 deletions(-)
diff --git a/lib/routes/xueqiu/user.ts b/lib/routes/xueqiu/user.ts
index 97b0bd24469f..e3056c1e27dd 100644
--- a/lib/routes/xueqiu/user.ts
+++ b/lib/routes/xueqiu/user.ts
@@ -1,4 +1,5 @@
import sanitizeHtml from 'sanitize-html';
+import pMap from 'p-map';
import { parseToken } from '@/routes/xueqiu/cookies';
import type { Route } from '@/types';
@@ -115,36 +116,45 @@ async function handler(ctx) {
const data = response.statuses.filter((s) => s.mark !== 1); // 去除置顶动态
- const items = await Promise.all(
- data.map((item) =>
- cache.tryGet(item.target, async () => {
- // legal_user_visible 为 true 时列表已含完整内容,无需再请求详情
- if (item.legal_user_visible) {
- return buildListItem(item);
- }
-
- try {
- const detail = await ofetch(`${apiUrl}/statuses/show.json`, {
- query: {
- id: item.id,
- },
- headers: {
- Cookie: cookie,
- Referer: link,
- },
- });
-
- return {
- title: buildTitle(item, detail),
- description: buildDescription(detail),
- pubDate: parseDate(item.created_at),
- link: rootUrl + item.target,
- };
- } catch {
- return buildListItem(item);
- }
- })
- )
+ // Use p-map to limit concurrency and avoid triggering Xueqiu show.json rate limiting.
+ const items = await pMap(
+ data,
+ async (item) => {
+ try {
+ return await cache.tryGet(item.target, async () => {
+ // legal_user_visible 为 true 时列表已含完整内容,无需再请求详情
+ if (item.legal_user_visible) {
+ return buildListItem(item);
+ }
+
+ try {
+ const detail = await ofetch(`${apiUrl}/statuses/show.json`, {
+ query: { id: item.id },
+ headers: { Cookie: cookie, Referer: link },
+ });
+
+ return {
+ title: buildTitle(item, detail),
+ description: buildDescription(detail),
+ pubDate: parseDate(item.created_at),
+ link: rootUrl + item.target,
+ };
+ } catch (error: any) {
+ // Permanent failures (post deleted / not found): cache the fallback.
+ const data = error.response?._data || error.data;
+ if (data && typeof data === 'object' && data.error_code) {
+ return buildListItem(item);
+ }
+ // Transient failures (rate limit / WAF): throw to skip caching, retry next request.
+ throw error;
+ }
+ });
+ } catch {
+ // Transient failure: provide a fallback item without caching, retry next request.
+ return buildListItem(item);
+ }
+ },
+ { concurrency: 3 },
);
const user = data[0]?.user;
From e6812648b3ee1fa2a94f6ac146bdbf454a8b69bd Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 23 Jul 2026 21:24:02 +0000
Subject: [PATCH 404/670] style: auto format
---
lib/routes/xueqiu/user.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/routes/xueqiu/user.ts b/lib/routes/xueqiu/user.ts
index e3056c1e27dd..2b97265a5679 100644
--- a/lib/routes/xueqiu/user.ts
+++ b/lib/routes/xueqiu/user.ts
@@ -1,5 +1,5 @@
-import sanitizeHtml from 'sanitize-html';
import pMap from 'p-map';
+import sanitizeHtml from 'sanitize-html';
import { parseToken } from '@/routes/xueqiu/cookies';
import type { Route } from '@/types';
@@ -154,7 +154,7 @@ async function handler(ctx) {
return buildListItem(item);
}
},
- { concurrency: 3 },
+ { concurrency: 3 }
);
const user = data[0]?.user;
From 38a66faa2a14f38be79e5610f906182da0fc3629 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 08:14:56 +0000
Subject: [PATCH 405/670] chore(deps-dev): bump tsdown from 0.22.13 to 0.22.14
(#22814)
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.13 to 0.22.14.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](https://github.com/rolldown/tsdown/compare/v0.22.13...v0.22.14)
---
updated-dependencies:
- dependency-name: tsdown
dependency-version: 0.22.14
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 248 ++++++++++++++++++++++++-------------------------
2 files changed, 125 insertions(+), 125 deletions(-)
diff --git a/package.json b/package.json
index 90e9baf09bd9..493f199ce558 100644
--- a/package.json
+++ b/package.json
@@ -200,7 +200,7 @@
"remark-gfm": "4.0.1",
"remark-pangu": "2.2.0",
"remark-parse": "11.0.0",
- "tsdown": "0.22.13",
+ "tsdown": "0.22.14",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"unified": "11.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 28c4742b1090..17bfc3345c02 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -450,8 +450,8 @@ importers:
specifier: 11.0.0
version: 11.0.0
tsdown:
- specifier: 0.22.13
- version: 0.22.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
+ specifier: 0.22.14
+ version: 0.22.14(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1)
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -3034,130 +3034,130 @@ packages:
'@vitest/utils@4.1.10':
resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==}
- '@yuku-codegen/binding-darwin-arm64@0.7.3':
- resolution: {integrity: sha512-hbssEr7iLNCWWdUbEt8cuOjUQ9loI+U/BVmdhNQ4CV1wAFGvWDO3niK9JD2WwTC9iib7E498qgZ3L/xJnoSb3A==}
+ '@yuku-codegen/binding-darwin-arm64@0.7.4':
+ resolution: {integrity: sha512-fjkATm+fg4r6Ss8o82u3j33PfIqhSs4A0WEEw9kOwhMx/ui/RQ0ZAsCtF6e7UG2CWGOGXAJspLlfk2tr3rjjKQ==}
cpu: [arm64]
os: [darwin]
- '@yuku-codegen/binding-darwin-x64@0.7.3':
- resolution: {integrity: sha512-WqwST3vVcNBTd1zaT1vP6pU8NkjJlLWN37Kqomc2c6TG9eky6sbAfHIhZEjSSyqFrMqsAt3mIu0jQZAODi401g==}
+ '@yuku-codegen/binding-darwin-x64@0.7.4':
+ resolution: {integrity: sha512-Hj0KvHpS1RJY/bgM3BADzmXXkKO3+bq3M8bMq4b0j0LsVi1SeWYpD/hJLJFwHeNMS+jO4vlZ343yjb4DEb9XXQ==}
cpu: [x64]
os: [darwin]
- '@yuku-codegen/binding-freebsd-x64@0.7.3':
- resolution: {integrity: sha512-mCci4UPkZXYflXuHnPGl5sDsotBPLaBryFylDwZcqposktmumoOBIKp2gpzEmxQL/XlGdVWksmpYw9IRY43FNQ==}
+ '@yuku-codegen/binding-freebsd-x64@0.7.4':
+ resolution: {integrity: sha512-GLKBZvqVFvC1bvNPoPZRj0UxUaAZZKCzb8IPNyvRhXesOk+Af9UbhbVPwx9Do4o2AVf6R5FPzyRWWIihQdCp+A==}
cpu: [x64]
os: [freebsd]
- '@yuku-codegen/binding-linux-arm-gnu@0.7.3':
- resolution: {integrity: sha512-F1QIaRH5SeahrYjZVrVvIb5nHCZQMF7+YWAy6yTJh0Y2r2wLgqOQuhbOWcoKk+AyBiTOO2nAsFHNpVqRq2GjGw==}
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.4':
+ resolution: {integrity: sha512-CAjbJexBJUqHgIPgOCJO7EYRnFluNLt5VD3jNS40wmsNZqa04HbewVVcgfmzfzuBhjX6ookntLDG3lWieyTAVw==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm-musl@0.7.3':
- resolution: {integrity: sha512-JvkWNmN8MFbboX/5grRsAldGaB8ArRFgAaUYfQoohsqcuJZee8SLtc6itvwuntPbN9MGStn4GzdWk2lmSURqbA==}
+ '@yuku-codegen/binding-linux-arm-musl@0.7.4':
+ resolution: {integrity: sha512-HQMuKBltnKFUqhUh8wNiivd76coRwDngdCxbcAULlatAlc2OXo8L6jLTkVnNeUuOw9JYzSq9LY2/7zvrg63Ddg==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-arm64-gnu@0.7.3':
- resolution: {integrity: sha512-DUnMTE/HCA7j1BAipWclGZCYfLZ/4SV5lldmV2kDmVMIywcw4PhtQ4Rfd/tO1K82JkjhQ+4a8XApcOIksOacnQ==}
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.4':
+ resolution: {integrity: sha512-cnU7ZVxK/Oq/TIS2iq56rouy1dqnLYgWR2puWcrxGCtmbdxiMISANYhI5t2tMLzTGZMyhawM2zYlyI+gnpBupQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-arm64-musl@0.7.3':
- resolution: {integrity: sha512-pNnXMnm9dlqd3V8C7nHaXgZnMLwP/CyM8B4mSAnkqVlhj2t3b8CMjesEV85SCbFlagzJk8FapfSghfxcXKuBow==}
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.4':
+ resolution: {integrity: sha512-NyuabTumcxPtZv/Q+pMVvrcKxLn1SPcpdBGtekVJz7JwI36SuExTq4IG4EZsk7YDmFKP8wDEvmKYOpV/a8Lwhw==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-linux-x64-gnu@0.7.3':
- resolution: {integrity: sha512-o5GRppYvYvPl4UJbgRSZpXXDh6rOWQzX0yLB+tDzv31T7mOuLitU6zgQZxzw5rwhPJDffCt/AVKMbtizEo+UtA==}
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.4':
+ resolution: {integrity: sha512-w3EnCLPD2vpJw0F+0qVV/1KSOAw4SgzjbGUbbwXUh9w5Kxo1Hdc3mN+/Nvk50oA6cCbSOCEaILnPHXPCauArvg==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-codegen/binding-linux-x64-musl@0.7.3':
- resolution: {integrity: sha512-GdiyLD1bM3lhTUeGkA9ZZLjqU+xt5uVihgPm0e6TdBjCi6DMZORWe02oDlRbn9OZaV7AZosngXAq2jLk3TrBEw==}
+ '@yuku-codegen/binding-linux-x64-musl@0.7.4':
+ resolution: {integrity: sha512-FXKQlFjDM8FxqJ/TncAni7e7JyaXIB3Hv6boApxSs5ZUlvqP4TbrjYVk3mYDQt6xQAE/kEHplxM6m5SKx5sfRg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-codegen/binding-win32-arm64@0.7.3':
- resolution: {integrity: sha512-uQrxQDBQFIAUgHJIxcB/FAAUk0Wkyj3xGpHrp/C258nXnCTAH0KDaqyK5RN/TCkVYrpH+uCl+rGnwDLSGnPBkQ==}
+ '@yuku-codegen/binding-win32-arm64@0.7.4':
+ resolution: {integrity: sha512-rWr899KEvZIWMx9yUXQl4i90OGIs4gaw4X1UsS2rxsI3qnp8acLIVKI3N5WDqaertkW10crDRZvIxxyw7kTMTQ==}
cpu: [arm64]
os: [win32]
- '@yuku-codegen/binding-win32-x64@0.7.3':
- resolution: {integrity: sha512-UoF7tqMnVMUmIXPgDjFLhRezea6HaypwLDWNenCFxfJCzQNEa41lcHpxq1AN2Xl6GLzIDfAb+lQDi/O+zPCfyg==}
+ '@yuku-codegen/binding-win32-x64@0.7.4':
+ resolution: {integrity: sha512-3Olgmkd5rDrIN9g7wJFMRRC9jub5zAwiQOtwOVhvNe/nZE/rSufFRa7vrFupqSCQml+Zxbcy9npzo3Qne3rA2A==}
cpu: [x64]
os: [win32]
- '@yuku-parser/binding-darwin-arm64@0.7.3':
- resolution: {integrity: sha512-JcFQSNEnjtyHQRjXO0G5rQt5xHq5MR+9nHqh+wt5MP30XIiccUYlcMIa3s7CBmj8E8WPGZC08k7LNGrA1OISTA==}
+ '@yuku-parser/binding-darwin-arm64@0.7.4':
+ resolution: {integrity: sha512-rUetRGukIlPOkDCy+Fo0YTee66n9A04XRQMONptbemWSU27CCV6RDj56+4ne4eSE4gJ0139RWUfbqMtt744pWQ==}
cpu: [arm64]
os: [darwin]
- '@yuku-parser/binding-darwin-x64@0.7.3':
- resolution: {integrity: sha512-U0kNeI3VygP/+8sTOLTeLTjUyTYZfl9Wuq6xVKWPXHb2K7oI0sm8JXJ5xlhAbkUDQRi0N6yK5TKxS0sQT5M6UQ==}
+ '@yuku-parser/binding-darwin-x64@0.7.4':
+ resolution: {integrity: sha512-9bHrGQUot2vWTg0YTdyIBHGd38fy2BSQH1WaqUDVuNqSn7HffrTUzWOgbaWRNd5GTOvDdrt9SDZIG7nfqzeBtg==}
cpu: [x64]
os: [darwin]
- '@yuku-parser/binding-freebsd-x64@0.7.3':
- resolution: {integrity: sha512-Xc08FQTvxovy6pX+Co9fgv3N1H0OpLpph/ClbwnJkcdphY3kzN2GgIfir35kpPp8mOzlQgtAVQdeDyAYyjwx4w==}
+ '@yuku-parser/binding-freebsd-x64@0.7.4':
+ resolution: {integrity: sha512-159565OJ/LR6cCP781nH8DxB5GqlqqWk3uyOLZIznQhsj9zeht4X7+jz9IQH1l/TUio+ojEXf8yt2+DJrN+QVw==}
cpu: [x64]
os: [freebsd]
- '@yuku-parser/binding-linux-arm-gnu@0.7.3':
- resolution: {integrity: sha512-6bHeDiUd+0bmoJJ5wZVG+PcJkXQUdjy/AzHsOVcOSUtHtRTX2H3Z5RIHyPAh5OveLtT4RHyqaO3fEQGnHGX5/Q==}
+ '@yuku-parser/binding-linux-arm-gnu@0.7.4':
+ resolution: {integrity: sha512-j3s3LJxEbOyP58hmzuXpJlKzgxaswuOTu8nAbDpE119b5W3gP1SW+HndLscGUOACpyMdH5WJ6gBHRxq0HCRVBw==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm-musl@0.7.3':
- resolution: {integrity: sha512-trGERNLJGvXkkyvdWBKspTOBATd4lcmpPFPcy5HI5kC3rC3ZMHQDJ356OMSVUsR2NQnl++F0ZTZQucao9hrbeQ==}
+ '@yuku-parser/binding-linux-arm-musl@0.7.4':
+ resolution: {integrity: sha512-PUpHPmvWIDxhYTS5oah08RQ28t6dlFBxRPJcftS6HgquiPsm/e0gL5vKwPJpyjaPBHzRH61IAUDDfrRe8iFs8g==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-arm64-gnu@0.7.3':
- resolution: {integrity: sha512-p1ELmzhqAX7SFUvH/tR5zSb8NsWZQ8ulw7PqatfXNmJMy34bkivtL0z2jPpVoMJXf5o2+TwBN29Z31CLL0wvkA==}
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.4':
+ resolution: {integrity: sha512-Hi3w0et5mu3i7S+qE0UgOev4RqJ/U9DW8xn79t4nttiICYCx3NveC0Goo78uqzxttsDI3hfRY43lrrF26svqcw==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-arm64-musl@0.7.3':
- resolution: {integrity: sha512-dZ79SrJ002ZXfBDmpQ47SF+06Q5bGOjFeoSK8xO97ter/bjLBgxSO4d7i9hhf+uj4xkrTPc/OFNVaeBAF3L4dA==}
+ '@yuku-parser/binding-linux-arm64-musl@0.7.4':
+ resolution: {integrity: sha512-i073u4ENL9DJeWBRKioRCz8i5hg6EmUcH89eH1lts9f9AFPA1GphODwK6OXOXUbpi2AwZ1deFIUWgLGP2mdmmA==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-linux-x64-gnu@0.7.3':
- resolution: {integrity: sha512-LjT64hVGWWbOmOYS+Fd8qScgyRxgUbudhFJbw8aeUVnhiNR1np36KnE0VFWrJeu7rTdNxuzVyV5o9JLqhBDTVQ==}
+ '@yuku-parser/binding-linux-x64-gnu@0.7.4':
+ resolution: {integrity: sha512-j5pt0LyDGxCzfoqRTR3cmMG21+bgSxIufAzJXFOWXkbg/22Ih51eGEsbInnSD5Q9FvJ3ooIn/jfok0dBdhudnA==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@yuku-parser/binding-linux-x64-musl@0.7.3':
- resolution: {integrity: sha512-5Nw3v5BqYbOi0ZdV+SImgVYa0KDBVAY/ZNPilTsJJU4phqa2cqEW4+aMgyieE/4bqpojt/B931kM+7pipazP9g==}
+ '@yuku-parser/binding-linux-x64-musl@0.7.4':
+ resolution: {integrity: sha512-RR1hNhrSpv3FanLM6u5uD+9CYA9IM8U3uGscgvKKV77gtj7ttO4UubpwN7vcx1KknoEIQHKJFPVKoeVy+avf6w==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@yuku-parser/binding-win32-arm64@0.7.3':
- resolution: {integrity: sha512-lFYXgHiq8tJKa6/e1/q8Su+IJVV4/CjoXbIJ7/GdPXPp9Hx0gh/8HqmGSsrwlY2w8/ohBcar9wxjm1rQ8D16bg==}
+ '@yuku-parser/binding-win32-arm64@0.7.4':
+ resolution: {integrity: sha512-1xhYwOLo9TjppHHwNYi3X/dGgOvnj9xh62jpgP4U8nEtTGA70NtJDCkN45pRQdU3B6/U7oQj1T4esP3aFJg6BA==}
cpu: [arm64]
os: [win32]
- '@yuku-parser/binding-win32-x64@0.7.3':
- resolution: {integrity: sha512-wy/fs4OrHBhKW8LDyZJRMyMQ3QOfbSQDp0WtMbtzWCVui/vTQEUJMGnwvRCppjchS/qIQfbWzIw/HSjogJqZFA==}
+ '@yuku-parser/binding-win32-x64@0.7.4':
+ resolution: {integrity: sha512-HonZAapmSKusxLZPnU9WrMzAUdPSBJliGw3CSkA9Er/aq15STEOEy9SOsVGvj4maBv95EmWxt2LThHXnFnGfNg==}
cpu: [x64]
os: [win32]
- '@yuku-toolchain/types@0.7.3':
- resolution: {integrity: sha512-ezarjq3dcl8Nx3iJ9VeAc7vhzvHyRoSvr7bLX76T+ljRq73IbZ11X2RFCblfK6YxW2DsjkzU6MPnr3JWDYqYYQ==}
+ '@yuku-toolchain/types@0.7.4':
+ resolution: {integrity: sha512-iUFXr+UnUJjzVLNI6GIv07poi9NwcG5hTBJSheJh3SdpkYpIjCl9kAGe7dbJMHn5sXeceCL4H12pKa0b6pkouQ==}
'@zone-eu/mailsplit@5.4.14':
resolution: {integrity: sha512-rz0FQOhN3Vq1XrSeSSa9+dPcaFbBxmQPjiZm6zS9oxdVHV7rOWIAYX3yP2YAUf0qBncY8CI+NogzPCmMVrMXcw==}
@@ -5548,8 +5548,8 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown-plugin-dts@0.27.12:
- resolution: {integrity: sha512-DJg5ELVEdLAVhirvtak7GS4nbNvBzLNAtYL1M8hLghDURBFKU2MwEH6ncHibYs6khq1NaRQ97iFMiHvzw+WoSw==}
+ rolldown-plugin-dts@0.27.13:
+ resolution: {integrity: sha512-DeVZJbbB0ajp5q6vABqC8ZCJzxftlxbiV60Bk96GFdQaysGVpgTTVjQu0lUt4Lb+aRCtejfOixtQKDRol7IuVQ==}
engines: {node: ^22.18.0 || >=24.11.0}
peerDependencies:
'@typescript/native-preview': '*'
@@ -5928,14 +5928,14 @@ packages:
typescript:
optional: true
- tsdown@0.22.13:
- resolution: {integrity: sha512-XaYFhtiKRUvTpXv/YAehsHdbEb3LN/iMlzjSINbjlaATtXN2zVPKox2STKhcyFPlh++8Zg7suNN27E679IfAUA==}
+ tsdown@0.22.14:
+ resolution: {integrity: sha512-ule7Y+fsAN2iZbLDoo7C4KYljFJNJJ+fLshyn+9gozeTspVersWHxwdGB+Dm2hzA38s6muFnUTl0jK3vJm9ifQ==}
engines: {node: ^22.18.0 || >=24.11.0}
hasBin: true
peerDependencies:
'@arethetypeswrong/core': ^0.18.1
- '@tsdown/css': 0.22.13
- '@tsdown/exe': 0.22.13
+ '@tsdown/css': 0.22.14
+ '@tsdown/exe': 0.22.14
'@vitejs/devtools': '*'
publint: ^0.3.8
tsx: '*'
@@ -6163,8 +6163,8 @@ packages:
resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==}
engines: {node: '>=0.10.0'}
- verkit@0.1.2:
- resolution: {integrity: sha512-WqkT8n3hqizuCu71W3bUzf5fjBmkbXcudsehe/NbxA8PgqoKnSOY5K0Ba2ckg1qaRaSpSz7as/n9K1R9JXjQKg==}
+ verkit@0.3.0:
+ resolution: {integrity: sha512-Njrh4U8UODGajoZ44QS2C/BsoEM9DTI/aCqY5swsizb+/ap0FamvnCMcZAxrR5+aoC0ZqkawEfpC/N2SBc+xeA==}
engines: {node: '>=18.12.0'}
verror@1.10.0:
@@ -6453,14 +6453,14 @@ packages:
youtubei.js@17.2.0:
resolution: {integrity: sha512-XLNsgRKO1h7t4i9tIMWSQSeWdD7Ujkk5v1m5YCaumaHMhu/xuLqtO3M0Hq7CXNup9HlJ1NGrT1Y+HLIHnL6Ujg==}
- yuku-ast@0.7.3:
- resolution: {integrity: sha512-occyAXtcU4hcl5UPEclWwLqz4J1ZAV8Us4LllmTqAe1YjL5aMbh3GCpzHt6O0sOF+dwBI3BZAcFQqbyX1RiaWg==}
+ yuku-ast@0.7.4:
+ resolution: {integrity: sha512-Pn6e7uZOBczeJ+JIiPGtD4aw6eRflzKrZJmAdeg092RxM9tQtvAkZAbEoknNgYmsB6dGYESvXPQcUE7Nu8ai7Q==}
- yuku-codegen@0.7.3:
- resolution: {integrity: sha512-hhyJW0TIEwm4kex8XVCS4CZIXHS/3TWWNUum+95Ji5/4W+iaLfUnvwSxJwyNfTzS8cxmd1np+EZ4b8ObLguKEA==}
+ yuku-codegen@0.7.4:
+ resolution: {integrity: sha512-bLdC5yzvn507PtU7+kB4CMBLfnvKW1N2m26Vpl1q4Os+FLROnkKTThM7g+clVb+9tHaOlcc6gqQ+rNBY8L/Dxw==}
- yuku-parser@0.7.3:
- resolution: {integrity: sha512-5kZ7HR+W+OsNpVtZ9LHruQsgmcoJl4TETrffPq2GbliThsFiy+zHzbMLmSxQJrokzyJqfJ/TPfFkdUDOodJCgA==}
+ yuku-parser@0.7.4:
+ resolution: {integrity: sha512-HveMyhZPQQfR4z3xskXv5hHJW9g0KIESZW6JvUZv7Jn52FfMFUhCYL77KHBtnWGFti0KrKeTHMZVTY5AUVgFAA==}
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -8484,73 +8484,73 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@yuku-codegen/binding-darwin-arm64@0.7.3':
+ '@yuku-codegen/binding-darwin-arm64@0.7.4':
optional: true
- '@yuku-codegen/binding-darwin-x64@0.7.3':
+ '@yuku-codegen/binding-darwin-x64@0.7.4':
optional: true
- '@yuku-codegen/binding-freebsd-x64@0.7.3':
+ '@yuku-codegen/binding-freebsd-x64@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-arm-gnu@0.7.3':
+ '@yuku-codegen/binding-linux-arm-gnu@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-arm-musl@0.7.3':
+ '@yuku-codegen/binding-linux-arm-musl@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-arm64-gnu@0.7.3':
+ '@yuku-codegen/binding-linux-arm64-gnu@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-arm64-musl@0.7.3':
+ '@yuku-codegen/binding-linux-arm64-musl@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-x64-gnu@0.7.3':
+ '@yuku-codegen/binding-linux-x64-gnu@0.7.4':
optional: true
- '@yuku-codegen/binding-linux-x64-musl@0.7.3':
+ '@yuku-codegen/binding-linux-x64-musl@0.7.4':
optional: true
- '@yuku-codegen/binding-win32-arm64@0.7.3':
+ '@yuku-codegen/binding-win32-arm64@0.7.4':
optional: true
- '@yuku-codegen/binding-win32-x64@0.7.3':
+ '@yuku-codegen/binding-win32-x64@0.7.4':
optional: true
- '@yuku-parser/binding-darwin-arm64@0.7.3':
+ '@yuku-parser/binding-darwin-arm64@0.7.4':
optional: true
- '@yuku-parser/binding-darwin-x64@0.7.3':
+ '@yuku-parser/binding-darwin-x64@0.7.4':
optional: true
- '@yuku-parser/binding-freebsd-x64@0.7.3':
+ '@yuku-parser/binding-freebsd-x64@0.7.4':
optional: true
- '@yuku-parser/binding-linux-arm-gnu@0.7.3':
+ '@yuku-parser/binding-linux-arm-gnu@0.7.4':
optional: true
- '@yuku-parser/binding-linux-arm-musl@0.7.3':
+ '@yuku-parser/binding-linux-arm-musl@0.7.4':
optional: true
- '@yuku-parser/binding-linux-arm64-gnu@0.7.3':
+ '@yuku-parser/binding-linux-arm64-gnu@0.7.4':
optional: true
- '@yuku-parser/binding-linux-arm64-musl@0.7.3':
+ '@yuku-parser/binding-linux-arm64-musl@0.7.4':
optional: true
- '@yuku-parser/binding-linux-x64-gnu@0.7.3':
+ '@yuku-parser/binding-linux-x64-gnu@0.7.4':
optional: true
- '@yuku-parser/binding-linux-x64-musl@0.7.3':
+ '@yuku-parser/binding-linux-x64-musl@0.7.4':
optional: true
- '@yuku-parser/binding-win32-arm64@0.7.3':
+ '@yuku-parser/binding-win32-arm64@0.7.4':
optional: true
- '@yuku-parser/binding-win32-x64@0.7.3':
+ '@yuku-parser/binding-win32-x64@0.7.4':
optional: true
- '@yuku-toolchain/types@0.7.3': {}
+ '@yuku-toolchain/types@0.7.4': {}
'@zone-eu/mailsplit@5.4.14':
dependencies:
@@ -11301,15 +11301,15 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.27.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0):
+ rolldown-plugin-dts@0.27.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0):
dependencies:
dts-resolver: 3.0.0(oxc-resolver@11.24.2)
get-tsconfig: 5.0.0-beta.5
obug: 2.1.4
rolldown: 1.2.0
- yuku-ast: 0.7.3
- yuku-codegen: 0.7.3
- yuku-parser: 0.7.3
+ yuku-ast: 0.7.4
+ yuku-codegen: 0.7.4
+ yuku-parser: 0.7.4
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -11733,7 +11733,7 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- tsdown@0.22.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
+ tsdown@0.22.14(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(tsx@4.23.1)(unrun@0.3.1):
dependencies:
ansis: 4.3.1
cac: 7.0.0
@@ -11744,12 +11744,12 @@ snapshots:
obug: 2.1.4
picomatch: 4.0.5
rolldown: 1.2.0
- rolldown-plugin-dts: 0.27.12(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0)
+ rolldown-plugin-dts: 0.27.13(@typescript/typescript6@6.0.2)(oxc-resolver@11.24.2)(rolldown@1.2.0)
tinyexec: 1.2.4
tinyglobby: 0.2.17
tree-kill: 1.2.2
unconfig-core: 7.5.0
- verkit: 0.1.2
+ verkit: 0.3.0
optionalDependencies:
tsx: 4.23.1
typescript: '@typescript/typescript6@6.0.2'
@@ -11952,7 +11952,7 @@ snapshots:
vali-date@1.0.0: {}
- verkit@0.1.2: {}
+ verkit@0.3.0: {}
verror@1.10.0:
dependencies:
@@ -12236,42 +12236,42 @@ snapshots:
fflate: 0.8.3
meriyah: 6.1.4
- yuku-ast@0.7.3:
+ yuku-ast@0.7.4:
dependencies:
- '@yuku-toolchain/types': 0.7.3
+ '@yuku-toolchain/types': 0.7.4
- yuku-codegen@0.7.3:
+ yuku-codegen@0.7.4:
dependencies:
- '@yuku-toolchain/types': 0.7.3
+ '@yuku-toolchain/types': 0.7.4
optionalDependencies:
- '@yuku-codegen/binding-darwin-arm64': 0.7.3
- '@yuku-codegen/binding-darwin-x64': 0.7.3
- '@yuku-codegen/binding-freebsd-x64': 0.7.3
- '@yuku-codegen/binding-linux-arm-gnu': 0.7.3
- '@yuku-codegen/binding-linux-arm-musl': 0.7.3
- '@yuku-codegen/binding-linux-arm64-gnu': 0.7.3
- '@yuku-codegen/binding-linux-arm64-musl': 0.7.3
- '@yuku-codegen/binding-linux-x64-gnu': 0.7.3
- '@yuku-codegen/binding-linux-x64-musl': 0.7.3
- '@yuku-codegen/binding-win32-arm64': 0.7.3
- '@yuku-codegen/binding-win32-x64': 0.7.3
-
- yuku-parser@0.7.3:
- dependencies:
- '@yuku-toolchain/types': 0.7.3
- yuku-ast: 0.7.3
+ '@yuku-codegen/binding-darwin-arm64': 0.7.4
+ '@yuku-codegen/binding-darwin-x64': 0.7.4
+ '@yuku-codegen/binding-freebsd-x64': 0.7.4
+ '@yuku-codegen/binding-linux-arm-gnu': 0.7.4
+ '@yuku-codegen/binding-linux-arm-musl': 0.7.4
+ '@yuku-codegen/binding-linux-arm64-gnu': 0.7.4
+ '@yuku-codegen/binding-linux-arm64-musl': 0.7.4
+ '@yuku-codegen/binding-linux-x64-gnu': 0.7.4
+ '@yuku-codegen/binding-linux-x64-musl': 0.7.4
+ '@yuku-codegen/binding-win32-arm64': 0.7.4
+ '@yuku-codegen/binding-win32-x64': 0.7.4
+
+ yuku-parser@0.7.4:
+ dependencies:
+ '@yuku-toolchain/types': 0.7.4
+ yuku-ast: 0.7.4
optionalDependencies:
- '@yuku-parser/binding-darwin-arm64': 0.7.3
- '@yuku-parser/binding-darwin-x64': 0.7.3
- '@yuku-parser/binding-freebsd-x64': 0.7.3
- '@yuku-parser/binding-linux-arm-gnu': 0.7.3
- '@yuku-parser/binding-linux-arm-musl': 0.7.3
- '@yuku-parser/binding-linux-arm64-gnu': 0.7.3
- '@yuku-parser/binding-linux-arm64-musl': 0.7.3
- '@yuku-parser/binding-linux-x64-gnu': 0.7.3
- '@yuku-parser/binding-linux-x64-musl': 0.7.3
- '@yuku-parser/binding-win32-arm64': 0.7.3
- '@yuku-parser/binding-win32-x64': 0.7.3
+ '@yuku-parser/binding-darwin-arm64': 0.7.4
+ '@yuku-parser/binding-darwin-x64': 0.7.4
+ '@yuku-parser/binding-freebsd-x64': 0.7.4
+ '@yuku-parser/binding-linux-arm-gnu': 0.7.4
+ '@yuku-parser/binding-linux-arm-musl': 0.7.4
+ '@yuku-parser/binding-linux-arm64-gnu': 0.7.4
+ '@yuku-parser/binding-linux-arm64-musl': 0.7.4
+ '@yuku-parser/binding-linux-x64-gnu': 0.7.4
+ '@yuku-parser/binding-linux-x64-musl': 0.7.4
+ '@yuku-parser/binding-win32-arm64': 0.7.4
+ '@yuku-parser/binding-win32-x64': 0.7.4
zod@3.25.76: {}
From 767968d1b5329d4d090c0b01576aac294eb02843 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 20:16:01 +0800
Subject: [PATCH 406/670] chore(deps): bump docker/login-action from 4.4.0 to
4.5.0 (#22810)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...06fb636fac595d6fb4b28a5dfcb21a6f5091859c)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: 4.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/docker-release.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index f6c774e17585..aaf87ab448d5 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -74,13 +74,13 @@ jobs:
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Log in to Docker Hub
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
+ uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
+ uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -207,13 +207,13 @@ jobs:
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Log in to Docker Hub
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
+ uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
- uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0
+ uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
From 5f9a9ecb1945ae0c40a3e7477fe7e9d7a04681ce Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 20:21:04 +0800
Subject: [PATCH 407/670] chore(deps-dev): bump lint-staged from 17.1.1 to
17.2.0 (#22813)
Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 17.1.1 to 17.2.0.
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v17.1.1...v17.2.0)
---
updated-dependencies:
- dependency-name: lint-staged
dependency-version: 17.2.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index 493f199ce558..e3ee8474f126 100644
--- a/package.json
+++ b/package.json
@@ -187,7 +187,7 @@
"globals": "17.7.0",
"husky": "9.1.7",
"js-beautify": "2.0.3",
- "lint-staged": "17.1.1",
+ "lint-staged": "17.2.0",
"mockdate": "3.0.5",
"msw": "2.15.0",
"node-network-devtools": "1.0.30",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 17bfc3345c02..d888c5ea6d34 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -411,8 +411,8 @@ importers:
specifier: 2.0.3
version: 2.0.3
lint-staged:
- specifier: 17.1.1
- version: 17.1.1
+ specifier: 17.2.0
+ version: 17.2.0
mockdate:
specifier: 3.0.5
version: 3.0.5
@@ -4707,8 +4707,8 @@ packages:
linkify-it@5.0.2:
resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==}
- lint-staged@17.1.1:
- resolution: {integrity: sha512-FnHWpSe5cPRtrDG+soOuNdBxb4XQb2gN5EqpEWKdweyqyOfpl4QSjbrz3ilcIf0WXmkiNQGZZRQ23R5YtB3TEw==}
+ lint-staged@17.2.0:
+ resolution: {integrity: sha512-FchGnFe4i4B1C/a35SPU9bNGPEHSC1+1iV0plLjzBmKVe9klZrlRfSgK6Cw4VeHyqOXbJUXP0vON61uRftNQ0A==}
engines: {node: '>=22.22.1'}
hasBin: true
@@ -10176,7 +10176,7 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- lint-staged@17.1.1:
+ lint-staged@17.2.0:
dependencies:
picomatch: 4.0.5
string-argv: 0.3.2
From 9e6e574537d097ec6a444247f9a17119dd44ca57 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 20:27:05 +0800
Subject: [PATCH 408/670] chore(deps-dev): bump fs-extra from 11.3.6 to 11.4.0
(#22812)
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 11.3.6 to 11.4.0.
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/11.3.6...11.4.0)
---
updated-dependencies:
- dependency-name: fs-extra
dependency-version: 11.4.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index e3ee8474f126..393a675fdc04 100644
--- a/package.json
+++ b/package.json
@@ -183,7 +183,7 @@
"eslint-plugin-unicorn": "72.0.0",
"eslint-plugin-yml": "3.6.0",
"fast-string-width": "3.0.2",
- "fs-extra": "11.3.6",
+ "fs-extra": "11.4.0",
"globals": "17.7.0",
"husky": "9.1.7",
"js-beautify": "2.0.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d888c5ea6d34..f9e86c6b3e13 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -399,8 +399,8 @@ importers:
specifier: 3.0.2
version: 3.0.2
fs-extra:
- specifier: 11.3.6
- version: 11.3.6
+ specifier: 11.4.0
+ version: 11.4.0
globals:
specifier: 17.7.0
version: 17.7.0
@@ -4096,8 +4096,8 @@ packages:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
- fs-extra@11.3.6:
- resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==}
+ fs-extra@11.4.0:
+ resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==}
engines: {node: '>=14.14'}
fsevents@2.3.2:
@@ -9516,7 +9516,7 @@ snapshots:
dependencies:
fetch-blob: 3.2.0
- fs-extra@11.3.6:
+ fs-extra@11.4.0:
dependencies:
graceful-fs: 4.2.11
jsonfile: 6.2.1
From edb2987d51157758829f72d2e2b57874bd9af8bc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 20:39:08 +0800
Subject: [PATCH 409/670] chore(deps): bump nixpkgs from `241313f` to `e2587ca`
(#22816)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `241313f` to `e2587ca`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/241313f4e8e508cb9b13278c2b0fa25b9ca27163...e2587caef70cea85dd97d7daab492899902dbf5d)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: e2587caef70cea85dd97d7daab492899902dbf5d
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index c71b955dca92..9458658bdbb1 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1784497964,
- "narHash": "sha256-vlHUuqAcbcH2RKmHbPiuQzbv1pnzzavXnI62RD0bqCU=",
+ "lastModified": 1784796856,
+ "narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163",
+ "rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
"type": "github"
},
"original": {
From 71f87aca39432981ed431746d9a56f74dde72bb1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 20:59:29 +0800
Subject: [PATCH 410/670] chore(deps-dev): bump the cloudflare group with 3
updates (#22811)
Bumps the cloudflare group with 3 updates: [@cloudflare/vitest-pool-workers](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/vitest-pool-workers), [@cloudflare/workers-types](https://github.com/cloudflare/workerd) and [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Updates `@cloudflare/vitest-pool-workers` from 0.18.7 to 0.18.8
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Changelog](https://github.com/cloudflare/workers-sdk/blob/main/packages/vitest-pool-workers/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/@cloudflare/vitest-pool-workers@0.18.8/packages/vitest-pool-workers)
Updates `@cloudflare/workers-types` from 5.20260723.1 to 5.20260724.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
Updates `wrangler` from 4.113.0 to 4.114.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.114.0/packages/wrangler)
---
updated-dependencies:
- dependency-name: "@cloudflare/vitest-pool-workers"
dependency-version: 0.18.8
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: cloudflare
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260724.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
- dependency-name: wrangler
dependency-version: 4.114.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 6 +-
pnpm-lock.yaml | 374 ++++++++++++++++++++++++++-----------------------
2 files changed, 200 insertions(+), 180 deletions(-)
diff --git a/package.json b/package.json
index 393a675fdc04..ae3e86db42da 100644
--- a/package.json
+++ b/package.json
@@ -148,8 +148,8 @@
"@bbob/types": "4.3.1",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
- "@cloudflare/vitest-pool-workers": "0.18.7",
- "@cloudflare/workers-types": "5.20260723.1",
+ "@cloudflare/vitest-pool-workers": "0.18.8",
+ "@cloudflare/workers-types": "5.20260724.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.75.0",
@@ -207,7 +207,7 @@
"unrun": "0.3.1",
"vite-tsconfig-paths": "7.0.0-alpha.1",
"vitest": "4.1.10",
- "wrangler": "4.113.0",
+ "wrangler": "4.114.0",
"yaml-eslint-parser": "2.1.0"
},
"lint-staged": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f9e86c6b3e13..70a52543ddff 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -294,11 +294,11 @@ importers:
specifier: 1.3.0
version: 1.3.0
'@cloudflare/vitest-pool-workers':
- specifier: 0.18.7
- version: 0.18.7(@cloudflare/workers-types@5.20260723.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ specifier: 0.18.8
+ version: 0.18.8(@cloudflare/workers-types@5.20260724.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260723.1
- version: 5.20260723.1
+ specifier: 5.20260724.1
+ version: 5.20260724.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -471,8 +471,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
- specifier: 4.113.0
- version: 4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ specifier: 4.114.0
+ version: 4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -604,45 +604,45 @@ packages:
workerd:
optional: true
- '@cloudflare/vitest-pool-workers@0.18.7':
- resolution: {integrity: sha512-PGYToiFoGpuRV2Uh33S4fI7JcmSkDxk6LQeneYtgfsITEkVi5iGxc3Vms6yW9Jr6uSzVK4Be9XZfdyZDr5GWYw==}
+ '@cloudflare/vitest-pool-workers@0.18.8':
+ resolution: {integrity: sha512-O1kOMZqapidlezNFiBZ7Lbd+8mMEpkGmWwPj+nPLvOngxSL11lmWq7xl7vxyjDxbeD/7l22KqgvRGM7XFaYd9w==}
peerDependencies:
'@vitest/runner': ^4.1.0
'@vitest/snapshot': ^4.1.0
vitest: ^4.1.0
- '@cloudflare/workerd-darwin-64@1.20260721.1':
- resolution: {integrity: sha512-VivNMhiEdZIB4JBWxf1RMJGROErv53qmQ+dvhjA1evrCouvqRYW718VqDideU3PSV7Ythl5Df48NqZYWoaEHpQ==}
+ '@cloudflare/workerd-darwin-64@1.20260722.1':
+ resolution: {integrity: sha512-vZOP8vIS3NwnuaO+gz0FZ7kIGeiO3bZmxV35Ph9zOXKSREhDFlH7wQ7mkCdhW3O4jnXsew+XT7b+DNEI2CcJGQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260721.1':
- resolution: {integrity: sha512-k7oye1ZiuwnnBBA2eTMduconr/ud5ZxFtRNTsYwMdmJeeeislw2+M72otrHxxvybCP7JWPPlJ38uhfajpcyhOA==}
+ '@cloudflare/workerd-darwin-arm64@1.20260722.1':
+ resolution: {integrity: sha512-EmIQymihDq6WNdER4+LF8Qn80yqayBUpJ+tkOO7wmY8pmgfyXjIUFNXotl21AHovTeu2seR7HdVUgeN/BilCWw==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260721.1':
- resolution: {integrity: sha512-hon0lW4ZQ4boAVgaw+0ZFTNS8v5MWPWvK0HZnt4tDpKYnDUviLZawtUW3KqvFmCQTipVHl1S34j3J8Eqb93hGQ==}
+ '@cloudflare/workerd-linux-64@1.20260722.1':
+ resolution: {integrity: sha512-jvZ3k9fxcnEn04s80CgIYxQfpOyAiz/8qC42DP8EBa9tR27qWyg9wmm31zIobVlrgBZn/+8NfdP73avRGcQOjQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260721.1':
- resolution: {integrity: sha512-nAl+HRQqpX5b7xVwWcvLPZmCk8NQ2yjI0yvJTWcHiRswbMEg1ZZckVmjJUAn0PHzZARbCSyIV7v3UjM+SPRmIQ==}
+ '@cloudflare/workerd-linux-arm64@1.20260722.1':
+ resolution: {integrity: sha512-BOSB55SMNdy+DA5uj2WirgiNanpHGis5PVvXH1wSfvjRKr4JGgWK+EZzxz0RFUo6QjjQQC/NimEzNZ7va7jmKg==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260721.1':
- resolution: {integrity: sha512-9paFG5cMTKz/CRixnEEnZbe5uvFPBFSDthxJHANfCWhUtBj49GSL1FPIokIg+Q+H8DGJEExU0lL92LtxD0lTxQ==}
+ '@cloudflare/workerd-windows-64@1.20260722.1':
+ resolution: {integrity: sha512-sYM8YgUpKnRz2xjvdJLX1Ojzoi4MlA4gk8WTTExhGydjYB2UTs5NIbv0ZmpKgMoK9io3ixgmiW56ZnTbcWOdiA==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260723.1':
- resolution: {integrity: sha512-+P5tDo+ZjW5nmWq/zagLVIyV8U/mSk7n8n0mLUHjn3pOdY7kdEDmURUxvhwwYqLJ/VPnyMJPAYtZjHbqAnIpDg==}
+ '@cloudflare/workers-types@5.20260724.1':
+ resolution: {integrity: sha512-gl0brZ60JhkZU3INgr1jsxaFEiWf3AB9RsCjLTMwT5RKspWRUpsFd0wxwbys7gb8Ywkfq9tORhw0y9G+7bDUYw==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -1136,152 +1136,161 @@ packages:
resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
engines: {node: '>=18'}
- '@img/sharp-darwin-arm64@0.34.5':
- resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-darwin-arm64@0.35.2':
+ resolution: {integrity: sha512-eEieHsMksAW4IiO5NzauESRl2D2qz3J/kwUxUrSfV06A93eEaRfMpHXyUb1mAqrR7i8U9A0GRqE9pjn6u1Jjpg==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.34.5':
- resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-darwin-x64@0.35.2':
+ resolution: {integrity: sha512-BaktuGPCeHJMARpodR8jK4uKiZrPAy9WrfQW0sdI37clracq8Bp01AYS3SZgi5FS/y5twa9t4+LIuuxQjqRrWw==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
+ '@img/sharp-freebsd-wasm32@0.35.2':
+ resolution: {integrity: sha512-YoAxdnd8hPUkvLHd3bWY+YA8nw3xM/RyRopYucNsWHVSan8NLVM3X2volsfoRDcXdUJPg6tXahSd7HXPK7lRnw==}
+ engines: {node: '>=20.9.0'}
+ os: [freebsd]
+
+ '@img/sharp-libvips-darwin-arm64@1.3.1':
+ resolution: {integrity: sha512-4V/M3roRMTYjiwZY9IOVQOE8OyeCxFAkYmyZDrZl51uOKjibm3oeEJ4WAmLxutAfzFbC9jqUiPs2gbnGflH+7g==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.2.4':
- resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
+ '@img/sharp-libvips-darwin-x64@1.3.1':
+ resolution: {integrity: sha512-c0/DxItpJv2+dGhgycJBBgotdqruGYDvA79drdh0MD1dFpy7JzJ/PlXwi1H4rFf0eTy8tgbI91aHDnZIceY3jQ==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.2.4':
- resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
+ '@img/sharp-libvips-linux-arm64@1.3.1':
+ resolution: {integrity: sha512-JznefmcK9j1JKPz8AkQDh89kjojubyfOasWBPKfzMIhPwsgDy9evpE/naJTXXXmghS1iFwR8u/kTwh/I2/+GCw==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linux-arm@1.2.4':
- resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
+ '@img/sharp-libvips-linux-arm@1.3.1':
+ resolution: {integrity: sha512-aGGy9aWzXgHBG7HNyQPWorZthlp7+x6fDRoPAQbGO3ThcttuTyKIx3NuSHb6zb4gBNq6/yNn9f1cy9nFKS/Vmg==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
+ '@img/sharp-libvips-linux-ppc64@1.3.1':
+ resolution: {integrity: sha512-1EkwGNCZk6iWNCMWqrvdJ+r1j0PT1zIz60CNPhYnJlK/zyeWqlsPZIe+ocBVqPF8k/Ssee/NCk+tE9Ryrko6ng==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+ '@img/sharp-libvips-linux-riscv64@1.3.1':
+ resolution: {integrity: sha512-Ilays+w2bXdnxzxtQdmXR62u8o8GYa3eL4+Gr+1KiE4xperMZUslRaVPJwwPkzlHEjGfXAfRVAa/7CYCtSqsBw==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linux-s390x@1.2.4':
- resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
+ '@img/sharp-libvips-linux-s390x@1.3.1':
+ resolution: {integrity: sha512-VfBwVHQTbRoj4XlpA/KLZ7ltgMpz+4WSejFzQ+GnoImjo1PtEJ59QB2qR1xQEeRPYIkNrPIm2L4cICMvz4C2ew==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linux-x64@1.2.4':
- resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
+ '@img/sharp-libvips-linux-x64@1.3.1':
+ resolution: {integrity: sha512-+c8ukgwU62DS54nCAjw7keOfHUkmr0B5QHEdcOqRnodF/MNXJbVI8Eopoj4B/0H8Asr65I+A4Amrn7a85/md6A==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.1':
+ resolution: {integrity: sha512-qlKb/pwbkAi1WMsJrYHk7CuDrd12s27U2QnRhFYUoJNrRCmkosMTttuRFat/DDB3IlDm5qE1TJgZ4JDnHX8Ldw==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
+ '@img/sharp-libvips-linuxmusl-x64@1.3.1':
+ resolution: {integrity: sha512-yO21HwoUVLN8Qa+/SBjQLMYwBWAVJjeGPNe+hc0OUeMeifEtJqu5a1c4HayE1nNpDih9y3/KkoltfkDodmKAlg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@img/sharp-linux-arm64@0.34.5':
- resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-arm64@0.35.2':
+ resolution: {integrity: sha512-af12Pnd0ZGu2HfP8NayB0kk6eC/lrfbQE6HlR4jD+34wdJ1Vw9TF6TMn6ZvffT+WgqVsl0hRbmNvz2u/23VmwA==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@img/sharp-linux-arm@0.34.5':
- resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-arm@0.35.2':
+ resolution: {integrity: sha512-SE4kzF2mepn6z+6E7L6lsV8FzuLL6IPQdyX8ZiwROAG/G8td+hP/m7FsFPwidtrF19gvajuC9l6TxAVcsA4S7A==}
+ engines: {node: '>=20.9.0'}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@img/sharp-linux-ppc64@0.34.5':
- resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-ppc64@0.35.2':
+ resolution: {integrity: sha512-hYSBm7zcNtDCozCxQHYZJiu63b/bXsgRZuOxCIBZsStMM9Vap47iFHdbX4kCvQsblPB/k+clhELpdQJHQLSHvg==}
+ engines: {node: '>=20.9.0'}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@img/sharp-linux-riscv64@0.34.5':
- resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-riscv64@0.35.2':
+ resolution: {integrity: sha512-qQt0Kc13+Hoan/Awq/qMSQw3L+RI1NCRPgD5cUJ/1WSSmIoysLOc72jlRM3E0OHN9Yr313jgeQ2T+zW+F03QFA==}
+ engines: {node: '>=20.9.0'}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@img/sharp-linux-s390x@0.34.5':
- resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-s390x@0.35.2':
+ resolution: {integrity: sha512-E4fLLfRPzDLlEeDaTzI98OFLcv++WL5ChLLMwPoVd0CIoZQqupBSNbOisPL5am9XsbQ9T84+iiMpUvbFtkunbA==}
+ engines: {node: '>=20.9.0'}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@img/sharp-linux-x64@0.34.5':
- resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linux-x64@0.35.2':
+ resolution: {integrity: sha512-gi0zFJJRLswfCZmHtJdikXPOc5u7qamSOS3NHedLqLd4W8Q0NqjdBr6TTRIgsfFjqfTsHFgdfvJ9LwqSgcHiAA==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@img/sharp-linuxmusl-arm64@0.34.5':
- resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linuxmusl-arm64@0.35.2':
+ resolution: {integrity: sha512-siWbOW1u6HFnFLrp0waKyW7VEf7jYvcDWdrXEFa8AkdAQgEvuu5Fz8/Y70w9EeqAdwDtfU012BhEHHaDqvQNzg==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@img/sharp-linuxmusl-x64@0.34.5':
- resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-linuxmusl-x64@0.35.2':
+ resolution: {integrity: sha512-YBqMMcjDi4QGYiSn4vNOYBhmlC4z5AXqkOUUqI2e0AFA4urNv4ESgOgwNl3K+4etQhha0twXlzeF20bbULm9Yg==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@img/sharp-wasm32@0.34.5':
- resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-wasm32@0.35.2':
+ resolution: {integrity: sha512-Mrv4JQNYVQ94xH+jzZ9r+gowleN8mv2FTgKT+PI6bx5C0G8TdNYndu161pg2i7uoBwxy2ImPMHrJOM2LZef7Bw==}
+ engines: {node: '>=20.9.0'}
+
+ '@img/sharp-webcontainers-wasm32@0.35.2':
+ resolution: {integrity: sha512-QNV27pxs9wpApEiCfvHM1RDoP1w1+2KrUWWDPEhEwg+latvOrfuhWrHWZKwdSFwU6jh3myjw/yOCRsUIuOft3g==}
+ engines: {node: '>=20.9.0'}
cpu: [wasm32]
- '@img/sharp-win32-arm64@0.34.5':
- resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-win32-arm64@0.35.2':
+ resolution: {integrity: sha512-BiVRYc/t6/Vl3e1hBx0hugG4oN9Pydf4fgMSpxTQJmwGUg/YoXTWHiFeRymHfCZzifxu4F4rpk/I67D0LQ20wQ==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [win32]
- '@img/sharp-win32-ia32@0.34.5':
- resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-win32-ia32@0.35.2':
+ resolution: {integrity: sha512-YYEhx9PImCC7T0tI8JDMi4DB9LwLCXCU5OWNYEXAxh5Q1ShKkyC6byxzoBJ3gEFDnH2lQckWuDe70G7mB2XJog==}
+ engines: {node: ^20.9.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.34.5':
- resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ '@img/sharp-win32-x64@0.35.2':
+ resolution: {integrity: sha512-imoOyBcoM/iiUr4J6VPpCNjPnjvP/Gks95898yB8YqoGGYmHYbOyCuNv9FMhFgtaiHFGbHW8bxKqRV6VjtXThQ==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [win32]
@@ -3676,7 +3685,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.50:
@@ -4947,8 +4956,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- miniflare@4.20260721.0:
- resolution: {integrity: sha512-fBLaCxZ2i/nPH8iyLzvza0C8/sSF4sjD1ma1Skf+pkZVK0TlaW5ujHJlUHwcwR66v2JZt+Q28d4DCX/oaLG0cA==}
+ miniflare@4.20260722.0:
+ resolution: {integrity: sha512-LW6ABMhCx/yIEFBLC/DO4yAhdm2T/G7jp7pr5T2kj895+CCIaHZqpMXdW9O6YE48LcYcCJChwWc8aEs1vpbTXw==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -5623,9 +5632,9 @@ packages:
set-cookie-parser@3.1.2:
resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==}
- sharp@0.34.5:
- resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ sharp@0.35.2:
+ resolution: {integrity: sha512-FVtFjtBCMiJS6yb5CX7Sop45WFMpeGw6oRKuJnXYgf/f1ms/D7LE/ZUSNxnW7rZ/dbslQWYkoqFHGPaDBtaK4w==}
+ engines: {node: '>=20.9.0'}
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
@@ -6328,17 +6337,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- workerd@1.20260721.1:
- resolution: {integrity: sha512-b/DWhpV0jTudzQpLhDovcOgBz233386q+3Hbari7CLCNT9UXxjQziSTZ9yCoKdT2K3TSx5jrwlOisq8hlLWXYg==}
+ workerd@1.20260722.1:
+ resolution: {integrity: sha512-NycKuc1x2onvsRfGGpM093vRlLFU2zHDAM0+APpccfg4+gZxDGCH27RmdDvkeBuoZyYqgLo3oAfF6re4mvC3vQ==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.113.0:
- resolution: {integrity: sha512-ROGzSloJv0y21It6Oc9LaruNcu1tdiQ/XzL3Jc3YkFjzXEMXzTqVhA8vQaGMTdZHTjFP0PVcwAHNgaw3gXu4wA==}
+ wrangler@4.114.0:
+ resolution: {integrity: sha512-M65P25t5UHA1TIJfgZXDcj+YzVobgKdRguM2QPz0xnxLFuOcuE3ErgllDht0iaho7MS4o0g/Bb4YK2+GT+bibg==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^5.20260721.1
+ '@cloudflare/workers-types': ^5.20260722.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -6624,43 +6633,43 @@ snapshots:
'@cloudflare/playwright@1.3.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260721.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260721.1
+ workerd: 1.20260722.1
- '@cloudflare/vitest-pool-workers@0.18.7(@cloudflare/workers-types@5.20260723.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.8(@cloudflare/workers-types@5.20260724.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
- miniflare: 4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260722.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
- bufferutil
- utf-8-validate
- '@cloudflare/workerd-darwin-64@1.20260721.1':
+ '@cloudflare/workerd-darwin-64@1.20260722.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260721.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260722.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260721.1':
+ '@cloudflare/workerd-linux-64@1.20260722.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260721.1':
+ '@cloudflare/workerd-linux-arm64@1.20260722.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260721.1':
+ '@cloudflare/workerd-windows-64@1.20260722.1':
optional: true
- '@cloudflare/workers-types@5.20260723.1': {}
+ '@cloudflare/workers-types@5.20260724.1': {}
'@colors/colors@1.6.0': {}
@@ -6994,98 +7003,108 @@ snapshots:
'@img/colour@1.1.0': {}
- '@img/sharp-darwin-arm64@0.34.5':
+ '@img/sharp-darwin-arm64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.2.4
+ '@img/sharp-libvips-darwin-arm64': 1.3.1
optional: true
- '@img/sharp-darwin-x64@0.34.5':
+ '@img/sharp-darwin-x64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.2.4
+ '@img/sharp-libvips-darwin-x64': 1.3.1
optional: true
- '@img/sharp-libvips-darwin-arm64@1.2.4':
+ '@img/sharp-freebsd-wasm32@0.35.2':
+ dependencies:
+ '@img/sharp-wasm32': 0.35.2
optional: true
- '@img/sharp-libvips-darwin-x64@1.2.4':
+ '@img/sharp-libvips-darwin-arm64@1.3.1':
optional: true
- '@img/sharp-libvips-linux-arm64@1.2.4':
+ '@img/sharp-libvips-darwin-x64@1.3.1':
optional: true
- '@img/sharp-libvips-linux-arm@1.2.4':
+ '@img/sharp-libvips-linux-arm64@1.3.1':
optional: true
- '@img/sharp-libvips-linux-ppc64@1.2.4':
+ '@img/sharp-libvips-linux-arm@1.3.1':
optional: true
- '@img/sharp-libvips-linux-riscv64@1.2.4':
+ '@img/sharp-libvips-linux-ppc64@1.3.1':
optional: true
- '@img/sharp-libvips-linux-s390x@1.2.4':
+ '@img/sharp-libvips-linux-riscv64@1.3.1':
optional: true
- '@img/sharp-libvips-linux-x64@1.2.4':
+ '@img/sharp-libvips-linux-s390x@1.3.1':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ '@img/sharp-libvips-linux-x64@1.3.1':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.1':
optional: true
- '@img/sharp-linux-arm64@0.34.5':
+ '@img/sharp-libvips-linuxmusl-x64@1.3.1':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.2.4
+ '@img/sharp-libvips-linux-arm64': 1.3.1
optional: true
- '@img/sharp-linux-arm@0.34.5':
+ '@img/sharp-linux-arm@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.2.4
+ '@img/sharp-libvips-linux-arm': 1.3.1
optional: true
- '@img/sharp-linux-ppc64@0.34.5':
+ '@img/sharp-linux-ppc64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-ppc64': 1.2.4
+ '@img/sharp-libvips-linux-ppc64': 1.3.1
optional: true
- '@img/sharp-linux-riscv64@0.34.5':
+ '@img/sharp-linux-riscv64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-riscv64': 1.2.4
+ '@img/sharp-libvips-linux-riscv64': 1.3.1
optional: true
- '@img/sharp-linux-s390x@0.34.5':
+ '@img/sharp-linux-s390x@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.2.4
+ '@img/sharp-libvips-linux-s390x': 1.3.1
optional: true
- '@img/sharp-linux-x64@0.34.5':
+ '@img/sharp-linux-x64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.2.4
+ '@img/sharp-libvips-linux-x64': 1.3.1
optional: true
- '@img/sharp-linuxmusl-arm64@0.34.5':
+ '@img/sharp-linuxmusl-arm64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.1
optional: true
- '@img/sharp-linuxmusl-x64@0.34.5':
+ '@img/sharp-linuxmusl-x64@0.35.2':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.1
optional: true
- '@img/sharp-wasm32@0.34.5':
+ '@img/sharp-wasm32@0.35.2':
dependencies:
'@emnapi/runtime': 1.11.2
optional: true
- '@img/sharp-win32-arm64@0.34.5':
+ '@img/sharp-webcontainers-wasm32@0.35.2':
+ dependencies:
+ '@img/sharp-wasm32': 0.35.2
+ optional: true
+
+ '@img/sharp-win32-arm64@0.35.2':
optional: true
- '@img/sharp-win32-ia32@0.34.5':
+ '@img/sharp-win32-ia32@0.35.2':
optional: true
- '@img/sharp-win32-x64@0.34.5':
+ '@img/sharp-win32-x64@0.35.2':
optional: true
'@inquirer/ansi@1.0.2': {}
@@ -10597,12 +10616,12 @@ snapshots:
mimic-response@4.0.0: {}
- miniflare@4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ miniflare@4.20260722.0(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cspotcode/source-map-support': 0.8.1
- sharp: 0.34.5
+ sharp: 0.35.2
undici: 7.28.0
- workerd: 1.20260721.1
+ workerd: 1.20260722.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -11431,36 +11450,37 @@ snapshots:
set-cookie-parser@3.1.2: {}
- sharp@0.34.5:
+ sharp@0.35.2:
dependencies:
'@img/colour': 1.1.0
detect-libc: 2.1.2
semver: 7.8.5
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.5
- '@img/sharp-darwin-x64': 0.34.5
- '@img/sharp-libvips-darwin-arm64': 1.2.4
- '@img/sharp-libvips-darwin-x64': 1.2.4
- '@img/sharp-libvips-linux-arm': 1.2.4
- '@img/sharp-libvips-linux-arm64': 1.2.4
- '@img/sharp-libvips-linux-ppc64': 1.2.4
- '@img/sharp-libvips-linux-riscv64': 1.2.4
- '@img/sharp-libvips-linux-s390x': 1.2.4
- '@img/sharp-libvips-linux-x64': 1.2.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
- '@img/sharp-linux-arm': 0.34.5
- '@img/sharp-linux-arm64': 0.34.5
- '@img/sharp-linux-ppc64': 0.34.5
- '@img/sharp-linux-riscv64': 0.34.5
- '@img/sharp-linux-s390x': 0.34.5
- '@img/sharp-linux-x64': 0.34.5
- '@img/sharp-linuxmusl-arm64': 0.34.5
- '@img/sharp-linuxmusl-x64': 0.34.5
- '@img/sharp-wasm32': 0.34.5
- '@img/sharp-win32-arm64': 0.34.5
- '@img/sharp-win32-ia32': 0.34.5
- '@img/sharp-win32-x64': 0.34.5
+ '@img/sharp-darwin-arm64': 0.35.2
+ '@img/sharp-darwin-x64': 0.35.2
+ '@img/sharp-freebsd-wasm32': 0.35.2
+ '@img/sharp-libvips-darwin-arm64': 1.3.1
+ '@img/sharp-libvips-darwin-x64': 1.3.1
+ '@img/sharp-libvips-linux-arm': 1.3.1
+ '@img/sharp-libvips-linux-arm64': 1.3.1
+ '@img/sharp-libvips-linux-ppc64': 1.3.1
+ '@img/sharp-libvips-linux-riscv64': 1.3.1
+ '@img/sharp-libvips-linux-s390x': 1.3.1
+ '@img/sharp-libvips-linux-x64': 1.3.1
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.1
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.1
+ '@img/sharp-linux-arm': 0.35.2
+ '@img/sharp-linux-arm64': 0.35.2
+ '@img/sharp-linux-ppc64': 0.35.2
+ '@img/sharp-linux-riscv64': 0.35.2
+ '@img/sharp-linux-s390x': 0.35.2
+ '@img/sharp-linux-x64': 0.35.2
+ '@img/sharp-linuxmusl-arm64': 0.35.2
+ '@img/sharp-linuxmusl-x64': 0.35.2
+ '@img/sharp-webcontainers-wasm32': 0.35.2
+ '@img/sharp-win32-arm64': 0.35.2
+ '@img/sharp-win32-ia32': 0.35.2
+ '@img/sharp-win32-x64': 0.35.2
shebang-command@2.0.0:
dependencies:
@@ -12100,26 +12120,26 @@ snapshots:
word-wrap@1.2.5: {}
- workerd@1.20260721.1:
+ workerd@1.20260722.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260721.1
- '@cloudflare/workerd-darwin-arm64': 1.20260721.1
- '@cloudflare/workerd-linux-64': 1.20260721.1
- '@cloudflare/workerd-linux-arm64': 1.20260721.1
- '@cloudflare/workerd-windows-64': 1.20260721.1
+ '@cloudflare/workerd-darwin-64': 1.20260722.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260722.1
+ '@cloudflare/workerd-linux-64': 1.20260722.1
+ '@cloudflare/workerd-linux-arm64': 1.20260722.1
+ '@cloudflare/workerd-windows-64': 1.20260722.1
- wrangler@4.113.0(@cloudflare/workers-types@5.20260723.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260721.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1)
blake3-wasm: 2.1.5
esbuild: 0.28.1
- miniflare: 4.20260721.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ miniflare: 4.20260722.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260721.1
+ workerd: 1.20260722.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260723.1
+ '@cloudflare/workers-types': 5.20260724.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 4e41ec66705d9ff22a235835c932ac9bef7e168a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 24 Jul 2026 21:10:04 +0800
Subject: [PATCH 411/670] chore(deps): bump devenv from `9767a1f` to `fc06618`
(#22815)
Bumps [devenv](https://github.com/cachix/devenv) from `9767a1f` to `fc06618`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/9767a1f458fbd99b487dbb600a130917d4cd2b13...fc06618ba2099eaec355764f3ec5c395d45cec7c)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: fc06618ba2099eaec355764f3ec5c395d45cec7c
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 9458658bdbb1..63e4df494a8d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784758116,
- "narHash": "sha256-vcjRSkJHM5/2rLmtCZBhms/WDJpyPNXW9Gi6xeSfc/Y=",
+ "lastModified": 1784849577,
+ "narHash": "sha256-vVJl1B6vuVkpmkGYxSaHHpjwCZCP59OsXlSo4bQontk=",
"owner": "cachix",
"repo": "devenv",
- "rev": "9767a1f458fbd99b487dbb600a130917d4cd2b13",
+ "rev": "fc06618ba2099eaec355764f3ec5c395d45cec7c",
"type": "github"
},
"original": {
From 0294ce99dba4b26f0ce9d9dc862892c2924a11e1 Mon Sep 17 00:00:00 2001
From: whatever <99734497+wha7ev9r@users.noreply.github.com>
Date: Sat, 25 Jul 2026 05:06:28 +0800
Subject: [PATCH 412/670] fix(dongqiudi): adapt routes to new __NUXT__ data
structure (#22720)
* route: fix dongqiudi routes for new __NUXT__ data structure
* fix(dongqiudi): remove unused mobile fallback
* fix(dongqiudi): tolerate unavailable special articles
* fix(dongqiudi): remove unnecessary bool return from ProcessFeedType2
---
lib/routes/dongqiudi/daily.ts | 2 +-
lib/routes/dongqiudi/player-news.ts | 2 +-
lib/routes/dongqiudi/result.ts | 25 ++++++++-----
lib/routes/dongqiudi/special.ts | 18 ++++++---
lib/routes/dongqiudi/top-news.ts | 2 +-
lib/routes/dongqiudi/utils.ts | 58 +++++++++--------------------
6 files changed, 47 insertions(+), 60 deletions(-)
diff --git a/lib/routes/dongqiudi/daily.ts b/lib/routes/dongqiudi/daily.ts
index 5c0611eaf04c..f0ec8fa57eb6 100644
--- a/lib/routes/dongqiudi/daily.ts
+++ b/lib/routes/dongqiudi/daily.ts
@@ -19,5 +19,5 @@ export const route: Route = {
};
function handler(ctx) {
- ctx.set('redirect', '/dongqiudi/special/48');
+ return ctx.set('redirect', '/dongqiudi/special/48');
}
diff --git a/lib/routes/dongqiudi/player-news.ts b/lib/routes/dongqiudi/player-news.ts
index 0074ff5e0f0f..6487f3cfbd15 100644
--- a/lib/routes/dongqiudi/player-news.ts
+++ b/lib/routes/dongqiudi/player-news.ts
@@ -21,5 +21,5 @@ export const route: Route = {
async function handler(ctx) {
const playerId = ctx.req.param('id');
- await utils.ProcessFeed(ctx, 'player', playerId);
+ return await utils.ProcessFeed(ctx, 'player', playerId);
}
diff --git a/lib/routes/dongqiudi/result.ts b/lib/routes/dongqiudi/result.ts
index 1b424d07a66b..49a813691ea8 100644
--- a/lib/routes/dongqiudi/result.ts
+++ b/lib/routes/dongqiudi/result.ts
@@ -1,5 +1,3 @@
-import { JSDOM } from 'jsdom';
-
import type { Route } from '@/types';
import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
@@ -24,20 +22,27 @@ async function handler(ctx) {
const team = ctx.req.param('team');
const link = `https://www.dongqiudi.com/team/${team}.html`;
- const response = await got(link);
- const dom = new JSDOM(response.data, {
- runScripts: 'dangerously',
- });
- const data = dom.window.__NUXT__.data[0];
- const resultData = data.teamScheduleData.filter((data) => data.fs_A && data.fs_B);
+ const { data: scheduleData } = await got(`https://api.dongqiudi.com/data/v1/team/schedule/${team}`);
+ const lastSeason = scheduleData.season_list.find((s) => !s.current);
+
+ if (!lastSeason) {
+ return {
+ title: `${team} 比赛结果`,
+ link,
+ item: [],
+ };
+ }
+
+ const { data: seasonResp } = await got(lastSeason.url);
+ const resultData = seasonResp.data.filter((match) => match.fs_A && match.fs_B);
- const teamName = data.teamDetail.base_info.team_name;
+ const teamName = resultData.length ? (resultData[0].team_A_id === team ? resultData[0].team_A_name : resultData[0].team_B_name) : team;
const out = resultData.map((result) => ({
title: `${result.match_title} ${result.team_A_name} ${result.fs_A}-${result.fs_B} ${result.team_B_name}`,
guid: result.match_id,
link: result.scheme.replace('dongqiudi:///game/', 'https://www.dongqiudi.com/liveDetail/'),
- pubDate: parseDate(result.start_time),
+ pubDate: parseDate(result.start_play),
}));
return {
diff --git a/lib/routes/dongqiudi/special.ts b/lib/routes/dongqiudi/special.ts
index 206051771fa9..c1bcaeafea62 100644
--- a/lib/routes/dongqiudi/special.ts
+++ b/lib/routes/dongqiudi/special.ts
@@ -9,7 +9,9 @@ export const route: Route = {
path: '/special/:id',
categories: ['sport'],
example: '/dongqiudi/special/41',
- parameters: { id: '专题 id, 可自行通过 https://www.dongqiudi.com/special/+数字匹配' },
+ parameters: {
+ id: '专题 id, 可自行通过 https://www.dongqiudi.com/special/+数字匹配',
+ },
radar: [
{
source: ['www.dongqiudi.com/special/:id'],
@@ -30,17 +32,21 @@ async function handler(ctx) {
const list = response.data.map((item) => ({
title: item.title,
link: `https://www.dongqiudi.com/articles/${item.aid}.html`,
- mobileLink: `https://m.dongqiudi.com/article/${item.aid}.html`,
pubDate: parseDate(item.show_time, 'X'),
}));
const out = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- const { data: response } = await got(item.mobileLink);
-
- utils.ProcessFeedType3(item, response);
-
+ try {
+ const { data: response } = await got(item.link);
+ utils.ProcessFeedType2(item, response);
+ } catch (error) {
+ if (!(error instanceof Error) || !['HTTPError', 'RequestError', 'FetchError'].includes(error.name)) {
+ throw error;
+ }
+ // Keep the list item when the article page is gone or temporarily unavailable.
+ }
return item;
})
)
diff --git a/lib/routes/dongqiudi/top-news.ts b/lib/routes/dongqiudi/top-news.ts
index 98b9a7cf8e95..6b45e94ed540 100644
--- a/lib/routes/dongqiudi/top-news.ts
+++ b/lib/routes/dongqiudi/top-news.ts
@@ -42,7 +42,7 @@ async function handler(ctx) {
title: item.title,
link: `https://www.dongqiudi.com/articles/${item.id}.html`,
category: [item.category, ...(item.secondary_category ?? [])],
- pubDate: parseDate(item.show_time),
+ pubDate: parseDate(item.show_time, 'X'),
}));
const out = await Promise.all(
diff --git a/lib/routes/dongqiudi/utils.ts b/lib/routes/dongqiudi/utils.ts
index 2b27887d450d..cdb4d51d5f63 100644
--- a/lib/routes/dongqiudi/utils.ts
+++ b/lib/routes/dongqiudi/utils.ts
@@ -68,17 +68,19 @@ const ProcessFeed = async (ctx, type, id) => {
const apiUrl = 'https://api.dongqiudi.com/v3/archive/app/channel/feeds';
const { data: response } = await got(link);
- let name;
-
const { window } = new JSDOM(response, {
runScripts: 'dangerously',
});
- const typeInfo = window.__NUXT__.data[0][`${type}Detail`].base_info;
+ const nuxtData = window.__NUXT__.data[0];
+ let name;
+ let image;
if (type === 'team') {
- name = typeInfo.team_name;
- } else if (type === 'player') {
- name = typeInfo.person_name;
+ name = nuxtData.teamInfo.name;
+ image = nuxtData.teamInfo.logo;
+ } else {
+ name = nuxtData.detail.base_info.person_name;
+ image = nuxtData.detail.base_info.person_logo;
}
const { data } = await got(apiUrl, {
@@ -95,7 +97,7 @@ const ProcessFeed = async (ctx, type, id) => {
title: article.title,
link: `https://www.dongqiudi.com/articles/${article.id}.html`,
category: [article.category, ...(article.secondary_category ?? [])],
- pubDate: parseDate(article.show_time),
+ pubDate: parseDate(article.show_time, 'X'),
}));
const out = await Promise.all(
@@ -113,7 +115,7 @@ const ProcessFeed = async (ctx, type, id) => {
return {
title: `${name} - 相关新闻`,
link,
- image: type === 'team' ? typeInfo.team_logo : typeInfo.person_logo,
+ image,
item: out,
};
};
@@ -123,44 +125,18 @@ const ProcessFeedType2 = (item, response) => {
runScripts: 'dangerously',
});
- const data = dom.window.__NUXT__.data[0].newData;
+ const data = dom.window.__NUXT__?.data?.[0]?.article;
// filter out undefined item
if (!data) {
return;
}
- if (Object.keys(data).length > 0) {
- const body = ProcessVideo(load(data.body, null, false));
- ProcessHref(body('a'));
- ProcessImg(body('img'));
- item.description = body.html();
- item.author = data.writer;
- item.pubDate = parseDate(data.show_time, 'X');
- }
-};
-
-const ProcessFeedType3 = (item, response) => {
- const $ = load(response);
- const initialState = JSON.parse(
- $('script:contains("window.__INITIAL_STATE__")')
- .text()
- .match(/window\.__INITIAL_STATE__\s*=\s*((?:\S.*?)??);\(/)[1]
- );
-
- // filter out undefined item
- if (!initialState) {
- return;
- }
-
- if (Object.keys(initialState.articleContent).length) {
- const data = Object.values(initialState.articleContent)[0];
- const body = ProcessVideo(load(data.body, null, false));
- ProcessHref(body('a'));
- ProcessImg(body('img'));
- item.description = body.html();
- item.author = data.writer;
- }
+ const body = ProcessVideo(load(data.rawBody, null, false));
+ ProcessHref(body('a'));
+ ProcessImg(body('img'));
+ item.description = body.html();
+ item.author = data.author;
};
-export default { ProcessVideo, ProcessFeed, ProcessFeedType2, ProcessFeedType3, ProcessHref, ProcessImg };
+export default { ProcessVideo, ProcessFeed, ProcessFeedType2, ProcessHref, ProcessImg };
From 91d71f14e7acc17a9831da31ae7cc2df2d941865 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Sat, 25 Jul 2026 17:13:33 +0800
Subject: [PATCH 413/670] fix(route): remove dyanmic date stamp for link
(#22818)
* fix(route): remove dynamic date stamp from the link
* fix(route): remove dynamic date stamp from the link
* fix: update radar source
* fix: update radar source to restore www
---
lib/routes/szmuseum/temporary.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/routes/szmuseum/temporary.tsx b/lib/routes/szmuseum/temporary.tsx
index 88ec25bccc92..ec33cf64d885 100644
--- a/lib/routes/szmuseum/temporary.tsx
+++ b/lib/routes/szmuseum/temporary.tsx
@@ -63,7 +63,9 @@ export const route: Route = {
const $item = $(item);
const a = $item.find('h1 a');
const title = a.text();
- const link = new URL(a.attr('href') || '', baseUrl).href;
+ const linkStr = new URL(a.attr('href') || '', baseUrl);
+ linkStr.search = ''; // remove dynamic date stamp from the link
+ const link = linkStr.href;
const imgUrl = new URL($item.find('.aleftimg img').attr('src') || '', baseUrl).href;
const fullDuration = $item.find('.activity_r_detail p:nth-child(1) span:nth-child(2)').text().trim();
From 01039207441030614eb13864901b7637daf95074 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 09:23:33 +0000
Subject: [PATCH 414/670] Update VOUCHED list
https://github.com/DIYgod/RSSHub/issues/22801#issuecomment-5077973323
---
.github/VOUCHED.td | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/VOUCHED.td b/.github/VOUCHED.td
index e19d0249c864..c21361bfb3e5 100644
--- a/.github/VOUCHED.td
+++ b/.github/VOUCHED.td
@@ -16,4 +16,5 @@ hyoban
neverbehave
pseudoyu
tonyrl
+-vizmoe impersonate as pseudoyu in #22801. ae0a44ebb738ace62100f66d15d84272356a72c9
zhenlonghe
From 8a2128988adc33aaa9b8e01c1120951968120d94 Mon Sep 17 00:00:00 2001
From: Jiamin <16831220+magazian@users.noreply.github.com>
Date: Sat, 25 Jul 2026 17:24:59 +0800
Subject: [PATCH 415/670] feat(route): add china silk museum exhibit route
(#22809)
* feat(route): add china silk museum exhibit route
* fix: update radar source
* fix: update rawSrc to remove redundancy
* fix: update according to part of bot review
---
lib/routes/chinasilkmuseum/namespace.ts | 10 ++
lib/routes/chinasilkmuseum/zz.tsx | 119 ++++++++++++++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 lib/routes/chinasilkmuseum/namespace.ts
create mode 100644 lib/routes/chinasilkmuseum/zz.tsx
diff --git a/lib/routes/chinasilkmuseum/namespace.ts b/lib/routes/chinasilkmuseum/namespace.ts
new file mode 100644
index 000000000000..b2b037d1be57
--- /dev/null
+++ b/lib/routes/chinasilkmuseum/namespace.ts
@@ -0,0 +1,10 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'China National Silk Museum',
+ url: 'www.chinasilkmuseum.com',
+
+ zh: {
+ name: '中国丝绸博物馆',
+ },
+};
diff --git a/lib/routes/chinasilkmuseum/zz.tsx b/lib/routes/chinasilkmuseum/zz.tsx
new file mode 100644
index 000000000000..d6bd51b494bf
--- /dev/null
+++ b/lib/routes/chinasilkmuseum/zz.tsx
@@ -0,0 +1,119 @@
+import { load } from 'cheerio';
+import dayjs from 'dayjs';
+import { renderToString } from 'hono/jsx/dom/server';
+
+import type { Data, DataItem, Route } from '@/types';
+import cache from '@/utils/cache';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { namespace } from './namespace';
+
+// Convert YYYY年M月D日 to YYYY-MM-DD
+const fmtExhibitionDate = (raw: string | undefined) => {
+ if (!raw) {
+ return;
+ }
+ const d = dayjs(raw.trim(), 'YYYY年M月D日');
+ return d.isValid() ? d.format('YYYY-MM-DD') : undefined;
+};
+
+// used for 2026年6月24日 - 2026年9月1日
+const parseExhibitionDuration = (fullDuration: string): { startDate: string | undefined; endDate: string | undefined } => {
+ const [startRaw, endRaw] = fullDuration.split(' - ', 2);
+ return { startDate: fmtExhibitionDate(startRaw), endDate: fmtExhibitionDate(endRaw) };
+};
+
+export const route: Route = {
+ path: '/zz',
+ categories: ['travel'],
+ example: '/chinasilkmuseum/zz',
+ name: 'Exhibition',
+ maintainers: ['magazian'],
+ radar: [
+ {
+ source: ['www.chinasilkmuseum.com/zz/list_17.aspx'],
+ target: '/zz',
+ },
+ ],
+ handler: async () => {
+ const baseUrl = 'https://www.chinasilkmuseum.com';
+ const listUrl = `${baseUrl}/zz/list_17.aspx`;
+ const museumName = namespace.zh?.name ?? namespace.name;
+
+ const response = await ofetch(listUrl);
+ const $ = load(response);
+
+ const items = $('div.about_body div.show_info ul.ul li')
+ .toArray()
+ .map((el) => {
+ const $el = $(el);
+ const $titleLink = $el.find('div.show_text h3.h3 a');
+ const title = $titleLink.text();
+ const rawHref = $titleLink.attr('href') ?? '';
+ const link = new URL(rawHref, baseUrl).href;
+
+ const rawSrc = $el.find('a > img').attr('src') ?? '';
+ const imgUrl = new URL(rawSrc, baseUrl).href;
+
+ return { title, link, imgUrl };
+ });
+
+ const list = await Promise.all(
+ items.map((item) =>
+ cache.tryGet(item.link, async () => {
+ const detailRes = await ofetch(item.link);
+ const $d = load(detailRes);
+ const location = $d('div.detail_text p').first().text().replace('展览地点:', '').trim();
+ const fullDuration = $d('div.detail_text p').eq(1).text().replace('展览时间:', '').trim();
+ const { startDate, endDate } = parseExhibitionDuration(fullDuration);
+ const pubDate = startDate ? parseDate(startDate) : undefined;
+
+ const description = renderToString(
+
+

+
+
+ 地点:
+ {location || '参考详情'}
+
+
+ 开展:
+ {startDate || '未定/常设'}
+
+
+ 闭展:
+ {endDate || '未定/常设'}
+
+ {fullDuration && (
+
+ 原始展期:{fullDuration}
+
+ )}
+
+ );
+
+ return {
+ title: item.title,
+ link: item.link,
+ pubDate,
+ description,
+ _extra: {
+ museumName,
+ location,
+ startDate,
+ endDate,
+ },
+ } as DataItem;
+ })
+ )
+ );
+
+ return {
+ title: `${museumName} - 在展`,
+ link: listUrl,
+ language: 'zh-CN',
+ item: list,
+ } as Data;
+ },
+};
From f3109724aacd3c0196eb07258d4c29a408a8db41 Mon Sep 17 00:00:00 2001
From: Tony
Date: Sat, 25 Jul 2026 18:10:59 +0800
Subject: [PATCH 416/670] chore: set max diff to 1000
---
.github/workflows/lint.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 94cb10f25ade..3fbe334b8b0e 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -144,3 +144,4 @@ jobs:
Thanks for the contribution. This PR was automatically closed because
it matched multiple low-quality/spam signals.
lock-pr: false
+ max-changed-lines: 1000
From a9f52c9adb0ca85040c94c2cb16ca43785bcb7f6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 10:33:05 +0000
Subject: [PATCH 417/670] chore(deps-dev): bump discord-api-types from 0.38.50
to 0.38.51 (#22821)
Bumps [discord-api-types](https://github.com/discordjs/discord-api-types) from 0.38.50 to 0.38.51.
- [Release notes](https://github.com/discordjs/discord-api-types/releases)
- [Changelog](https://github.com/discordjs/discord-api-types/blob/main/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord-api-types/compare/0.38.50...0.38.51)
---
updated-dependencies:
- dependency-name: discord-api-types
dependency-version: 0.38.51
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index ae3e86db42da..4865ce175f2d 100644
--- a/package.json
+++ b/package.json
@@ -173,7 +173,7 @@
"@typescript-eslint/parser": "8.65.0",
"@vercel/nft": "1.10.2",
"@vitest/coverage-v8": "4.1.10",
- "discord-api-types": "0.38.50",
+ "discord-api-types": "0.38.51",
"domhandler": "6.0.1",
"eslint": "10.7.0",
"eslint-nibble": "9.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 70a52543ddff..d6eee7d8124e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -369,8 +369,8 @@ importers:
specifier: 4.1.10
version: 4.1.10(vitest@4.1.10)
discord-api-types:
- specifier: 0.38.50
- version: 0.38.50
+ specifier: 0.38.51
+ version: 0.38.51
domhandler:
specifier: 6.0.1
version: 6.0.1
@@ -3685,11 +3685,11 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
- discord-api-types@0.38.50:
- resolution: {integrity: sha512-J2n/bpIETX3DQ6AJ7/0xbsTLmYiJQtO/LKcXKC1YDbB56OUwtDbdXOFE8Q4g8jVGHBR2VAy1+D4ngaIgkMNV9w==}
+ discord-api-types@0.38.51:
+ resolution: {integrity: sha512-SnaFHd+b8Z3HgjEIoSA1wkstXCt6J0Zrxvny0BJZZz7AhmFSetRY3DMrIdO3LFDMeeTxF7WKornnAGxaws5Adw==}
dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
@@ -5343,8 +5343,8 @@ packages:
resolution: {integrity: sha512-xdB1oSLHbz1vRWgCDalrCqEFTWzFlhqFC5tIHLMOSUIjhm3XXQ1qrFy8S/ESr1JYRRXqM3c1QFiMZUJdUTqyMQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.22:
- resolution: {integrity: sha512-KBDEIpLrvpv16pp3K0Fw+UCoZfopFjjgeB+0tA/aaThfEE74kKDLrgg603YvOWJyg3+WYtyq3xYsQWsIyZlPqQ==}
+ postcss@8.5.23:
+ resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==}
engines: {node: ^10 || ^12 || >=14}
postman-request@2.88.1-postman.48:
@@ -9009,7 +9009,7 @@ snapshots:
dependencies:
heap: 0.2.7
- discord-api-types@0.38.50: {}
+ discord-api-types@0.38.51: {}
dom-serializer@1.4.1:
dependencies:
@@ -11075,7 +11075,7 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.22:
+ postcss@8.5.23:
dependencies:
nanoid: 3.3.16
picocolors: 1.1.1
@@ -12005,7 +12005,7 @@ snapshots:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
- postcss: 8.5.22
+ postcss: 8.5.23
rollup: 4.62.2
tinyglobby: 0.2.17
optionalDependencies:
From fde0b12b367a0eff4526a027e50452b2a74e9f63 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 10:34:50 +0000
Subject: [PATCH 418/670] chore(deps): bump hono from 4.12.31 to 4.12.32
(#22824)
Bumps [hono](https://github.com/honojs/hono) from 4.12.31 to 4.12.32.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.31...v4.12.32)
---
updated-dependencies:
- dependency-name: hono
dependency-version: 4.12.32
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 34 +++++++++++++++++-----------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index 4865ce175f2d..860baada77ee 100644
--- a/package.json
+++ b/package.json
@@ -91,7 +91,7 @@
"fanfou-sdk": "6.0.0",
"google-play-scraper": "10.1.3",
"header-generator": "2.1.82",
- "hono": "4.12.31",
+ "hono": "4.12.32",
"html-to-text": "10.0.0",
"http-cookie-agent": "8.0.0",
"https-proxy-agent": "9.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d6eee7d8124e..f37843f69df8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,10 +48,10 @@ importers:
version: 6.15.3
'@hono/node-server':
specifier: 2.0.11
- version: 2.0.11(hono@4.12.31)
+ version: 2.0.11(hono@4.12.32)
'@hono/zod-openapi':
specifier: 1.5.1
- version: 1.5.1(hono@4.12.31)(zod@4.4.3)
+ version: 1.5.1(hono@4.12.32)(zod@4.4.3)
'@jocmp/mercury-parser':
specifier: 3.0.9
version: 3.0.9
@@ -84,7 +84,7 @@ importers:
version: 0.0.25
'@scalar/hono-api-reference':
specifier: 0.11.11
- version: 0.11.11(hono@4.12.31)
+ version: 0.11.11(hono@4.12.32)
'@sentry/node':
specifier: 10.67.0
version: 10.67.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))
@@ -128,8 +128,8 @@ importers:
specifier: 2.1.82
version: 2.1.82
hono:
- specifier: 4.12.31
- version: 4.12.31
+ specifier: 4.12.32
+ version: 4.12.32
html-to-text:
specifier: 10.0.0
version: 10.0.0
@@ -4248,8 +4248,8 @@ packages:
hmacsha1@1.0.0:
resolution: {integrity: sha512-4FP6J0oI8jqb6gLLl9tSwVdosWJ/AKSGJ+HwYf6Ixe4MUcEkst4uWzpVQrNOCin0fzTRQbXV8ePheU8WiiDYBw==}
- hono@4.12.31:
- resolution: {integrity: sha512-zJIHFrl6bq3RDd2YusFNCDlM8qUprxKswyi/OPzPyzKDdyBXDqWx8bZlZ7R+saTdSTatUmb3O7K4SspGPaEOQg==}
+ hono@4.12.32:
+ resolution: {integrity: sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==}
engines: {node: '>=16.9.0'}
hookable@6.1.1:
@@ -6968,21 +6968,21 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.11(hono@4.12.31)':
+ '@hono/node-server@2.0.11(hono@4.12.32)':
dependencies:
- hono: 4.12.31
+ hono: 4.12.32
- '@hono/zod-openapi@1.5.1(hono@4.12.31)(zod@4.4.3)':
+ '@hono/zod-openapi@1.5.1(hono@4.12.32)(zod@4.4.3)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.5.0(zod@4.4.3)
- '@hono/zod-validator': 0.9.0(hono@4.12.31)(zod@4.4.3)
- hono: 4.12.31
+ '@hono/zod-validator': 0.9.0(hono@4.12.32)(zod@4.4.3)
+ hono: 4.12.32
openapi3-ts: 4.6.0
zod: 4.4.3
- '@hono/zod-validator@0.9.0(hono@4.12.31)(zod@4.4.3)':
+ '@hono/zod-validator@0.9.0(hono@4.12.32)(zod@4.4.3)':
dependencies:
- hono: 4.12.31
+ hono: 4.12.32
zod: 4.4.3
'@humanfs/core@0.19.2':
@@ -8005,10 +8005,10 @@ snapshots:
'@scalar/helpers@0.9.2': {}
- '@scalar/hono-api-reference@0.11.11(hono@4.12.31)':
+ '@scalar/hono-api-reference@0.11.11(hono@4.12.32)':
dependencies:
'@scalar/client-side-rendering': 0.3.4
- hono: 4.12.31
+ hono: 4.12.32
'@scalar/schemas@0.7.4':
dependencies:
@@ -9716,7 +9716,7 @@ snapshots:
hmacsha1@1.0.0: {}
- hono@4.12.31: {}
+ hono@4.12.32: {}
hookable@6.1.1: {}
From 9cca12ae4374a43c1b24edaca5005a36ff8ee3de Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 10:41:47 +0000
Subject: [PATCH 419/670] chore(deps): bump header-generator from 2.1.82 to
2.1.86 (#22823)
Bumps [header-generator](https://github.com/apify/fingerprint-suite) from 2.1.82 to 2.1.86.
- [Release notes](https://github.com/apify/fingerprint-suite/releases)
- [Commits](https://github.com/apify/fingerprint-suite/compare/v2.1.82...v2.1.86)
---
updated-dependencies:
- dependency-name: header-generator
dependency-version: 2.1.86
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 68 ++++++++++++++++++++++++++++++++++++++------------
2 files changed, 53 insertions(+), 17 deletions(-)
diff --git a/package.json b/package.json
index 860baada77ee..02f6a406dc93 100644
--- a/package.json
+++ b/package.json
@@ -90,7 +90,7 @@
"etag": "1.8.1",
"fanfou-sdk": "6.0.0",
"google-play-scraper": "10.1.3",
- "header-generator": "2.1.82",
+ "header-generator": "2.1.86",
"hono": "4.12.32",
"html-to-text": "10.0.0",
"http-cookie-agent": "8.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f37843f69df8..2085a0be3873 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -125,8 +125,8 @@ importers:
specifier: 10.1.3
version: 10.1.3
header-generator:
- specifier: 2.1.82
- version: 2.1.82
+ specifier: 2.1.86
+ version: 2.1.86
hono:
specifier: 4.12.32
version: 4.12.32
@@ -3194,9 +3194,9 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- adm-zip@0.5.18:
- resolution: {integrity: sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==}
- engines: {node: '>=12.0'}
+ adm-zip@0.6.0:
+ resolution: {integrity: sha512-XleryMhbuksdKtofnWZ9Sk+4CUTbms4Mb/EU32SZwToAyZ5RgVos/ki8n+yr0LWHOGKuakbXTuuYNHLQjhddgg==}
+ engines: {node: '>=14.0'}
agent-base@7.1.4:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
@@ -3297,6 +3297,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ baseline-browser-mapping@2.11.1:
+ resolution: {integrity: sha512-HYXq73DDpCtNzOmrFsm9eSwCvWCql0RzqjpDzXN9EadiLJ4DNat0nsZ/Bzmy+Ud12mb4/zKDY0cQ805ZzN+i0A==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
basic-ftp@5.3.1:
resolution: {integrity: sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==}
engines: {node: '>=10.0.0'}
@@ -3350,6 +3355,11 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
+ browserslist@4.28.7:
+ resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
buffer-equal-constant-time@1.0.1:
resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
@@ -3398,6 +3408,9 @@ packages:
caniuse-lite@1.0.30001805:
resolution: {integrity: sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==}
+ caniuse-lite@1.0.30001806:
+ resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==}
+
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -3764,6 +3777,9 @@ packages:
electron-to-chromium@1.5.392:
resolution: {integrity: sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==}
+ electron-to-chromium@1.5.396:
+ resolution: {integrity: sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -4131,8 +4147,8 @@ packages:
resolution: {integrity: sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w==}
engines: {node: '>=18'}
- generative-bayesian-network@2.1.83:
- resolution: {integrity: sha512-LssI9es+oUoezoHloFGw0Hts0YEfujjBOE8KNl70oBt4HPjD/4rpUqcgZ/M7RCmgKvkmCyPB2KWowyJHuKyhfw==}
+ generative-bayesian-network@2.1.86:
+ resolution: {integrity: sha512-4+cZAUH6khje/EUKRlTlO+HpjA7aqvDlVBnBSJKZqC6qiJ3EitNZ97//xYrBbawZCHe1S1PGLza6knQTFpWCgw==}
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
@@ -4235,8 +4251,8 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
- header-generator@2.1.82:
- resolution: {integrity: sha512-4NjPB0+bAKjPoponSmTOkK58IEF2W22sOJA5O48k/MxbCZgOm+jrU4WVR53Z2I6xFgIPkVrQmKtt1LAbWtfqXw==}
+ header-generator@2.1.86:
+ resolution: {integrity: sha512-Nj+glwXBEU3PvvAT1WiC3FBhX1ReZZY+ADXIo2iTRqMzamLW0olJk7q/EJ6N3qJBqQWZJDJonAJRtAlzEFynLQ==}
engines: {node: '>=16.0.0'}
headers-polyfill@5.0.1:
@@ -8591,7 +8607,7 @@ snapshots:
acorn@8.17.0: {}
- adm-zip@0.5.18: {}
+ adm-zip@0.6.0: {}
agent-base@7.1.4: {}
@@ -8666,6 +8682,8 @@ snapshots:
baseline-browser-mapping@2.10.43: {}
+ baseline-browser-mapping@2.11.1: {}
+
basic-ftp@5.3.1: {}
bcrypt-pbkdf@1.0.2:
@@ -8718,6 +8736,14 @@ snapshots:
node-releases: 2.0.51
update-browserslist-db: 1.2.3(browserslist@4.28.6)
+ browserslist@4.28.7:
+ dependencies:
+ baseline-browser-mapping: 2.11.1
+ caniuse-lite: 1.0.30001806
+ electron-to-chromium: 1.5.396
+ node-releases: 2.0.51
+ update-browserslist-db: 1.2.3(browserslist@4.28.7)
+
buffer-equal-constant-time@1.0.1: {}
buffer@6.0.3:
@@ -8766,6 +8792,8 @@ snapshots:
caniuse-lite@1.0.30001805: {}
+ caniuse-lite@1.0.30001806: {}
+
caseless@0.12.0: {}
ccount@2.0.1: {}
@@ -8879,7 +8907,7 @@ snapshots:
core-js-compat@3.49.0:
dependencies:
- browserslist: 4.28.6
+ browserslist: 4.28.7
core-js@2.6.12: {}
@@ -9093,6 +9121,8 @@ snapshots:
electron-to-chromium@1.5.392: {}
+ electron-to-chromium@1.5.396: {}
+
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -9566,9 +9596,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- generative-bayesian-network@2.1.83:
+ generative-bayesian-network@2.1.86:
dependencies:
- adm-zip: 0.5.18
+ adm-zip: 0.6.0
tslib: 2.8.1
get-caller-file@2.0.5: {}
@@ -9700,10 +9730,10 @@ snapshots:
he@1.2.0: {}
- header-generator@2.1.82:
+ header-generator@2.1.86:
dependencies:
- browserslist: 4.28.6
- generative-bayesian-network: 2.1.83
+ browserslist: 4.28.7
+ generative-bayesian-network: 2.1.86
ow: 0.28.2
tslib: 2.8.1
@@ -11934,6 +11964,12 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
+ update-browserslist-db@1.2.3(browserslist@4.28.7):
+ dependencies:
+ browserslist: 4.28.7
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
From 6ba3f37fd4620d6bbf84233b8b03ec8ea2a761fb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 10:59:08 +0000
Subject: [PATCH 420/670] chore(deps): bump undici from 8.8.0 to 8.9.0 (#22825)
Bumps [undici](https://github.com/nodejs/undici) from 8.8.0 to 8.9.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v8.8.0...v8.9.0)
---
updated-dependencies:
- dependency-name: undici
dependency-version: 8.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 44 +++++++++++++++++++++++++-------------------
2 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/package.json b/package.json
index 02f6a406dc93..fba72e8d2e90 100644
--- a/package.json
+++ b/package.json
@@ -134,7 +134,7 @@
"tsx": "4.23.1",
"twitter-api-v2": "1.29.0",
"ufo": "1.6.4",
- "undici": "8.8.0",
+ "undici": "8.9.0",
"uuid": "14.0.1",
"winston": "3.19.0",
"xxhash-wasm": "1.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2085a0be3873..25ed2d19ff81 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -135,7 +135,7 @@ importers:
version: 10.0.0
http-cookie-agent:
specifier: 8.0.0
- version: 8.0.0(tough-cookie@6.0.2)(undici@8.8.0)
+ version: 8.0.0(tough-cookie@6.0.2)(undici@8.9.0)
https-proxy-agent:
specifier: 9.1.0
version: 9.1.0
@@ -257,8 +257,8 @@ importers:
specifier: 1.6.4
version: 1.6.4
undici:
- specifier: 8.8.0
- version: 8.8.0
+ specifier: 8.9.0
+ version: 8.9.0
uuid:
specifier: 14.0.1
version: 14.0.1
@@ -421,7 +421,7 @@ importers:
version: 2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
node-network-devtools:
specifier: 1.0.30
- version: 1.0.30(undici@8.8.0)(utf-8-validate@5.0.10)
+ version: 1.0.30(undici@8.9.0)(utf-8-validate@5.0.10)
oxc-parser:
specifier: 0.141.0
version: 0.141.0
@@ -6069,16 +6069,20 @@ packages:
undici-types@8.3.0:
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
- undici@6.27.0:
- resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==}
+ undici@6.28.0:
+ resolution: {integrity: sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==}
engines: {node: '>=18.17'}
undici@7.28.0:
resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
engines: {node: '>=20.18.1'}
- undici@8.8.0:
- resolution: {integrity: sha512-ubshXMXwF3MQIMF1y/WxZdNBnjEKeSg2wF5mcGUtU55YTw34tnVVpKRlLf7ruDXZ5344KokPVX4RBx1wJm64Bw==}
+ undici@7.29.0:
+ resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==}
+ engines: {node: '>=20.18.1'}
+
+ undici@8.9.0:
+ resolution: {integrity: sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==}
engines: {node: '>=22.19.0'}
unenv@2.0.0-rc.24:
@@ -6515,17 +6519,17 @@ snapshots:
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
'@octokit/request': 10.0.11
'@octokit/request-error': 7.1.0
- undici: 6.27.0
+ undici: 6.28.0
'@actions/http-client@3.0.2':
dependencies:
tunnel: 0.0.6
- undici: 6.27.0
+ undici: 6.28.0
'@actions/http-client@4.0.1':
dependencies:
tunnel: 0.0.6
- undici: 6.27.0
+ undici: 6.28.0
'@actions/io@3.0.2': {}
@@ -8828,7 +8832,7 @@ snapshots:
parse5: 7.3.0
parse5-htmlparser2-tree-adapter: 7.1.0
parse5-parser-stream: 7.1.2
- undici: 7.28.0
+ undici: 7.29.0
whatwg-mimetype: 4.0.0
chownr@3.0.0: {}
@@ -9789,12 +9793,12 @@ snapshots:
http-cache-semantics@4.2.0: {}
- http-cookie-agent@8.0.0(tough-cookie@6.0.2)(undici@8.8.0):
+ http-cookie-agent@8.0.0(tough-cookie@6.0.2)(undici@8.9.0):
dependencies:
agent-base: 9.0.0
tough-cookie: 6.0.2
optionalDependencies:
- undici: 8.8.0
+ undici: 8.9.0
http-proxy-agent@9.1.0:
dependencies:
@@ -10067,7 +10071,7 @@ snapshots:
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 6.0.2
- undici: 7.28.0
+ undici: 7.29.0
w3c-xmlserializer: 5.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
@@ -10752,13 +10756,13 @@ snapshots:
dependencies:
write-file-atomic: 1.3.4
- node-network-devtools@1.0.30(undici@8.8.0)(utf-8-validate@5.0.10):
+ node-network-devtools@1.0.30(undici@8.9.0)(utf-8-validate@5.0.10):
dependencies:
bufferutil: 4.1.0
iconv-lite: 0.7.3
inspector: 0.5.0
open: 8.4.2
- undici: 8.8.0
+ undici: 8.9.0
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- utf-8-validate
@@ -11894,11 +11898,13 @@ snapshots:
undici-types@8.3.0: {}
- undici@6.27.0: {}
+ undici@6.28.0: {}
undici@7.28.0: {}
- undici@8.8.0: {}
+ undici@7.29.0: {}
+
+ undici@8.9.0: {}
unenv@2.0.0-rc.24:
dependencies:
From 2221f62bdb3e36f46458f31affec7a4ee696b153 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 25 Jul 2026 21:40:46 +0800
Subject: [PATCH 421/670] chore(deps-dev): bump eslint in the eslint group
across 1 directory (#22820)
Bumps the eslint group with 1 update in the / directory: [eslint](https://github.com/eslint/eslint).
Updates `eslint` from 10.7.0 to 10.8.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.7.0...v10.8.0)
---
updated-dependencies:
- dependency-name: eslint
dependency-version: 10.8.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: eslint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 161 ++++++++++++++++++++++++++-----------------------
2 files changed, 87 insertions(+), 76 deletions(-)
diff --git a/package.json b/package.json
index fba72e8d2e90..fbab5587412a 100644
--- a/package.json
+++ b/package.json
@@ -175,7 +175,7 @@
"@vitest/coverage-v8": "4.1.10",
"discord-api-types": "0.38.51",
"domhandler": "6.0.1",
- "eslint": "10.7.0",
+ "eslint": "10.8.0",
"eslint-nibble": "9.1.1",
"eslint-plugin-n": "18.2.2",
"eslint-plugin-regexp": "3.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 25ed2d19ff81..950c1e708b83 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -304,13 +304,13 @@ importers:
version: 3.3.6
'@eslint/js':
specifier: 10.0.1
- version: 10.0.1(eslint@10.7.0)
+ version: 10.0.1(eslint@10.8.0)
'@oxlint/plugins':
specifier: 1.75.0
version: 1.75.0
'@stylistic/eslint-plugin':
specifier: 5.10.0
- version: 5.10.0(eslint@10.7.0)
+ version: 5.10.0(eslint@10.8.0)
'@types/babel__preset-env':
specifier: 7.10.0
version: 7.10.0
@@ -358,10 +358,10 @@ importers:
version: 2.16.1
'@typescript-eslint/eslint-plugin':
specifier: 8.65.0
- version: 8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ version: 8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0)
'@typescript-eslint/parser':
specifier: 8.65.0
- version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
'@vercel/nft':
specifier: 1.10.2
version: 1.10.2(rollup@4.62.2)
@@ -375,26 +375,26 @@ importers:
specifier: 6.0.1
version: 6.0.1
eslint:
- specifier: 10.7.0
- version: 10.7.0
+ specifier: 10.8.0
+ version: 10.8.0
eslint-nibble:
specifier: 9.1.1
- version: 9.1.1(@types/node@26.1.1)(eslint@10.7.0)
+ version: 9.1.1(@types/node@26.1.1)(eslint@10.8.0)
eslint-plugin-n:
specifier: 18.2.2
- version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ version: 18.2.2(@typescript/typescript6@6.0.2)(eslint@10.8.0)
eslint-plugin-regexp:
specifier: 3.1.1
- version: 3.1.1(eslint@10.7.0)
+ version: 3.1.1(eslint@10.8.0)
eslint-plugin-simple-import-sort:
specifier: 14.0.0
- version: 14.0.0(eslint@10.7.0)
+ version: 14.0.0(eslint@10.8.0)
eslint-plugin-unicorn:
specifier: 72.0.0
- version: 72.0.0(eslint@10.7.0)
+ version: 72.0.0(eslint@10.8.0)
eslint-plugin-yml:
specifier: 3.6.0
- version: 3.6.0(eslint@10.7.0)
+ version: 3.6.0(eslint@10.8.0)
fast-string-width:
specifier: 3.0.2
version: 3.0.2
@@ -1024,6 +1024,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@eslint-community/eslint-utils@4.10.1':
+ resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
'@eslint-community/eslint-utils@4.9.1':
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1038,8 +1044,8 @@ packages:
resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@eslint/config-helpers@0.6.0':
- resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==}
+ '@eslint/config-helpers@0.7.0':
+ resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/core@1.2.1':
@@ -3346,9 +3352,9 @@ packages:
brace-expansion@2.1.2:
resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==}
- brace-expansion@5.0.7:
- resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==}
- engines: {node: 18 || 20 || >=22}
+ brace-expansion@5.0.8:
+ resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==}
+ engines: {node: 20 || >=22}
browserslist@4.28.6:
resolution: {integrity: sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==}
@@ -3698,7 +3704,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.51:
@@ -3954,8 +3960,8 @@ packages:
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- eslint@10.7.0:
- resolution: {integrity: sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==}
+ eslint@10.8.0:
+ resolution: {integrity: sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
@@ -4092,8 +4098,8 @@ packages:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
- flatted@3.4.2:
- resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
+ flatted@3.4.3:
+ resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==}
fn.name@1.1.0:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
@@ -6914,9 +6920,14 @@ snapshots:
'@esbuild/win32-x64@0.28.1':
optional: true
- '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0)':
+ '@eslint-community/eslint-utils@4.10.1(eslint@10.8.0)':
+ dependencies:
+ eslint: 10.8.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.8.0)':
dependencies:
- eslint: 10.7.0
+ eslint: 10.8.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
@@ -6929,7 +6940,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.6.0':
+ '@eslint/config-helpers@0.7.0':
dependencies:
'@eslint/core': 1.2.1
@@ -6956,9 +6967,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@10.0.1(eslint@10.7.0)':
+ '@eslint/js@10.0.1(eslint@10.8.0)':
optionalDependencies:
- eslint: 10.7.0
+ eslint: 10.8.0
'@eslint/object-schema@3.0.5': {}
@@ -8119,11 +8130,11 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.7.0)':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.8.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0)
'@typescript-eslint/types': 8.63.0
- eslint: 10.7.0
+ eslint: 10.8.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -8291,15 +8302,15 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0))(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
'@typescript-eslint/scope-manager': 8.65.0
- '@typescript-eslint/type-utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
- '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/type-utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
+ '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
'@typescript-eslint/visitor-keys': 8.65.0
- eslint: 10.7.0
+ eslint: 10.8.0
ignore: 7.0.6
natural-compare: 1.4.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
@@ -8307,14 +8318,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)':
dependencies:
'@typescript-eslint/scope-manager': 8.65.0
'@typescript-eslint/types': 8.65.0
'@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
'@typescript-eslint/visitor-keys': 8.65.0
debug: 4.4.3
- eslint: 10.7.0
+ eslint: 10.8.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -8337,13 +8348,13 @@ snapshots:
dependencies:
typescript: '@typescript/typescript6@6.0.2'
- '@typescript-eslint/type-utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/type-utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)':
dependencies:
'@typescript-eslint/types': 8.65.0
'@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
- '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)
+ '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
debug: 4.4.3
- eslint: 10.7.0
+ eslint: 10.8.0
ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2)
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
@@ -8368,13 +8379,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.7.0)':
+ '@typescript-eslint/utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0)
'@typescript-eslint/scope-manager': 8.65.0
'@typescript-eslint/types': 8.65.0
'@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)
- eslint: 10.7.0
+ eslint: 10.8.0
typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- supports-color
@@ -8728,7 +8739,7 @@ snapshots:
dependencies:
balanced-match: 1.0.2
- brace-expansion@5.0.7:
+ brace-expansion@5.0.8:
dependencies:
balanced-match: 4.0.4
@@ -9264,43 +9275,43 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-compat-utils@0.5.1(eslint@10.7.0):
+ eslint-compat-utils@0.5.1(eslint@10.8.0):
dependencies:
- eslint: 10.7.0
+ eslint: 10.8.0
semver: 7.8.5
- eslint-filtered-fix@0.3.0(eslint@10.7.0):
+ eslint-filtered-fix@0.3.0(eslint@10.8.0):
dependencies:
- eslint: 10.7.0
+ eslint: 10.8.0
optionator: 0.9.4
- eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.7.0):
+ eslint-nibble@9.1.1(@types/node@26.1.1)(eslint@10.8.0):
dependencies:
'@babel/code-frame': 7.29.7
'@inquirer/checkbox': 4.3.2(@types/node@26.1.1)
'@inquirer/confirm': 5.1.21(@types/node@26.1.1)
'@inquirer/select': 4.4.2(@types/node@26.1.1)
- eslint: 10.7.0
- eslint-filtered-fix: 0.3.0(eslint@10.7.0)
+ eslint: 10.8.0
+ eslint-filtered-fix: 0.3.0(eslint@10.8.0)
optionator: 0.9.4
text-table: 0.2.0
yoctocolors: 2.1.2
transitivePeerDependencies:
- '@types/node'
- eslint-plugin-es-x@7.8.0(eslint@10.7.0):
+ eslint-plugin-es-x@7.8.0(eslint@10.8.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0)
'@eslint-community/regexpp': 4.12.2
- eslint: 10.7.0
- eslint-compat-utils: 0.5.1(eslint@10.7.0)
+ eslint: 10.8.0
+ eslint-compat-utils: 0.5.1(eslint@10.8.0)
- eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.7.0):
+ eslint-plugin-n@18.2.2(@typescript/typescript6@6.0.2)(eslint@10.8.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0)
enhanced-resolve: 5.24.2
- eslint: 10.7.0
- eslint-plugin-es-x: 7.8.0(eslint@10.7.0)
+ eslint: 10.8.0
+ eslint-plugin-es-x: 7.8.0(eslint@10.8.0)
get-tsconfig: 4.14.0
globals: 15.15.0
globrex: 0.1.2
@@ -9309,24 +9320,24 @@ snapshots:
optionalDependencies:
typescript: '@typescript/typescript6@6.0.2'
- eslint-plugin-regexp@3.1.1(eslint@10.7.0):
+ eslint-plugin-regexp@3.1.1(eslint@10.8.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0)
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.7
- eslint: 10.7.0
+ eslint: 10.8.0
jsdoc-type-pratt-parser: 7.2.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-simple-import-sort@14.0.0(eslint@10.7.0):
+ eslint-plugin-simple-import-sort@14.0.0(eslint@10.8.0):
dependencies:
- eslint: 10.7.0
+ eslint: 10.8.0
- eslint-plugin-unicorn@72.0.0(eslint@10.7.0):
+ eslint-plugin-unicorn@72.0.0(eslint@10.8.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0)
'@eslint/css-tree': 4.0.4
browserslist: 4.28.6
change-case: 5.4.4
@@ -9334,7 +9345,7 @@ snapshots:
core-js-compat: 3.49.0
detect-indent: 7.0.2
entities: 4.5.0
- eslint: 10.7.0
+ eslint: 10.8.0
find-up-simple: 1.0.1
globals: 17.7.0
indent-string: 5.0.0
@@ -9348,14 +9359,14 @@ snapshots:
strip-indent: 4.1.1
yaml: 2.9.0
- eslint-plugin-yml@3.6.0(eslint@10.7.0):
+ eslint-plugin-yml@3.6.0(eslint@10.8.0):
dependencies:
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.7.2
'@ota-meshi/ast-token-store': 0.3.0
diff-sequences: 29.6.3
escape-string-regexp: 5.0.0
- eslint: 10.7.0
+ eslint: 10.8.0
natural-compare: 1.4.0
yaml-eslint-parser: 2.1.0
@@ -9372,12 +9383,12 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.7.0:
+ eslint@10.8.0:
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0)
+ '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0)
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
- '@eslint/config-helpers': 0.6.0
+ '@eslint/config-helpers': 0.7.0
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.7.2
'@humanfs/node': 0.16.8
@@ -9532,10 +9543,10 @@ snapshots:
flat-cache@4.0.1:
dependencies:
- flatted: 3.4.2
+ flatted: 3.4.3
keyv: 4.5.4
- flatted@3.4.2: {}
+ flatted@3.4.3: {}
fn.name@1.1.0: {}
@@ -10664,7 +10675,7 @@ snapshots:
minimatch@10.2.5:
dependencies:
- brace-expansion: 5.0.7
+ brace-expansion: 5.0.8
minimatch@3.1.5:
dependencies:
From c0825f01dd4b373322fb187953a205b585795545 Mon Sep 17 00:00:00 2001
From: Sryvkver <20717854+Sryvkver@users.noreply.github.com>
Date: Sat, 25 Jul 2026 15:47:57 +0200
Subject: [PATCH 422/670] fix(route/fanbox) Update PostListResponse model to
conform to new API response (#22828)
Co-authored-by: Sryvkver
---
lib/routes/fanbox/index.ts | 2 +-
lib/routes/fanbox/types.ts | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/routes/fanbox/index.ts b/lib/routes/fanbox/index.ts
index 4e8a0d4855d2..206ec22afd48 100644
--- a/lib/routes/fanbox/index.ts
+++ b/lib/routes/fanbox/index.ts
@@ -81,7 +81,7 @@ async function handler(ctx: Context): Promise {
let items: DataItem[];
try {
- items = await Promise.all(postListResponse.body.map((i) => parseItem(page, i)));
+ items = await Promise.all(postListResponse.body.posts.map((i) => parseItem(page, i)));
} finally {
await page.close();
await context.close();
diff --git a/lib/routes/fanbox/types.ts b/lib/routes/fanbox/types.ts
index 774843c3963d..bdcc5263617f 100644
--- a/lib/routes/fanbox/types.ts
+++ b/lib/routes/fanbox/types.ts
@@ -25,7 +25,9 @@ export interface UserInfoResponse {
}
export interface PostListResponse {
- body: PostItem[];
+ body: {
+ posts: PostItem[];
+ };
}
export interface PostDetailResponse {
From a1e16cce7dd81cff0c1b01f8872d872f2dc84e64 Mon Sep 17 00:00:00 2001
From: TonyRL
Date: Sun, 26 Jul 2026 11:02:53 +0800
Subject: [PATCH 423/670] chore: add effort support
---
.github/workflows/lint.yml | 3 +--
.github/workflows/pr-review.yml | 1 +
.github/workflows/similar-issues.yml | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 3fbe334b8b0e..ce07aa9cbce0 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -141,7 +141,6 @@ jobs:
exempt-label: exempt
failure-add-pr-labels: spam
failure-pr-message: |
- Thanks for the contribution. This PR was automatically closed because
- it matched multiple low-quality/spam signals.
+ Thanks for the contribution. This PR was automatically closed because it matched multiple low-quality/spam signals.
lock-pr: false
max-changed-lines: 1000
diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml
index 93e7f6df66a8..dc072fed2ed8 100644
--- a/.github/workflows/pr-review.yml
+++ b/.github/workflows/pr-review.yml
@@ -90,6 +90,7 @@ jobs:
display_report: 'true'
claude_args: |
--model ${{ vars.OPENCODE_MODEL }}
+ ${{ vars.CLAUDE_EFFORT && format('--effort {0}', vars.CLAUDE_EFFORT) || '' }}
--allowedTools "Bash(base64:*),Bash(cat:*),Bash(echo:*),Bash(gh api:*),Bash(gh auth:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh repo view:*),Bash(gh search:*),Bash(git diff:*),Bash(git log:*),Bash(git show:*),Bash(git status:*),Bash(grep:*),Bash(head:*),Bash(ls:*),Bash(rg:*),Bash(sed:*),Bash(tail:*),Bash(wc:*),${{ github.event_name == 'workflow_dispatch' && 'WebFetch,WebSearch' || 'WebFetch(domain:docs.rsshub.app)' }}"
${{ github.event_name != 'workflow_dispatch' && '--disallowedTools "WebSearch"' || '' }}
prompt: |
diff --git a/.github/workflows/similar-issues.yml b/.github/workflows/similar-issues.yml
index 14e95701d0c8..3cab40d9d67a 100644
--- a/.github/workflows/similar-issues.yml
+++ b/.github/workflows/similar-issues.yml
@@ -32,6 +32,7 @@ jobs:
allowed_non_write_users: '*'
claude_args: |
--model ${{ vars.OPENCODE_MODEL }}
+ ${{ vars.CLAUDE_EFFORT && format('--effort {0}', vars.CLAUDE_EFFORT) || '' }}
--allowedTools "Bash(gh issue:*)"
--disallowedTools "WebFetch,WebSearch"
prompt: |
From 5d6338ee344ccc1d986d059f9e41c8b9e6ec0c33 Mon Sep 17 00:00:00 2001
From: Tim
Date: Sun, 26 Jul 2026 21:38:01 +0800
Subject: [PATCH 424/670] feat(route): add Forward Future routes (daily
newsletter + originals) (#22827)
* feat: add Forward Future routes (daily newsletter + originals)
* feat(route): add lang
* feat: add cache.tryGet to Forward Future routes
* fix: address review feedback - remove cache.tryGet from list requests, use JSON.parse for unescaping, fix description/pubDate/extraction
---
lib/routes/forwardfuture/daily.ts | 58 ++++++++++++
lib/routes/forwardfuture/namespace.ts | 7 ++
lib/routes/forwardfuture/originals.ts | 122 ++++++++++++++++++++++++++
3 files changed, 187 insertions(+)
create mode 100644 lib/routes/forwardfuture/daily.ts
create mode 100644 lib/routes/forwardfuture/namespace.ts
create mode 100644 lib/routes/forwardfuture/originals.ts
diff --git a/lib/routes/forwardfuture/daily.ts b/lib/routes/forwardfuture/daily.ts
new file mode 100644
index 000000000000..a4449367d2c0
--- /dev/null
+++ b/lib/routes/forwardfuture/daily.ts
@@ -0,0 +1,58 @@
+import type { Context } from 'hono';
+
+import type { Data, DataItem, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+interface NewsletterPost {
+ title: string;
+ summary: string;
+ url: string;
+ date: string;
+ thumbnail: string;
+ bodyPreview: string;
+ author: string;
+}
+
+interface NewsletterResponse {
+ posts: NewsletterPost[];
+}
+
+export const route: Route = {
+ name: 'Daily Newsletter',
+ categories: ['other'],
+ path: '/daily',
+ example: '/forwardfuture/daily',
+ radar: [
+ {
+ source: ['forwardfuture.com/newsletter/daily', 'forwardfuture.com/'],
+ },
+ ],
+ handler,
+ maintainers: ['ovo-Tim'],
+ description: 'Daily AI newsletter from Forward Future.',
+};
+
+async function handler(ctx: Context): Promise {
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 30;
+
+ const response = await ofetch('https://forwardfuture.com/api/newsletter');
+ const posts = response.posts.slice(0, limit);
+
+ const items: DataItem[] = posts.map((post) => ({
+ title: post.title,
+ description: post.summary,
+ link: `https://forwardfuture.com${post.url}`,
+ pubDate: parseDate(post.date, 'MMM D, YYYY'),
+ author: post.author,
+ image: post.thumbnail,
+ }));
+
+ return {
+ title: 'Forward Future - Daily Newsletter',
+ link: 'https://forwardfuture.com/newsletter/daily',
+ description: "The Future Today - Forward Future's free daily AI newsletter.",
+ item: items,
+ image: 'https://forwardfuture.com/images/logos/ff-icon.svg',
+ };
+}
diff --git a/lib/routes/forwardfuture/namespace.ts b/lib/routes/forwardfuture/namespace.ts
new file mode 100644
index 000000000000..42f3739337f8
--- /dev/null
+++ b/lib/routes/forwardfuture/namespace.ts
@@ -0,0 +1,7 @@
+import type { Namespace } from '@/types';
+
+export const namespace: Namespace = {
+ name: 'Forward Future',
+ url: 'forwardfuture.com',
+ lang: 'en',
+};
diff --git a/lib/routes/forwardfuture/originals.ts b/lib/routes/forwardfuture/originals.ts
new file mode 100644
index 000000000000..0cb11ebc8e5b
--- /dev/null
+++ b/lib/routes/forwardfuture/originals.ts
@@ -0,0 +1,122 @@
+import type { Context } from 'hono';
+
+import type { Data, DataItem, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+interface OriginalPost {
+ id: string;
+ title: string;
+ summary: string;
+ url: string;
+ date: string;
+ dateUnix: number;
+ thumbnail: string;
+ authors: string[];
+ category: string;
+ categories: string[];
+}
+
+function extractPostsArray(rscPayload: string): OriginalPost[] | null {
+ let searchStart = 0;
+ while (searchStart < rscPayload.length) {
+ const postsIdx = rscPayload.indexOf('"posts":', searchStart);
+ if (postsIdx === -1) {
+ return null;
+ }
+
+ const arrayStart = postsIdx + '"posts":'.length;
+ if (rscPayload[arrayStart] !== '[') {
+ searchStart = arrayStart;
+ continue;
+ }
+
+ let depth = 0;
+ let inString = false;
+ let escape = false;
+ let i = arrayStart;
+ for (; i < rscPayload.length; i++) {
+ const c = rscPayload[i];
+ if (escape) {
+ escape = false;
+ } else if (c === '\\' && inString) {
+ escape = true;
+ } else if (c === '"' && !escape) {
+ inString = !inString;
+ } else if (!inString) {
+ if (c === '[') {
+ depth++;
+ } else if (c === ']') {
+ depth--;
+ if (depth === 0) {
+ return JSON.parse(rscPayload.slice(arrayStart, i + 1)) as OriginalPost[];
+ }
+ }
+ }
+ }
+
+ searchStart = arrayStart + 1;
+ }
+ return null;
+}
+
+export const route: Route = {
+ name: 'Originals',
+ categories: ['other'],
+ path: '/originals',
+ example: '/forwardfuture/originals',
+ radar: [
+ {
+ source: ['forwardfuture.com/originals', 'forwardfuture.com/'],
+ },
+ ],
+ handler,
+ maintainers: ['ovo-Tim'],
+ description: 'Original essays, columns, and analysis on AI from Forward Future contributors.',
+};
+
+async function handler(ctx: Context): Promise {
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 30;
+
+ const html = await ofetch('https://forwardfuture.com/originals');
+
+ const pushRegex = /__next_f\.push\(\[1,"((?:[^"\\]|\\.)*)"\]\)/g;
+ let match: RegExpExecArray | null;
+ let posts: OriginalPost[] = [];
+
+ while ((match = pushRegex.exec(html)) !== null) {
+ const payload = match[1];
+ if (!payload.includes('posts')) {
+ continue;
+ }
+
+ const decoded = JSON.parse(`"${payload}"`);
+ const extracted = extractPostsArray(decoded);
+ if (extracted) {
+ posts = extracted;
+ break;
+ }
+ }
+
+ if (posts.length === 0) {
+ throw new Error('Failed to extract posts from the Next.js RSC payload');
+ }
+
+ const items: DataItem[] = posts.slice(0, limit).map((post) => ({
+ title: post.title,
+ description: post.summary || undefined,
+ link: post.url,
+ pubDate: parseDate(post.dateUnix, 'X'),
+ author: post.authors.join(', '),
+ image: post.thumbnail,
+ category: post.categories.length > 0 ? post.categories : post.category === 'General' ? undefined : [post.category],
+ }));
+
+ return {
+ title: 'Forward Future - Originals',
+ link: 'https://forwardfuture.com/originals',
+ description: 'Original essays, columns, and analysis on AI from Forward Future contributors.',
+ item: items,
+ image: 'https://forwardfuture.com/images/logos/ff-icon.svg',
+ };
+}
From 1399af82966dacd64052335f15425b804d68e78f Mon Sep 17 00:00:00 2001
From: Ethan Shen <42264778+nczitzk@users.noreply.github.com>
Date: Sun, 26 Jul 2026 22:17:00 +0800
Subject: [PATCH 425/670] =?UTF-8?q?fix(route):=20=E8=81=94=E5=90=88?=
=?UTF-8?q?=E8=B5=84=E4=BF=A1=E8=AF=84=E4=BC=B0=E8=82=A1=E4=BB=BD=E6=9C=89?=
=?UTF-8?q?=E9=99=90=E5=85=AC=E5=8F=B8=E7=A0=94=E7=A9=B6=E6=8A=A5=E5=91=8A?=
=?UTF-8?q?=20(#22835)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/routes/lhratings/research.ts | 63 +++++++++++++++-----------------
1 file changed, 29 insertions(+), 34 deletions(-)
diff --git a/lib/routes/lhratings/research.ts b/lib/routes/lhratings/research.ts
index ed0ad5a78882..df23675ebe72 100644
--- a/lib/routes/lhratings/research.ts
+++ b/lib/routes/lhratings/research.ts
@@ -9,29 +9,29 @@ import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
export const handler = async (ctx: Context): Promise => {
- const { type = '1' } = ctx.req.param();
+ const { type = '92' } = ctx.req.param();
const limit = Number(ctx.req.query('limit') ?? '20');
const baseUrl = 'https://www.lhratings.com';
- const targetUrl: string = new URL(`research.html?type=${type}`, baseUrl).href;
+ const targetUrl: string = new URL(`lists/${type}.html`, baseUrl).href;
const response = await ofetch(targetUrl);
const $: CheerioAPI = load(response);
const language = $('html').attr('lang') ?? 'zh-CN';
- const items: DataItem[] = $('table.list-table tbody tr')
+ const items: DataItem[] = $('div.xlistNr ul li a')
.slice(0, limit)
.toArray()
.map((el): Element => {
const $el: Cheerio = $(el);
const $aEl: Cheerio = $el.find('a').first();
- const title: string = $aEl.text();
- const pubDateStr: string | undefined = $aEl.parent().next().next().text();
- const linkUrl: string | undefined = $aEl.attr('href');
- const categoryEls: Element[] = [$aEl.parent().next()].filter(Boolean);
+ const title: string = $el.find('h2').text();
+ const pubDateStr: string | undefined = $el.find('p').text().split(':', 2)[1]?.trim();
+ const linkUrl: string | undefined = $aEl.attr('href') ? new URL($aEl.attr('href') ?? '', baseUrl).href : undefined;
+ const categoryEls: Array> = [$el.find('h3').contents()].filter(Boolean);
const categories: string[] = [...new Set(categoryEls.map((el) => $(el).text()).filter(Boolean))];
- const image: string | undefined = $el.find('img').attr('src');
+ const image: string | undefined = $el.find('div.xylist_img img').attr('src') ? new URL($el.find('div.xylist_img img').attr('src') ?? '', baseUrl).href : undefined;
const upDatedStr: string | undefined = pubDateStr;
let processedItem: DataItem = {
@@ -59,15 +59,15 @@ export const handler = async (ctx: Context): Promise => {
return processedItem;
});
- const author: string = $('title').text();
+ const author = '联合资信评估股份有限公司';
return {
- title: `${author} - ${$('li.active').text()}`,
+ title: `${author} - ${$('title').text()}`,
description: $('li.active').text(),
link: targetUrl,
item: items,
allowEmpty: true,
- image: $('a#logo img').attr('src'),
+ image: $('h1.logo a img').attr('src') ? new URL($('h1.logo a img').attr('src') ?? '', baseUrl).href : undefined,
author,
language,
id: targetUrl,
@@ -80,17 +80,17 @@ export const route: Route = {
url: 'www.lhratings.com',
maintainers: ['nczitzk'],
handler,
- example: '/lhratings/research/1',
+ example: '/lhratings/research/92',
parameters: {
- type: '分类,默认为 `1`,即宏观经济,可在对应分类页 URL 中找到',
+ type: '分类,默认为 `92`,即宏观经济,可在对应分类页 URL 中找到',
},
description: `::: tip
-若订阅 [宏观经济](https://www.lhratings.com/research.html?type=1),网址为 \`https://www.lhratings.com/research.html?type=1\`,请截取 \`https://www.lhratings.com/research.html?type=\` 到末尾的部分 \`1\` 作为 \`type\` 参数填入,此时目标路由为 [\`/lhratings/research/1\`](https://rsshub.app/lhratings/research/1)。
+若订阅 [宏观经济](https://www.lhratings.com/research.html?type=92),网址为 \`https://www.lhratings.com/research.html?type=92\`,请截取 \`https://www.lhratings.com/research.html?type=\` 到末尾的部分 \`92\` 作为 \`type\` 参数填入,此时目标路由为 [\`/lhratings/research/92\`](https://rsshub.app/lhratings/research/92)。
:::
-| 宏观经济 | 债券市场 | 行业研究 | 评级理论与方法 | 国际债券市场与评级 | 评级表现 |
-| -------- | -------- | -------- | -------------- | ------------------ | -------- |
-| 1 | 2 | 3 | 4 | 5 | 6 |`,
+| 宏观经济 | 债券市场 | 行业研究 | 每日资讯 | 其他 |
+| -------- | -------- | -------- | -------- | ---- |
+| 92 | 93 | 94 | 95 | 96 |`,
categories: ['finance'],
features: {
requireConfig: false,
@@ -113,33 +113,28 @@ export const route: Route = {
},
{
title: '宏观经济',
- source: ['www.lhratings.com/research.html?type=1'],
- target: '/research/1',
+ source: ['www.lhratings.com/research.html?type=92'],
+ target: '/research/92',
},
{
title: '债券市场',
- source: ['www.lhratings.com/research.html?type=2'],
- target: '/research/2',
+ source: ['www.lhratings.com/research.html?type=93'],
+ target: '/research/93',
},
{
title: '行业研究',
- source: ['www.lhratings.com/research.html?type=3'],
- target: '/research/3',
+ source: ['www.lhratings.com/research.html?type=94'],
+ target: '/research/94',
},
{
- title: '评级理论与方法',
- source: ['www.lhratings.com/research.html?type=4'],
- target: '/research/4',
+ title: '每日资讯',
+ source: ['www.lhratings.com/research.html?type=95'],
+ target: '/research/95',
},
{
- title: '国际债券市场与评级',
- source: ['www.lhratings.com/research.html?type=5'],
- target: '/research/5',
- },
- {
- title: '评级表现',
- source: ['www.lhratings.com/research.html?type=6'],
- target: '/research/6',
+ title: '其他',
+ source: ['www.lhratings.com/research.html?type=96'],
+ target: '/research/96',
},
],
view: ViewType.Articles,
From 29147419b5d76932f72e8ec47c323e52bc507155 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 08:08:06 +0000
Subject: [PATCH 426/670] chore(deps): bump docker/login-action from 4.5.0 to
4.5.1 (#22839)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/06fb636fac595d6fb4b28a5dfcb21a6f5091859c...abd2ef45e78c5afb21d64d4ca52ee8550d9572c7)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: 4.5.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/docker-release.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
index aaf87ab448d5..acfec3b54d01 100644
--- a/.github/workflows/docker-release.yml
+++ b/.github/workflows/docker-release.yml
@@ -74,13 +74,13 @@ jobs:
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Log in to Docker Hub
- uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
+ uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4.5.1
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
- uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
+ uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4.5.1
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -207,13 +207,13 @@ jobs:
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Log in to Docker Hub
- uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
+ uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4.5.1
with:
username: ${{ vars.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
- uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
+ uses: docker/login-action@abd2ef45e78c5afb21d64d4ca52ee8550d9572c7 # v4.5.1
with:
registry: ghcr.io
username: ${{ github.actor }}
From e3501b6321d6516ae889756a02e8af9125aa36b1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 08:19:04 +0000
Subject: [PATCH 427/670] chore(deps): bump @hono/node-server from 2.0.11 to
2.0.12 (#22842)
Bumps [@hono/node-server](https://github.com/honojs/node-server) from 2.0.11 to 2.0.12.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](https://github.com/honojs/node-server/compare/v2.0.11...v2.0.12)
---
updated-dependencies:
- dependency-name: "@hono/node-server"
dependency-version: 2.0.12
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 230 ++++++++++++++++++++++++-------------------------
2 files changed, 116 insertions(+), 116 deletions(-)
diff --git a/package.json b/package.json
index fbab5587412a..be6c65edbccb 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.15.3",
- "@hono/node-server": "2.0.11",
+ "@hono/node-server": "2.0.12",
"@hono/zod-openapi": "1.5.1",
"@jocmp/mercury-parser": "3.0.9",
"@notionhq/client": "5.23.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 950c1e708b83..93ef36738247 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,8 +47,8 @@ importers:
specifier: 6.15.3
version: 6.15.3
'@hono/node-server':
- specifier: 2.0.11
- version: 2.0.11(hono@4.12.32)
+ specifier: 2.0.12
+ version: 2.0.12(hono@4.12.32)
'@hono/zod-openapi':
specifier: 1.5.1
version: 1.5.1(hono@4.12.32)(zod@4.4.3)
@@ -364,7 +364,7 @@ importers:
version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0)
'@vercel/nft':
specifier: 1.10.2
- version: 1.10.2(rollup@4.62.2)
+ version: 1.10.2(rollup@4.62.3)
'@vitest/coverage-v8':
specifier: 4.1.10
version: 4.1.10(vitest@4.1.10)
@@ -1099,8 +1099,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- '@hono/node-server@2.0.11':
- resolution: {integrity: sha512-bjD221KPLoJTWUwso1J6fGKiTXEUFedG/s0visavY4zakFPkeGURMRNly+FhBHs7T8Dz4qHaZIMX9ZoJHSJtKA==}
+ '@hono/node-server@2.0.12':
+ resolution: {integrity: sha512-eWpQYr67tqJLeaSUl0Q+TquuYfUdTibpOJlUMV2FfUP7+KqCC5TufnwnlXL6mobZBJbGAYRd7ZvEBDCbLInjhg==}
engines: {node: '>=20'}
peerDependencies:
hono: ^4
@@ -2420,141 +2420,141 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.62.2':
- resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ '@rollup/rollup-android-arm-eabi@4.62.3':
+ resolution: {integrity: sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.62.2':
- resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ '@rollup/rollup-android-arm64@4.62.3':
+ resolution: {integrity: sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.62.2':
- resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ '@rollup/rollup-darwin-arm64@4.62.3':
+ resolution: {integrity: sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.62.2':
- resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ '@rollup/rollup-darwin-x64@4.62.3':
+ resolution: {integrity: sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.62.2':
- resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
+ '@rollup/rollup-freebsd-arm64@4.62.3':
+ resolution: {integrity: sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.62.2':
- resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ '@rollup/rollup-freebsd-x64@4.62.3':
+ resolution: {integrity: sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
- resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.3':
+ resolution: {integrity: sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
- resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
+ '@rollup/rollup-linux-arm-musleabihf@4.62.3':
+ resolution: {integrity: sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
- resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
+ '@rollup/rollup-linux-arm64-gnu@4.62.3':
+ resolution: {integrity: sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.62.2':
- resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
+ '@rollup/rollup-linux-arm64-musl@4.62.3':
+ resolution: {integrity: sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
- resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
+ '@rollup/rollup-linux-loong64-gnu@4.62.3':
+ resolution: {integrity: sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==}
cpu: [loong64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-loong64-musl@4.62.2':
- resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
+ '@rollup/rollup-linux-loong64-musl@4.62.3':
+ resolution: {integrity: sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==}
cpu: [loong64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
- resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
+ '@rollup/rollup-linux-ppc64-gnu@4.62.3':
+ resolution: {integrity: sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
- resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
+ '@rollup/rollup-linux-ppc64-musl@4.62.3':
+ resolution: {integrity: sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==}
cpu: [ppc64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
- resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.62.3':
+ resolution: {integrity: sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
- resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
+ '@rollup/rollup-linux-riscv64-musl@4.62.3':
+ resolution: {integrity: sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
- resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
+ '@rollup/rollup-linux-s390x-gnu@4.62.3':
+ resolution: {integrity: sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.62.2':
- resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
+ '@rollup/rollup-linux-x64-gnu@4.62.3':
+ resolution: {integrity: sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.62.2':
- resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
+ '@rollup/rollup-linux-x64-musl@4.62.3':
+ resolution: {integrity: sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.62.2':
- resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
+ '@rollup/rollup-openbsd-x64@4.62.3':
+ resolution: {integrity: sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.62.2':
- resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
+ '@rollup/rollup-openharmony-arm64@4.62.3':
+ resolution: {integrity: sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
- resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
+ '@rollup/rollup-win32-arm64-msvc@4.62.3':
+ resolution: {integrity: sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
- resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
+ '@rollup/rollup-win32-ia32-msvc@4.62.3':
+ resolution: {integrity: sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.62.2':
- resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
+ '@rollup/rollup-win32-x64-gnu@4.62.3':
+ resolution: {integrity: sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.62.2':
- resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
+ '@rollup/rollup-win32-x64-msvc@4.62.3':
+ resolution: {integrity: sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==}
cpu: [x64]
os: [win32]
@@ -3704,7 +3704,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
difflib@https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed:
- resolution: {gitHosted: true, tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
+ resolution: {tarball: https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed}
version: 0.2.6
discord-api-types@0.38.51:
@@ -5608,8 +5608,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rollup@4.62.2:
- resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
+ rollup@4.62.3:
+ resolution: {integrity: sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -6999,7 +6999,7 @@ snapshots:
'@types/aws-lambda': 8.10.162
'@types/express': 5.0.6
- '@hono/node-server@2.0.11(hono@4.12.32)':
+ '@hono/node-server@2.0.12(hono@4.12.32)':
dependencies:
hono: 4.12.32
@@ -7930,87 +7930,87 @@ snapshots:
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/pluginutils@5.4.0(rollup@4.62.2)':
+ '@rollup/pluginutils@5.4.0(rollup@4.62.3)':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.5
optionalDependencies:
- rollup: 4.62.2
+ rollup: 4.62.3
- '@rollup/rollup-android-arm-eabi@4.62.2':
+ '@rollup/rollup-android-arm-eabi@4.62.3':
optional: true
- '@rollup/rollup-android-arm64@4.62.2':
+ '@rollup/rollup-android-arm64@4.62.3':
optional: true
- '@rollup/rollup-darwin-arm64@4.62.2':
+ '@rollup/rollup-darwin-arm64@4.62.3':
optional: true
- '@rollup/rollup-darwin-x64@4.62.2':
+ '@rollup/rollup-darwin-x64@4.62.3':
optional: true
- '@rollup/rollup-freebsd-arm64@4.62.2':
+ '@rollup/rollup-freebsd-arm64@4.62.3':
optional: true
- '@rollup/rollup-freebsd-x64@4.62.2':
+ '@rollup/rollup-freebsd-x64@4.62.3':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.3':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ '@rollup/rollup-linux-arm-musleabihf@4.62.3':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ '@rollup/rollup-linux-arm64-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.62.2':
+ '@rollup/rollup-linux-arm64-musl@4.62.3':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ '@rollup/rollup-linux-loong64-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.62.2':
+ '@rollup/rollup-linux-loong64-musl@4.62.3':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ '@rollup/rollup-linux-ppc64-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ '@rollup/rollup-linux-ppc64-musl@4.62.3':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ '@rollup/rollup-linux-riscv64-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.62.2':
+ '@rollup/rollup-linux-riscv64-musl@4.62.3':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.62.2':
+ '@rollup/rollup-linux-s390x-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.62.2':
+ '@rollup/rollup-linux-x64-gnu@4.62.3':
optional: true
- '@rollup/rollup-linux-x64-musl@4.62.2':
+ '@rollup/rollup-linux-x64-musl@4.62.3':
optional: true
- '@rollup/rollup-openbsd-x64@4.62.2':
+ '@rollup/rollup-openbsd-x64@4.62.3':
optional: true
- '@rollup/rollup-openharmony-arm64@4.62.2':
+ '@rollup/rollup-openharmony-arm64@4.62.3':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.62.2':
+ '@rollup/rollup-win32-arm64-msvc@4.62.3':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.62.2':
+ '@rollup/rollup-win32-ia32-msvc@4.62.3':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.62.2':
+ '@rollup/rollup-win32-x64-gnu@4.62.3':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.62.2':
+ '@rollup/rollup-win32-x64-msvc@4.62.3':
optional: true
'@rss3/api-core@0.0.25':
@@ -8459,10 +8459,10 @@ snapshots:
dependencies:
'@typescript/old': typescript@6.0.3
- '@vercel/nft@1.10.2(rollup@4.62.2)':
+ '@vercel/nft@1.10.2(rollup@4.62.3)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3
- '@rollup/pluginutils': 5.4.0(rollup@4.62.2)
+ '@rollup/pluginutils': 5.4.0(rollup@4.62.3)
acorn: 8.17.0
acorn-import-attributes: 1.9.5(acorn@8.17.0)
async-sema: 3.1.1
@@ -11421,35 +11421,35 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.2.0
'@rolldown/binding-win32-x64-msvc': 1.2.0
- rollup@4.62.2:
+ rollup@4.62.3:
dependencies:
'@types/estree': 1.0.9
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.62.2
- '@rollup/rollup-android-arm64': 4.62.2
- '@rollup/rollup-darwin-arm64': 4.62.2
- '@rollup/rollup-darwin-x64': 4.62.2
- '@rollup/rollup-freebsd-arm64': 4.62.2
- '@rollup/rollup-freebsd-x64': 4.62.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
- '@rollup/rollup-linux-arm-musleabihf': 4.62.2
- '@rollup/rollup-linux-arm64-gnu': 4.62.2
- '@rollup/rollup-linux-arm64-musl': 4.62.2
- '@rollup/rollup-linux-loong64-gnu': 4.62.2
- '@rollup/rollup-linux-loong64-musl': 4.62.2
- '@rollup/rollup-linux-ppc64-gnu': 4.62.2
- '@rollup/rollup-linux-ppc64-musl': 4.62.2
- '@rollup/rollup-linux-riscv64-gnu': 4.62.2
- '@rollup/rollup-linux-riscv64-musl': 4.62.2
- '@rollup/rollup-linux-s390x-gnu': 4.62.2
- '@rollup/rollup-linux-x64-gnu': 4.62.2
- '@rollup/rollup-linux-x64-musl': 4.62.2
- '@rollup/rollup-openbsd-x64': 4.62.2
- '@rollup/rollup-openharmony-arm64': 4.62.2
- '@rollup/rollup-win32-arm64-msvc': 4.62.2
- '@rollup/rollup-win32-ia32-msvc': 4.62.2
- '@rollup/rollup-win32-x64-gnu': 4.62.2
- '@rollup/rollup-win32-x64-msvc': 4.62.2
+ '@rollup/rollup-android-arm-eabi': 4.62.3
+ '@rollup/rollup-android-arm64': 4.62.3
+ '@rollup/rollup-darwin-arm64': 4.62.3
+ '@rollup/rollup-darwin-x64': 4.62.3
+ '@rollup/rollup-freebsd-arm64': 4.62.3
+ '@rollup/rollup-freebsd-x64': 4.62.3
+ '@rollup/rollup-linux-arm-gnueabihf': 4.62.3
+ '@rollup/rollup-linux-arm-musleabihf': 4.62.3
+ '@rollup/rollup-linux-arm64-gnu': 4.62.3
+ '@rollup/rollup-linux-arm64-musl': 4.62.3
+ '@rollup/rollup-linux-loong64-gnu': 4.62.3
+ '@rollup/rollup-linux-loong64-musl': 4.62.3
+ '@rollup/rollup-linux-ppc64-gnu': 4.62.3
+ '@rollup/rollup-linux-ppc64-musl': 4.62.3
+ '@rollup/rollup-linux-riscv64-gnu': 4.62.3
+ '@rollup/rollup-linux-riscv64-musl': 4.62.3
+ '@rollup/rollup-linux-s390x-gnu': 4.62.3
+ '@rollup/rollup-linux-x64-gnu': 4.62.3
+ '@rollup/rollup-linux-x64-musl': 4.62.3
+ '@rollup/rollup-openbsd-x64': 4.62.3
+ '@rollup/rollup-openharmony-arm64': 4.62.3
+ '@rollup/rollup-win32-arm64-msvc': 4.62.3
+ '@rollup/rollup-win32-ia32-msvc': 4.62.3
+ '@rollup/rollup-win32-x64-gnu': 4.62.3
+ '@rollup/rollup-win32-x64-msvc': 4.62.3
fsevents: 2.3.3
rss-parser@3.13.0(patch_hash=afac79a31a3db94c953d49680bc5528468f051957d461e913d2e2dbf5cd22a8d):
@@ -12059,7 +12059,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
postcss: 8.5.23
- rollup: 4.62.2
+ rollup: 4.62.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 26.1.1
From 4814bf513b3d0f30d49ea6ab119b0b7b91d01630 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 16:56:55 +0800
Subject: [PATCH 428/670] chore(deps-dev): bump @cloudflare/workers-types in
the cloudflare group (#22840)
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd).
Updates `@cloudflare/workers-types` from 5.20260724.1 to 5.20260727.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)
---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
dependency-version: 5.20260727.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: cloudflare
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index be6c65edbccb..58a285d609da 100644
--- a/package.json
+++ b/package.json
@@ -149,7 +149,7 @@
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.8",
- "@cloudflare/workers-types": "5.20260724.1",
+ "@cloudflare/workers-types": "5.20260727.1",
"@eslint/eslintrc": "3.3.6",
"@eslint/js": "10.0.1",
"@oxlint/plugins": "1.75.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 93ef36738247..9702728663dc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,10 +295,10 @@ importers:
version: 1.3.0
'@cloudflare/vitest-pool-workers':
specifier: 0.18.8
- version: 0.18.8(@cloudflare/workers-types@5.20260724.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
+ version: 0.18.8(@cloudflare/workers-types@5.20260727.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)
'@cloudflare/workers-types':
- specifier: 5.20260724.1
- version: 5.20260724.1
+ specifier: 5.20260727.1
+ version: 5.20260727.1
'@eslint/eslintrc':
specifier: 3.3.6
version: 3.3.6
@@ -472,7 +472,7 @@ importers:
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.114.0
- version: 4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ version: 4.114.0(@cloudflare/workers-types@5.20260727.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
yaml-eslint-parser:
specifier: 2.1.0
version: 2.1.0
@@ -641,8 +641,8 @@ packages:
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@5.20260724.1':
- resolution: {integrity: sha512-gl0brZ60JhkZU3INgr1jsxaFEiWf3AB9RsCjLTMwT5RKspWRUpsFd0wxwbys7gb8Ywkfq9tORhw0y9G+7bDUYw==}
+ '@cloudflare/workers-types@5.20260727.1':
+ resolution: {integrity: sha512-b/wT+LMZz0oELzxibww0ujFz5BD8NRz9WJ+xd+JNZJUMXgh8IHjpibKdGDvtkbotmihWUknP5tBPUU8KluLxxA==}
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
@@ -6665,7 +6665,7 @@ snapshots:
optionalDependencies:
workerd: 1.20260722.1
- '@cloudflare/vitest-pool-workers@0.18.8(@cloudflare/workers-types@5.20260724.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
+ '@cloudflare/vitest-pool-workers@0.18.8(@cloudflare/workers-types@5.20260727.1)(@vitest/runner@4.1.10)(@vitest/snapshot@4.1.10)(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vitest@4.1.10)':
dependencies:
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -6673,7 +6673,7 @@ snapshots:
esbuild: 0.28.1
miniflare: 4.20260722.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
- wrangler: 4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
+ wrangler: 4.114.0(@cloudflare/workers-types@5.20260727.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -6695,7 +6695,7 @@ snapshots:
'@cloudflare/workerd-windows-64@1.20260722.1':
optional: true
- '@cloudflare/workers-types@5.20260724.1': {}
+ '@cloudflare/workers-types@5.20260727.1': {}
'@colors/colors@1.6.0': {}
@@ -12181,7 +12181,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20260722.1
'@cloudflare/workerd-windows-64': 1.20260722.1
- wrangler@4.114.0(@cloudflare/workers-types@5.20260724.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
+ wrangler@4.114.0(@cloudflare/workers-types@5.20260727.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10):
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
'@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1)
@@ -12192,7 +12192,7 @@ snapshots:
unenv: 2.0.0-rc.24
workerd: 1.20260722.1
optionalDependencies:
- '@cloudflare/workers-types': 5.20260724.1
+ '@cloudflare/workers-types': 5.20260727.1
fsevents: 2.3.3
transitivePeerDependencies:
- bufferutil
From 9892409cbf30b587a4e4f9106b54f080a0331165 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 16:59:28 +0800
Subject: [PATCH 429/670] chore(deps-dev): bump @bbob/types from 4.3.1 to 4.4.0
(#22841)
Bumps [@bbob/types](https://github.com/JiLiZART/bbob) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/JiLiZART/bbob/releases)
- [Changelog](https://github.com/JiLiZART/BBob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JiLiZART/bbob/compare/@bbob/types@4.3.1...@bbob/types@4.4.0)
---
updated-dependencies:
- dependency-name: "@bbob/types"
dependency-version: 4.4.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index 58a285d609da..99bd670fd390 100644
--- a/package.json
+++ b/package.json
@@ -145,7 +145,7 @@
"devDependencies": {
"@actions/core": "3.0.1",
"@actions/github": "9.1.1",
- "@bbob/types": "4.3.1",
+ "@bbob/types": "4.4.0",
"@cloudflare/containers": "0.3.7",
"@cloudflare/playwright": "1.3.0",
"@cloudflare/vitest-pool-workers": "0.18.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9702728663dc..263d132e36f6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -285,8 +285,8 @@ importers:
specifier: 9.1.1
version: 9.1.1
'@bbob/types':
- specifier: 4.3.1
- version: 4.3.1
+ specifier: 4.4.0
+ version: 4.4.0
'@cloudflare/containers':
specifier: 0.3.7
version: 0.3.7
@@ -571,8 +571,8 @@ packages:
'@bbob/preset@4.3.1':
resolution: {integrity: sha512-we6ITgrwciNIdpZRRJl4y3OOEbXEEVA21895JUInvYXevZBrIgIAvO502qlEYQtqhJqQ1HxY5xyhDjZ9rEYQHg==}
- '@bbob/types@4.3.1':
- resolution: {integrity: sha512-TXxFPfKvZVH/sR0mfn5I99bEFmbnAzIoqFBxG1htRiKyJUx7Yb/ZNS/OsQD1mIsR6+srDqXFDaWbDgVudTTjvQ==}
+ '@bbob/types@4.4.0':
+ resolution: {integrity: sha512-d79ov/IQFW5gEAllrK48xqI/IDs6y31F4gXRUX3d7KYN+r6EaRsChjMgv0wPppZovUL2/eECFOe82sqAa0HF7g==}
'@bcoe/v8-coverage@1.0.2':
resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
@@ -6615,35 +6615,35 @@ snapshots:
dependencies:
'@bbob/parser': 4.3.1
'@bbob/plugin-helper': 4.3.1
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
'@bbob/html@4.3.1':
dependencies:
'@bbob/core': 4.3.1
'@bbob/plugin-helper': 4.3.1
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
'@bbob/parser@4.3.1':
dependencies:
'@bbob/plugin-helper': 4.3.1
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
'@bbob/plugin-helper@4.3.1':
dependencies:
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
'@bbob/preset-html5@4.3.1':
dependencies:
'@bbob/plugin-helper': 4.3.1
'@bbob/preset': 4.3.1
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
'@bbob/preset@4.3.1':
dependencies:
'@bbob/plugin-helper': 4.3.1
- '@bbob/types': 4.3.1
+ '@bbob/types': 4.4.0
- '@bbob/types@4.3.1': {}
+ '@bbob/types@4.4.0': {}
'@bcoe/v8-coverage@1.0.2': {}
From e586a4bb5b52d0c2c5ed2b879684769c933a6150 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:19:49 +0800
Subject: [PATCH 430/670] chore(deps-dev): bump globals from 17.7.0 to 17.8.0
(#22845)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.7.0 to 17.8.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0)
---
updated-dependencies:
- dependency-name: globals
dependency-version: 17.8.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 99bd670fd390..1a0b53466410 100644
--- a/package.json
+++ b/package.json
@@ -184,7 +184,7 @@
"eslint-plugin-yml": "3.6.0",
"fast-string-width": "3.0.2",
"fs-extra": "11.4.0",
- "globals": "17.7.0",
+ "globals": "17.8.0",
"husky": "9.1.7",
"js-beautify": "2.0.3",
"lint-staged": "17.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 263d132e36f6..038972b887ae 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -402,8 +402,8 @@ importers:
specifier: 11.4.0
version: 11.4.0
globals:
- specifier: 17.7.0
- version: 17.7.0
+ specifier: 17.8.0
+ version: 17.8.0
husky:
specifier: 9.1.7
version: 9.1.7
@@ -4203,8 +4203,8 @@ packages:
resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
engines: {node: '>=18'}
- globals@17.7.0:
- resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==}
+ globals@17.8.0:
+ resolution: {integrity: sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==}
engines: {node: '>=18'}
globrex@0.1.2:
@@ -9347,7 +9347,7 @@ snapshots:
entities: 4.5.0
eslint: 10.8.0
find-up-simple: 1.0.1
- globals: 17.7.0
+ globals: 17.8.0
indent-string: 5.0.0
is-builtin-module: 5.0.0
is-identifier: 1.1.0
@@ -9668,7 +9668,7 @@ snapshots:
globals@15.15.0: {}
- globals@17.7.0: {}
+ globals@17.8.0: {}
globrex@0.1.2: {}
From bcd9db638326b239fc9edc5de6cc09e562f8581b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:20:45 +0800
Subject: [PATCH 431/670] chore(deps): bump @bbob/plugin-helper from 4.3.1 to
4.4.0 (#22846)
Bumps [@bbob/plugin-helper](https://github.com/JiLiZART/bbob) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/JiLiZART/bbob/releases)
- [Changelog](https://github.com/JiLiZART/BBob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JiLiZART/bbob/compare/@bbob/plugin-helper@4.3.1...@bbob/plugin-helper@4.4.0)
---
updated-dependencies:
- dependency-name: "@bbob/plugin-helper"
dependency-version: 4.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 1a0b53466410..07a62b90ec7d 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
},
"dependencies": {
"@bbob/html": "4.3.1",
- "@bbob/plugin-helper": "4.3.1",
+ "@bbob/plugin-helper": "4.4.0",
"@bbob/preset-html5": "4.3.1",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.15.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 038972b887ae..ecfe3d97b44a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,8 +35,8 @@ importers:
specifier: 4.3.1
version: 4.3.1
'@bbob/plugin-helper':
- specifier: 4.3.1
- version: 4.3.1
+ specifier: 4.4.0
+ version: 4.4.0
'@bbob/preset-html5':
specifier: 4.3.1
version: 4.3.1
@@ -562,8 +562,8 @@ packages:
'@bbob/parser@4.3.1':
resolution: {integrity: sha512-BqDo8PDLcVLhFvOMdLmeaWk5qqD8E1bEdvzSJQuJC/U1XFs1tMC4lwZ4oPBFmZCeCLNsYFawqjP/S5MDdr7/Tg==}
- '@bbob/plugin-helper@4.3.1':
- resolution: {integrity: sha512-0gyhW5sU270iCBvaRO1jYDTs1oGHu913yB9tqxPO9zT5OIDhu47PwensdJ7EuZwgYKEyQ4zZZ+1jvDzkubjdyQ==}
+ '@bbob/plugin-helper@4.4.0':
+ resolution: {integrity: sha512-1X9El64z/g+4vMKx+CnLc2O1No/KqRRU4Ku1PLYN1CD6OmJk/T1sQ3dlLAzSjV6gzZ2fSa8/endhZpf2ULKBLA==}
'@bbob/preset-html5@4.3.1':
resolution: {integrity: sha512-6Yn8kOrBWt/2u4ZUt7nSTzWP+xvTaH4TlAds6p+BcBRbs4Ov2f1zkRgCh1JlckMXwhH9q9CGF0wn6w8bkUYcFA==}
@@ -6614,33 +6614,33 @@ snapshots:
'@bbob/core@4.3.1':
dependencies:
'@bbob/parser': 4.3.1
- '@bbob/plugin-helper': 4.3.1
+ '@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
'@bbob/html@4.3.1':
dependencies:
'@bbob/core': 4.3.1
- '@bbob/plugin-helper': 4.3.1
+ '@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
'@bbob/parser@4.3.1':
dependencies:
- '@bbob/plugin-helper': 4.3.1
+ '@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
- '@bbob/plugin-helper@4.3.1':
+ '@bbob/plugin-helper@4.4.0':
dependencies:
'@bbob/types': 4.4.0
'@bbob/preset-html5@4.3.1':
dependencies:
- '@bbob/plugin-helper': 4.3.1
+ '@bbob/plugin-helper': 4.4.0
'@bbob/preset': 4.3.1
'@bbob/types': 4.4.0
'@bbob/preset@4.3.1':
dependencies:
- '@bbob/plugin-helper': 4.3.1
+ '@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
'@bbob/types@4.4.0': {}
From 303ee883cfbc80c30a04765217094471c38f97e4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:23:28 +0800
Subject: [PATCH 432/670] chore(deps): bump nixpkgs from `e2587ca` to `624af66`
(#22848)
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `e2587ca` to `624af66`.
- [Commits](https://github.com/NixOS/nixpkgs/compare/e2587caef70cea85dd97d7daab492899902dbf5d...624af665418d3c65d544145b4d34ad696439570e)
---
updated-dependencies:
- dependency-name: nixpkgs
dependency-version: 624af665418d3c65d544145b4d34ad696439570e
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 63e4df494a8d..55f39994af33 100644
--- a/flake.lock
+++ b/flake.lock
@@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1784796856,
- "narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=",
+ "lastModified": 1785090369,
+ "narHash": "sha256-m0pDuRJG7EDo9ri+4Ksu83VsI+PlxNC9lNBfydejce4=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
+ "rev": "624af665418d3c65d544145b4d34ad696439570e",
"type": "github"
},
"original": {
From 70e97b7406f86340ca8de7568bfbcbecda64cf75 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:27:44 +0800
Subject: [PATCH 433/670] chore(deps): bump @bbob/preset-html5 from 4.3.1 to
4.4.0 (#22847)
Bumps [@bbob/preset-html5](https://github.com/JiLiZART/bbob) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/JiLiZART/bbob/releases)
- [Changelog](https://github.com/JiLiZART/BBob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JiLiZART/bbob/compare/@bbob/preset-html5@4.3.1...@bbob/preset-html5@4.4.0)
---
updated-dependencies:
- dependency-name: "@bbob/preset-html5"
dependency-version: 4.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index 07a62b90ec7d..4af13aa4acb5 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"dependencies": {
"@bbob/html": "4.3.1",
"@bbob/plugin-helper": "4.4.0",
- "@bbob/preset-html5": "4.3.1",
+ "@bbob/preset-html5": "4.4.0",
"@googleapis/youtube": "33.0.0",
"@honeybadger-io/js": "6.15.3",
"@hono/node-server": "2.0.12",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ecfe3d97b44a..bcc17cfa9d9a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -38,8 +38,8 @@ importers:
specifier: 4.4.0
version: 4.4.0
'@bbob/preset-html5':
- specifier: 4.3.1
- version: 4.3.1
+ specifier: 4.4.0
+ version: 4.4.0
'@googleapis/youtube':
specifier: 33.0.0
version: 33.0.0
@@ -565,11 +565,11 @@ packages:
'@bbob/plugin-helper@4.4.0':
resolution: {integrity: sha512-1X9El64z/g+4vMKx+CnLc2O1No/KqRRU4Ku1PLYN1CD6OmJk/T1sQ3dlLAzSjV6gzZ2fSa8/endhZpf2ULKBLA==}
- '@bbob/preset-html5@4.3.1':
- resolution: {integrity: sha512-6Yn8kOrBWt/2u4ZUt7nSTzWP+xvTaH4TlAds6p+BcBRbs4Ov2f1zkRgCh1JlckMXwhH9q9CGF0wn6w8bkUYcFA==}
+ '@bbob/preset-html5@4.4.0':
+ resolution: {integrity: sha512-hvYpHCRxo2lhfGXgI8TT4BWpVCJM5Bxtgc2XL1Pr77lmTb6yTVG+nNNuNxBJ3Mz3K0XPzaOhlS1YkTLpf1vYfA==}
- '@bbob/preset@4.3.1':
- resolution: {integrity: sha512-we6ITgrwciNIdpZRRJl4y3OOEbXEEVA21895JUInvYXevZBrIgIAvO502qlEYQtqhJqQ1HxY5xyhDjZ9rEYQHg==}
+ '@bbob/preset@4.4.0':
+ resolution: {integrity: sha512-N0k1pS9ywv6qbOiLAoM6RH1yOJtIHDSM7rHWmtfe+FyWjHnP7Icyn4McLIra2ZHlutJIVY+05UGAf375ByRzGw==}
'@bbob/types@4.4.0':
resolution: {integrity: sha512-d79ov/IQFW5gEAllrK48xqI/IDs6y31F4gXRUX3d7KYN+r6EaRsChjMgv0wPppZovUL2/eECFOe82sqAa0HF7g==}
@@ -6632,13 +6632,13 @@ snapshots:
dependencies:
'@bbob/types': 4.4.0
- '@bbob/preset-html5@4.3.1':
+ '@bbob/preset-html5@4.4.0':
dependencies:
'@bbob/plugin-helper': 4.4.0
- '@bbob/preset': 4.3.1
+ '@bbob/preset': 4.4.0
'@bbob/types': 4.4.0
- '@bbob/preset@4.3.1':
+ '@bbob/preset@4.4.0':
dependencies:
'@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
From eb219a526541ca7a1a48724cb9ca2eda128a36db Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 17:35:35 +0800
Subject: [PATCH 434/670] chore(deps): bump @bbob/html from 4.3.1 to 4.4.0
(#22843)
Bumps [@bbob/html](https://github.com/JiLiZART/bbob) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/JiLiZART/bbob/releases)
- [Changelog](https://github.com/JiLiZART/BBob/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JiLiZART/bbob/compare/@bbob/html@4.3.1...@bbob/html@4.4.0)
---
updated-dependencies:
- dependency-name: "@bbob/html"
dependency-version: 4.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 26 +++++++++++++-------------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/package.json b/package.json
index 4af13aa4acb5..bab0e1e6a6f1 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"worker-test": "npm run worker-build && vitest run lib/worker.test.ts"
},
"dependencies": {
- "@bbob/html": "4.3.1",
+ "@bbob/html": "4.4.0",
"@bbob/plugin-helper": "4.4.0",
"@bbob/preset-html5": "4.4.0",
"@googleapis/youtube": "33.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bcc17cfa9d9a..042c106aadfc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,8 +32,8 @@ importers:
.:
dependencies:
'@bbob/html':
- specifier: 4.3.1
- version: 4.3.1
+ specifier: 4.4.0
+ version: 4.4.0
'@bbob/plugin-helper':
specifier: 4.4.0
version: 4.4.0
@@ -553,14 +553,14 @@ packages:
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
- '@bbob/core@4.3.1':
- resolution: {integrity: sha512-qNS5wNY2oJROV5CQ2e29e9dBz4ZuSO7JcciBXM2yDHvKFUYl+J4o8DxOsugce6z2cFpGz6F4J7vJN7X+6ujWiQ==}
+ '@bbob/core@4.4.0':
+ resolution: {integrity: sha512-4rLEjFsbMECLsUsz8SCwP/W2LomPAT1Pj5KBfIF3RDBdQAaU0nSLOauIDhnU17zxUZBlvXsncZmZTWTFNqXCNQ==}
- '@bbob/html@4.3.1':
- resolution: {integrity: sha512-W1qFvBZwhpGkZBNfeRpUFsoF492BlfNmgdh5iczg7B/PDULdOPH5lPLtT/6ZNpyx/xo6/DBssl9YtEO/bm15hw==}
+ '@bbob/html@4.4.0':
+ resolution: {integrity: sha512-cPNPMOq5akCexag3XerJLQ7A9TGdUdPPACzlZniMj2JGGgBsgGq9kIHm+6huQswvveQDd39dIkKUlcFpK1hQZg==}
- '@bbob/parser@4.3.1':
- resolution: {integrity: sha512-BqDo8PDLcVLhFvOMdLmeaWk5qqD8E1bEdvzSJQuJC/U1XFs1tMC4lwZ4oPBFmZCeCLNsYFawqjP/S5MDdr7/Tg==}
+ '@bbob/parser@4.4.0':
+ resolution: {integrity: sha512-5w0VnGCSY3JYGs1m4AfR5a3soBoc8HB3EUCYneXQqP1KPUvFuBKDc5XWGQ5EeXl6QuM03oS39HO19fhY9GgzXA==}
'@bbob/plugin-helper@4.4.0':
resolution: {integrity: sha512-1X9El64z/g+4vMKx+CnLc2O1No/KqRRU4Ku1PLYN1CD6OmJk/T1sQ3dlLAzSjV6gzZ2fSa8/endhZpf2ULKBLA==}
@@ -6611,19 +6611,19 @@ snapshots:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
- '@bbob/core@4.3.1':
+ '@bbob/core@4.4.0':
dependencies:
- '@bbob/parser': 4.3.1
+ '@bbob/parser': 4.4.0
'@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
- '@bbob/html@4.3.1':
+ '@bbob/html@4.4.0':
dependencies:
- '@bbob/core': 4.3.1
+ '@bbob/core': 4.4.0
'@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
- '@bbob/parser@4.3.1':
+ '@bbob/parser@4.4.0':
dependencies:
'@bbob/plugin-helper': 4.4.0
'@bbob/types': 4.4.0
From f79f710712dc50179055d6d7c31fd01f808547a7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 20:38:03 +0800
Subject: [PATCH 435/670] chore(deps): bump devenv from `fc06618` to `6319d63`
(#22849)
Bumps [devenv](https://github.com/cachix/devenv) from `fc06618` to `6319d63`.
- [Release notes](https://github.com/cachix/devenv/releases)
- [Commits](https://github.com/cachix/devenv/compare/fc06618ba2099eaec355764f3ec5c395d45cec7c...6319d63344675f65c2c213be95084544866d8951)
---
updated-dependencies:
- dependency-name: devenv
dependency-version: 6319d63344675f65c2c213be95084544866d8951
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
flake.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/flake.lock b/flake.lock
index 55f39994af33..556fea0436dd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -64,11 +64,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1784849577,
- "narHash": "sha256-vVJl1B6vuVkpmkGYxSaHHpjwCZCP59OsXlSo4bQontk=",
+ "lastModified": 1785127153,
+ "narHash": "sha256-vX6OVIUWiEiD5v1InHQk1OTjJsK2WgEqWmMPeIS5l78=",
"owner": "cachix",
"repo": "devenv",
- "rev": "fc06618ba2099eaec355764f3ec5c395d45cec7c",
+ "rev": "6319d63344675f65c2c213be95084544866d8951",
"type": "github"
},
"original": {
From 14e552cab6b7e8851158adce41e68cf9dc6b6ce0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 27 Jul 2026 22:12:24 +0800
Subject: [PATCH 436/670] chore(deps): bump jsdom from 29.1.1 to 30.0.0
(#22844)
* chore(deps): bump jsdom from 29.1.1 to 30.0.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.1.1 to 30.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.1.1...v30.0.0)
---
updated-dependencies:
- dependency-name: jsdom
dependency-version: 30.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
* chore: bump engine range
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package.json | 4 +-
pnpm-lock.yaml | 102 ++++++++++++++++++++++++-------------------------
2 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/package.json b/package.json
index bab0e1e6a6f1..7a6a11266dd5 100644
--- a/package.json
+++ b/package.json
@@ -100,7 +100,7 @@
"instagram-private-api": "1.46.1",
"ioredis": "5.11.1",
"ip-regex": "5.0.0",
- "jsdom": "29.1.1",
+ "jsdom": "30.0.0",
"json-bigint": "1.0.0",
"jsonpath-plus": "10.4.0",
"jsrsasign": "11.1.3",
@@ -226,7 +226,7 @@
]
},
"engines": {
- "node": "^22.20.0 || ^24"
+ "node": "^22.22.2 || ^24.15.0"
},
"packageManager": "pnpm@10.34.5+sha512.a4ee05f2f73658255bd6a89859c065a45c28a57daefae2c893a168ee2b73168c37b91e83e57ea67654ad03f03031746430e8bce38e362e042605fb8abc80192e",
"pnpm": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 042c106aadfc..b5329c40c576 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -155,8 +155,8 @@ importers:
specifier: 5.0.0
version: 5.0.0
jsdom:
- specifier: 29.1.1
- version: 29.1.1(@noble/hashes@2.2.0)
+ specifier: 30.0.0
+ version: 30.0.0(@noble/hashes@2.2.0)
json-bigint:
specifier: 1.0.0
version: 1.0.0
@@ -469,7 +469,7 @@ importers:
version: 7.0.0-alpha.1(@typescript/typescript6@6.0.2)(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
vitest:
specifier: 4.1.10
- version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
+ version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler:
specifier: 4.114.0
version: 4.114.0(@cloudflare/workers-types@5.20260727.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
@@ -508,20 +508,13 @@ packages:
'@apm-js-collab/tracing-hooks@0.13.0':
resolution: {integrity: sha512-mTvWz9rnQwx1U3h0XPTHaX7bgfkpipLLTQyjlC2cdhQpQEuoLT0AGzoydeoq2NxfEVv6fWOOETcSbb2nptleyw==}
- '@asamuzakjp/css-color@5.1.11':
- resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
-
- '@asamuzakjp/dom-selector@7.1.1':
- resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
-
- '@asamuzakjp/generational-cache@1.0.1':
- resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ '@asamuzakjp/css-color@6.0.5':
+ resolution: {integrity: sha512-mbhpPMmnw/kwW19aRNmSUl1QzLbdGo1SCuE49BT98MNwqF6zaHb3o2owssFc/PEO/4t2UjqtCNwocuDtJornzA==}
+ engines: {node: ^22.13.0 || >=24.0.0}
- '@asamuzakjp/nwsapi@2.3.9':
- resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
+ '@asamuzakjp/dom-selector@8.3.0':
+ resolution: {integrity: sha512-UJLfKXBhrc8i1vH2eJXuYQMwlsLKWFw3O+CPqXSuVEiikeAim3UgrfWX0k4tA/X8cRFM8iZ7OaqBokFGbYusdg==}
+ engines: {node: ^22.13.0 || >=24.0.0}
'@asteasolutions/zod-to-openapi@8.5.0':
resolution: {integrity: sha512-SABbKiObg5dLRiTFnqiW1WWwGcg1BJfmHtT2asIBnBHg6Smy/Ms2KHc650+JI4Hw7lSkdiNebEGXpwoxfben8Q==}
@@ -659,15 +652,15 @@ packages:
resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==}
engines: {node: '>=20.19.0'}
- '@csstools/css-calc@3.2.1':
- resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==}
+ '@csstools/css-calc@3.3.0':
+ resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
'@csstools/css-tokenizer': ^4.0.0
- '@csstools/css-color-parser@4.1.9':
- resolution: {integrity: sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==}
+ '@csstools/css-color-parser@4.1.10':
+ resolution: {integrity: sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
@@ -679,8 +672,8 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.6':
- resolution: {integrity: sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ==}
+ '@csstools/css-syntax-patches-for-csstree@1.1.7':
+ resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==}
peerDependencies:
css-tree: ^3.2.1
peerDependenciesMeta:
@@ -4562,11 +4555,11 @@ packages:
resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==}
engines: {node: '>=20.0.0'}
- jsdom@29.1.1:
- resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
+ jsdom@30.0.0:
+ resolution: {integrity: sha512-JQHfRGmmKmaZoUAvIgff5jjG/0SzTQlGz8c7t72KzBzo8ZULEjAjnYE0sNwBOUA4QtWwYE2xoYitg8NFsmiYxA==}
+ engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
peerDependencies:
- canvas: ^3.0.0
+ canvas: ^3.2.3
peerDependenciesMeta:
canvas:
optional: true
@@ -6338,6 +6331,10 @@ packages:
resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ whatwg-url@17.1.0:
+ resolution: {integrity: sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==}
+ engines: {node: ^22.14.0 || >=24.0.0}
+
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
@@ -6563,25 +6560,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@asamuzakjp/css-color@5.1.11':
+ '@asamuzakjp/css-color@6.0.5':
dependencies:
- '@asamuzakjp/generational-cache': 1.0.1
- '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
- '@csstools/css-color-parser': 4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-color-parser': 4.1.10(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
+ lru-cache: 11.5.2
- '@asamuzakjp/dom-selector@7.1.1':
+ '@asamuzakjp/dom-selector@8.3.0':
dependencies:
- '@asamuzakjp/generational-cache': 1.0.1
- '@asamuzakjp/nwsapi': 2.3.9
bidi-js: 1.0.3
css-tree: 3.2.1
is-potential-custom-element-name: 1.0.1
-
- '@asamuzakjp/generational-cache@1.0.1': {}
-
- '@asamuzakjp/nwsapi@2.3.9': {}
+ lru-cache: 11.5.2
'@asteasolutions/zod-to-openapi@8.5.0(zod@4.4.3)':
dependencies:
@@ -6672,7 +6664,7 @@ snapshots:
cjs-module-lexer: 1.2.3
esbuild: 0.28.1
miniflare: 4.20260722.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)
- vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
wrangler: 4.114.0(@cloudflare/workers-types@5.20260727.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
@@ -6707,15 +6699,15 @@ snapshots:
'@csstools/color-helpers@6.1.0': {}
- '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
- '@csstools/css-color-parser@4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-color-parser@4.1.10(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
'@csstools/color-helpers': 6.1.0
- '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -6723,7 +6715,7 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.6(css-tree@3.2.1)':
+ '@csstools/css-syntax-patches-for-csstree@1.1.7(css-tree@3.2.1)':
optionalDependencies:
css-tree: 3.2.1
@@ -8490,7 +8482,7 @@ snapshots:
obug: 2.1.3
std-env: 4.2.0
tinyrainbow: 3.1.0
- vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
+ vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
'@vitest/expect@4.1.10':
dependencies:
@@ -10065,12 +10057,12 @@ snapshots:
jsdoc-type-pratt-parser@7.2.0: {}
- jsdom@29.1.1(@noble/hashes@2.2.0):
+ jsdom@30.0.0(@noble/hashes@2.2.0):
dependencies:
- '@asamuzakjp/css-color': 5.1.11
- '@asamuzakjp/dom-selector': 7.1.1
+ '@asamuzakjp/css-color': 6.0.5
+ '@asamuzakjp/dom-selector': 8.3.0
'@bramus/specificity': 2.4.2
- '@csstools/css-syntax-patches-for-csstree': 1.1.6(css-tree@3.2.1)
+ '@csstools/css-syntax-patches-for-csstree': 1.1.7(css-tree@3.2.1)
'@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
css-tree: 3.2.1
data-urls: 7.0.0(@noble/hashes@2.2.0)
@@ -10082,11 +10074,11 @@ snapshots:
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 6.0.2
- undici: 7.29.0
+ undici: 8.9.0
w3c-xmlserializer: 5.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
- whatwg-url: 16.0.1(@noble/hashes@2.2.0)
+ whatwg-url: 17.1.0(@noble/hashes@2.2.0)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- '@noble/hashes'
@@ -12068,7 +12060,7 @@ snapshots:
tsx: 4.23.1
yaml: 2.9.0
- vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
+ vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@2.2.0))(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.10
'@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@26.1.1)(@typescript/typescript6@6.0.2))(vite@7.3.1(@types/node@26.1.1)(lightningcss@1.32.0)(tsx@4.23.1)(yaml@2.9.0))
@@ -12094,7 +12086,7 @@ snapshots:
'@opentelemetry/api': 1.9.1
'@types/node': 26.1.1
'@vitest/coverage-v8': 4.1.10(vitest@4.1.10)
- jsdom: 29.1.1(@noble/hashes@2.2.0)
+ jsdom: 30.0.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
@@ -12137,6 +12129,14 @@ snapshots:
transitivePeerDependencies:
- '@noble/hashes'
+ whatwg-url@17.1.0(@noble/hashes@2.2.0):
+ dependencies:
+ '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ tr46: 6.0.0
+ webidl-conversions: 8.0.1
+ transitivePeerDependencies:
+ - '@noble/hashes'
+
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
From 5527d18de9605e5df9112f40904596e6ae5b971e Mon Sep 17 00:00:00 2001
From: Tony
Date: Mon, 27 Jul 2026 22:23:57 +0800
Subject: [PATCH 437/670] refactor: remove unnecessary trim/first/last (#22837)
* refactor: remove unnecessary trim/first/last
* refactor(types): allow null in DataItem.description
* refactor: remove unnecessary fallback
* refactor(types): allow null in Data.description
* refactor: remove unnecessary fallback
* refactor: remove .clone()
* refactor: refine json content text
* fIx: cognition
* fix: more fixes
* fix(route/jiemian): use api
* fix(route/jandan): housekeeping
add back maintainers from #8904
* fix(route/kcna/news): update source and target mappings
* fix(route/jandan): sanitize HTML content in titles
* refactor: remove unnecessary referer
* fix(route/jinse): regex
---
lib/routes/0x80/index.ts | 2 +-
lib/routes/163/music/artist-songs.ts | 3 -
lib/routes/163/music/artist.ts | 6 +-
lib/routes/163/music/djradio.tsx | 3 -
lib/routes/163/music/playlist.ts | 4 -
lib/routes/163/music/userevents.tsx | 6 +-
lib/routes/19lou/index.ts | 2 +-
lib/routes/2023game/index.ts | 4 +-
lib/routes/30secondsofcode/utils.ts | 10 +-
lib/routes/3dmgame/news-center.ts | 4 +-
lib/routes/4khd/article.ts | 2 +-
lib/routes/4kup/article.ts | 2 +-
lib/routes/51read/article.ts | 2 +-
lib/routes/6v123/index.ts | 2 +-
lib/routes/a9vg/index.ts | 3 +-
lib/routes/aflcio/blog.ts | 4 +-
lib/routes/agirls/topic-list.ts | 6 +-
lib/routes/agirls/topic.ts | 4 +-
lib/routes/agirls/utils.ts | 2 +-
lib/routes/agirls/z-index.ts | 4 +-
lib/routes/ai-bot/daily-ai-news.ts | 4 +-
lib/routes/aiaa/journal.ts | 6 +-
lib/routes/aiblog-2xv/archives.ts | 14 +-
lib/routes/aisixiang/thinktank.ts | 2 +-
lib/routes/aisixiang/toplist.ts | 2 +-
lib/routes/aisixiang/zhuanti.ts | 2 +-
lib/routes/alicesoft/infomation.ts | 7 +-
lib/routes/aliyun/database-month.ts | 2 +-
lib/routes/alwayscontrol/news.ts | 79 +++---
lib/routes/anime1/anime.ts | 4 +-
lib/routes/anime1/search.ts | 2 +-
lib/routes/anthropic/engineering.ts | 6 +-
lib/routes/anthropic/news.ts | 2 +-
lib/routes/anytxt/release-notes.ts | 2 +-
lib/routes/apple/design.ts | 2 +-
lib/routes/aqara/news.ts | 2 +-
lib/routes/asiantolick/index.ts | 2 +-
lib/routes/bandisoft/history.ts | 2 +-
lib/routes/bangumi.tv/group/reply.ts | 4 +-
lib/routes/bangumi.tv/other/followrank.ts | 2 +-
lib/routes/baoyu/index.ts | 2 +-
lib/routes/bbc/learningenglish.ts | 2 +-
lib/routes/bilibili/dynamic.ts | 8 +-
lib/routes/bilibili/followings-dynamic.ts | 2 +-
lib/routes/bilibili/hot-search.ts | 3 -
lib/routes/bitget/announcement.ts | 5 +-
lib/routes/bjwxdxh/index.ts | 2 +-
lib/routes/bntnews/index.ts | 1 -
lib/routes/buaa/news/index.ts | 2 +-
lib/routes/bullionvault/gold-news.ts | 2 +-
lib/routes/bwsg/index.ts | 2 +-
lib/routes/capitalmind/utils.ts | 7 +-
lib/routes/capitalmuseum/exhibition.tsx | 4 +-
lib/routes/cas/genetics/index.ts | 4 +-
lib/routes/caus/index.ts | 3 +-
lib/routes/ccagm/index.ts | 2 +-
lib/routes/cccmc/index.ts | 2 +-
lib/routes/cdu/cdrw.ts | 2 +-
lib/routes/cdu/tzggcdunews.ts | 2 +-
lib/routes/cefco/news.ts | 2 +-
lib/routes/ceph/blog.ts | 4 +-
lib/routes/chikubi/utils.ts | 2 +-
lib/routes/chinafactcheck/utils.ts | 8 +-
lib/routes/chinaratings/credit-research.ts | 2 +-
lib/routes/chinatimes/index.ts | 6 +-
lib/routes/chnmuseum/zl.tsx | 7 +-
lib/routes/chongbuluo/index.ts | 8 +-
lib/routes/chuapp/chuapp.ts | 4 +-
lib/routes/cjlu/yjsy/index.ts | 18 --
lib/routes/claude/blog.ts | 10 +-
lib/routes/claude/code-changelog.ts | 6 +-
lib/routes/cline/blog.ts | 4 +-
lib/routes/cmu/andypavlo/blog.ts | 4 +-
lib/routes/cnljxh/index.ts | 2 +-
lib/routes/cnu/iec.ts | 2 +-
lib/routes/cnu/jdxw.ts | 2 +-
lib/routes/cnu/jwc.ts | 4 +-
lib/routes/cnu/physics.ts | 2 +-
lib/routes/cnu/smkxxy.ts | 2 +-
lib/routes/cockroachlabs/blog.ts | 2 +-
lib/routes/cognition/blog.ts | 95 ++-----
lib/routes/cointelegraph/index.ts | 2 +-
lib/routes/comic-fuz/magazine.ts | 3 +-
lib/routes/comic-fuz/manga.ts | 3 +-
lib/routes/comic-walker/manga.ts | 5 +-
lib/routes/comicat/search.ts | 4 +-
lib/routes/cool18/index.ts | 2 +-
lib/routes/coolidge/news.ts | 10 +-
lib/routes/cosplaytele/article.ts | 4 +-
lib/routes/costar/press-releases.ts | 4 +-
lib/routes/crush/index.ts | 4 +-
lib/routes/csust/tggs.ts | 2 +-
lib/routes/csust/utils.ts | 7 +-
lib/routes/csust/xkxs.ts | 2 +-
lib/routes/cugb/jwc.ts | 6 +-
lib/routes/cugb/news.ts | 5 +-
lib/routes/cuilingmag/index.ts | 2 +-
lib/routes/cursor/blog.ts | 6 +-
lib/routes/cursor/changelog.ts | 10 +-
lib/routes/daoxuan/rss.ts | 4 +-
lib/routes/ddosi/index.ts | 3 -
lib/routes/decrypt/index.ts | 70 ++---
lib/routes/denonbu/news.ts | 4 +-
lib/routes/dev.to/guides.ts | 4 +-
lib/routes/dev.to/top.ts | 2 +-
lib/routes/dgut/jwb.ts | 2 +-
lib/routes/dhu/jiaowu/news.ts | 2 +-
lib/routes/dhu/news/xsxx.ts | 2 +-
lib/routes/dhu/xxgk/news.ts | 2 +-
lib/routes/dhu/yjs/news.ts | 2 +-
lib/routes/diariofruticola/filtro.ts | 2 +-
.../digitalpolicyalert/activity-tracker.ts | 15 +-
lib/routes/dnaindia/common.ts | 1 -
lib/routes/douban/other/later.ts | 4 +-
lib/routes/douban/people/status.ts | 8 +-
lib/routes/dpm/exhibitions.tsx | 2 +-
lib/routes/dw/utils.tsx | 4 +-
lib/routes/dykszx/news.ts | 10 +-
lib/routes/ecnu/art.ts | 10 +-
lib/routes/ecnu/bksy.ts | 8 -
lib/routes/ecnu/cee.ts | 18 +-
lib/routes/ecnu/chem.ts | 10 +-
lib/routes/ecnu/chinese.ts | 10 +-
lib/routes/ecnu/comm.ts | 10 +-
lib/routes/ecnu/cs.ts | 8 -
lib/routes/ecnu/cxcy.ts | 2 +-
lib/routes/ecnu/dase.ts | 8 -
lib/routes/ecnu/dx.ts | 10 +-
lib/routes/ecnu/dxb.ts | 10 +-
lib/routes/ecnu/ed.ts | 10 +-
lib/routes/ecnu/geoai.ts | 10 +-
lib/routes/ecnu/ghcollege.ts | 10 +-
lib/routes/ecnu/history.ts | 10 +-
lib/routes/ecnu/mks.ts | 10 +-
lib/routes/ecnu/mxcsy.ts | 10 +-
lib/routes/ecnu/pharm.ts | 10 +-
lib/routes/ecnu/philo.ts | 2 +-
lib/routes/ecnu/phy.ts | 8 -
lib/routes/ecnu/psy.ts | 8 -
lib/routes/ecnu/sees.ts | 10 +-
lib/routes/ecnu/sei.ts | 10 +-
lib/routes/ecnu/spm.ts | 10 +-
lib/routes/ecnu/stat.ts | 10 +-
lib/routes/ecnu/tyxx.ts | 10 +-
lib/routes/ecust/jwc/notice.ts | 2 +-
lib/routes/elamigos/index.ts | 4 +-
lib/routes/eprice/rss.tsx | 6 +-
lib/routes/expats/czech-news.ts | 2 +-
lib/routes/f95zone/post.ts | 3 +-
lib/routes/f95zone/thread.ts | 12 +-
lib/routes/f95zone/utils.ts | 2 +-
lib/routes/fantia/user.ts | 1 -
lib/routes/fashionnetwork/index.ts | 3 +-
lib/routes/firefox/breaches.ts | 2 +-
lib/routes/fjdaily/index.ts | 4 +-
lib/routes/flyert/util.ts | 6 +-
lib/routes/flyert/utils.ts | 2 +-
lib/routes/freebuf/index.ts | 1 -
lib/routes/fxiaoke/crm.ts | 2 +-
lib/routes/gameapps/index.tsx | 6 +-
lib/routes/gamer/hot.ts | 7 +-
lib/routes/gdmuseum/exhibition.tsx | 5 +-
lib/routes/gdmuseum/news.ts | 4 +-
lib/routes/gdufs/news.ts | 2 +-
lib/routes/gdufs/xwxy/index.ts | 2 +-
lib/routes/gigazine/en.ts | 12 +-
lib/routes/github/activity.ts | 2 +-
lib/routes/github/advisor.ts | 2 +-
lib/routes/github/topic.ts | 2 +-
lib/routes/go/jihs/idwr.ts | 2 +-
lib/routes/google/developers.ts | 6 +-
lib/routes/google/research.ts | 2 +-
lib/routes/gov/beijing/bjedu/gh.ts | 4 +-
lib/routes/gov/chongqing/sydwgkzp.ts | 4 +-
lib/routes/gov/hainan/iitb/tzgg.ts | 2 +-
lib/routes/gov/huizhou/zwgk/index.ts | 2 +-
lib/routes/gov/mee/nnsa.ts | 2 +-
lib/routes/gov/mee/ywdt.ts | 2 +-
lib/routes/gov/mem/zfxxgkpt.ts | 4 +-
lib/routes/gov/mfa/wjdt.ts | 2 +-
lib/routes/gov/miit/wjfb.ts | 4 +-
lib/routes/gov/miit/wjgs.ts | 6 -
lib/routes/gov/miit/yjzj.ts | 4 +-
lib/routes/gov/miit/zcjd.ts | 6 -
lib/routes/gov/moa/gjs.ts | 2 +-
lib/routes/gov/mof/gss.ts | 2 +-
lib/routes/gov/mot/index.ts | 2 +-
lib/routes/gov/nppa/channels.ts | 2 +-
lib/routes/gov/pudong/zwgk.ts | 2 +-
lib/routes/gov/shenzhen/hrss/szksy/index.ts | 2 +-
lib/routes/gov/shenzhen/szlh/index.ts | 8 +-
lib/routes/gov/shenzhen/zjj/index.ts | 4 +-
lib/routes/gov/zj/czt/zfcg.ts | 2 +-
lib/routes/gov/zj/search.ts | 8 +-
lib/routes/grainoil/category.ts | 2 +-
lib/routes/greasyfork/scripts.ts | 2 +-
lib/routes/grubstreet/utils.ts | 5 +-
lib/routes/guancha/member.ts | 2 +-
lib/routes/gxmzu/lib.ts | 2 +-
lib/routes/gxmzu/utils/index.ts | 17 +-
lib/routes/hackernews/index.ts | 20 +-
lib/routes/hamel/index.ts | 6 +-
lib/routes/hebeimuseum/list.tsx | 15 +-
lib/routes/hexun/index.ts | 4 +-
lib/routes/hit/today.ts | 22 +-
lib/routes/hitsz/due-tzgg.ts | 2 +-
lib/routes/hitwh/today.ts | 30 +-
lib/routes/hlju/news.ts | 2 +-
lib/routes/hnmuseum/exhibitions.tsx | 6 +-
lib/routes/hongkong/chp.ts | 2 +-
lib/routes/hotukdeals/hottest.ts | 6 +-
lib/routes/hpoi/utils.ts | 9 -
lib/routes/hrbeu/cec/list.ts | 11 +-
lib/routes/hrbeu/gx/card.ts | 6 +-
lib/routes/hrbeu/gx/list.ts | 6 +-
lib/routes/hrbeu/sec/list.ts | 9 +-
lib/routes/hrbeu/uae/news.ts | 6 +-
lib/routes/hrbeu/ugs/news.ts | 8 +-
lib/routes/hrbeu/yjsy/list.ts | 6 +-
lib/routes/hrbust/cs.ts | 2 +-
lib/routes/hrbust/jwzx.ts | 2 +-
lib/routes/huggingface/blog-community.ts | 2 +-
lib/routes/huggingface/blog-zh.ts | 2 +-
lib/routes/huggingface/blog.ts | 2 +-
lib/routes/huijin-inv/news.ts | 2 +-
lib/routes/humanlayer/blog.ts | 6 +-
lib/routes/hunau/utils/news-content.ts | 2 +-
lib/routes/ieee/journal.ts | 2 +-
lib/routes/iheima/index.ts | 1 -
lib/routes/iiilab/index.ts | 2 +-
lib/routes/in-en/index.ts | 10 +-
lib/routes/inceptionlabs/blog.ts | 10 +-
lib/routes/infoq/recommend.ts | 3 -
lib/routes/infzm/hot.ts | 3 -
lib/routes/infzm/utils.ts | 2 +-
lib/routes/inoreader/index.ts | 3 +-
lib/routes/investor/index.ts | 4 +-
lib/routes/ipsw.dev/index.tsx | 3 -
lib/routes/ipsw/index.ts | 8 +-
lib/routes/itsec/news.ts | 8 +-
lib/routes/j-test/news.ts | 2 +-
lib/routes/jandan/index.ts | 6 +-
lib/routes/jandan/section.ts | 39 +--
lib/routes/jandan/utils.ts | 263 +++++-------------
lib/routes/jianshu/home.ts | 3 -
lib/routes/jiemian/account.ts | 53 +++-
lib/routes/jiemian/common.tsx | 129 +++++----
lib/routes/jiemian/lists.ts | 76 ++++-
lib/routes/jiemian/special.ts | 4 +-
lib/routes/jiemian/video.ts | 91 +++++-
lib/routes/jiemian/vip.ts | 42 ++-
lib/routes/jinse/lives.ts | 57 ++--
lib/routes/jinse/timeline.ts | 2 +-
lib/routes/jisilu/util.ts | 4 +-
lib/routes/jlu/ccst/xwzx/index.ts | 2 +-
lib/routes/jlu/jwc.ts | 6 +-
lib/routes/joneslanglasalle/index.ts | 4 +-
lib/routes/jou/utils/index.ts | 17 +-
lib/routes/jpmorganchase/research.ts | 2 +-
lib/routes/jumeili/home.ts | 2 -
lib/routes/kanxue/topic.ts | 3 -
lib/routes/kcna/news.tsx | 105 +++----
lib/routes/kcna/utils.ts | 64 +----
lib/routes/keylol/index.ts | 2 +-
lib/routes/kiro/blog.ts | 2 +-
lib/routes/kiro/changelog.ts | 4 +-
.../kleinanzeigen/utils/parse-listing-page.ts | 2 +-
lib/routes/kovidgoyal/kitty/changelog.ts | 2 +-
lib/routes/last-origin/news.ts | 6 +-
lib/routes/logrocket/index.ts | 2 +-
lib/routes/malaysiakini/index.ts | 4 +-
lib/routes/mashiro/index.ts | 2 +-
lib/routes/medium/parse-article.ts | 2 +-
lib/routes/meritalk/articles.ts | 6 +-
lib/routes/meteoblue/weathernews.ts | 4 +-
lib/routes/mhlw/monthly-labour-survey.ts | 12 +-
lib/routes/mi/utils.tsx | 3 -
lib/routes/misskon/utils.ts | 1 -
lib/routes/mit/hanlab.ts | 4 +-
lib/routes/mit/scratch/user-comments.ts | 2 +-
lib/routes/miyuki/news.ts | 8 +-
lib/routes/mrinalxdev/blog.ts | 2 +-
lib/routes/my-formosa/index.ts | 41 ++-
lib/routes/my-formosa/namespace.ts | 2 +-
lib/routes/mycard520/news.ts | 10 +-
lib/routes/nankai/ai-notice.ts | 37 +--
lib/routes/nankai/graduate-notice.ts | 95 ++-----
lib/routes/nankai/jwc.ts | 19 +-
lib/routes/nankai/notice.ts | 27 +-
lib/routes/nankai/yzb.ts | 2 +-
lib/routes/natgeo/natgeo.ts | 2 +-
lib/routes/ncu/jwc.ts | 18 +-
lib/routes/neea/jlpt.ts | 2 +-
lib/routes/netflix/research.ts | 2 +-
lib/routes/nextjs/blog.ts | 4 +-
lib/routes/nga/post.ts | 2 +-
lib/routes/niaogebiji/cat.ts | 8 +-
lib/routes/nielsberglund/index.ts | 4 +-
lib/routes/nikkei/asia/index.ts | 4 +-
lib/routes/njit/jwc.ts | 2 +-
lib/routes/njit/tzgg.ts | 2 +-
lib/routes/nju/scit.ts | 2 +-
lib/routes/nju/zbb.ts | 8 +-
lib/routes/njucm/utils/index.ts | 6 +-
lib/routes/njupt/jwc.ts | 84 ++----
lib/routes/njxzc/home.ts | 2 +-
lib/routes/njxzc/lib.ts | 4 +-
lib/routes/njxzc/utils/index.ts | 19 +-
lib/routes/nmc/publish.ts | 4 +-
lib/routes/notion/release.ts | 8 +-
lib/routes/nowcoder/schedule.ts | 2 +-
lib/routes/npr/full.ts | 4 +-
lib/routes/nuist/bulletin.ts | 2 +-
lib/routes/nuist/cas.ts | 2 +-
lib/routes/nyc/mayors-office-news.ts | 2 +-
lib/routes/nycu/aa.ts | 2 +-
lib/routes/nycu/announcement.ts | 2 +-
lib/routes/nycu/osa.ts | 4 +-
lib/routes/nymity/censorbib.ts | 6 +-
lib/routes/ollama/blog.ts | 6 +-
lib/routes/ollama/models.ts | 4 +-
lib/routes/openrice/promos.ts | 6 +-
lib/routes/oreno3d/get-sec-page-data.ts | 4 -
lib/routes/osu/beatmaps/packs.ts | 2 +-
lib/routes/p-articles/contributors.ts | 2 +-
lib/routes/p-articles/utils.ts | 4 +-
lib/routes/papers/category.ts | 3 +-
lib/routes/people/index.ts | 2 +-
lib/routes/perplexity/blog.ts | 10 +-
lib/routes/peterwunder/achievements.ts | 24 +-
lib/routes/pincong/hot.ts | 2 +-
lib/routes/pingwest/status.ts | 3 -
lib/routes/pingwest/tag.ts | 9 +-
lib/routes/pingwest/user.ts | 9 +-
lib/routes/pku/eecs.ts | 56 ++--
lib/routes/pku/utils.ts | 13 -
lib/routes/pornhub/category-url.ts | 2 +-
lib/routes/priconne-redive/news.ts | 4 +-
lib/routes/projectjav/utils.ts | 4 +-
lib/routes/qingting/podcast.ts | 6 +-
lib/routes/qlu/notice.ts | 2 +-
lib/routes/quicker/qa.ts | 3 +-
lib/routes/quicker/share.ts | 2 +-
lib/routes/quicker/user.ts | 2 +-
lib/routes/qztc/sjxy/index.ts | 2 +-
lib/routes/railway/index.ts | 2 +-
lib/routes/raycast/changelog.ts | 4 +-
lib/routes/react/blog.ts | 4 +-
lib/routes/resetera/thread.ts | 12 +-
lib/routes/reuters/common.tsx | 1 -
lib/routes/rfi/news.ts | 26 +-
lib/routes/rsshub/transform/sitemap.ts | 6 +-
lib/routes/ruankao/news.ts | 2 +-
lib/routes/rule34video/latest.ts | 3 -
lib/routes/rustcc/jobs.ts | 3 -
lib/routes/rustcc/news.ts | 3 -
lib/routes/samrdprc/index.ts | 4 +-
lib/routes/samrdprc/news.ts | 2 +-
lib/routes/sankei/news.ts | 2 +-
lib/routes/sankei/topics.ts | 2 +-
lib/routes/saraba1st/thread.ts | 1 -
lib/routes/sass/gs/index.ts | 2 +-
lib/routes/scmp/index.ts | 2 +-
lib/routes/scnu/cs/match.ts | 3 -
lib/routes/scnu/jw.ts | 5 +-
lib/routes/scnu/library.ts | 3 -
lib/routes/scpta/news.ts | 2 +-
lib/routes/scut/jwc/news.ts | 10 +-
lib/routes/scut/jwc/notice.ts | 10 +-
lib/routes/scut/jwc/school.ts | 10 +-
lib/routes/shanghaimuseum/offline-exhibit.tsx | 2 +-
lib/routes/shisu/en.ts | 2 +-
lib/routes/shisu/news.ts | 2 +-
lib/routes/shmeea/index.ts | 4 +-
lib/routes/shopify/apps/[handle].reviews.ts | 3 +-
lib/routes/shopify/apps/search.ts | 3 +-
lib/routes/shu/global.ts | 4 +-
lib/routes/shu/index.ts | 6 +-
lib/routes/sjtu/cs/tzgg.tsx | 15 +-
lib/routes/sjtu/cs/xshd.tsx | 17 --
lib/routes/sjtu/jwc.ts | 11 -
lib/routes/smashingmagazine/category.ts | 9 +-
lib/routes/smzdm/haowen.ts | 2 +-
lib/routes/snnu/ccs.ts | 2 +-
lib/routes/snnu/index.ts | 8 +-
lib/routes/snnu/yjs.ts | 2 +-
lib/routes/solidot/_article.ts | 6 +-
lib/routes/stcn/index.ts | 6 +-
lib/routes/stcn/kx.ts | 4 +-
lib/routes/stcn/rank.ts | 4 +-
lib/routes/steam/search.ts | 8 +-
lib/routes/steam/sharefile-changelog.ts | 10 +-
lib/routes/swjtu/scai.ts | 4 +-
lib/routes/sxhm/announcement.ts | 2 +-
lib/routes/syosetu/dev.ts | 2 +-
lib/routes/syosetu/utils.ts | 2 +-
lib/routes/sysu/cse.ts | 3 -
lib/routes/szftedu/dongtai.ts | 2 +-
lib/routes/szftedu/gonggao.ts | 2 +-
lib/routes/szmuseum/temporary.tsx | 6 +-
lib/routes/szse/notice.ts | 8 +-
lib/routes/szu/yz/utils.ts | 34 +--
lib/routes/taobao/mysql.ts | 2 +-
lib/routes/techpowerup/review.ts | 6 +-
lib/routes/the/index.ts | 14 +-
lib/routes/thegradient/index.ts | 4 +-
lib/routes/thepaper/839studio/category.ts | 2 +-
lib/routes/thepaper/839studio/studio.ts | 2 +-
lib/routes/theverge/index.ts | 2 +-
lib/routes/thinkingmachines/news.ts | 4 +-
lib/routes/thoughtworks/index.ts | 1 -
lib/routes/thzt/index.ts | 4 +-
lib/routes/tidb/blog.ts | 2 +-
lib/routes/tjbwg/exhibition.tsx | 3 +-
lib/routes/tju/cic/index.ts | 6 +-
lib/routes/tju/yzb/index.ts | 3 -
lib/routes/tongji/sem/_utils.ts | 2 +-
lib/routes/tongji/sse/_article.ts | 6 -
lib/routes/tophub/index.ts | 1 -
lib/routes/tophub/list.tsx | 1 -
lib/routes/toranoana/news.ts | 2 +-
lib/routes/trendforce/news-cn.ts | 10 +-
lib/routes/tsinghua/lib/tzgg.ts | 8 +-
lib/routes/udn/global/index.ts | 8 +-
lib/routes/uestc/gr.ts | 2 +-
lib/routes/uestc/scse.ts | 3 +-
lib/routes/unipd/ilbolive/news.ts | 8 +-
lib/routes/usenix/usenix.ts | 2 +-
lib/routes/ustb/yjsy/news.ts | 6 +-
lib/routes/ustc/gs.ts | 2 +-
lib/routes/ustc/math.ts | 2 +-
lib/routes/ustc/sist.ts | 2 +-
lib/routes/verfghbw/press.ts | 76 +++--
lib/routes/visionias/daily-news-summary.ts | 2 +-
lib/routes/visionias/news-today.ts | 2 +-
lib/routes/visualstudio/code-blog.ts | 2 +-
lib/routes/warp/blog.ts | 3 +-
lib/routes/wechat/sogou.ts | 1 -
lib/routes/weibo/oasis/user.ts | 4 +-
lib/routes/wfu/news.ts | 3 -
lib/routes/whu/cs.ts | 2 +-
lib/routes/whu/rsgis.ts | 8 +-
lib/routes/whu/swrh.ts | 6 +-
lib/routes/wiensued/index.ts | 6 +-
lib/routes/windsurf/changelog.ts | 4 +-
lib/routes/wohnnet/index.ts | 2 +-
lib/routes/wufazhuce/one.ts | 4 +-
lib/routes/xaut/index.ts | 2 +-
lib/routes/xbmu/academic.ts | 2 +-
lib/routes/xbookcn/blog.ts | 4 +-
lib/routes/xidian/cs.ts | 6 +-
lib/routes/xidian/gr.ts | 6 +-
lib/routes/xidian/jwc.ts | 6 +-
lib/routes/xjtlu/news.ts | 2 +-
lib/routes/xjtu/ee-jzxx.ts | 1 -
lib/routes/xmanhua/index.ts | 8 +-
lib/routes/xmu/kydt.ts | 8 +-
lib/routes/xmut/jwc/bkjw.ts | 8 +-
lib/routes/xueqiu/hots.ts | 1 -
lib/routes/xueqiu/today.ts | 1 -
lib/routes/xyu/library.ts | 2 +-
lib/routes/xyu/notices.ts | 11 +-
lib/routes/ynet/list.ts | 2 +-
lib/routes/zaimanhua/comic.ts | 1 -
lib/routes/zaimanhua/update.ts | 3 +-
lib/routes/zcmu/yxy/index.ts | 2 +-
lib/routes/zed/blog.ts | 1 -
lib/routes/zhizhuan100/report.ts | 4 +-
lib/routes/zju/math/index.ts | 15 +-
lib/routes/zju/sis/index.ts | 4 +-
lib/routes/zjut/cs/index.ts | 4 +-
lib/routes/zjut/jwc/index.ts | 2 +-
lib/routes/zjut/www/index.ts | 4 +-
lib/routes/zongheng/detail.ts | 2 +-
lib/routes/zotero/versions.ts | 8 +-
lib/routes/zxcs/novel.ts | 2 +-
lib/routes/zzu/dzb.ts | 4 +-
lib/routes/zzu/kjc.ts | 4 +-
lib/routes/zzu/math.ts | 4 +-
lib/routes/zzu/news.ts | 4 +-
lib/routes/zzu/rsc.ts | 6 +-
lib/routes/zzu/ss.ts | 2 +-
lib/routes/zzu/sxy.ts | 10 +-
lib/routes/zzu/zcycwb.ts | 4 +-
lib/types.ts | 8 +-
lib/views/json.ts | 2 +-
486 files changed, 1485 insertions(+), 2336 deletions(-)
delete mode 100644 lib/routes/pku/utils.ts
diff --git a/lib/routes/0x80/index.ts b/lib/routes/0x80/index.ts
index c59a1cf0785c..13463db233f9 100644
--- a/lib/routes/0x80/index.ts
+++ b/lib/routes/0x80/index.ts
@@ -41,7 +41,7 @@ async function handler() {
item = $(item);
const link = item.attr('href') || '';
- const title = item.text() || '';
+ const title = item.text();
const pubDate = extractDateFromURL(link);
return {
diff --git a/lib/routes/163/music/artist-songs.ts b/lib/routes/163/music/artist-songs.ts
index f1becb7ef578..7ceca4957f32 100644
--- a/lib/routes/163/music/artist-songs.ts
+++ b/lib/routes/163/music/artist-songs.ts
@@ -32,9 +32,6 @@ async function handler(ctx) {
const id = ctx.req.param('id');
const { data } = await got('https://music.163.com/api/v1/artist/songs', {
- headers: {
- Referer: 'https://music.163.com/',
- },
searchParams: {
id,
private_cloud: 'true',
diff --git a/lib/routes/163/music/artist.ts b/lib/routes/163/music/artist.ts
index 5b6e1dd3dba8..76c40dee7b5a 100644
--- a/lib/routes/163/music/artist.ts
+++ b/lib/routes/163/music/artist.ts
@@ -31,11 +31,7 @@ export const route: Route = {
async function handler(ctx) {
const id = ctx.req.param('id');
- const response = await got(`https://music.163.com/api/artist/albums/${id}`, {
- headers: {
- Referer: 'https://music.163.com/',
- },
- });
+ const response = await got(`https://music.163.com/api/artist/albums/${id}`);
const data = response.data;
diff --git a/lib/routes/163/music/djradio.tsx b/lib/routes/163/music/djradio.tsx
index 19cdcf1840b3..18d117a5248a 100644
--- a/lib/routes/163/music/djradio.tsx
+++ b/lib/routes/163/music/djradio.tsx
@@ -57,9 +57,6 @@ const ProcessFeed = (id, limit, offset) =>
`163:music:djradio:${id}:${limit}:${offset}`,
async () =>
await got.post('https://music.163.com/api/dj/program/byradio', {
- headers: {
- Referer: 'https://music.163.com/',
- },
form: {
radioId: id,
limit,
diff --git a/lib/routes/163/music/playlist.ts b/lib/routes/163/music/playlist.ts
index 0c9eca8f2570..38bdfb157d91 100644
--- a/lib/routes/163/music/playlist.ts
+++ b/lib/routes/163/music/playlist.ts
@@ -40,16 +40,12 @@ async function handler(ctx) {
const response = await got.get(`https://music.163.com/api/v3/playlist/detail?id=${id}`, {
headers: {
- Referer: 'https://music.163.com/',
Cookie: config.ncm.cookies,
},
});
const data = response.data.playlist;
const songinfo = await got('https://music.163.com/api/song/detail', {
- headers: {
- Referer: 'https://music.163.com',
- },
searchParams: {
ids: `[${data.trackIds.slice(0, 201).map((item) => item.id)}]`,
},
diff --git a/lib/routes/163/music/userevents.tsx b/lib/routes/163/music/userevents.tsx
index 911f0df8c403..8efb40e0822f 100644
--- a/lib/routes/163/music/userevents.tsx
+++ b/lib/routes/163/music/userevents.tsx
@@ -37,11 +37,7 @@ export const route: Route = {
async function handler(ctx) {
const id = ctx.req.param('id');
- const response = await got(`https://music.163.com/api/event/get/${id}`, {
- headers: {
- Referer: 'https://music.163.com/',
- },
- });
+ const response = await got(`https://music.163.com/api/event/get/${id}`);
const { data } = response;
const { nickname, signature, avatarUrl } = data.events[0].user;
diff --git a/lib/routes/19lou/index.ts b/lib/routes/19lou/index.ts
index 00c01289a3e3..8cf8cba12da0 100644
--- a/lib/routes/19lou/index.ts
+++ b/lib/routes/19lou/index.ts
@@ -100,7 +100,7 @@ async function handler(ctx) {
item.author = content('.uname, .user-name').first().text();
item.description = content('.post-cont').first().html() || content('.thread-cont').html();
- item.pubDate = timezone(parseDate(content('.cont-top-left meta').first().attr('content')), 8);
+ item.pubDate = timezone(parseDate(content('.cont-top-left meta').attr('content')), 8);
return item;
})
diff --git a/lib/routes/2023game/index.ts b/lib/routes/2023game/index.ts
index 13ad92163cba..48182ff63a3d 100644
--- a/lib/routes/2023game/index.ts
+++ b/lib/routes/2023game/index.ts
@@ -55,8 +55,8 @@ async function handler(ctx: Context): Promise {
title: $item.text().trim(),
guid: `2023game:${href}`,
link: href!,
- pubDate: parseDate($item.find('.time_box').text().trim()),
- description: $item.html() ?? '',
+ pubDate: parseDate($item.find('.time_box').text()),
+ description: $item.html(),
};
});
diff --git a/lib/routes/30secondsofcode/utils.ts b/lib/routes/30secondsofcode/utils.ts
index 502ed2ba34f5..230debc1563f 100644
--- a/lib/routes/30secondsofcode/utils.ts
+++ b/lib/routes/30secondsofcode/utils.ts
@@ -30,15 +30,9 @@ async function processItem({ link: articleLink, date }) {
.map((tag) => $(tag).find('a').text());
const article = $('main > article');
const title = article.find('h1').text();
- article.find('img').each((_, element) => {
- const img = $(element);
- const src = img.attr('src');
- if (src?.startsWith('/')) {
- img.attr('src', `${rootUrl}${src}`);
- }
- });
const image = article.find('img').attr('src');
- const description = article.clone().find('h1, script').remove().end().html();
+ article.find('h1').remove();
+ const description = article.html();
return {
title,
diff --git a/lib/routes/3dmgame/news-center.ts b/lib/routes/3dmgame/news-center.ts
index 8006f074c5df..2ca342d3e3fb 100644
--- a/lib/routes/3dmgame/news-center.ts
+++ b/lib/routes/3dmgame/news-center.ts
@@ -48,7 +48,7 @@ async function handler(ctx) {
title: item.find('.bt').text(),
link: item.attr('href'),
description: item.find('p').text(),
- pubDate: timezone(parseDate(item.find('.time').text().trim()), 8),
+ pubDate: timezone(parseDate(item.find('.time').text()), 8),
};
}
const a = item.find('.text a');
@@ -56,7 +56,7 @@ async function handler(ctx) {
title: a.first().text(),
link: a.attr('href'),
description: item.find('.miaoshu').text(),
- pubDate: timezone(parseDate(item.find('.time').text().trim()), 8),
+ pubDate: timezone(parseDate(item.find('.time').text()), 8),
};
});
diff --git a/lib/routes/4khd/article.ts b/lib/routes/4khd/article.ts
index 75a2a585b03b..5f8ddf8ea0cb 100644
--- a/lib/routes/4khd/article.ts
+++ b/lib/routes/4khd/article.ts
@@ -21,7 +21,7 @@ function loadArticle(item: WPPost) {
return {
title: item.title.rendered,
- description: article.html() ?? '',
+ description: article.html(),
pubDate: parseDate(item.date_gmt),
link: item.link,
};
diff --git a/lib/routes/4kup/article.ts b/lib/routes/4kup/article.ts
index d0ff478743c8..f1e158495c27 100644
--- a/lib/routes/4kup/article.ts
+++ b/lib/routes/4kup/article.ts
@@ -22,7 +22,7 @@ function loadArticle(item: WPPost) {
return {
title: item.title.rendered,
- description: article.html() ?? '',
+ description: article.html(),
pubDate: parseDate(item.date_gmt),
link: item.link,
};
diff --git a/lib/routes/51read/article.ts b/lib/routes/51read/article.ts
index 35e7ffa4eab7..b8556f6db9ad 100644
--- a/lib/routes/51read/article.ts
+++ b/lib/routes/51read/article.ts
@@ -81,7 +81,7 @@ const buildItem = (url: string) =>
return {
title: $('h1').text(),
- description: $('.kb-cot').html() || '',
+ description: $('.kb-cot').html(),
link: url,
};
}) as Promise;
diff --git a/lib/routes/6v123/index.ts b/lib/routes/6v123/index.ts
index 8da5bd463402..54e55a5e65a5 100644
--- a/lib/routes/6v123/index.ts
+++ b/lib/routes/6v123/index.ts
@@ -73,7 +73,7 @@ export const handler = async (ctx: Context): Promise => {
$$('div#endText div.downtps').remove();
const title: string = $$('h1').text();
- const description: string | undefined = $$('div#endText').html() ?? undefined;
+ const description = $$('div#endText').html();
const pubDateStr: string | undefined = item.link?.match(/\/(\d{4}-\d{2}-\d{2})\/\d+\.html/)?.[1];
const categoryEls: Element[] = $$('div#endText p a').toArray();
const categories: string[] = [...new Set(categoryEls.map((el) => $$(el).text()?.trim()).filter(Boolean))];
diff --git a/lib/routes/a9vg/index.ts b/lib/routes/a9vg/index.ts
index 5259262cbc18..dc911e6cd1c9 100644
--- a/lib/routes/a9vg/index.ts
+++ b/lib/routes/a9vg/index.ts
@@ -72,7 +72,7 @@ export const handler = async (ctx) => {
);
});
- item.title = $$('h1.ts, div.c-article-main_content-title').first().text();
+ item.title = $$('h1.ts, div.c-article-main_content-title').text();
item.description = renderDescription({
description: $$('td.t_f, div.c-article-main_contentraw').first().html(),
});
@@ -91,7 +91,6 @@ export const handler = async (ctx) => {
$$('div.authi em')
.first()
.text()
- .trim()
.match(/发表于 (\d+-\d+-\d+ \d+:\d+)/)?.[1] ?? $$('span.c-article-main_content-intro-item').first().text(),
['YYYY-M-D HH:mm', 'YYYY-MM-DD HH:mm']
),
diff --git a/lib/routes/aflcio/blog.ts b/lib/routes/aflcio/blog.ts
index d05d11a013de..e9570b925d43 100644
--- a/lib/routes/aflcio/blog.ts
+++ b/lib/routes/aflcio/blog.ts
@@ -27,7 +27,7 @@ export const handler = async (ctx: Context): Promise => {
const $aEl: Cheerio = $el.find('header.container h1 a').first();
const title: string = $aEl.text();
- const description: string | undefined = $el.find('div.section').html() ?? '';
+ const description = $el.find('div.section').html();
const pubDateStr: string | undefined = $el.find('div.date-timeline time').attr('datetime');
const linkUrl: string | undefined = $aEl.attr('href');
const authorEls: Element[] = $el.find('div.date-timeline a.user').toArray();
@@ -74,7 +74,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('header.article-header h1').text();
- const description: string | undefined = $$('div.section-article-body').html() ?? '';
+ const description = $$('div.section-article-body').html();
const pubDateStr: string | undefined = $$('time').attr('datetime');
const authorEls: Element[] = $$('div.byline a[property="schema:name"]').toArray();
const authors: DataItem['author'] = authorEls.map((authorEl) => {
diff --git a/lib/routes/agirls/topic-list.ts b/lib/routes/agirls/topic-list.ts
index b7f1f0fff6ff..5d4c48f5e1e3 100644
--- a/lib/routes/agirls/topic-list.ts
+++ b/lib/routes/agirls/topic-list.ts
@@ -42,14 +42,14 @@ async function handler() {
.map((item) => {
item = $(item);
return {
- title: item.find('.ag-topic__link').text().trim(),
- description: item.find('.ag-topic__summery').text().trim(),
+ title: item.find('.ag-topic__link').text(),
+ description: item.find('.ag-topic__summery').text(),
link: `${baseUrl}${item.find('.ag-topic__link').attr('href')}`,
};
});
return {
- title: $('head title').text().trim(),
+ title: $('head title').text(),
link,
description: $('head meta[name=description]').attr('content'),
item: items,
diff --git a/lib/routes/agirls/topic.ts b/lib/routes/agirls/topic.ts
index 5ea7dc8a2bc6..ff67a670c170 100644
--- a/lib/routes/agirls/topic.ts
+++ b/lib/routes/agirls/topic.ts
@@ -41,7 +41,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
return {
- title: item.text().trim(),
+ title: item.text(),
link: `${baseUrl}${item.attr('href')}`,
};
});
@@ -49,7 +49,7 @@ async function handler(ctx) {
const items = await Promise.all(list.map((item) => cache.tryGet(item.link, () => parseArticle(item))));
return {
- title: $('head title').text().trim(),
+ title: $('head title').text(),
link,
description: ldJson['@graph'][0].description,
item: items,
diff --git a/lib/routes/agirls/utils.ts b/lib/routes/agirls/utils.ts
index 13059a6978bd..31d2d05a90a1 100644
--- a/lib/routes/agirls/utils.ts
+++ b/lib/routes/agirls/utils.ts
@@ -13,7 +13,7 @@ const parseArticle = async (item) => {
...new Set(
content('.ag-article__tag')
.toArray()
- .map((e) => content(e).text().trim().replace('#', ''))
+ .map((e) => content(e).text().replace('#', ''))
),
];
const ldJson = JSON.parse(content('script[type="application/ld+json"]').text());
diff --git a/lib/routes/agirls/z-index.ts b/lib/routes/agirls/z-index.ts
index 689668196f27..cfab56f9d2f4 100644
--- a/lib/routes/agirls/z-index.ts
+++ b/lib/routes/agirls/z-index.ts
@@ -45,7 +45,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
return {
- title: item.text().trim(),
+ title: item.text(),
link: `${baseUrl}${item.attr('href')}`,
};
});
@@ -53,7 +53,7 @@ async function handler(ctx) {
const items = await Promise.all(list.map((item) => cache.tryGet(item.link, () => parseArticle(item))));
return {
- title: $('head title').text().trim(),
+ title: $('head title').text(),
link,
description: $('head meta[name=description]').attr('content'),
item: items,
diff --git a/lib/routes/ai-bot/daily-ai-news.ts b/lib/routes/ai-bot/daily-ai-news.ts
index d40cb3a59618..cffe9d822e68 100755
--- a/lib/routes/ai-bot/daily-ai-news.ts
+++ b/lib/routes/ai-bot/daily-ai-news.ts
@@ -44,7 +44,7 @@ function processNewsList($: CheerioAPI, $newsList: Cheerio, ctx: DateCo
const $child = $(child);
if ($child.hasClass('news-date')) {
- currentPubDate = parseDateString($child.text().trim(), ctx);
+ currentPubDate = parseDateString($child.text(), ctx);
return [];
}
@@ -52,7 +52,7 @@ function processNewsList($: CheerioAPI, $newsList: Cheerio, ctx: DateCo
const $link = $child.find('h2 a');
const title = $link.text().trim();
const link = $link.attr('href');
- const description = $child.find('p.text-muted').html() || '';
+ const description = $child.find('p.text-muted').html();
if (!link) {
return [];
diff --git a/lib/routes/aiaa/journal.ts b/lib/routes/aiaa/journal.ts
index f196199a6e65..203de941c831 100644
--- a/lib/routes/aiaa/journal.ts
+++ b/lib/routes/aiaa/journal.ts
@@ -38,9 +38,9 @@ async function handler(ctx) {
.map((element) => {
const $item = $(element);
const title = $item.find(String.raw`dc\:title`).text();
- const link = $item.find('link').text() || '';
- const description = $item.find('description').text() || '';
- const pubDate = parseDate($item.find(String.raw`dc\:date`).text() || '');
+ const link = $item.find('link').text();
+ const description = $item.find('description').text();
+ const pubDate = parseDate($item.find(String.raw`dc\:date`).text());
const authors = $item
.find(String.raw`dc\:creator`)
.toArray()
diff --git a/lib/routes/aiblog-2xv/archives.ts b/lib/routes/aiblog-2xv/archives.ts
index 38528ecf7471..47d10fe8a950 100644
--- a/lib/routes/aiblog-2xv/archives.ts
+++ b/lib/routes/aiblog-2xv/archives.ts
@@ -43,16 +43,16 @@ async function handler() {
.toArray()
.map((postItem) => {
const $post = $(postItem);
- const $link = $post.find('a').first();
- const $title = $post.find('h3').first();
+ const $link = $post.find('a');
+ const $title = $post.find('h3');
const $dateMeta = $post.find('.archive-meta span');
return {
- title: $title.text().trim(), // 去除首尾空格
+ title: $title.text(),
link: $link.attr('href') || '',
// 解析发布时间和更新时间(根据页面结构调整选择器,若存在则启用)
pubDate: parseDate($dateMeta.eq(0).attr('title') || ''),
- author: $post.find('.archive-meta span').last().text().trim() || '',
+ author: $post.find('.archive-meta span').last().text(),
description: '',
};
})
@@ -64,11 +64,11 @@ async function handler() {
const response = await ofetch(item.link);
const $ = load(response);
- const $main = $('main').first();
+ const $main = $('main');
item.description = `
@@ -77,7 +77,7 @@ async function handler() {
- ${$main.find('.post-content').first().html()}
+ ${$main.find('.post-content').html()}
`;
return item;
diff --git a/lib/routes/aisixiang/thinktank.ts b/lib/routes/aisixiang/thinktank.ts
index 427e27ae401f..5e27bf23501a 100644
--- a/lib/routes/aisixiang/thinktank.ts
+++ b/lib/routes/aisixiang/thinktank.ts
@@ -36,7 +36,7 @@ async function handler(ctx) {
const $ = load(response);
- const title = `${$('h2').first().text().trim()}${type}`;
+ const title = `${$('h2').first().text()}${type}`;
let items = [];
diff --git a/lib/routes/aisixiang/toplist.ts b/lib/routes/aisixiang/toplist.ts
index ede852f5e190..dd225c45a4fc 100644
--- a/lib/routes/aisixiang/toplist.ts
+++ b/lib/routes/aisixiang/toplist.ts
@@ -26,7 +26,7 @@ async function handler(ctx) {
const $ = load(response);
- const title = `${$('a.hl').text() || ''}${$('title').text().split('_', 1)[0]}`;
+ const title = `${$('a.hl').text()}${$('title').text().split('_', 1)[0]}`;
const items = $('div.tops_list')
.slice(0, limit)
diff --git a/lib/routes/aisixiang/zhuanti.ts b/lib/routes/aisixiang/zhuanti.ts
index b08713dd4664..845c0773a78a 100644
--- a/lib/routes/aisixiang/zhuanti.ts
+++ b/lib/routes/aisixiang/zhuanti.ts
@@ -38,7 +38,7 @@ async function handler(ctx) {
const $ = load(response);
- const title = $('div.tips h2').first().text();
+ const title = $('div.tips h2').text();
const items = $('div.article-title')
.slice(0, limit)
diff --git a/lib/routes/alicesoft/infomation.ts b/lib/routes/alicesoft/infomation.ts
index 305013091b97..d91c0572a2c0 100644
--- a/lib/routes/alicesoft/infomation.ts
+++ b/lib/routes/alicesoft/infomation.ts
@@ -81,7 +81,12 @@ async function handler(ctx) {
);
return {
- title: 'ALICESOFT ' + $('article h2').clone().children().remove().end().text(),
+ title:
+ 'ALICESOFT ' +
+ $('article h2')
+ .contents()
+ .filter((_, node) => node.type === 'text')
+ .text(),
link: url,
item: items,
language: 'ja',
diff --git a/lib/routes/aliyun/database-month.ts b/lib/routes/aliyun/database-month.ts
index c005de1d56d0..be75ade65851 100644
--- a/lib/routes/aliyun/database-month.ts
+++ b/lib/routes/aliyun/database-month.ts
@@ -38,7 +38,7 @@ async function handler() {
.map((e) => {
const element = $(e);
const title = element.find('a').text().trim();
- const link = `http://mysql.taobao.org${element.find('a').attr('href').trim()}/`;
+ const link = `http://mysql.taobao.org${element.find('a').attr('href')}/`;
return {
title,
description: '',
diff --git a/lib/routes/alwayscontrol/news.ts b/lib/routes/alwayscontrol/news.ts
index 17a97b10c822..3e900aa1edab 100644
--- a/lib/routes/alwayscontrol/news.ts
+++ b/lib/routes/alwayscontrol/news.ts
@@ -4,6 +4,7 @@ import type { Route } from '@/types';
import cache from '@/utils/cache';
import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
+import { finishArticleItem } from '@/utils/wechat-mp';
const baseUrl = 'https://www.alwayscontrol.com.cn';
@@ -25,7 +26,7 @@ export const route: Route = {
handler,
radar: [
{
- source: ['www.alwayscontrol.com.cn/zh-CN/news/list'],
+ source: ['www.alwayscontrol.com.cn/zh-CN/about/news'],
target: '/news',
},
],
@@ -33,76 +34,58 @@ export const route: Route = {
};
async function handler() {
- const listUrl = `${baseUrl}/zh-CN/news/list`;
+ const listUrl = `${baseUrl}/zh-CN/about/news`;
// 获取新闻列表页面
const response = await got(listUrl);
const $ = load(response.data);
// 解析新闻列表
- const list = $('article')
+ const list = $('div.grid > a')
.toArray()
.map((item) => {
const $item = $(item);
- const title = $item.find('h2').text().trim();
- const date = $item.find('time').text().trim();
- const link = $item.find('a').attr('href');
const image = $item.find('img').attr('src');
return {
- title,
- link: link ? `${baseUrl}${link}` : '',
- pubDate: parseDate(date, 'YYYY-MM-DD'),
- image: image ? (image.startsWith('http') ? image : `${baseUrl}${image}`) : '',
+ title: $item.find('h3').text(),
+ link: new URL($item.attr('href')!, baseUrl).href,
+ pubDate: parseDate($item.find('h3').next().text(), 'YYYY.MM.DD'),
+ image: image ? new URL(image, baseUrl).href : '',
};
});
// 获取每篇新闻的详细内容
const items = await Promise.all(
- list.map((item) =>
- cache.tryGet(item.link, async () => {
- if (!item.link) {
- return item;
- }
+ list.map((item) => {
+ if (new URL(item.link).host === 'mp.weixin.qq.com') {
+ return finishArticleItem({ ...item, guid: item.link });
+ }
- try {
- const detailResponse = await got(item.link);
- const $detail = load(detailResponse.data);
+ return cache.tryGet(item.link, async () => {
+ const detailResponse = await got(item.link);
+ const $detail = load(detailResponse.data);
- // 处理图片URL(相对路径转绝对路径)
- $detail('article img').each((_, elem) => {
- const $img = $detail(elem);
- const src = $img.attr('src');
- if (src && src.startsWith('/')) {
- $img.attr('src', `${baseUrl}${src}`);
- }
- });
-
- // 移除所有 class、style 等属性,但保留 src、href、alt
- $detail('article *').each((_, elem) => {
- const $elem = $detail(elem);
- const allowedAttrs = new Set(['src', 'href', 'alt', 'title']);
- const attrs = Object.keys(elem.attribs || {});
+ // 移除所有 class、style 等属性,但保留 src、href、alt
+ $detail('.prose *').each((_, elem) => {
+ const $elem = $detail(elem);
+ const allowedAttrs = new Set(['src', 'href', 'alt', 'title']);
+ const attrs = Object.keys(elem.attribs || {});
- for (const attr of attrs) {
- if (!allowedAttrs.has(attr)) {
- $elem.removeAttr(attr);
- }
+ for (const attr of attrs) {
+ if (!allowedAttrs.has(attr)) {
+ $elem.removeAttr(attr);
}
- });
+ }
+ });
- item.description = $detail('article').html() || '';
- item.author = '旭衡电子(深圳)有限公司';
- item.category = ['公司动态', '最新资讯'];
+ item.description = $detail('.prose').html();
+ item.author = '旭衡电子(深圳)有限公司';
+ item.category = ['公司动态', '最新资讯'];
- return item;
- } catch {
- // 如果获取详情失败,返回基本图片信息
- item.description = item.image ? `
` : '';
- return item;
- }
- })
- )
+ return item;
+ });
+ })
);
return {
diff --git a/lib/routes/anime1/anime.ts b/lib/routes/anime1/anime.ts
index 5537c1e95658..e6c1ee6755a7 100644
--- a/lib/routes/anime1/anime.ts
+++ b/lib/routes/anime1/anime.ts
@@ -39,13 +39,13 @@ async function handler(ctx) {
const $ = load(response);
- const title = $('.page-title').text().trim();
+ const title = $('.page-title').text();
const items = $('article')
.toArray()
.map((el) => {
const $el = $(el);
- const title = $el.find('.entry-title a').text().trim();
+ const title = $el.find('.entry-title a').text();
return {
title,
link: $el.find('.entry-title a').attr('href'),
diff --git a/lib/routes/anime1/search.ts b/lib/routes/anime1/search.ts
index 773cd69ebd66..7fe24ec02740 100644
--- a/lib/routes/anime1/search.ts
+++ b/lib/routes/anime1/search.ts
@@ -38,7 +38,7 @@ async function handler(ctx) {
.toArray()
.map((el) => {
const $el = $(el);
- const title = $el.find('.entry-title a').text().trim();
+ const title = $el.find('.entry-title a').text();
return {
title,
link: $el.find('.entry-title a').attr('href'),
diff --git a/lib/routes/anthropic/engineering.ts b/lib/routes/anthropic/engineering.ts
index acb0435dfd5d..4fc6cdd5630b 100644
--- a/lib/routes/anthropic/engineering.ts
+++ b/lib/routes/anthropic/engineering.ts
@@ -34,9 +34,9 @@ async function handler(ctx) {
const $e = $(element);
const href = $e.attr('href') ?? '';
const fullLink = href.startsWith('http') ? href : `${baseUrl}${href}`;
- const pubDate = $e.find('div[class*="date"]').text().trim();
+ const pubDate = $e.find('div[class*="date"]').text();
return {
- title: $e.find('h2, h3').text().trim(),
+ title: $e.find('h2, h3').text(),
link: fullLink,
pubDate,
};
@@ -64,7 +64,7 @@ async function handler(ctx) {
}
});
- item.description = content.html() ?? undefined;
+ item.description = content.html();
return item;
}),
diff --git a/lib/routes/anthropic/news.ts b/lib/routes/anthropic/news.ts
index 52c05e8fc836..d8522d110b2b 100644
--- a/lib/routes/anthropic/news.ts
+++ b/lib/routes/anthropic/news.ts
@@ -65,7 +65,7 @@ async function handler(ctx) {
}
});
- item.description = content.html() ?? undefined;
+ item.description = content.html();
return item;
}),
diff --git a/lib/routes/anytxt/release-notes.ts b/lib/routes/anytxt/release-notes.ts
index 6b4535f86359..e28d2a4a1831 100644
--- a/lib/routes/anytxt/release-notes.ts
+++ b/lib/routes/anytxt/release-notes.ts
@@ -27,7 +27,7 @@ export const handler = async (ctx: Context): Promise => {
const $el: Cheerio = $(el);
const title: string = $el.text();
- const description: string | undefined = $el.next().html() ?? '';
+ const description = $el.next().html();
const pubDateStr: string | undefined = title.split(/\s/, 1)[0];
const linkUrl: string | undefined = targetUrl;
const upDatedStr: string | undefined = pubDateStr;
diff --git a/lib/routes/apple/design.ts b/lib/routes/apple/design.ts
index db5d47045323..a3019840257b 100644
--- a/lib/routes/apple/design.ts
+++ b/lib/routes/apple/design.ts
@@ -25,7 +25,7 @@ async function handler() {
.toArray()
.flatMap((item) => {
const table = $(item);
- const date = table.find('.date').first().text();
+ const date = table.find('.date').text();
return table
.find('.topic-item')
diff --git a/lib/routes/aqara/news.ts b/lib/routes/aqara/news.ts
index 5de47f531771..6017ad4a0259 100644
--- a/lib/routes/aqara/news.ts
+++ b/lib/routes/aqara/news.ts
@@ -40,7 +40,7 @@ async function handler(ctx) {
item.title = content('h4.fnt_56').last().text();
item.description = content('div.news_body').html();
- item.pubDate = parseDate(content('div.news_date').first().text(), 'YYYY 年 MM 月 DD 日');
+ item.pubDate = parseDate(content('div.news_date').text(), 'YYYY 年 MM 月 DD 日');
return item;
})
diff --git a/lib/routes/asiantolick/index.ts b/lib/routes/asiantolick/index.ts
index 920eedd65eb9..04b58df8fe56 100644
--- a/lib/routes/asiantolick/index.ts
+++ b/lib/routes/asiantolick/index.ts
@@ -86,7 +86,7 @@ async function handler(ctx) {
const content = load(detailResponse);
- item.title = content('h1').first().text();
+ item.title = content('h1').text();
item.description = renderDescription({
description: content('#metadata_qrcode').html(),
images: content('div.miniatura')
diff --git a/lib/routes/bandisoft/history.ts b/lib/routes/bandisoft/history.ts
index f32f51f0eac0..e931d079c606 100644
--- a/lib/routes/bandisoft/history.ts
+++ b/lib/routes/bandisoft/history.ts
@@ -160,7 +160,7 @@ export const handler = async (ctx: Context): Promise => {
const pubDateStr: string | undefined = $el.find('div.cell2').text();
const title: string = version;
- const description: string | undefined = $el.find('ul.cell3').html() ?? undefined;
+ const description = $el.find('ul.cell3').html();
const linkUrl: string = targetUrl;
const guid = `bandisoft-${id}-${language}-${version}`;
diff --git a/lib/routes/bangumi.tv/group/reply.ts b/lib/routes/bangumi.tv/group/reply.ts
index 3c58341027b4..b235bfbb566b 100644
--- a/lib/routes/bangumi.tv/group/reply.ts
+++ b/lib/routes/bangumi.tv/group/reply.ts
@@ -62,8 +62,8 @@ async function handler(ctx) {
const postTopic = {
title,
description: $('.postTopic .topic_content').html(),
- author: $('.postTopic .inner strong a').first().text(),
- pubDate: timezone(parseDate($('.postTopic .re_info small').text().trim().slice(5)), 8),
+ author: $('.postTopic .inner strong a').text(),
+ pubDate: timezone(parseDate($('.postTopic .re_info small').text().slice(5)), 8),
link,
};
diff --git a/lib/routes/bangumi.tv/other/followrank.ts b/lib/routes/bangumi.tv/other/followrank.ts
index 804beecf7202..f1e74db9c60c 100644
--- a/lib/routes/bangumi.tv/other/followrank.ts
+++ b/lib/routes/bangumi.tv/other/followrank.ts
@@ -46,7 +46,7 @@ async function handler(ctx) {
?.match(/url\((.*?)\)/)?.[1];
const info = $item.find('small.grey').text();
return {
- title: $item.find('.title').text().trim(),
+ title: $item.find('.title').text(),
link,
description: `
${info}`,
};
diff --git a/lib/routes/baoyu/index.ts b/lib/routes/baoyu/index.ts
index c7ef8d42090b..d1909380e10c 100644
--- a/lib/routes/baoyu/index.ts
+++ b/lib/routes/baoyu/index.ts
@@ -38,7 +38,7 @@ async function handler() {
const $ = load(response);
const container = $('.container');
- const content = container.find('.prose').html() || '';
+ const content = container.find('.prose').html();
return {
title: item.title,
diff --git a/lib/routes/bbc/learningenglish.ts b/lib/routes/bbc/learningenglish.ts
index e0acd8f535ee..048959b7caff 100644
--- a/lib/routes/bbc/learningenglish.ts
+++ b/lib/routes/bbc/learningenglish.ts
@@ -78,7 +78,7 @@ async function handler(ctx: Context) {
const $content = load(detailResponse);
- item.description = $content('.widget-richtext').html() ?? undefined;
+ item.description = $content('.widget-richtext').html();
return item;
});
})
diff --git a/lib/routes/bilibili/dynamic.ts b/lib/routes/bilibili/dynamic.ts
index 9d236d551d1a..bd1c8f81effc 100644
--- a/lib/routes/bilibili/dynamic.ts
+++ b/lib/routes/bilibili/dynamic.ts
@@ -346,8 +346,7 @@ async function handler(ctx) {
const emoji = node.emoji;
description = description.replaceAll(
emoji.text,
- () =>
- `
`
+ () => `
`
);
}
// 处理转发带图评论的情况
@@ -355,10 +354,7 @@ async function handler(ctx) {
const { pics, text } = node;
description = description.replaceAll(text, () =>
pics
- .map(
- (pic) =>
- `
`
- )
+ .map((pic) => `
`)
.join('
')
);
}
diff --git a/lib/routes/bilibili/followings-dynamic.ts b/lib/routes/bilibili/followings-dynamic.ts
index d4b966e91d1c..beeed2e81d4a 100644
--- a/lib/routes/bilibili/followings-dynamic.ts
+++ b/lib/routes/bilibili/followings-dynamic.ts
@@ -179,7 +179,7 @@ async function handler(ctx) {
for (const item of emoji) {
data_content = data_content.replaceAll(
new RegExp(`\\${item.text}`, 'g'),
- () => `
`
+ () => `
`
);
}
}
diff --git a/lib/routes/bilibili/hot-search.ts b/lib/routes/bilibili/hot-search.ts
index ad759fff45d8..2d5e193f75e6 100644
--- a/lib/routes/bilibili/hot-search.ts
+++ b/lib/routes/bilibili/hot-search.ts
@@ -38,9 +38,6 @@ async function handler() {
const response = await got({
method: 'get',
url,
- headers: {
- Referer: 'https://api.bilibili.com',
- },
});
const trending = response?.data?.data?.trending;
const title = trending?.title;
diff --git a/lib/routes/bitget/announcement.ts b/lib/routes/bitget/announcement.ts
index e9d070c61d13..623ce581a39f 100644
--- a/lib/routes/bitget/announcement.ts
+++ b/lib/routes/bitget/announcement.ts
@@ -96,12 +96,9 @@ const handler: Route['handler'] = async (ctx) => {
link: item.openUrl ?? '',
pubDate: item.sendTime ? date : undefined,
description: item.content ?? '',
+ image: item.imgUrl,
};
- if (item.imgUrl) {
- dataItem.image = item.imgUrl;
- }
-
if (item.stationLetterType === '01' || item.stationLetterType === '06') {
try {
const itemResponse = await ofetch(item.openUrl ?? '', {
diff --git a/lib/routes/bjwxdxh/index.ts b/lib/routes/bjwxdxh/index.ts
index baec7979c1b0..5b7a58cfe138 100644
--- a/lib/routes/bjwxdxh/index.ts
+++ b/lib/routes/bjwxdxh/index.ts
@@ -62,7 +62,7 @@ async function handler(ctx) {
.match(/作者:(\S*)\s+发布于:(\S*\s+.*?)\s/);
item.author = info[1];
item.pubDate = timezone(parseDate(info[2], 'YYYY-MM-DD HH:mm:ss'), 8);
- item.description = content('div#con').html().trim().replaceAll('\n', '');
+ item.description = content('div#con').html().replaceAll('\n', '');
return item;
})
)
diff --git a/lib/routes/bntnews/index.ts b/lib/routes/bntnews/index.ts
index eb0f25f7ceb1..7de9a8ca43d2 100644
--- a/lib/routes/bntnews/index.ts
+++ b/lib/routes/bntnews/index.ts
@@ -78,7 +78,6 @@ async function handler(ctx) {
// Remove ads
$content.find('.googleBanner').remove();
- $content.find('script').remove();
$content.find('style').remove();
if ($content.length > 0) {
diff --git a/lib/routes/buaa/news/index.ts b/lib/routes/buaa/news/index.ts
index c8499f371a6d..6d2dbf064db4 100644
--- a/lib/routes/buaa/news/index.ts
+++ b/lib/routes/buaa/news/index.ts
@@ -54,7 +54,7 @@ async function handler(ctx: Context): Promise {
const response = await got(item.link);
const $ = load(response.data);
- item.description = $('.v_news_content').html() || '';
+ item.description = $('.v_news_content').html();
item.author = $('.vsbcontent_end').text().trim();
return item;
diff --git a/lib/routes/bullionvault/gold-news.ts b/lib/routes/bullionvault/gold-news.ts
index ff2cc9d09f05..381425b4d66a 100644
--- a/lib/routes/bullionvault/gold-news.ts
+++ b/lib/routes/bullionvault/gold-news.ts
@@ -66,7 +66,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('article.article h1').text();
- const description: string | undefined = $$('div.content').html() ?? '';
+ const description = $$('div.content').html();
const pubDateStr: string | undefined = $$('div.submitted').text().split(/,/).pop();
const categories: string[] = $$('meta[name="news_keywords"]').attr('content')?.split(/,/) ?? [];
const authorEls: Element[] = $$('div.view-author-bio').toArray();
diff --git a/lib/routes/bwsg/index.ts b/lib/routes/bwsg/index.ts
index 51435d76f854..2b9cfc04a28e 100644
--- a/lib/routes/bwsg/index.ts
+++ b/lib/routes/bwsg/index.ts
@@ -43,7 +43,7 @@ RSS feed might not get all items.
const $el = $(el);
const link = el.attribs.href;
const image = $el.find('.res_immobiliensuche__immobilien__item__thumb > img').attr('src');
- const title = $el.find('.res_immobiliensuche__immobilien__item__content__title').text().trim();
+ const title = $el.find('.res_immobiliensuche__immobilien__item__content__title').text();
const location = $el.find('.res_immobiliensuche__immobilien__item__content__meta__location').text().trim();
const price = $el.find('.res_immobiliensuche__immobilien__item__content__meta__preis').text().trim();
const metadata = $el.find('.res_immobiliensuche__immobilien__item__content__meta__row_1').text().trim();
diff --git a/lib/routes/capitalmind/utils.ts b/lib/routes/capitalmind/utils.ts
index 08fb49362067..2d34367fad9d 100644
--- a/lib/routes/capitalmind/utils.ts
+++ b/lib/routes/capitalmind/utils.ts
@@ -30,7 +30,7 @@ export async function fetchArticles(path) {
// Fetch full article content
const articleResponse = await ofetch(link);
const $articlePage = load(articleResponse);
- const $article = $articlePage('article').clone();
+ const $article = $articlePage('article');
// Extract tags from footer
const tags: string[] = $article
@@ -52,7 +52,7 @@ export async function fetchArticles(path) {
pubDate = $time.attr('datetime') || $time.text().trim();
}
- const $content = $article.find('section[aria-label="Post content"]').clone();
+ const $content = $article.find('section[aria-label="Post content"]');
// Remove footer
$content.find('footer').remove();
@@ -98,9 +98,6 @@ export async function fetchArticles(path) {
if (urlMatch && urlMatch[1]) {
const originalUrl = decodeURIComponent(urlMatch[1]);
$img.attr('src', originalUrl);
- } else if (src.startsWith('/')) {
- // Handle other relative URLs
- $img.attr('src', baseUrl + src);
}
}
});
diff --git a/lib/routes/capitalmuseum/exhibition.tsx b/lib/routes/capitalmuseum/exhibition.tsx
index b540ab5c9b85..f3afd390326f 100644
--- a/lib/routes/capitalmuseum/exhibition.tsx
+++ b/lib/routes/capitalmuseum/exhibition.tsx
@@ -67,7 +67,7 @@ export const route: Route = {
});
const $ = load(response.data);
- const nuxtDataStr = $('#__NUXT_DATA__').text() || ''; // use __NUXT_DATA__ to get the data structure of the page
+ const nuxtDataStr = $('#__NUXT_DATA__').text(); // use __NUXT_DATA__ to get the data structure of the page
const nuxtData = JSON.parse(nuxtDataStr);
const targetType = typeMap[typeParam];
@@ -109,7 +109,7 @@ export const route: Route = {
});
const detail$ = load(detailResponse.data);
- const detailNuxtDataStr = detail$('#__NUXT_DATA__').text() || '';
+ const detailNuxtDataStr = detail$('#__NUXT_DATA__').text();
const detailNuxtData = JSON.parse(detailNuxtDataStr);
const detailObj = detailNuxtData.find((obj: any) => typeof obj === 'object' && 'address' in obj);
diff --git a/lib/routes/cas/genetics/index.ts b/lib/routes/cas/genetics/index.ts
index 842288e94b7e..9b0330d9cfb6 100644
--- a/lib/routes/cas/genetics/index.ts
+++ b/lib/routes/cas/genetics/index.ts
@@ -29,7 +29,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
const a = item.find('a').first();
- const date = item.find('.box-date').first();
+ const date = item.find('.box-date');
return {
title: a.text(),
link: new URL(a.attr('href'), currentUrl).href,
@@ -55,7 +55,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
const a = item.find('a').first();
- const date = item.find('.col-news-date').first();
+ const date = item.find('.col-news-date');
return {
title: a.text(),
link: new URL(a.attr('href'), currentUrl).href,
diff --git a/lib/routes/caus/index.ts b/lib/routes/caus/index.ts
index 46d055d4bc53..b876c865085c 100644
--- a/lib/routes/caus/index.ts
+++ b/lib/routes/caus/index.ts
@@ -45,8 +45,7 @@ async function handler(ctx) {
const query: Record = {
per_page: 20,
- // Reason: using _embed=1 with many posts produces responses too large for ofetch to parse as JSON
- _embed: 'author,wp:term',
+ _embed: '',
};
if (cat.id) {
query.categories = cat.id;
diff --git a/lib/routes/ccagm/index.ts b/lib/routes/ccagm/index.ts
index 86fdb8ae1f97..2d612486bc42 100644
--- a/lib/routes/ccagm/index.ts
+++ b/lib/routes/ccagm/index.ts
@@ -54,7 +54,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('h2.center').text();
- const description: string | undefined = $$('div.newsview').html() ?? undefined;
+ const description = $$('div.newsview').html();
const pubDateStr: string | undefined = $$('p.title_s').text().trim().split(/:/).pop();
const upDatedStr: string | undefined = pubDateStr;
diff --git a/lib/routes/cccmc/index.ts b/lib/routes/cccmc/index.ts
index 188447cd7205..2fa8b9c72776 100644
--- a/lib/routes/cccmc/index.ts
+++ b/lib/routes/cccmc/index.ts
@@ -57,7 +57,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('div.title').text();
- const description: string = $$('div#article-content').html() ?? '';
+ const description = $$('div#article-content').html();
const pubDateStr: string | undefined = $$('span.time').text().split(/:/).pop();
const authorEls: Element[] = $$('span.form, span.from').toArray();
const authors: DataItem['author'] = authorEls.map((authorEl) => {
diff --git a/lib/routes/cdu/cdrw.ts b/lib/routes/cdu/cdrw.ts
index 57c9336b3830..f43df4b2490a 100644
--- a/lib/routes/cdu/cdrw.ts
+++ b/lib/routes/cdu/cdrw.ts
@@ -44,7 +44,7 @@ async function handler() {
// 优先使用title属性内容,避免内容被截断
const title = element.attr('title') || element.find('.tit').text().trim();
const link = element.attr('href');
- const dateText = element.find('.date').text().trim();
+ const dateText = element.find('.date').text();
const pubDate = timezone(parseDate(dateText), 8);
return {
diff --git a/lib/routes/cdu/tzggcdunews.ts b/lib/routes/cdu/tzggcdunews.ts
index 319cdf884865..932dd417b46a 100644
--- a/lib/routes/cdu/tzggcdunews.ts
+++ b/lib/routes/cdu/tzggcdunews.ts
@@ -44,7 +44,7 @@ async function handler() {
// 优先使用title属性内容,避免内容被截断
const title = element.attr('title') || element.find('.tit').text().trim();
const link = element.attr('href');
- const dateText = element.find('.date').text().trim();
+ const dateText = element.find('.date').text();
const pubDate = timezone(parseDate(dateText), 8);
return {
diff --git a/lib/routes/cefco/news.ts b/lib/routes/cefco/news.ts
index 3a0ba1355eea..a8ca7280c4ae 100644
--- a/lib/routes/cefco/news.ts
+++ b/lib/routes/cefco/news.ts
@@ -37,7 +37,7 @@ async function handler() {
title: a.text().trim(),
link: new URL(a.attr('href')!, baseUrl).href,
description: $item.find('dd.clamp').text(),
- pubDate: timezone(parseDate($item.find('dd.time').text().trim(), 'YYYY/MM/DD'), 8),
+ pubDate: timezone(parseDate($item.find('dd.time').text(), 'YYYY/MM/DD'), 8),
image: $item.find('a.imgbox img').attr('src') ? new URL($item.find('a.imgbox img').attr('src')!, baseUrl).href : undefined,
};
});
diff --git a/lib/routes/ceph/blog.ts b/lib/routes/ceph/blog.ts
index 155518378b05..70024f92c15b 100644
--- a/lib/routes/ceph/blog.ts
+++ b/lib/routes/ceph/blog.ts
@@ -42,7 +42,7 @@ async function handler(ctx: Context): Promise {
.toArray()
.map((e) => {
const element = $(e);
- const title = element.find('a').text().trim();
+ const title = element.find('a').text();
const pubDate = parseDate(element.find('time').attr('datetime'));
return {
title,
@@ -58,7 +58,7 @@ async function handler(ctx: Context): Promise {
const data = itemReponse.data;
const item$ = load(data);
- item.author = item$('#main section > div:nth-child(1) span').text().trim();
+ item.author = item$('#main section > div:nth-child(1) span').text();
item.description = item$('#main section > div:nth-child(2) > div').html();
return item;
})
diff --git a/lib/routes/chikubi/utils.ts b/lib/routes/chikubi/utils.ts
index e2b075b239f4..b5a6295f7165 100644
--- a/lib/routes/chikubi/utils.ts
+++ b/lib/routes/chikubi/utils.ts
@@ -70,7 +70,7 @@ function processDescription(description: string): string {
return $('body')
.children()
.toArray()
- .map((el) => $(el).clone().wrap('').parent().html())
+ .map((el) => $.html(el))
.join('');
}
diff --git a/lib/routes/chinafactcheck/utils.ts b/lib/routes/chinafactcheck/utils.ts
index 293a1ad6e90d..c902d8106fb4 100644
--- a/lib/routes/chinafactcheck/utils.ts
+++ b/lib/routes/chinafactcheck/utils.ts
@@ -32,14 +32,14 @@ const getArticleDetail = async (link) => {
});
const $ = cleanDom(load(response.data));
- const title = $('.content-head h2').text().trim();
- const author = $('.content-persons p span:last').text().trim();
- const pubDate = parseDate($('.content-time').text().trim(), 'YYYY-MM-DD');
+ const title = $('.content-head h2').text();
+ const author = $('.content-persons p span:last').text();
+ const pubDate = parseDate($('.content-time').text(), 'YYYY-MM-DD');
const description = $('div[class=content-list-box]').html();
const category = $('.content-tags a[rel="tag"]')
.toArray()
- .map((item) => $(item).text().trim());
+ .map((item) => $(item).text());
return new ArticleDetail(title, author, pubDate, description, category);
};
class ArticleDetail {
diff --git a/lib/routes/chinaratings/credit-research.ts b/lib/routes/chinaratings/credit-research.ts
index fae25399a999..054bffaf1041 100644
--- a/lib/routes/chinaratings/credit-research.ts
+++ b/lib/routes/chinaratings/credit-research.ts
@@ -55,7 +55,7 @@ export const handler = async (ctx: Context): Promise
=> {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('div.newshead h2, div.title h3').text();
- const description: string = $$('div.news div.content').html() ?? '';
+ const description = $$('div.news div.content').html();
const metaStr: string = $$('div.newshead p span, div.title p span').text();
const pubDateStr: string | undefined = metaStr?.match(/(\d{4}-\d{2}-\d{2})/)?.[1];
diff --git a/lib/routes/chinatimes/index.ts b/lib/routes/chinatimes/index.ts
index db4305191c6a..f526b586730b 100644
--- a/lib/routes/chinatimes/index.ts
+++ b/lib/routes/chinatimes/index.ts
@@ -52,14 +52,14 @@ async function handler(ctx) {
const $item = $(item);
const a = $item.find('.title a');
return {
- title: a.text().trim(),
+ title: a.text(),
link: `${baseUrl}${a.attr('href')}?chdtv`,
guid: `${baseUrl}${a.attr('href')}`,
pubDate: timezone(parseDate($item.find('time').attr('datetime')), 8),
category: $item
.find('.category a')
.toArray()
- .map((i) => $(i).text().trim()),
+ .map((i) => $(i).text()),
};
});
@@ -85,7 +85,7 @@ async function handler(ctx) {
...item.category,
...$('.article-hash-tag a')
.toArray()
- .map((i) => $(i).text().trim()),
+ .map((i) => $(i).text()),
]),
];
diff --git a/lib/routes/chnmuseum/zl.tsx b/lib/routes/chnmuseum/zl.tsx
index b8a533b024cf..c253d90e8363 100644
--- a/lib/routes/chnmuseum/zl.tsx
+++ b/lib/routes/chnmuseum/zl.tsx
@@ -113,7 +113,7 @@ const fetchTargetElements = async (cleanType: string, subtype: string | undefine
const $item = $(el).closest('li');
if ($item.length > 0) {
const rawLink = $(el).attr('href') || '';
- const rawZtzl = $(el).attr('ztzlurl')?.trim() || ''; // some exhibition links have a separate detailed page, use ztzlurl to get the detailed exhibition link if available
+ const rawZtzl = $(el).attr('ztzlurl') || ''; // some exhibition links have a separate detailed page, use ztzlurl to get the detailed exhibition link if available
// Use exhibitionLink to remove the repeat ones
const itemLink = buildItemLink(rawLink, contextUrl, baseUrl);
@@ -181,7 +181,7 @@ export const route: Route = {
return cache.tryGet(itemLink, async () => {
// for detailed exhibition page if available, different from base exhibition page.
- const rawZtzl = aTag.attr('ztzlurl')?.trim() || '';
+ const rawZtzl = aTag.attr('ztzlurl') || '';
const exhibitionLink = buildExhibitionLink(rawZtzl, itemLink, baseUrl);
// title may not have full display on the page, use the img alt information instead
@@ -198,8 +198,7 @@ export const route: Route = {
.find((box) => box.find('p').first().text().includes(keyword))
?.find('p')
.last()
- .text()
- .trim() ?? '';
+ .text() ?? '';
const location = findValue('地点');
let fullDuration = findValue('展期');
diff --git a/lib/routes/chongbuluo/index.ts b/lib/routes/chongbuluo/index.ts
index db542bbb7624..faed6af4e366 100644
--- a/lib/routes/chongbuluo/index.ts
+++ b/lib/routes/chongbuluo/index.ts
@@ -41,13 +41,13 @@ async function handler() {
.map(async (element) => {
const item = $(element);
const titleElement = item.find('th.common a.xst');
- const title = titleElement.text().trim();
+ const title = titleElement.text();
const href = titleElement.attr('href') || '';
const threadLink = href.startsWith('http') ? href : `${baseUrl}/${href}`;
- const author = item.find('td.by cite a').text().trim();
+ const author = item.find('td.by cite a').text();
- const pubDateText = item.find('td.by em a span').attr('title') || item.find('td.by em a').text().trim();
+ const pubDateText = item.find('td.by em a span').attr('title') || item.find('td.by em a').text();
const pubDate = parseDate(pubDateText);
return await cache.tryGet(threadLink, async () => {
@@ -56,7 +56,7 @@ async function handler() {
const $thread = load(threadResponse);
// 查找第一个帖子内容
- const content = $thread('.t_f').first().html()?.trim() || '';
+ const content = $thread('.t_f').first().html()?.trim();
return {
title,
diff --git a/lib/routes/chuapp/chuapp.ts b/lib/routes/chuapp/chuapp.ts
index f533c4e7a807..e888f1073090 100644
--- a/lib/routes/chuapp/chuapp.ts
+++ b/lib/routes/chuapp/chuapp.ts
@@ -127,9 +127,9 @@ async function handler(ctx: Context): Promise {
const item: DataItem = {
title: article.title,
link: article.link,
- description: s('.content .the-content').html() || '',
+ description: s('.content .the-content').html(),
pubDate: parseDate(toJavaScriptTimestamp(s('.friendly_time').attr('data-time'))),
- author: s('.author-time .fn-left').text() || '',
+ author: s('.author-time .fn-left').text(),
};
return item;
diff --git a/lib/routes/cjlu/yjsy/index.ts b/lib/routes/cjlu/yjsy/index.ts
index 1d06a3d55586..e9de3c7f7a8c 100644
--- a/lib/routes/cjlu/yjsy/index.ts
+++ b/lib/routes/cjlu/yjsy/index.ts
@@ -13,22 +13,6 @@ const titleMap = new Map([
['yjstz', '中量大研究生院 —— 研究生通知'],
['jstz', '中量大研究生院 —— 教师通知'],
]);
-const headers = {
- Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
- 'Cache-Control': 'max-age=0',
- Connection: 'keep-alive',
- Referer: 'https://yjsy.cjlu.edu.cn',
- 'Sec-Fetch-Dest': 'document',
- 'Sec-Fetch-Mode': 'navigate',
- 'Sec-Fetch-Site': 'same-origin',
- 'Sec-Fetch-User': '?1',
- 'Upgrade-Insecure-Requests': '1',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0',
- 'sec-ch-ua': '"Microsoft Edge";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
- 'sec-ch-ua-mobile': '?0',
- 'sec-ch-ua-platform': '"Windows"',
-};
const allowedResourceTypes = new Set(['document', 'script']);
@@ -88,7 +72,6 @@ async function handler(ctx) {
const { page, destroy } = await getPlaywrightPage(url, {
onBeforeLoad: async (page) => {
- await page.setExtraHTTPHeaders(headers);
await page.route('**/*', (route) => {
const request = route.request();
allowedResourceTypes.has(request.resourceType()) ? route.continue() : route.abort();
@@ -136,7 +119,6 @@ async function handler(ctx) {
const res = await ofetch(item.link, {
responseType: 'text',
headers: {
- ...headers,
Cookie: cookieString,
Referer: url,
},
diff --git a/lib/routes/claude/blog.ts b/lib/routes/claude/blog.ts
index 50b2828eed45..a54d5aeac3bc 100644
--- a/lib/routes/claude/blog.ts
+++ b/lib/routes/claude/blog.ts
@@ -44,13 +44,13 @@ async function handler(ctx) {
.slice(0, limit)
.map((el) => {
const $el = $(el);
- const title = $el.find('.card_blog_list_title').text().trim();
+ const title = $el.find('.card_blog_list_title').text();
const href = $el.find('a.clickable_link').attr('href') ?? '';
- const pubDateText = $el.find('[fs-list-fieldtype="date"][fs-list-field="date"]').text().trim();
+ const pubDateText = $el.find('[fs-list-fieldtype="date"][fs-list-field="date"]').text();
const category = $el
.find('[fs-list-field="category"]')
.toArray()
- .map((c) => $(c).text().trim())
+ .map((c) => $(c).text())
.filter(Boolean);
return {
@@ -70,9 +70,9 @@ async function handler(ctx) {
const content = $('.blog_post_content_wrap');
- content.find('style, script').remove();
+ content.find('style').remove();
- item.description = content.html() ?? undefined;
+ item.description = content.html();
return item;
}),
diff --git a/lib/routes/claude/code-changelog.ts b/lib/routes/claude/code-changelog.ts
index 167f71e7212a..46d74e262f1b 100644
--- a/lib/routes/claude/code-changelog.ts
+++ b/lib/routes/claude/code-changelog.ts
@@ -20,13 +20,13 @@ const handler = async (ctx: Context): Promise => {
.toArray()
.map((el): DataItem => {
const $entry = $(el);
- const version = $entry.find('[data-component-part="update-label"]').text().trim();
+ const version = $entry.find('[data-component-part="update-label"]').text();
if (!version) {
return null as unknown as DataItem;
}
- const dateText = $entry.find('[data-component-part="update-description"]').text().trim();
- const description = $entry.find('[data-component-part="update-content"]').html() ?? '';
+ const dateText = $entry.find('[data-component-part="update-description"]').text();
+ const description = $entry.find('[data-component-part="update-content"]').html();
const anchor = $entry.attr('id') ?? version.replaceAll('.', '-');
const link = `${targetUrl}#${anchor}`;
diff --git a/lib/routes/cline/blog.ts b/lib/routes/cline/blog.ts
index 4ae95ce50cea..723352b21ea2 100644
--- a/lib/routes/cline/blog.ts
+++ b/lib/routes/cline/blog.ts
@@ -15,12 +15,12 @@ function extractArticlesFromDOM($: CheerioAPI): DataItem[] {
.map((article) => {
const element = $(article);
- const title = element.find('h2').text().trim();
+ const title = element.find('h2').text();
const link = element.find('a').first().attr('href');
const fullLink = link ? (link.startsWith('http') ? link : `${rootUrl}${link.startsWith('/') ? link : `/${link}`}`) : '';
// Extract date and author with single regex
- const metaText = element.find('.text-sm.text-slate-500').text().trim();
+ const metaText = element.find('.text-sm.text-slate-500').text();
const metaMatch = metaText.match(/^([^•]+)•\s*([A-Z]+\s+\d{1,2},?\s+\d{4})/i);
const author = metaMatch ? metaMatch[1].trim() : 'Cline Team';
const pubDate = metaMatch ? parseDate(metaMatch[2]) : undefined;
diff --git a/lib/routes/cmu/andypavlo/blog.ts b/lib/routes/cmu/andypavlo/blog.ts
index bdf87b6a832a..6813a38b26ad 100644
--- a/lib/routes/cmu/andypavlo/blog.ts
+++ b/lib/routes/cmu/andypavlo/blog.ts
@@ -18,9 +18,9 @@ async function getArticles() {
const $description = $item.find('p');
return {
- title: $title.text().trim(),
+ title: $title.text(),
link: $title.attr('href'),
- description: $description.text().trim(),
+ description: $description.text(),
pubDate: parseDate($date.attr('title')),
guid: $title.attr('href'),
};
diff --git a/lib/routes/cnljxh/index.ts b/lib/routes/cnljxh/index.ts
index 0af711fc0cc2..8d55f53fbbe8 100644
--- a/lib/routes/cnljxh/index.ts
+++ b/lib/routes/cnljxh/index.ts
@@ -54,7 +54,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('div.content_title h2').text();
- const description: string | undefined = $$('div.content_div').html() ?? '';
+ const description = $$('div.content_div').html();
const authors: DataItem['author'] = $$('div.content_title p').text().split(/\s/, 1)[0]?.split(/:/).pop();
let processedItem: DataItem = {
diff --git a/lib/routes/cnu/iec.ts b/lib/routes/cnu/iec.ts
index 21fc4eb760b7..d2e65b088246 100644
--- a/lib/routes/cnu/iec.ts
+++ b/lib/routes/cnu/iec.ts
@@ -43,7 +43,7 @@ async function handler() {
const a = item.find('a');
// 提取日期 [YYYY-MM-DD]
- const dateText = span.text().trim();
+ const dateText = span.text();
const dateMatch = dateText.match(/\[(\d{4}-\d{2}-\d{2})\]/);
const pubDate = dateMatch ? parseDate(dateMatch[1], 'YYYY-MM-DD') : undefined;
diff --git a/lib/routes/cnu/jdxw.ts b/lib/routes/cnu/jdxw.ts
index c2ecd618b4a4..7067c52780a3 100644
--- a/lib/routes/cnu/jdxw.ts
+++ b/lib/routes/cnu/jdxw.ts
@@ -46,7 +46,7 @@ async function handler() {
return {
title: item.find('span.listTitle').text().trim(),
link: linkUrl,
- pubDate: parseDate(item.find('span.listDate').text().trim(), 'YYYY-MM-DD'),
+ pubDate: parseDate(item.find('span.listDate').text(), 'YYYY-MM-DD'),
description: '',
};
});
diff --git a/lib/routes/cnu/jwc.ts b/lib/routes/cnu/jwc.ts
index a91ab883b6e2..300ef2989ffb 100644
--- a/lib/routes/cnu/jwc.ts
+++ b/lib/routes/cnu/jwc.ts
@@ -44,8 +44,8 @@ async function handler() {
const linkUrl = href?.startsWith('http') ? href : `${baseUrl}/tzgg/${href}`;
const dateSpan = item.find('span.date');
- const day = dateSpan.find('span.day').text().trim();
- const year = dateSpan.find('span.year').text().trim();
+ const day = dateSpan.find('span.day').text();
+ const year = dateSpan.find('span.year').text();
const pubDate = year && day ? parseDate(`${year}-${day}`, 'YYYY-MM-DD') : null;
const categoryName = item.find('span.name').text().trim();
diff --git a/lib/routes/cnu/physics.ts b/lib/routes/cnu/physics.ts
index 1c6b575158cf..c610c7df1773 100644
--- a/lib/routes/cnu/physics.ts
+++ b/lib/routes/cnu/physics.ts
@@ -44,7 +44,7 @@ async function handler() {
const a = item.find('a');
// 提取日期 [YYYY-MM-DD]
- const dateText = span.text().trim();
+ const dateText = span.text();
const dateMatch = dateText.match(/\[(\d{4}-\d{2}-\d{2})\]/);
const pubDate = dateMatch ? parseDate(dateMatch[1], 'YYYY-MM-DD') : undefined;
diff --git a/lib/routes/cnu/smkxxy.ts b/lib/routes/cnu/smkxxy.ts
index ea14a82c1786..e7461ce10951 100644
--- a/lib/routes/cnu/smkxxy.ts
+++ b/lib/routes/cnu/smkxxy.ts
@@ -45,7 +45,7 @@ async function handler() {
return {
title: item.find('p.gpArticleTitle').text().trim(),
link: linkUrl,
- pubDate: parseDate(item.find('span.gpArticleDate').text().trim(), 'YYYY-MM-DD'),
+ pubDate: parseDate(item.find('span.gpArticleDate').text(), 'YYYY-MM-DD'),
description: '',
};
});
diff --git a/lib/routes/cockroachlabs/blog.ts b/lib/routes/cockroachlabs/blog.ts
index f23a108eea52..d433e6ce5101 100644
--- a/lib/routes/cockroachlabs/blog.ts
+++ b/lib/routes/cockroachlabs/blog.ts
@@ -67,7 +67,7 @@ async function handler(ctx) {
//
// ..multiple `;
});
} else if (item.comments !== 'discuss' && type === 'comments_list') {
item.title = item.onStory;
diff --git a/lib/routes/hamel/index.ts b/lib/routes/hamel/index.ts
index 1b0654c52fa9..6202c31ee583 100644
--- a/lib/routes/hamel/index.ts
+++ b/lib/routes/hamel/index.ts
@@ -36,8 +36,8 @@ async function handler() {
const $date = $item.find('.listing-date');
const href = $link.attr('href');
- const title = $link.text().trim();
- const dateStr = $date.text().trim();
+ const title = $link.text();
+ const dateStr = $date.text();
if (!href || !title || !dateStr) {
return null;
@@ -64,7 +64,7 @@ async function handler() {
return {
...item,
- description: $detail('.content').html() || '',
+ description: $detail('.content').html(),
} as DataItem;
} catch {
return item;
diff --git a/lib/routes/hebeimuseum/list.tsx b/lib/routes/hebeimuseum/list.tsx
index f03d4c30e1b2..d4e11f967196 100644
--- a/lib/routes/hebeimuseum/list.tsx
+++ b/lib/routes/hebeimuseum/list.tsx
@@ -17,7 +17,7 @@ const extractDates = (durationStr: string) => {
return { startDate, endDate };
}
- const parts = durationStr.split(/[-—~]+/).map((p) => p.trim()); // currently ——and- is used, add — or ~ for redundency
+ const parts = durationStr.split(/[-—~]+/); // currently ——and- is used, add — or ~ for redundency
const startStr = parts[0];
const endStr = parts[1];
@@ -111,7 +111,7 @@ export const route: Route = {
});
const content = load(detailResponse.data);
- const pubDateRaw = content('.article .info .infowrap img.icon_time').next('span').text().replaceAll('时间:', '').trim();
+ const pubDateRaw = content('.article .info .infowrap img.icon_time').next('span').text().replaceAll('时间:', '');
const pubDate = parseDate(pubDateRaw);
// Default path: return as news, no detail information for return
@@ -136,20 +136,13 @@ export const route: Route = {
const texts = rawText.split(/(?=展览名称:|展览时间:|时间:|展览地点:|展出地点:|地点:)/);
// use fullDration to extract startDate and endDate, if fullDuration is not exist, return empty data
- const fullDuration = texts
- .find((text) => text.includes('时间:'))
- ?.replaceAll(/(?:展览)?时间:/g, '')
- ?.trim();
+ const fullDuration = texts.find((text) => text.includes('时间:'))?.replaceAll(/(?:展览)?时间:/g, '');
if (!fullDuration) {
return {} as Record;
}
- let location =
- texts
- .find((text) => text.includes('地点:'))
- ?.replaceAll(/(?:展(?:览|出))?地点:/g, '')
- ?.trim() || '';
+ let location = texts.find((text) => text.includes('地点:'))?.replaceAll(/(?:展(?:览|出))?地点:/g, '') || '';
const locMatch = location.match(/^.*?展厅/) || [''];
diff --git a/lib/routes/hexun/index.ts b/lib/routes/hexun/index.ts
index aefd556a78e1..8a6861a2a2dd 100644
--- a/lib/routes/hexun/index.ts
+++ b/lib/routes/hexun/index.ts
@@ -35,7 +35,7 @@ async function handler() {
const a = element.find('a');
const link = a.attr('href')?.replace('http://', 'https://') || '';
- const title = a.text() || '';
+ const title = a.text();
const timeSpan = element.find('span');
const dateText = timeSpan.text().slice(1, timeSpan.text().length - 1);
@@ -59,7 +59,7 @@ async function handler() {
const $ = load(decoder.decode(response.data));
- item.description = $('.art_contextBox').html() || '';
+ item.description = $('.art_contextBox').html();
return item;
})
diff --git a/lib/routes/hit/today.ts b/lib/routes/hit/today.ts
index 8374719f1294..58976f8797e9 100644
--- a/lib/routes/hit/today.ts
+++ b/lib/routes/hit/today.ts
@@ -41,11 +41,7 @@ async function handler(ctx) {
const host = 'https://today.hit.edu.cn';
const category = ctx.req.param('category');
- const response = await got(host + '/category/' + category, {
- headers: {
- Referer: host,
- },
- });
+ const response = await got(host + '/category/' + category);
const $ = load(response.data);
const list = $('.paragraph li')
@@ -61,21 +57,11 @@ async function handler(ctx) {
list.map((item) =>
cache.tryGet(item.link, async () => {
try {
- const response = await got(item.link, {
- headers: {
- Referer: host,
- },
- });
+ const response = await got(item.link);
const $ = load(response.data);
- item.pubDate = timezone(parseDate($('.left-attr.first').text().trim()), 8);
- item.description =
- $('.article-content').html() &&
- $('.article-content')
- .html()
- .replaceAll('src="/', () => `src="${new URL('.', host).href}`)
- .replaceAll('href="/', () => `href="${new URL('.', host).href}`)
- .trim();
+ item.pubDate = timezone(parseDate($('.left-attr.first').text()), 8);
+ item.description = $('.article-content').html()?.trim();
} catch {
// intranet
item.description = '请进行统一身份认证后查看全文';
diff --git a/lib/routes/hitsz/due-tzgg.ts b/lib/routes/hitsz/due-tzgg.ts
index 16078cde7917..d7686323fc02 100644
--- a/lib/routes/hitsz/due-tzgg.ts
+++ b/lib/routes/hitsz/due-tzgg.ts
@@ -44,7 +44,7 @@ export const handler = async () => {
}
const title = $el.find('span').text().trim();
- const pubDateStr = $el.find('label').text().trim();
+ const pubDateStr = $el.find('label').text();
return {
title,
diff --git a/lib/routes/hitwh/today.ts b/lib/routes/hitwh/today.ts
index 0cac40116a1f..4669c0c61cec 100644
--- a/lib/routes/hitwh/today.ts
+++ b/lib/routes/hitwh/today.ts
@@ -23,13 +23,13 @@ export const route: Route = {
},
radar: [
{
- source: ['hitwh.edu.cn/1024/list.htm', 'hitwh.edu.cn/'],
+ source: ['today.hitwh.edu.cn/1024/list.htm', 'today.hitwh.edu.cn/'],
},
],
name: '今日工大 - 通知公告',
maintainers: ['raptazure'],
handler,
- url: 'hitwh.edu.cn/1024/list.htm',
+ url: 'today.hitwh.edu.cn/1024/list.htm',
};
async function handler() {
@@ -50,26 +50,14 @@ async function handler() {
item: await Promise.all(
links.map((item) =>
cache.tryGet(item.link, async () => {
- if (type(item.link) === 'htm') {
- try {
- const { data } = await got(item.link);
- const $ = load(data);
- item.description =
- $('div.wp_articlecontent').html() &&
- $('div.wp_articlecontent')
- .html()
- .replaceAll('src="/', () => `src="${baseUrl}/`)
- .replaceAll('href="/', () => `href="${baseUrl}/`)
- .trim();
- return item;
- } catch {
- // intranet
- item.description = '请进行统一身份认证之后再访问';
- return item;
- }
+ if (type(item.link) !== 'htm') {
+ // file to download
+ item.description = '此链接为文件,点击以下载';
+ return item;
}
- // file to download
- item.description = '此链接为文件,点击以下载';
+ const { data } = await got(item.link);
+ const $ = load(data);
+ item.description = $('div.wp_articlecontent').html() ?? '请进行统一身份认证之后再访问';
return item;
})
)
diff --git a/lib/routes/hlju/news.ts b/lib/routes/hlju/news.ts
index 16f667f20a08..5bc11024577d 100644
--- a/lib/routes/hlju/news.ts
+++ b/lib/routes/hlju/news.ts
@@ -104,7 +104,7 @@ async function handler(ctx) {
if (content.length > 0) {
// 清理内容
- content.find('script, style, .print, .share').remove();
+ content.find('style, .print, .share').remove();
description = content.html() || '';
} else {
description = '内容获取失败,请点击查看原文';
diff --git a/lib/routes/hnmuseum/exhibitions.tsx b/lib/routes/hnmuseum/exhibitions.tsx
index c15a76089877..3382f166380a 100644
--- a/lib/routes/hnmuseum/exhibitions.tsx
+++ b/lib/routes/hnmuseum/exhibitions.tsx
@@ -30,7 +30,7 @@ const formatStr = (dateStr: string | undefined): string | undefined => {
return undefined;
}
- const match = dateStr.trim().match(/(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})日/);
+ const match = dateStr.match(/(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})日/);
if (match) {
const year = match[1];
@@ -111,7 +111,7 @@ export const route: Route = {
selector: '#block-views-a784821b4fd9f41563c7164fd2a2f96e .views-row',
type: 'permanent' as const,
extra: ($item: Cheerio) => ({
- location: $item.find('.views_zhanting .field-content').text().trim(),
+ location: $item.find('.views_zhanting .field-content').text(),
fullDuration: $item.find('.views_startdate .field-content').text().trim(),
}),
},
@@ -119,7 +119,7 @@ export const route: Route = {
selector: '#block-views-chen-lie-block .views-row',
type: 'special' as const,
extra: ($item: Cheerio) => ({
- location: $item.find('.views_zhanting .field-content').text().trim(),
+ location: $item.find('.views_zhanting .field-content').text(),
}),
},
{
diff --git a/lib/routes/hongkong/chp.ts b/lib/routes/hongkong/chp.ts
index 916cd5f1d9cc..28a0f6ad7b04 100644
--- a/lib/routes/hongkong/chp.ts
+++ b/lib/routes/hongkong/chp.ts
@@ -100,7 +100,7 @@ async function handler(ctx) {
const content = load(detailResponse.data);
- content('#btmNav, script').remove();
+ content('#btmNav').remove();
content('.contHeader, .title_display_date').remove();
content('.printBtn, .bookmarkBtn, .qrBtn, .qr-content').remove();
diff --git a/lib/routes/hotukdeals/hottest.ts b/lib/routes/hotukdeals/hottest.ts
index 805f22a37149..54b89464514e 100644
--- a/lib/routes/hotukdeals/hottest.ts
+++ b/lib/routes/hotukdeals/hottest.ts
@@ -28,11 +28,7 @@ export const route: Route = {
};
async function handler() {
- const data = await got.get('https://www.hotukdeals.com/', {
- headers: {
- Referer: 'https://www.hotukdeals.com/',
- },
- });
+ const data = await got.get('https://www.hotukdeals.com/');
const dom = new JSDOM(data.data, {
runScripts: 'dangerously',
diff --git a/lib/routes/hpoi/utils.ts b/lib/routes/hpoi/utils.ts
index 8e6297cd5a65..1bc64f2a841d 100644
--- a/lib/routes/hpoi/utils.ts
+++ b/lib/routes/hpoi/utils.ts
@@ -28,9 +28,6 @@ const ProcessFeed = async (type, id, order) => {
let response = await got({
method: 'get',
url: link,
- headers: {
- Referer: host,
- },
});
let $ = load(response.data);
@@ -39,9 +36,6 @@ const ProcessFeed = async (type, id, order) => {
const overviewResponse = await got({
method: 'get',
url: overviewLink,
- headers: {
- Referer: host,
- },
});
const $overview = load(overviewResponse.data);
@@ -53,9 +47,6 @@ const ProcessFeed = async (type, id, order) => {
response = await got({
method: 'get',
url: link,
- headers: {
- Referer: host,
- },
});
$ = load(response.data);
}
diff --git a/lib/routes/hrbeu/cec/list.ts b/lib/routes/hrbeu/cec/list.ts
index 188c11e76a8a..4f9d9eb4bc9a 100644
--- a/lib/routes/hrbeu/cec/list.ts
+++ b/lib/routes/hrbeu/cec/list.ts
@@ -37,19 +37,14 @@ export const route: Route = {
async function handler(ctx) {
const id = ctx.req.param('id');
- const response = await got(`${rootUrl}/${id}/list.htm`, {
- headers: {
- Referer: rootUrl,
- },
- });
+ const response = await got(`${rootUrl}/${id}/list.htm`);
const $ = load(response.data);
const bigTitle = $('div.column-news-box')
.find('h2.column-title')
.text()
- .replaceAll(/[\s·]/g, '')
- .trim();
+ .replaceAll(/[\s·]/g, '');
const list = $('a.column-news-item')
.toArray()
@@ -59,7 +54,7 @@ async function handler(ctx) {
link = `${rootUrl}${link}`;
}
return {
- title: $(item).find('span.column-news-title').text().trim(),
+ title: $(item).find('span.column-news-title').text(),
pubDate: parseDate($(item).find('span.column-news-date').text()),
link,
};
diff --git a/lib/routes/hrbeu/gx/card.ts b/lib/routes/hrbeu/gx/card.ts
index 2fa03e43a84c..4788b3841357 100644
--- a/lib/routes/hrbeu/gx/card.ts
+++ b/lib/routes/hrbeu/gx/card.ts
@@ -18,11 +18,7 @@ async function handler(ctx) {
const id = ctx.req.param('id') || '';
const toUrl = id === '' ? `${rootUrl}/${column}.htm` : `${rootUrl}/${column}/${id}.htm`;
- const response = await got(toUrl, {
- headers: {
- Referer: rootUrl,
- },
- });
+ const response = await got(toUrl);
const $ = load(response.data);
diff --git a/lib/routes/hrbeu/gx/list.ts b/lib/routes/hrbeu/gx/list.ts
index dc0ab50fd973..8e00e8332c4e 100644
--- a/lib/routes/hrbeu/gx/list.ts
+++ b/lib/routes/hrbeu/gx/list.ts
@@ -19,11 +19,7 @@ async function handler(ctx) {
const id = ctx.req.param('id') || '';
const toUrl = id === '' ? `${rootUrl}/${column}.htm` : `${rootUrl}/${column}/${id}.htm`;
- const response = await got(toUrl, {
- headers: {
- Referer: rootUrl,
- },
- });
+ const response = await got(toUrl);
const $ = load(response.data);
diff --git a/lib/routes/hrbeu/sec/list.ts b/lib/routes/hrbeu/sec/list.ts
index e59677033158..aa34a8c86dc6 100644
--- a/lib/routes/hrbeu/sec/list.ts
+++ b/lib/routes/hrbeu/sec/list.ts
@@ -35,19 +35,14 @@ export const route: Route = {
async function handler(ctx) {
const id = ctx.req.param('id');
- const response = await got(`${rootUrl}/${id}/list.htm`, {
- headers: {
- Referer: rootUrl,
- },
- });
+ const response = await got(`${rootUrl}/${id}/list.htm`);
const $ = load(response.data);
const bigTitle = $('div [class=lanmuInnerMiddleBigClass_right]')
.find('div [portletmode=simpleColumnAttri]')
.text()
- .replaceAll(/[\s·]/g, '')
- .trim();
+ .replaceAll(/[\s·]/g, '');
const list = $('li.list_item')
.toArray()
diff --git a/lib/routes/hrbeu/uae/news.ts b/lib/routes/hrbeu/uae/news.ts
index 7019c2716043..10c95560932d 100644
--- a/lib/routes/hrbeu/uae/news.ts
+++ b/lib/routes/hrbeu/uae/news.ts
@@ -37,11 +37,7 @@ async function handler(ctx) {
const host = 'http://uae.hrbeu.edu.cn';
const url = `${host}/${id}.htm`;
- const response = await got(url, {
- headers: {
- Referer: host,
- },
- });
+ const response = await got(url);
const $ = load(response.data);
const title = $('h2').text();
diff --git a/lib/routes/hrbeu/ugs/news.ts b/lib/routes/hrbeu/ugs/news.ts
index c42946f76002..1e862963e2e5 100644
--- a/lib/routes/hrbeu/ugs/news.ts
+++ b/lib/routes/hrbeu/ugs/news.ts
@@ -132,11 +132,7 @@ async function handler(ctx) {
const author = ctx.req.param('author') || 'gztz';
const category = ctx.req.param('category') || 'all';
const link = baseUrl + authorMap[author][category] + '/list.htm';
- const response = await got(link, {
- headers: {
- Referer: baseUrl,
- },
- });
+ const response = await got(link);
const $ = load(response.data);
const list = $('.wp_article_list_table .border9')
@@ -157,7 +153,7 @@ async function handler(ctx) {
const response = await got(item.link);
const $ = load(response.data);
- item.description = $('.wp_articlecontent').html().trim();
+ item.description = $('.wp_articlecontent').html();
} else {
item.description = '此链接为文件,请点击下载';
}
diff --git a/lib/routes/hrbeu/yjsy/list.ts b/lib/routes/hrbeu/yjsy/list.ts
index 0535096611cb..b70b75f772ff 100644
--- a/lib/routes/hrbeu/yjsy/list.ts
+++ b/lib/routes/hrbeu/yjsy/list.ts
@@ -36,11 +36,7 @@ export const route: Route = {
async function handler(ctx) {
const id = ctx.req.param('id');
- const response = await got(`${rootUrl}/${id}/list.htm`, {
- headers: {
- Referer: rootUrl,
- },
- });
+ const response = await got(`${rootUrl}/${id}/list.htm`);
const $ = load(response.data);
diff --git a/lib/routes/hrbust/cs.ts b/lib/routes/hrbust/cs.ts
index 042272326e6d..854a0d11f89e 100644
--- a/lib/routes/hrbust/cs.ts
+++ b/lib/routes/hrbust/cs.ts
@@ -54,7 +54,7 @@ async function handler(ctx) {
.map((item) => {
const element = $(item);
const link = new URL(element.find('a').attr('href'), rootUrl).href;
- const pubDateText = element.find('span.news_meta').text().trim();
+ const pubDateText = element.find('span.news_meta').text();
const pubDate = pubDateText ? timezone(parseDate(pubDateText), 8) : null;
return {
title: element.find('a').text().trim(),
diff --git a/lib/routes/hrbust/jwzx.ts b/lib/routes/hrbust/jwzx.ts
index 68f4a0a0efd0..b9282b9bf42b 100644
--- a/lib/routes/hrbust/jwzx.ts
+++ b/lib/routes/hrbust/jwzx.ts
@@ -59,7 +59,7 @@ async function handler(ctx) {
const element = $(item);
const link = new URL(element.find('a').attr('href'), rootUrl).href;
const title = element.find('a').text().trim();
- const pubDateText = element.find('span').text().trim();
+ const pubDateText = element.find('span').text();
const pubDate = timezone(parseDate(pubDateText), 8);
return {
title,
diff --git a/lib/routes/huggingface/blog-community.ts b/lib/routes/huggingface/blog-community.ts
index 35974348d536..5811760b1a5f 100644
--- a/lib/routes/huggingface/blog-community.ts
+++ b/lib/routes/huggingface/blog-community.ts
@@ -99,7 +99,7 @@ async function handler(ctx) {
$('.mb-4, .mb-6, .not-prose, h1').remove();
return {
...item,
- description: $('.blog-content').html() ?? undefined,
+ description: $('.blog-content').html(),
};
})
)
diff --git a/lib/routes/huggingface/blog-zh.ts b/lib/routes/huggingface/blog-zh.ts
index 7913d2729d5c..3ad730562484 100644
--- a/lib/routes/huggingface/blog-zh.ts
+++ b/lib/routes/huggingface/blog-zh.ts
@@ -73,7 +73,7 @@ async function handler() {
$('.mb-4, .mb-6, .not-prose, h1').remove();
return {
...item,
- description: $('.blog-content').html() ?? undefined,
+ description: $('.blog-content').html(),
};
})
)
diff --git a/lib/routes/huggingface/blog.ts b/lib/routes/huggingface/blog.ts
index ca3d49764ba7..18050ee46918 100644
--- a/lib/routes/huggingface/blog.ts
+++ b/lib/routes/huggingface/blog.ts
@@ -74,7 +74,7 @@ async function handler() {
$('.mb-4, .mb-6, .not-prose, h1').remove();
return {
...item,
- description: $('.blog-content').html() ?? undefined,
+ description: $('.blog-content').html(),
};
})
)
diff --git a/lib/routes/huijin-inv/news.ts b/lib/routes/huijin-inv/news.ts
index d6ac69b275ba..6ba1d575cb94 100644
--- a/lib/routes/huijin-inv/news.ts
+++ b/lib/routes/huijin-inv/news.ts
@@ -33,7 +33,7 @@ async function handler(): Promise {
const indexPage = await ofetch(redirectURL);
const $: CheerioAPI = load(indexPage);
const title = $('title').text()?.trim();
- const author = $('div.logo a').attr('title')?.trim();
+ const author = $('div.logo a').attr('title');
const items: DataItem[] = $('div.infor-list-item')
.toArray()
.map((listItem) => {
diff --git a/lib/routes/humanlayer/blog.ts b/lib/routes/humanlayer/blog.ts
index 270ce63ea137..f0ce67a1250f 100644
--- a/lib/routes/humanlayer/blog.ts
+++ b/lib/routes/humanlayer/blog.ts
@@ -42,9 +42,9 @@ async function handler() {
.map((el) => {
const $el = $(el);
const href = $el.attr('href')!;
- const title = $el.find('h2').text().trim();
- const metaLine = $el.find('p.text-sm').text().trim();
- const description = $el.find('p[style]').text().trim();
+ const title = $el.find('h2').text();
+ const metaLine = $el.find('p.text-sm').text();
+ const description = $el.find('p[style]').text();
// meta format: "Author · Date · Read time · #tag1 #tag2"
const parts = metaLine.split('·').map((s) => s.trim());
diff --git a/lib/routes/hunau/utils/news-content.ts b/lib/routes/hunau/utils/news-content.ts
index 9051ff307e72..177a7a3e54f2 100644
--- a/lib/routes/hunau/utils/news-content.ts
+++ b/lib/routes/hunau/utils/news-content.ts
@@ -20,7 +20,7 @@ export const newsContent = async (link, department = '') => {
}
// 解析日期
- const extractDate = ($('.info').first().html()?.match(reg) || [])[0];
+ const extractDate = ($('.info').html()?.match(reg) || [])[0];
const pubDate = timezone(parseDate(extractDate, 'YYYY-MM-DD', 'zh-cn'), 8);
// 解析文章
const newsContent = $(element).first();
diff --git a/lib/routes/ieee/journal.ts b/lib/routes/ieee/journal.ts
index e1299e00f8f1..18e63063648e 100644
--- a/lib/routes/ieee/journal.ts
+++ b/lib/routes/ieee/journal.ts
@@ -45,7 +45,7 @@ async function handler(ctx) {
const $ = load(response);
const target = $('script[type="text/javascript"]:contains("xplGlobal.document.metadata")');
- const code = target.text() || '';
+ const code = target.text();
// 捕获等号右侧的 JSON(最小匹配直到紧随的分号)
const m = code.match(/xplGlobal\.document\.metadata\s*=\s*(\{[\s\S]*?\})\s*;/);
diff --git a/lib/routes/iheima/index.ts b/lib/routes/iheima/index.ts
index 2c231fc7d48a..4dec9456e8c7 100644
--- a/lib/routes/iheima/index.ts
+++ b/lib/routes/iheima/index.ts
@@ -21,7 +21,6 @@ async function handler() {
responseType: 'json',
headers: {
Accept: 'application/json, text/javascript, */*; q=0.01',
- Referer: 'https://www.iheima.com/',
'X-Requested-With': 'XMLHttpRequest',
},
});
diff --git a/lib/routes/iiilab/index.ts b/lib/routes/iiilab/index.ts
index baf94ca659e1..ac3235e07a97 100644
--- a/lib/routes/iiilab/index.ts
+++ b/lib/routes/iiilab/index.ts
@@ -32,7 +32,7 @@ async function handler() {
item: '.aw-common-list > div',
title: `$('a').first().text()`,
link: `$('a').first().attr('href')`,
- description: `$('.markitup-box').first().text()`,
+ description: `$('.markitup-box').text()`,
pubDate: `parseDate($('.text-color-999').first().text(), 'YYYY-MM-DD HH:mm')`,
guid: Buffer.from(`$('a').attr('href')`).toString('base64'),
},
diff --git a/lib/routes/in-en/index.ts b/lib/routes/in-en/index.ts
index 9e52bf56170d..57681e6d7c7f 100644
--- a/lib/routes/in-en/index.ts
+++ b/lib/routes/in-en/index.ts
@@ -69,14 +69,14 @@ export const route: Route = {
const $el = $(el);
const $a = $el.find('.listTxt h5 a');
const link = $a.attr('href') ?? '';
- const title = $a.attr('title')?.trim() || $a.text().trim();
+ const title = $a.attr('title') || $a.text();
const pubDateRaw = $el.find('.listTxt .prompt > i').text().trim();
- const author = $el.find('.listTxt .prompt > span').first().text().replace('来源:', '').trim();
+ const author = $el.find('.listTxt .prompt > span').first().text().replace('来源:', '');
const category = $el
.find('.listTxt .prompt > span:not(:first-of-type) em a')
.toArray()
- .map((a) => $(a).text().trim())
+ .map((a) => $(a).text())
.filter(Boolean);
return {
@@ -95,9 +95,9 @@ export const route: Route = {
const detail = await ofetch(item.link!);
const $d = load(detail);
- item.description = $d('#article').html() ?? undefined;
+ item.description = $d('#article').html();
- const detailAuthor = $d('p.source a').text().trim();
+ const detailAuthor = $d('p.source a').text();
if (detailAuthor) {
item.author = detailAuthor;
}
diff --git a/lib/routes/inceptionlabs/blog.ts b/lib/routes/inceptionlabs/blog.ts
index f6e33ca3f693..1958907526c1 100644
--- a/lib/routes/inceptionlabs/blog.ts
+++ b/lib/routes/inceptionlabs/blog.ts
@@ -51,7 +51,7 @@ async function handler() {
const title = $el
.find('h6.framer-text')
.toArray()
- .map((h6) => $(h6).text().trim())
+ .map((h6) => $(h6).text())
.find((text) => text && text !== 'Read story');
if (!title) {
@@ -69,11 +69,11 @@ async function handler() {
const dateBlocks = $el
.find('[data-framer-name="Date"] p.framer-text')
.toArray()
- .map((p) => $(p).text().trim());
+ .map((p) => $(p).text());
// Category: featured cards use data-framer-name="Category"; standard cards use dateBlocks[0]
const categoryEl = $el.find('[data-framer-name="Category"]');
- const category = categoryEl.length > 0 ? categoryEl.first().text().trim() : (dateBlocks[0] ?? '');
+ const category = categoryEl.length > 0 ? categoryEl.first().text() : (dateBlocks[0] ?? '');
// Date: featured cards have a single Date block (the date itself); standard cards have it at index 1
const pubDate = dateBlocks.length >= 2 ? dateBlocks[1] : (dateBlocks[0] ?? '');
@@ -94,10 +94,10 @@ async function handler() {
const $post = load(postHtml);
// Full article content
- const contentHtml = $post('[data-framer-name="Content"]').first().html() ?? '';
+ const contentHtml = $post('[data-framer-name="Content"]').first().html();
// Author name from the first [data-framer-name="Author"] RichTextContainer
- const author = $post('[data-framer-name="Author"] p.framer-text').first().text().trim();
+ const author = $post('[data-framer-name="Author"] p.framer-text').first().text();
return {
...post,
diff --git a/lib/routes/infoq/recommend.ts b/lib/routes/infoq/recommend.ts
index 830f0a7a3683..2296ddd42601 100644
--- a/lib/routes/infoq/recommend.ts
+++ b/lib/routes/infoq/recommend.ts
@@ -33,9 +33,6 @@ async function handler(ctx) {
const pageUrl = 'https://www.infoq.cn';
const resp = await got.post(apiUrl, {
- headers: {
- Referer: pageUrl,
- },
json: {
size: ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 30,
},
diff --git a/lib/routes/infzm/hot.ts b/lib/routes/infzm/hot.ts
index 6af39dadbb13..4242f9130c47 100644
--- a/lib/routes/infzm/hot.ts
+++ b/lib/routes/infzm/hot.ts
@@ -24,9 +24,6 @@ async function handler(): Promise {
const { data } = await got({
method: 'get',
url: 'https://www.infzm.com/hot_contents',
- headers: {
- Referer: link,
- },
});
const resultItem = await fetchArticles(data.data.hot_contents);
diff --git a/lib/routes/infzm/utils.ts b/lib/routes/infzm/utils.ts
index 1ccd8e08a335..e263d55262cf 100644
--- a/lib/routes/infzm/utils.ts
+++ b/lib/routes/infzm/utils.ts
@@ -25,7 +25,7 @@ export async function fetchArticles(data) {
const $ = load(response.data);
return {
title: subject,
- description: $('div.nfzm-content__content').html() ?? '',
+ description: $('div.nfzm-content__content').html(),
pubDate: timezone(publish_time, 8).toUTCString(),
link,
author,
diff --git a/lib/routes/inoreader/index.ts b/lib/routes/inoreader/index.ts
index 0e3ed6f21827..205f462482b3 100644
--- a/lib/routes/inoreader/index.ts
+++ b/lib/routes/inoreader/index.ts
@@ -35,7 +35,6 @@ async function handler(ctx) {
title: $('.header_text').text().trim(),
link: currentUrl,
item: entries.toArray().map((item) => {
- const content = $(item).clone();
const header = $(item).prev();
const pubDate = $('div.article_author .au1', header)
.contents()
@@ -48,7 +47,7 @@ async function handler(ctx) {
link: $('a.title_link', header).attr('href'),
author: $('div.article_author span span', header).text().trim() + ' via ' + $('div.article_author a.feed_link', header).text().trim(),
pubDate: parseDate(pubDate, ['MMM DD YYYY HH:mm:ss', 'HH:mm:ss']),
- description: $(content).html(),
+ description: $(item).html(),
};
}),
allowEmpty: true,
diff --git a/lib/routes/investor/index.ts b/lib/routes/investor/index.ts
index 0f573059c45f..64cc265a9e3f 100644
--- a/lib/routes/investor/index.ts
+++ b/lib/routes/investor/index.ts
@@ -52,8 +52,8 @@ export const handler = async (ctx: Context): Promise => {
const detailResponse = await ofetch(item.link);
const $$: CheerioAPI = load(detailResponse);
- const title: string = $$('div.text_content_detail_title h1').text() ?? item.title;
- const description: string | undefined = $$('div.trs_editor_view').html() ?? undefined;
+ const title: string = $$('div.text_content_detail_title h1').text();
+ const description = $$('div.trs_editor_view').html();
const pubDateStr: string | undefined = $$('div.base_info_left span')
.toArray()
.some((el) => $$(el).text().includes('时间'))
diff --git a/lib/routes/ipsw.dev/index.tsx b/lib/routes/ipsw.dev/index.tsx
index 3a934b787cca..a2c0589d75bc 100644
--- a/lib/routes/ipsw.dev/index.tsx
+++ b/lib/routes/ipsw.dev/index.tsx
@@ -23,9 +23,6 @@ async function handler(ctx) {
const resp = await got({
method: 'get',
url: link,
- headers: {
- Referer: 'https://ipsw.dev/',
- },
});
const $ = load(resp.data);
diff --git a/lib/routes/ipsw/index.ts b/lib/routes/ipsw/index.ts
index 657da347c84f..53f8199efe31 100644
--- a/lib/routes/ipsw/index.ts
+++ b/lib/routes/ipsw/index.ts
@@ -45,9 +45,6 @@ async function handler(ctx) {
const response = await got({
method: 'get',
url: link,
- headers: {
- Referer: host,
- },
});
const $ = load(response.data);
const list = pname.includes(',')
@@ -79,14 +76,11 @@ async function handler(ctx) {
const response = await got({
method: 'get',
url: itemUrl,
- headers: {
- Referer: host,
- },
});
const $ = load(response.data);
const description = $('div.selector__wizard').html();
let removeString;
- removeString = pname.includes(',') ? $('div.table-responsive table tr').first().find('td').text().trim() : $('tr.firmware').first().find('td').eq(2).text().trim();
+ removeString = pname.includes(',') ? $('div.table-responsive table tr').first().find('td').text().trim() : $('tr.firmware').first().find('td').eq(2).text();
// 处理发布日期,以表格第一行的日期为最新的发布日期
removeString = removeString.replace('th', '').replace('nd', '').replace('st', '').replace('rd', '');
const rdate = removeString.replaceAll(' ', ',');
diff --git a/lib/routes/itsec/news.ts b/lib/routes/itsec/news.ts
index 6677ffec05fd..be4ec4191ad3 100644
--- a/lib/routes/itsec/news.ts
+++ b/lib/routes/itsec/news.ts
@@ -40,10 +40,10 @@ async function handler() {
.toArray()
.map((item) => {
const $item = $(item);
- const $link = $item.find('a').first();
+ const $link = $item.find('a');
const title = $link.text() || $link.prop('title');
const href = $link.prop('href');
- const date = $item.find('span').first().text().trim();
+ const date = $item.find('span').text();
if (!title || !href) {
return null;
@@ -66,10 +66,10 @@ async function handler() {
const $detail = load(detailResponse);
const title = $detail('.article-tit').text() || item.title;
- const date = $detail('.article .date').text().trim();
+ const date = $detail('.article .date').text();
const author = $detail('.article .from').last().text().trim();
- $detail('#js_content script, #js_content style').remove();
+ $detail('#js_content style').remove();
const description = $detail('#js_content .TRS_Editor').html() || $detail('#js_content').html();
return {
diff --git a/lib/routes/j-test/news.ts b/lib/routes/j-test/news.ts
index f8b7088a9a9c..716e6c149e1c 100644
--- a/lib/routes/j-test/news.ts
+++ b/lib/routes/j-test/news.ts
@@ -51,7 +51,7 @@ async function handler() {
cache.tryGet(item.link, async () => {
const response = await ofetch(item.link);
const $ = load(response);
- item.description = $('.content > table').html() ?? '';
+ item.description = $('.content > table').html();
return item;
})
)
diff --git a/lib/routes/jandan/index.ts b/lib/routes/jandan/index.ts
index 05e6d163066c..c03ce7ec94b9 100644
--- a/lib/routes/jandan/index.ts
+++ b/lib/routes/jandan/index.ts
@@ -9,7 +9,7 @@ export const route: Route = {
path: '/',
example: '/jandan',
name: 'Feed',
- maintainers: ['nczitzk', 'bigfei', 'pseudoyu'],
+ maintainers: ['lonelykid', 'nczitzk', 'bigfei', 'pseudoyu'],
parameters: {},
features: {
requireConfig: false,
@@ -33,7 +33,7 @@ async function handler(): Promise<{
link: string;
item: DataItem[];
}> {
- const rootUrl = 'http://i.jandan.net';
+ const rootUrl = 'https://i.jandan.net';
const feed = await parser.parseURL(`${rootUrl}/feed/`);
const items = await Promise.all(
feed.items.map((item) =>
@@ -52,7 +52,7 @@ async function handler(): Promise<{
});
const single: DataItem = {
title: item.title || '',
- description: $('.entry').html() || '',
+ description: $('.entry').html(),
pubDate: item.pubDate,
link: item.link,
author: item['dc:creator'],
diff --git a/lib/routes/jandan/section.ts b/lib/routes/jandan/section.ts
index bb9432cc3590..3afd29339c5f 100644
--- a/lib/routes/jandan/section.ts
+++ b/lib/routes/jandan/section.ts
@@ -6,7 +6,7 @@ export const route: Route = {
path: '/:category/:type?',
example: '/jandan/top',
name: 'Section',
- maintainers: ['nczitzk', 'pseudoyu'],
+ maintainers: ['kobemtl', 'Xuanwo', 'xyqfer', '9uanhuo', 'nczitzk', 'pseudoyu'],
parameters: {
category: {
description: '板块',
@@ -27,6 +27,10 @@ export const route: Route = {
label: '随手拍',
value: 'ooxx',
},
+ {
+ label: '女装',
+ value: 'beauty',
+ },
{
label: '无聊图',
value: 'pic',
@@ -82,37 +86,22 @@ async function handler(ctx): Promise<{
category = category.replace(/#.*$/, '');
const type = ctx.req.param('type') ?? '4hr';
- const rootUrl = 'http://i.jandan.net';
+ const rootUrl = 'https://i.jandan.net';
const currentUrl = `${rootUrl}/${category}`;
- let result: { title: string; items: DataItem[] };
+ let result: { title: string; items: DataItem[]; link?: string };
- try {
- if (category === 'top') {
- result = await handleTopSection(rootUrl, type);
- } else if (category === 'bbs') {
- result = await handleForumSection(rootUrl);
- } else {
- result = await handleCommentSection(rootUrl, category);
- }
- } catch (error: unknown) {
- const errorMessage = error instanceof Error ? error.message : String(error);
- result = {
- title: `煎蛋 - ${category}`,
- items: [
- {
- title: `抓取出错: ${category}`,
- description: `抓取 ${category} 分区时出现错误: ${errorMessage}`,
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
+ if (category === 'top') {
+ result = await handleTopSection(rootUrl, type);
+ } else if (category === 'bbs') {
+ result = await handleForumSection(rootUrl);
+ } else {
+ result = await handleCommentSection(rootUrl, category);
}
return {
title: result.title,
- link: currentUrl,
+ link: result.link ?? currentUrl,
item: result.items,
};
}
diff --git a/lib/routes/jandan/utils.ts b/lib/routes/jandan/utils.ts
index e68451e3fa4e..66cb3da01624 100644
--- a/lib/routes/jandan/utils.ts
+++ b/lib/routes/jandan/utils.ts
@@ -1,45 +1,35 @@
import { load } from 'cheerio';
+import sanitizeHtml from 'sanitize-html';
import type { DataItem } from '@/types';
+import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
/**
- * Extract page ID from script tags in HTML
+ * Extract page ID from script tags and title
*/
-export const extractPageId = async (url: string, referer: string): Promise => {
- const response = await ofetch(url, {
- headers: {
- Referer: referer,
- Accept: 'application/json, text/plain, */*',
- },
- });
+export const extractPageMeta = (url: string) =>
+ cache.tryGet(`jandan:pageMeta:${url}`, async () => {
+ const response = await ofetch(url);
- const $ = load(response);
- let pageId = '';
+ const $ = load(response);
- $('script').each((_, script) => {
- const content = $(script).html() || '';
- const match = content.match(/PAGE\s*=\s*\{\s*id\s*:\s*(\d+)\s*\}/);
- if (match) {
- pageId = match[1];
- }
+ return {
+ pageId:
+ $('script:contains("PAGE")')
+ .text()
+ .match(/PAGE\s*=\s*\{\s*id\s*:\s*(\d+)\s*\}/)?.[1] ?? '',
+ title: $('title').text().trim(),
+ };
});
- return pageId;
-};
-
/**
* Handle the top section (热榜)
*/
export const handleTopSection = async (rootUrl: string, type: string): Promise<{ title: string; items: DataItem[] }> => {
const apiUrl = `${rootUrl}/api/top/${type}`;
- const response = await ofetch(apiUrl, {
- headers: {
- Referer: rootUrl,
- Accept: 'application/json, text/plain, */*',
- },
- });
+ const response = await ofetch(apiUrl);
let title = '热榜';
switch (type) {
@@ -54,189 +44,86 @@ export const handleTopSection = async (rootUrl: string, type: string): Promise<{
break;
}
- if (response.code === 0 && response.data && Array.isArray(response.data)) {
- const items = response.data.map((item) => {
- const content = item.content.replaceAll(/img src="(.*?)"/g, (match, src) => match.replace(src, () => src.replace(/^https?:\/\/(\w+)\.moyu\.im/, 'https://$1.sinaimg.cn')));
+ if (response.code !== 0) {
+ throw new Error(`未能获取热榜数据: ${title}`);
+ }
- return {
- author: item.author,
- title: `${item.author}: ${content.replaceAll(/<[^>]+>/g, '')}`,
- description: content,
- pubDate: parseDate(item.date),
- link: `${rootUrl}/t/${item.id}`,
- } as DataItem;
- });
+ const items = response.data.map((item) => {
+ const content = item.content.replaceAll(/img src="(.*?)"/g, (match, src) => match.replace(src, () => src.replace(/^https?:\/\/(\w+)\.moyu\.im/, 'https://$1.sinaimg.cn')));
- return { title, items };
- }
+ return {
+ author: item.author,
+ title: `${item.author}: ${sanitizeHtml(content, { allowedTags: [], allowedAttributes: {} })}`,
+ description: content,
+ pubDate: parseDate(item.date_gmt),
+ link: `${rootUrl}/t/${item.id}`,
+ } as DataItem;
+ });
- return {
- title,
- items: [
- {
- title: `获取失败: ${title}`,
- description: '未能获取热榜数据',
- link: `${rootUrl}/top`,
- pubDate: new Date(),
- },
- ],
- };
+ return { title, items };
};
/**
* Handle the forum/bbs section (鱼塘)
*/
-export const handleForumSection = async (rootUrl: string): Promise<{ title: string; items: DataItem[] }> => {
+export const handleForumSection = async (rootUrl: string): Promise<{ title: string; items: DataItem[]; link: string }> => {
const title = '煎蛋 - 鱼塘';
- const currentUrl = `${rootUrl}/bbs`;
-
- try {
- const forumId = await extractPageId(currentUrl, rootUrl);
-
- if (!forumId) {
- return {
- title,
- items: [
- {
- title: `获取失败: ${title}`,
- description: '无法获取论坛ID',
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
- }
-
- const apiUrl = `${rootUrl}/api/forum/posts/${forumId}?page=1`;
- const forumData = await ofetch(apiUrl, {
- headers: {
- Referer: currentUrl,
- Accept: 'application/json, text/plain, */*',
- },
- });
-
- if (forumData.code === 0 && forumData.data && forumData.data.list && Array.isArray(forumData.data.list)) {
- const items = forumData.data.list.map((post) => {
- const content = post.content.replaceAll(/img src="(.*?)"/g, (match, src) => match.replace(src, () => src.replace(/^https?:\/\/(\w+)\.moyu\.im/, 'https://$1.sinaimg.cn')));
-
- return {
- author: post.author_name,
- title: post.title || `${post.author_name}发表了新主题`,
- description: content,
- pubDate: parseDate(post.update_time || post.create_time),
- link: `${rootUrl}/bbs#/topic/${post.post_id}`,
- category: post.reply_count > 0 ? [`${post.reply_count}条回复`] : undefined,
- } as DataItem;
- });
-
- return { title, items };
- }
+ const currentUrl = `${rootUrl}/new/forum`;
- return {
- title,
- items: [
- {
- title: `获取失败: ${title}`,
- description: '未能获取鱼塘数据',
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
- } catch (error) {
- return {
- title,
- items: [
- {
- title: '解析错误: 鱼塘',
- description: `解析鱼塘页面时出错: ${error instanceof Error ? error.message : String(error)}`,
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
+ const forumId = 112928;
+ const apiUrl = `${rootUrl}/api/forum/posts/${forumId}?page=1`;
+ const forumData = await ofetch(apiUrl);
+
+ if (forumData.code !== 0) {
+ throw new Error('未能获取鱼塘数据');
}
+
+ const items = forumData.data.list.map(
+ (post) =>
+ ({
+ author: post.author_name,
+ title: post.title,
+ pubDate: parseDate(post.create_time),
+ updated: parseDate(post.update_time),
+ link: `${rootUrl}/new/forum/topic/${post.post_id}`,
+ category: post.reply_count > 0 ? [`${post.reply_count}条回复`] : undefined,
+ }) as DataItem
+ );
+
+ return { title, items, link: currentUrl };
};
/**
- * Handle other sections (问答, 树洞, 随手拍, 无聊图)
+ * Handle other sections (问答, 树洞, 随手拍, 女装, 无聊图)
*/
export const handleCommentSection = async (rootUrl: string, category: string): Promise<{ title: string; items: DataItem[] }> => {
const currentUrl = `${rootUrl}/${category}`;
- try {
- const pageId = await extractPageId(currentUrl, rootUrl);
+ const { pageId, title: pageTitle } = await extractPageMeta(currentUrl);
+ const title = pageTitle || `煎蛋 - ${category}`;
- const response = await ofetch(currentUrl, {
- headers: {
- Referer: rootUrl,
- Accept: 'application/json, text/plain, */*',
- },
- });
+ if (!pageId) {
+ throw new Error('无法从页面中获取到帖子ID,可能网站结构已变更');
+ }
- const $ = load(response);
- const title = String($('title').text().trim()) || `煎蛋 - ${category}`;
-
- if (!pageId) {
- return {
- title,
- items: [
- {
- title: `无法解析: ${title}`,
- description: '无法从页面中获取到帖子ID,可能网站结构已变更',
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
- }
-
- const apiUrl = `${rootUrl}/api/comment/post/${pageId}?order=desc&page=1`;
- const commentsData = await ofetch(apiUrl, {
- headers: {
- Referer: currentUrl,
- Accept: 'application/json, text/plain, */*',
- },
- });
-
- if (commentsData.code === 0 && commentsData.data && commentsData.data.list && Array.isArray(commentsData.data.list)) {
- const items = commentsData.data.list.map((comment) => {
- const content = comment.content.replaceAll(/img src="(.*?)"/g, (match, src) => match.replace(src, () => src.replace(/^https?:\/\/(\w+)\.moyu\.im/, 'https://$1.sinaimg.cn')));
-
- return {
- author: comment.author,
- title: `${comment.author}: ${content.replaceAll(/<[^>]+>/g, '')}`,
- description: content,
- pubDate: parseDate(comment.date_gmt || comment.date),
- link: `${rootUrl}/t/${comment.id}`,
- } as DataItem;
- });
-
- return { title, items };
- }
+ const apiUrl = `${rootUrl}/api/comment/post/${pageId}?order=desc&page=0`;
+ const commentsData = await ofetch(apiUrl);
- return {
- title,
- items: [
- {
- title: `暂无内容: ${title || category}`,
- description: '没有获取到内容,可能需要更新解析规则',
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
- } catch {
- return {
- title: `煎蛋 - ${category}`,
- items: [
- {
- title: `解析错误: ${category}`,
- description: '解析页面时出错',
- link: currentUrl,
- pubDate: new Date(),
- },
- ],
- };
+ if (commentsData.code !== 0) {
+ throw new Error('没有获取到内容,可能需要更新解析规则');
}
+
+ const items = commentsData.data.list.map((comment) => {
+ const content = comment.content.replaceAll(/img src="(.*?)"/g, (match, src) => match.replace(src, () => src.replace(/^https?:\/\/(\w+)\.moyu\.im/, 'https://$1.sinaimg.cn')));
+
+ return {
+ author: comment.author,
+ title: `${comment.author}: ${sanitizeHtml(content, { allowedTags: [], allowedAttributes: {} })}`,
+ description: content,
+ pubDate: parseDate(comment.date_gmt),
+ link: `${rootUrl}/t/${comment.id}`,
+ } as DataItem;
+ });
+
+ return { title, items };
};
diff --git a/lib/routes/jianshu/home.ts b/lib/routes/jianshu/home.ts
index 6afc77c95223..a59d7a067c6a 100644
--- a/lib/routes/jianshu/home.ts
+++ b/lib/routes/jianshu/home.ts
@@ -36,9 +36,6 @@ async function handler() {
const response = await got({
method: 'get',
url: 'https://www.jianshu.com',
- headers: {
- Referer: 'https://www.jianshu.com',
- },
});
const data = response.data;
diff --git a/lib/routes/jiemian/account.ts b/lib/routes/jiemian/account.ts
index 139e2425c0a0..d71c41b982e9 100644
--- a/lib/routes/jiemian/account.ts
+++ b/lib/routes/jiemian/account.ts
@@ -1,9 +1,20 @@
-import type { Route } from '@/types';
+import type { Context } from 'hono';
-import { handler } from './common';
+import InvalidParameterError from '@/errors/types/invalid-parameter';
+import type { Data, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { fetchArticle } from './common';
+
+const categoryMap: Record = {
+ '1': { ckey: 'finance_config_index', name: '财经号' },
+ '2': { ckey: 'city_config_index', name: '城市号' },
+ '3': { ckey: 'media_config_index', name: '媒体号' },
+};
export const route: Route = {
- path: '/account/main/1',
+ path: '/account/main/:id',
parameters: { id: '分类 id,见下表,可在对应分类页 URL 中找到' },
name: '界面号',
example: '/jiemian/account/main/1',
@@ -13,3 +24,39 @@ export const route: Route = {
| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| 1 | 2 | 3 |`,
};
+
+async function handler(ctx: Context): Promise {
+ const { id } = ctx.req.param();
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 10;
+
+ const category = categoryMap[id];
+ if (!category) {
+ throw new InvalidParameterError('Invalid id');
+ }
+
+ const response = await ofetch('https://papi.jiemian.com/page/api/officialAccount/get_index_lists', {
+ query: {
+ ckey: category.ckey,
+ page: 1,
+ },
+ });
+
+ const list = JSON.parse(response.slice(response.indexOf('(') + 1, response.lastIndexOf(')')))
+ .result.slice(0, limit)
+ .map((article) => ({
+ title: article.title,
+ description: article.summary,
+ link: article.url,
+ pubDate: parseDate(article.publish_time, 'X'),
+ author: article.source_name,
+ image: article.image,
+ }));
+
+ const items = await Promise.all(list.map((item) => fetchArticle(item)));
+
+ return {
+ title: `界面新闻 - ${category.name}`,
+ link: `https://www.jiemian.com/account/main/${id}.html`,
+ item: items,
+ };
+}
diff --git a/lib/routes/jiemian/common.tsx b/lib/routes/jiemian/common.tsx
index 1805ee95a6d5..18b1ff7934d3 100644
--- a/lib/routes/jiemian/common.tsx
+++ b/lib/routes/jiemian/common.tsx
@@ -1,3 +1,4 @@
+import type { CheerioAPI } from 'cheerio';
import { load } from 'cheerio';
import { raw } from 'hono/html';
import { renderToString } from 'hono/jsx/dom/server';
@@ -7,14 +8,13 @@ import cache from '@/utils/cache';
import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
+const rootUrl = 'https://www.jiemian.com';
+
export const handler = async (ctx): Promise => {
- const { category, id } = ctx.req.param();
const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 50;
- const rootUrl = 'https://www.jiemian.com';
- // Reason: lists.ts uses :id param, other routes use :category or hardcoded paths
- const pathSegment = category || (id ? `lists/${id}` : '');
- const currentUrl = new URL(pathSegment ? `${pathSegment}.html` : '', rootUrl).href;
+ const category = ctx.req.path.replace(/^\/jiemian\//, '');
+ const currentUrl = new URL(category ? `${category}.html` : '', rootUrl).href;
const response = await ofetch(currentUrl);
@@ -45,62 +45,85 @@ export const handler = async (ctx): Promise => {
items = await Promise.all(
Object.values(items)
.slice(0, limit)
- .map((item) =>
- cache.tryGet(item.link, async () => {
- const detailResponse = await ofetch(item.link);
-
- const content = load(detailResponse);
- const image = content('div.article-img img').first();
- const video = content('#video-player').first();
- content('p.report-view').remove();
-
- item.title = content('div.article-header h1').eq(0).text();
- item.description = renderDescription({
- image: image
- ? {
- src: image.prop('src'),
- alt: image.next('p').text() || item.title,
- }
- : undefined,
- video: video
- ? {
- src: video.prop('data-url'),
- poster: video.prop('data-poster'),
- width: video.prop('width'),
- height: video.prop('height'),
- }
- : undefined,
- intro: content('div.article-header p').text(),
- description: content('div.article-content').html(),
- });
- item.author = content('span.author')
- .first()
- .find('a')
- .toArray()
- .map((a) => content(a).text())
- .join('/');
- item.category = content('meta.meta-container a')
- .toArray()
- .map((c) => content(c).text());
- item.pubDate = parseDate(content('div.article-info span[data-article-publish-time]').prop('data-article-publish-time'), 'X');
- item.upvotes = content('span.opt-praise__count').text() ? Number(content('span.opt-praise__count').text()) : 0;
- item.comments = content('span.opt-comment__count').text() ? Number(content('span.opt-comment__count').text()) : 0;
-
- return item;
- })
- )
+ .map((item) => fetchArticle(item))
);
+ return {
+ item: items,
+ ...feedMeta($, currentUrl),
+ };
+};
+
+export const parseCardList = (html: string) => {
+ const $ = load(html, null, false);
+
+ return $('li.card-list')
+ .toArray()
+ .map((el) => {
+ const $item = $(el);
+ return {
+ title: $item.find('h3.card-list__title').text(),
+ link: $item.find('.card-list__content > a').attr('href'),
+ image: $item.find('.card-list__img img').attr('src'),
+ };
+ });
+};
+
+export const fetchArticle = (item) =>
+ cache.tryGet(item.link, async () => {
+ const detailResponse = await ofetch(item.link);
+
+ const content = load(detailResponse);
+ const image = content('div.article-img img').first();
+ const video = content('#video-player').first();
+ content('p.report-view').remove();
+
+ item.title = content('div.article-header h1').eq(0).text();
+ item.description = renderDescription({
+ image: image
+ ? {
+ src: image.prop('src'),
+ alt: image.next('p').text() || item.title,
+ }
+ : undefined,
+ video: video
+ ? {
+ src: video.prop('data-url'),
+ poster: video.prop('data-poster'),
+ width: video.prop('width'),
+ height: video.prop('height'),
+ }
+ : undefined,
+ intro: content('div.article-header p').text(),
+ description: content('div.article-content').html(),
+ });
+ item.author = content('span.author')
+ .first()
+ .find('a')
+ .toArray()
+ .map((a) => content(a).text())
+ .join('/');
+ item.category = content('meta.meta-container a')
+ .toArray()
+ .map((c) => content(c).text());
+ // article: div.article-info, video: div.article-header__info
+ item.pubDate = parseDate(content('div.article-info, div.article-header__info').find('span[data-article-publish-time]').first().prop('data-article-publish-time'), 'X');
+ item.upvotes = content('span.opt-praise__count').text() ? Number(content('span.opt-praise__count').text()) : 0;
+ item.comments = content('span.opt-comment__count').text() ? Number(content('span.opt-comment__count').text()) : 0;
+
+ return item;
+ });
+
+export const feedMeta = ($: CheerioAPI, currentUrl: string) => {
const title = $('title').text();
const titleSplits = title.split(/_/);
- const image = new URL($('link[rel="icon"]').prop('href'), rootUrl).href;
+ const image = new URL($('link[rel="icon"]').prop('href')!, rootUrl).href;
return {
- item: items,
title,
link: currentUrl,
description: $('meta[name="description"]').prop('content'),
- language: $('html').prop('lang'),
+ language: $('html').prop('lang') as Data['language'],
image,
icon: image,
logo: image,
@@ -109,7 +132,7 @@ export const handler = async (ctx): Promise => {
};
};
-const renderDescription = ({
+export const renderDescription = ({
image,
intro,
video,
diff --git a/lib/routes/jiemian/lists.ts b/lib/routes/jiemian/lists.ts
index 7e7d7c986abd..7af7b051c310 100644
--- a/lib/routes/jiemian/lists.ts
+++ b/lib/routes/jiemian/lists.ts
@@ -1,6 +1,10 @@
-import type { Route } from '@/types';
+import { load } from 'cheerio';
+import type { Context } from 'hono';
-import { handler } from './common';
+import type { Data, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+
+import { feedMeta, fetchArticle, handler as commonHandler, parseCardList } from './common';
export const route: Route = {
path: '/lists/:id',
@@ -97,3 +101,71 @@ export const route: Route = {
:::`,
};
+
+async function handler(ctx: Context): Promise {
+ const { id } = ctx.req.param();
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
+
+ const currentUrl = `https://www.jiemian.com/lists/${id}.html`;
+ const pageResponse = await ofetch(currentUrl);
+ const $ = load(pageResponse);
+
+ const loadMore = $('div.channel-load-more');
+ if (loadMore.length === 0) {
+ const kbId = id.endsWith('kb')
+ ? id
+ : $('a.active[data-url]')
+ .attr('data-url')
+ ?.match(/lists\/(\d+kb)\.html/)?.[1];
+ if (!kbId) {
+ return commonHandler(ctx);
+ }
+
+ const kuaixunResponse = await ofetch('https://papi.jiemian.com/page/api/kuaixun/getlistmore', {
+ query: {
+ cid: kbId,
+ start_time: Math.floor(Date.now() / 1000),
+ page: 1,
+ tagid: kbId.replace('kb', ''),
+ },
+ });
+
+ const items = await Promise.all(
+ kuaixunResponse.result.list.slice(0, limit).map((flash) =>
+ fetchArticle({
+ title: flash.title,
+ link: `https://www.jiemian.com/article/${flash.id}.html`,
+ })
+ )
+ );
+
+ return {
+ item: items,
+ ...feedMeta($, currentUrl),
+ };
+ }
+
+ const listResponse = await ofetch('https://a.jiemian.com/index.php', {
+ query: {
+ m: 'newLists',
+ a: 'loadMore',
+ tid: loadMore.attr('data-tid'),
+ page: 1,
+ // request a fixed template so the returned markup is always the card list
+ tpl: 'sub-card',
+ cid: id,
+ repeat: '',
+ list_type: loadMore.attr('data-list_type'),
+ },
+ });
+
+ const { html } = JSON.parse(listResponse.slice(listResponse.indexOf('(') + 1, listResponse.lastIndexOf(')')));
+ const list = parseCardList(html);
+
+ const items = await Promise.all(list.slice(0, limit).map((item) => fetchArticle(item)));
+
+ return {
+ item: items,
+ ...feedMeta($, currentUrl),
+ };
+}
diff --git a/lib/routes/jiemian/special.ts b/lib/routes/jiemian/special.ts
index 782221141cab..36ce3dc479cf 100644
--- a/lib/routes/jiemian/special.ts
+++ b/lib/routes/jiemian/special.ts
@@ -3,8 +3,8 @@ import type { Route } from '@/types';
import { handler } from './common';
export const route: Route = {
- path: '/special/1192',
- parameters: { id: '分类 id,见下表,可在对应分类页 URL 中找到' },
+ path: '/special/:id',
+ parameters: { id: '分类 id,可在对应分类页 URL 中找到' },
name: '专题',
example: '/jiemian/special/1192',
maintainers: ['nczitzk', 'pseudoyu'],
diff --git a/lib/routes/jiemian/video.ts b/lib/routes/jiemian/video.ts
index ed1f2e6dc5a3..ae92c9773a41 100644
--- a/lib/routes/jiemian/video.ts
+++ b/lib/routes/jiemian/video.ts
@@ -1,9 +1,15 @@
-import type { Route } from '@/types';
+import { load } from 'cheerio';
+import type { Context } from 'hono';
-import { handler } from './common';
+import type { Data, Route } from '@/types';
+import cache from '@/utils/cache';
+import ofetch from '@/utils/ofetch';
+import { parseDate } from '@/utils/parse-date';
+
+import { feedMeta, fetchArticle, parseCardList, renderDescription } from './common';
export const route: Route = {
- path: '/video/lists/258_1',
+ path: '/video/lists/:id',
parameters: { id: '分类 id,见下表,可在对应分类页 URL 中找到' },
name: '视频',
example: '/jiemian/video/lists/258_1',
@@ -11,9 +17,86 @@ export const route: Route = {
handler,
description: `| [界面 Vnews](https://www.jiemian.com/video/lists/258_1.html) | [直播](https://www.jiemian.com/videoLive/lists_1.html) | [箭厂](https://www.jiemian.com/video/lists/195_1.html) | [面谈](https://www.jiemian.com/video/lists/111_1.html) | [品牌创酷](https://www.jiemian.com/video/lists/226_1.html) | [番 茄社](https://www.jiemian.com/video/lists/567_1.html) |
| ------------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ---------------------------------------------------------- | --------------------------------------------------------- |
-| 258\\_1 | videoLive/lists\\_1 | 195\\_1 | 111\\_1 | 226\\_1 | 567\\_1 |
+| 258\\_1 | videoLive | 195\\_1 | 111\\_1 | 226\\_1 | 567\\_1 |
| [商业微史记](https://www.jiemian.com/video/lists/882_1.html) |
| ------------------------------------------------------------ |
| 882\\_1 |`,
};
+
+async function handler(ctx: Context): Promise {
+ const { id } = ctx.req.param();
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
+
+ if (id === 'videoLive') {
+ const currentUrl = 'https://www.jiemian.com/videoLive/lists_1.html';
+ const [pageResponse, listResponse] = await Promise.all([ofetch(currentUrl), ofetch('https://papi.jiemian.com/page/api/livevideo/moreHistroyLiveVideo', { parseResponse: JSON.parse })]);
+
+ const items = await Promise.all(
+ listResponse.data.slice(0, limit).map((live) =>
+ cache.tryGet(live.url, async () => {
+ const detailResponse = await ofetch('https://a.jiemian.com/index.php', {
+ query: {
+ m: 'video_live',
+ a: 'loadLiveNew',
+ id: live.id,
+ },
+ });
+ const { data } = JSON.parse(detailResponse.slice(detailResponse.indexOf('(') + 1, detailResponse.lastIndexOf(')')));
+
+ return {
+ title: live.title,
+ description: renderDescription({
+ image: data.back_url_mp4 ? undefined : { src: live.image, alt: live.title },
+ video: data.back_url_mp4
+ ? {
+ src: data.back_url_mp4,
+ poster: data.image || live.image,
+ type: 'video/mp4',
+ }
+ : undefined,
+ description: live.summary,
+ }),
+ link: live.url,
+ pubDate: parseDate(live.publish_time, 'X'),
+ category: [live.cate_name],
+ image: live.image,
+ };
+ })
+ )
+ );
+
+ return {
+ item: items,
+ ...feedMeta(load(pageResponse), currentUrl),
+ };
+ }
+
+ const tid = id.split('_', 1)[0];
+ const currentUrl = `https://www.jiemian.com/video/lists/${id}.html`;
+ const [pageResponse, listResponse] = await Promise.all([
+ ofetch(currentUrl),
+ ofetch('https://a.jiemian.com/index.php', {
+ query: {
+ m: 'newLists',
+ a: 'loadMore',
+ tid,
+ page: 1,
+ tpl: 'sub-card',
+ cid: tid,
+ repeat: '',
+ list_type: 'video',
+ },
+ }),
+ ]);
+
+ const { html } = JSON.parse(listResponse.slice(listResponse.indexOf('(') + 1, listResponse.lastIndexOf(')')));
+ const list = parseCardList(html);
+
+ const items = await Promise.all(list.slice(0, limit).map((item) => fetchArticle(item)));
+
+ return {
+ item: items,
+ ...feedMeta(load(pageResponse), currentUrl),
+ };
+}
diff --git a/lib/routes/jiemian/vip.ts b/lib/routes/jiemian/vip.ts
index 43102dd9407c..2c20b0fe6eec 100644
--- a/lib/routes/jiemian/vip.ts
+++ b/lib/routes/jiemian/vip.ts
@@ -1,9 +1,13 @@
-import type { Route } from '@/types';
+import { load } from 'cheerio';
+import type { Context } from 'hono';
-import { handler } from './common';
+import type { Data, Route } from '@/types';
+import ofetch from '@/utils/ofetch';
+
+import { feedMeta, fetchArticle, parseCardList } from './common';
export const route: Route = {
- path: '/pro/lists/12',
+ path: '/pro/lists/:id',
parameters: { id: '分类 id,见下表,可在对应分类页 URL 中找到' },
name: 'VIP',
example: '/jiemian/pro/lists/12',
@@ -17,3 +21,35 @@ export const route: Route = {
| ----------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------- |
| 16 | 17 | 18 | 1 | 19 |`,
};
+
+async function handler(ctx: Context): Promise {
+ const { id } = ctx.req.param();
+ const limit = ctx.req.query('limit') ? Number(ctx.req.query('limit')) : 20;
+
+ const currentUrl = `https://www.jiemian.com/pro/lists/${id}.html`;
+ const [pageResponse, listResponse] = await Promise.all([
+ ofetch(currentUrl),
+ ofetch('https://a.jiemian.com/index.php', {
+ query: {
+ m: 'newLists',
+ a: 'loadMore',
+ tid: id,
+ page: 1,
+ tpl: 'sub-card',
+ cid: '',
+ repeat: '',
+ list_type: 'pay',
+ },
+ }),
+ ]);
+
+ const { html } = JSON.parse(listResponse.slice(listResponse.indexOf('(') + 1, listResponse.lastIndexOf(')')));
+ const list = parseCardList(html);
+
+ const items = await Promise.all(list.slice(0, limit).map((item) => fetchArticle(item)));
+
+ return {
+ item: items,
+ ...feedMeta(load(pageResponse), currentUrl),
+ };
+}
diff --git a/lib/routes/jinse/lives.ts b/lib/routes/jinse/lives.ts
index eff7a75b354e..2ffb85d5d590 100644
--- a/lib/routes/jinse/lives.ts
+++ b/lib/routes/jinse/lives.ts
@@ -64,35 +64,34 @@ async function handler(ctx) {
},
});
- const items =
- response.list
- .flatMap((l) => l.lives)
- .slice(0, limit)
- .map((item) => ({
- title: item.content_prefix,
- link: new URL(`lives/${item.id}.html`, rootUrl).href,
- description: renderDescription({
- images:
- item.images?.map((i) => ({
- src: i.url.replace(/_[^\W_]+(\.\w+)$/, '_true$1'),
- width: i.width,
- height: i.height,
- })) ?? [],
- description: item.content,
- original: item.link
- ? {
- link: item.link,
- name: item.link_name,
- }
- : undefined,
- }),
- author: item.show_source_name,
- guid: `jinse-lives-${item.id}`,
- pubDate: parseDate(item.created_at, 'X'),
- upvotes: item.up_counts ?? 0,
- downvotes: item.down_counts ?? 0,
- comments: item.comment_count ?? 0,
- })) ?? [];
+ const items = response.list
+ .flatMap((l) => l.lives)
+ .slice(0, limit)
+ .map((item) => ({
+ title: item.content_prefix,
+ link: new URL(`lives/${item.id}.html`, rootUrl).href,
+ description: renderDescription({
+ images:
+ item.images?.map((i) => ({
+ src: i.url.replace(/_[^\W_]+(\.\w+)$/, '_true$1'),
+ width: i.width,
+ height: i.height,
+ })) ?? [],
+ description: item.content,
+ original: item.link
+ ? {
+ link: item.link,
+ name: item.link_name,
+ }
+ : undefined,
+ }),
+ author: item.show_source_name,
+ guid: `jinse-lives-${item.id}`,
+ pubDate: parseDate(item.created_at, 'X'),
+ upvotes: item.up_counts ?? 0,
+ downvotes: item.down_counts ?? 0,
+ comments: item.comment_count ?? 0,
+ }));
const { data: currentResponse } = await got(currentUrl);
diff --git a/lib/routes/jinse/timeline.ts b/lib/routes/jinse/timeline.ts
index c3f3ee5b2318..4cc80e0b7426 100644
--- a/lib/routes/jinse/timeline.ts
+++ b/lib/routes/jinse/timeline.ts
@@ -75,7 +75,7 @@ async function handler(ctx) {
// Reason: API returns mixed domains (jinse.com, m.jinse.com.cn, jinse.com.cn),
// normalize all to www.jinse.com.cn since old domains are dead
- const link = item.jump_url.replace(/\/\/(www\.|m\.)?jinse\.com(?!\.cn)/, '//www.jinse.com.cn').replace('//m.jinse.com.cn', '//www.jinse.com.cn');
+ const link = item.jump_url.replace(/\/\/(www\.|m\.)?jinse\.com(\.cn)?/, '//www.jinse.com.cn');
return {
title: item.title,
diff --git a/lib/routes/jisilu/util.ts b/lib/routes/jisilu/util.ts
index f0cb443897a1..48a69e6d2693 100644
--- a/lib/routes/jisilu/util.ts
+++ b/lib/routes/jisilu/util.ts
@@ -68,7 +68,7 @@ const processItems: ($: CheerioAPI, targetEl: Cheerio, limit: number) =
const isAnswer: boolean = item.link ? /answer_id/.test(item.link) : false;
- const description: string = (isAnswer ? $$('div.markitup-box').last() : $$('div.markitup-box').first()).html() ?? '';
+ const description = (isAnswer ? $$('div.markitup-box').last() : $$('div.markitup-box').first()).html();
const metaStr: string = $$(isAnswer ? 'div.aw-dynamic-topic-meta' : 'div.aw-question-detail-meta')
.find('span.aw-text-color-999')
@@ -97,7 +97,7 @@ const processItems: ($: CheerioAPI, targetEl: Cheerio, limit: number) =
author,
content: {
html: description,
- text: $$('div.aw-question-detail-txt').first().text(),
+ text: $$('div.aw-question-detail-txt').text(),
},
updated: updatedStr ? timezone(parseDate(updatedStr), 8) : item.updated,
};
diff --git a/lib/routes/jlu/ccst/xwzx/index.ts b/lib/routes/jlu/ccst/xwzx/index.ts
index 0105f006a8c9..07e15800797b 100644
--- a/lib/routes/jlu/ccst/xwzx/index.ts
+++ b/lib/routes/jlu/ccst/xwzx/index.ts
@@ -47,7 +47,7 @@ async function handler(ctx: any) {
const linkEl = el.find('a');
const dateEl = el.find('.date');
- const dateStr = dateEl.text().trim();
+ const dateStr = dateEl.text();
const title = linkEl.text().trim();
const rawLink = linkEl.attr('href')!.replaceAll('..', ''); // Replace all occurrences of '..'
const link = `${baseUrl}${encodeURI(rawLink)}`; // Encode the URL properly
diff --git a/lib/routes/jlu/jwc.ts b/lib/routes/jlu/jwc.ts
index 885aad094c4e..0cf45796314e 100644
--- a/lib/routes/jlu/jwc.ts
+++ b/lib/routes/jlu/jwc.ts
@@ -35,12 +35,12 @@ async function handler() {
const linkEl = el.find('a');
const YMDiv = el.find('.tm p');
- const YMStr = YMDiv.text().trim();
+ const YMStr = YMDiv.text();
const DDiv = el.find('.tm span');
- const DStr = DDiv.text().trim();
+ const DStr = DDiv.text();
const titleDiv = el.find('.s3-info p');
- const title = titleDiv.text().trim();
+ const title = titleDiv.text();
const link = `${baseUrl}/${linkEl.attr('href')}`;
diff --git a/lib/routes/joneslanglasalle/index.ts b/lib/routes/joneslanglasalle/index.ts
index cc071d69bdbf..f455e65abb0b 100644
--- a/lib/routes/joneslanglasalle/index.ts
+++ b/lib/routes/joneslanglasalle/index.ts
@@ -71,11 +71,11 @@ export const handler = async (ctx: Context): Promise => {
},
});
- const items: DataItem[] = (response.hits?.hits || []).map((hit) => {
+ const items: DataItem[] = response.hits.hits.map((hit) => {
const source = hit._source;
return {
title: source.title,
- description: source.description || source.subTitle || '',
+ description: source.description || source.subTitle,
link: source.pageUrl,
pubDate: source.datePublished ? parseDate(source.datePublished) : undefined,
category: [...(source.topics || []), ...(source.industries || [])],
diff --git a/lib/routes/jou/utils/index.ts b/lib/routes/jou/utils/index.ts
index edfd2a7fbcbf..10bba260b7be 100644
--- a/lib/routes/jou/utils/index.ts
+++ b/lib/routes/jou/utils/index.ts
@@ -59,21 +59,6 @@ async function fetchArticle(item: NoticeItem, selectors: DetailSelectors): Promi
const $content = $(selectors.content);
- $content.find('a').each((_, el) => {
- const $a = $(el);
- const href = $a.attr('href');
- if (href) {
- $a.attr('href', new URL(href, item.link).href);
- }
- });
- $content.find('img').each((_, el) => {
- const $img = $(el);
- const src = $img.attr('src');
- if (src) {
- $img.attr('src', new URL(src, item.link).href);
- }
- });
-
const title = $(selectors.title).text().trim();
const pubDate = selectors.date ? parsePubDate($(selectors.date).text()) : undefined;
@@ -81,7 +66,7 @@ async function fetchArticle(item: NoticeItem, selectors: DetailSelectors): Promi
...item,
title: title || item.title,
pubDate: pubDate ?? item.pubDate,
- description: $content.html() ?? item.description,
+ description: $content.html(),
};
}
diff --git a/lib/routes/jpmorganchase/research.ts b/lib/routes/jpmorganchase/research.ts
index f5397c29d66b..8fd3d9bfff61 100644
--- a/lib/routes/jpmorganchase/research.ts
+++ b/lib/routes/jpmorganchase/research.ts
@@ -82,7 +82,7 @@ function fetchDataItem(entry: IndexEntry): Promise {
.toArray()
.map((el) => $(el).text().trim());
articleDate = $('.date').text().trim() || entry.date;
- description = $('.root').children('div').children('div:eq(1)').html() || '';
+ description = $('.root').children('div').children('div:eq(1)').html();
}
return {
diff --git a/lib/routes/jumeili/home.ts b/lib/routes/jumeili/home.ts
index 65f63df18490..45d3b100549e 100644
--- a/lib/routes/jumeili/home.ts
+++ b/lib/routes/jumeili/home.ts
@@ -49,7 +49,6 @@ async function handler(ctx) {
const cookie = config.jumeili.cookie;
const response = await ofetch(link, {
headers: {
- referer: baseUrl,
'user-agent': config.trueUA,
accept: 'application/json, text/javascript, */*; q=0.01',
cookie,
@@ -77,7 +76,6 @@ async function handler(ctx) {
cache.tryGet(item.link, async () => {
const article = await ofetch(item.link, {
headers: {
- referer: baseUrl,
'user-agent': config.trueUA,
accept: 'application/json, text/javascript, */*; q=0.01',
cookie,
diff --git a/lib/routes/kanxue/topic.ts b/lib/routes/kanxue/topic.ts
index edefb572d77d..e8a9f6358e43 100644
--- a/lib/routes/kanxue/topic.ts
+++ b/lib/routes/kanxue/topic.ts
@@ -86,9 +86,6 @@ async function handler(ctx) {
const response = await got({
method: 'get',
url: baseUrl + path,
- headers: {
- Referer: baseUrl,
- },
});
const $ = load(response.data);
diff --git a/lib/routes/kcna/news.tsx b/lib/routes/kcna/news.tsx
index 7bafd17a84e7..f4146a8a6810 100644
--- a/lib/routes/kcna/news.tsx
+++ b/lib/routes/kcna/news.tsx
@@ -1,16 +1,16 @@
import { load } from 'cheerio';
+import type { Context } from 'hono';
import { raw } from 'hono/html';
import { renderToString } from 'hono/jsx/dom/server';
import pMap from 'p-map';
-import sanitizeHtml from 'sanitize-html';
import type { Route } from '@/types';
import cache from '@/utils/cache';
-import got from '@/utils/got';
+import ofetch from '@/utils/ofetch';
import { parseDate } from '@/utils/parse-date';
import timezone from '@/utils/timezone';
-import { fetchPhoto, fetchVideo, fixDesc } from './utils';
+import { fetchPhoto, fixDesc } from './utils';
export const route: Route = {
path: '/:lang/:category?',
@@ -27,9 +27,13 @@ export const route: Route = {
},
radar: [
{
- source: ['www.kcna.kp/:lang', 'www.kcna.kp/:lang/category/articles/q/1ee9bdb7186944f765208f34ecfb5407.kcmsf', 'www.kcna.kp/:lang/category/articles.kcmsf'],
+ source: ['www.kcna.kp/:lang'],
target: '/:lang',
},
+ {
+ source: ['www.kcna.kp/:lang/article/list/:category'],
+ target: '/:lang/:category',
+ },
],
name: 'News',
maintainers: ['Rongronggg9'],
@@ -40,40 +44,43 @@ export const route: Route = {
| Category | \`:category\` |
| ---------------------------------------------------------------- | ---------------------------------- |
-| WPK General Secretary **Kim Jong Un**'s Revolutionary Activities | \`54c0ca4ca013a92cc9cf95bd4004c61a\` |
-| Latest News (default) | \`1ee9bdb7186944f765208f34ecfb5407\` |
-| Top News | \`5394b80bdae203fadef02522cfb578c0\` |
-| Home News | \`b2b3bcc1b0a4406ab0c36e45d5db58db\` |
-| Documents | \`a8754921399857ebdbb97a98a1e741f5\` |
-| World | \`593143484cf15d48ce85c26139582395\` |
-| Society-Life | \`93102e5a735d03979bc58a3a7aefb75a\` |
-| External | \`0f98b4623a3ef82aeea78df45c423fd0\` |
-| News Commentary | \`12c03a49f7dbe829bceea8ac77088c21\` |`,
+| WPK General Secretary **Kim Jong Un**'s Revolutionary Activities | \`b0721b9f23054ddc7fe56c2811a12715\` |
+| Latest News (default) | \`a666dda1282180e0ee1b4427b0574ae7\` |
+| Top News | \`6a47505ba5268fd7749c0fe11e4b24b4\` |
+| Home News | \`2f7d854121ccbbfbe6feae9fdcc3556e\` |
+| Documents | \`1afa96195f9b303902490a126ab7285f\` |
+| World | \`ecc14533d88be93068af4178946b1b05\` |
+| Social Life | \`680e40b40899891bbe75a7072e3285e7\` |
+| External | \`e2f336db98b5e69c75e0da264e037e8d\` |
+| Revolutionary Anecdote | \`503e9b606704f9b1c625fa5755928cd3\` |
+| Always in Memory of People | \`7bc083f00425be6aadfb828fba1cb5a7\` |`,
};
-async function handler(ctx) {
- const { lang, category = '1ee9bdb7186944f765208f34ecfb5407' } = ctx.req.param();
+async function handler(ctx: Context) {
+ const { lang, category = 'a666dda1282180e0ee1b4427b0574ae7' } = ctx.req.param();
const rootUrl = 'http://www.kcna.kp';
- const pageUrl = `${rootUrl}/${lang}/category/articles/q/${category}.kcmsf`;
+ const pageUrl = `${rootUrl}/${lang}/article/list/${category}`;
- const response = await got(pageUrl);
- const $ = load(response.data);
+ const response = await ofetch(pageUrl);
+ const $ = load(response);
- // fix ???
- const title = sanitizeHtml($('head > title').text(), { allowedTags: [], allowedAttributes: {} });
+ const title = $('head > title').text();
- const list = $('.article-link li a')
+ const list = $('.article h5')
.toArray()
.map((item) => {
- item = $(item);
- const dateElem = item.find('.publish-time');
- const dateString = dateElem.text().match(/\d+\.\d+\.\d+/);
- dateElem.remove();
+ const $item = $(item);
+ const a = $item.find('a');
+ const dateString = $item
+ .find('span')
+ .text()
+ .match(/\d+\.\d+\.\d+/)![0];
+
return {
- title: item.text(),
- link: rootUrl + item.attr('href'),
- pubDate: timezone(parseDate(dateString[0]), 9),
+ title: a.text().trim(),
+ link: new URL(a.attr('href')!, rootUrl).href,
+ pubDate: timezone(parseDate(dateString, 'YYYY.M.D'), 9),
};
});
@@ -84,31 +91,17 @@ async function handler(ctx) {
list,
(item) =>
cache.tryGet(item.link, async () => {
- const response = await got(item.link);
- const $ = load(response.data);
- item.title = $('article-main-title').text() || item.title;
-
- const dateElem = $('.publish-time');
- const dateString = dateElem.text().match(/\d+\.\d+\.\d+/);
- dateElem.remove();
- item.pubDate = dateString ? timezone(parseDate(dateString[0]), 9) : item.pubDate;
-
- const description = fixDesc($, $('.article-content-body .content-wrapper'));
-
- // add picture and video
- const media = $('.media-icon a')
- .toArray()
- .map((elem) => rootUrl + elem.attribs.href);
- let photo, video;
- await Promise.all(
- media.map(async (medium) => {
- if (medium.includes('/photo/')) {
- photo = await fetchPhoto(ctx, medium);
- } else if (medium.includes('/video/')) {
- video = await fetchVideo(ctx, medium);
- }
- })
- );
+ const response = await ofetch(item.link);
+ const $ = load(response);
+
+ const container = $('article .container');
+ const gallery = container.find('a.gallery_button').attr('href');
+ container.find('h1, a.right_button').remove();
+
+ const description = fixDesc($, container);
+
+ // add picture
+ const photo = gallery ? await fetchPhoto(new URL(gallery, rootUrl).href) : '';
item.description = renderToString(
<>
@@ -119,12 +112,6 @@ async function handler(ctx) {
{raw(photo)}
>
) : null}
- {video ? (
- <>
-
- {raw(video)}
- >
- ) : null}
>
);
diff --git a/lib/routes/kcna/utils.ts b/lib/routes/kcna/utils.ts
index bf9329b62d39..f95249d0d114 100644
--- a/lib/routes/kcna/utils.ts
+++ b/lib/routes/kcna/utils.ts
@@ -1,61 +1,25 @@
import { load } from 'cheerio';
import cache from '@/utils/cache';
-import got from '@/utils/got';
-import { parseDate } from '@/utils/parse-date';
+import ofetch from '@/utils/ofetch';
-const rootUrl = 'http://www.kcna.kp';
-
-const parseJucheDate = (dateString) => {
- if (!dateString) {
- return null;
- }
-
- // https://en.wikipedia.org/wiki/Juche_calendar
- const dateMatch = dateString.match(/(\d+)\D(\d+)\D(\d+)/);
- const [jucheYear, month, day] = dateMatch ? dateMatch.slice(1) : [null, null, null];
- if (jucheYear && month && day) {
- const year = Number(jucheYear) + 1911;
- return parseDate(`${year}-${month}-${day}`, 'YYYY-M-D');
- }
- return null;
-};
-
-const fixDesc = ($, elem) => {
- // ??? => ???
+export const fixDesc = ($, elem) => {
+ // ??? => ???
const $elem = $(elem);
- $elem.find('.fSpecCs').each((_, item) => {
- if (item.parent.name === 'nobr') {
- $(item).unwrap();
- }
+ $elem.find('august_name').each((_, item) => {
item.name = 'b';
- item.attribs = {};
});
- return elem.html();
+ return $elem.html();
};
-const fetchPhoto = (ctx, url) =>
+export const fetchPhoto = (url) =>
cache.tryGet(url, async () => {
- const res = await got(url);
- const $ = load(res.data);
- let html = '';
- $('.content img').each((_, item) => {
- const src = item.attribs.src;
- if (src) {
- html += html ? `
` : `
`;
- }
- });
- return html;
+ const response = await ofetch(url);
+ const $ = load(response);
+
+ return $('.gallery img')
+ .removeAttr('class')
+ .toArray()
+ .map((item) => $.html(item))
+ .join('
');
});
-
-const fetchVideo = (ctx, url) =>
- cache.tryGet(url, async () => {
- const res = await got(url);
- const $ = load(res.data);
- const js = $('script[type="text/javascript"]:not([src])').html();
- let sources = js.match(/<[^>]*source[^>]+src[^>]+>/g);
- sources &&= sources.map((item) => item.replaceAll("'", '"').replaceAll(/src="([^"]+)"/g, (_match, p1) => `src="${rootUrl}${p1}"`));
- return ``;
- });
-
-export { fetchPhoto, fetchVideo, fixDesc, parseJucheDate };
diff --git a/lib/routes/keylol/index.ts b/lib/routes/keylol/index.ts
index ba45d69cff61..c3e74a6b513f 100644
--- a/lib/routes/keylol/index.ts
+++ b/lib/routes/keylol/index.ts
@@ -147,7 +147,7 @@ async function handler(ctx) {
.toArray()
.map((c) => content(c).text());
- const pubDateEm = content('img.authicn').first().next();
+ const pubDateEm = content('img.authicn').next();
const pubDateText = pubDateEm.find('span').prop('title') ?? pubDateEm.text();
const pubDateMatches = pubDateText.match(/(\d{4}(?:-\d{1,2}){2} (?:\d{2}:){2}\d{2})/) ?? undefined;
if (pubDateMatches) {
diff --git a/lib/routes/kiro/blog.ts b/lib/routes/kiro/blog.ts
index 762b43df5575..85f0eb5892e4 100644
--- a/lib/routes/kiro/blog.ts
+++ b/lib/routes/kiro/blog.ts
@@ -52,7 +52,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('header h1').text();
- const description: string | undefined = $$('div.prose').html() ?? undefined;
+ const description = $$('div.prose').html();
const pubDateStr: string | undefined = $$('time').text();
const authorEl: Cheerio = $$('img.aspect-square').parent().parent();
const authors: DataItem['author'] = [
diff --git a/lib/routes/kiro/changelog.ts b/lib/routes/kiro/changelog.ts
index cc63e9111595..2e07badb4299 100644
--- a/lib/routes/kiro/changelog.ts
+++ b/lib/routes/kiro/changelog.ts
@@ -26,7 +26,7 @@ export const handler = async (ctx: Context): Promise => {
const $el: Cheerio = $(el);
const title = `${$el.parent().find('span').text()} ${$el.find('h3').text()}`;
- const description: string | undefined = $el.parent().parent().find('div.prose').html() ?? undefined;
+ const description = $el.parent().parent().find('div.prose').html();
const pubDateStr: string | undefined = $el.parent().parent().parent().find('time').text();
const linkUrl: string | undefined = $el.attr('href');
const upDatedStr: string | undefined = pubDateStr;
@@ -58,7 +58,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title = `${$$('article span').first().text()} ${$$('article h3').text()}`;
- const description: string | undefined = $$('div.prose').html() ?? undefined;
+ const description = $$('div.prose').html();
const pubDateStr: string | undefined = $$('time').text();
const image: string | undefined = $$('meta[property="og:image"]').attr('content');
const upDatedStr: string | undefined = pubDateStr;
diff --git a/lib/routes/kleinanzeigen/utils/parse-listing-page.ts b/lib/routes/kleinanzeigen/utils/parse-listing-page.ts
index d9587033de45..b8cfc3c13d2f 100644
--- a/lib/routes/kleinanzeigen/utils/parse-listing-page.ts
+++ b/lib/routes/kleinanzeigen/utils/parse-listing-page.ts
@@ -16,7 +16,7 @@ export const parseListingPage = ($: CheerioAPI): Promise =>
.toArray()
.map((item) => {
const $item = $(item);
- const article = $item.find('article').first();
+ const article = $item.find('article');
return getProductPage(`https://www.kleinanzeigen.de${article.attr('data-href')}`);
})
);
diff --git a/lib/routes/kovidgoyal/kitty/changelog.ts b/lib/routes/kovidgoyal/kitty/changelog.ts
index 0b6febdeca0e..76cc2a37c55a 100644
--- a/lib/routes/kovidgoyal/kitty/changelog.ts
+++ b/lib/routes/kovidgoyal/kitty/changelog.ts
@@ -44,7 +44,7 @@ async function handler() {
const $section = $(section);
// Extract version and date from h3 title
- const titleText = $section.find('h3').first().text().trim();
+ const titleText = $section.find('h3').text();
const versionMatch = titleText.match(/^([\d.]+)\s*\[([^\]]+)\]/);
if (!versionMatch) {
diff --git a/lib/routes/last-origin/news.ts b/lib/routes/last-origin/news.ts
index 13b23752280f..8312f970d6da 100644
--- a/lib/routes/last-origin/news.ts
+++ b/lib/routes/last-origin/news.ts
@@ -35,9 +35,9 @@ async function handler() {
const list = $('.contents .news_wrap')
.toArray()
.map((item) => {
- const title = $(item).find('.news_title').text().trim();
+ const title = $(item).find('.news_title').text();
const link = new URL($(item).find('a').attr('href')!, baseUrl).href;
- const date = $(item).find('time').text().trim();
+ const date = $(item).find('time').text();
const pubDate = timezone(parseDate(date), 9);
return {
title,
@@ -52,7 +52,7 @@ async function handler() {
cache.tryGet(item.link, async () => {
const response = await ofetch(item.link);
const $ = load(response);
- item.description = $('.news_contents_editor').html() ?? '';
+ item.description = $('.news_contents_editor').html();
return item;
})
)
diff --git a/lib/routes/logrocket/index.ts b/lib/routes/logrocket/index.ts
index 1bfe4aa59589..f8de8e5aadfb 100644
--- a/lib/routes/logrocket/index.ts
+++ b/lib/routes/logrocket/index.ts
@@ -36,7 +36,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
const a = item.find('a').first();
- const title = item.find('.post-card-title').first();
+ const title = item.find('.post-card-title');
return {
title: title.text(),
link: a.attr('href'),
diff --git a/lib/routes/malaysiakini/index.ts b/lib/routes/malaysiakini/index.ts
index 4ee1d8badaa6..008a3b32c517 100644
--- a/lib/routes/malaysiakini/index.ts
+++ b/lib/routes/malaysiakini/index.ts
@@ -161,9 +161,7 @@ async function handler(ctx) {
if (response.data.stories.author) {
item.author = response.data.stories.author;
}
- if (response.data.stories.tags) {
- item.category = response.data.stories.tags;
- }
+ item.category = response.data.stories.tags;
return item;
})
)
diff --git a/lib/routes/mashiro/index.ts b/lib/routes/mashiro/index.ts
index d11534a300c3..ff1c9ddaae1d 100644
--- a/lib/routes/mashiro/index.ts
+++ b/lib/routes/mashiro/index.ts
@@ -49,7 +49,7 @@ export const route: Route = {
cache.tryGet(item.link, async () => {
const response = await ofetch(item.link);
const $ = load(response);
- item.description = $('.article-content').first().html();
+ item.description = $('.article-content').html();
return item;
})
)
diff --git a/lib/routes/medium/parse-article.ts b/lib/routes/medium/parse-article.ts
index cf9236060752..b09da035dfff 100644
--- a/lib/routes/medium/parse-article.ts
+++ b/lib/routes/medium/parse-article.ts
@@ -21,7 +21,7 @@ async function parse(url, cookie = '') {
article.find('header').remove();
// get and remove title
- const title = article.find('h1').first();
+ const title = article.find('h1');
const titleText = title.text();
title.remove(); // remove title from html
diff --git a/lib/routes/meritalk/articles.ts b/lib/routes/meritalk/articles.ts
index a602e2b50563..11382d0c9168 100644
--- a/lib/routes/meritalk/articles.ts
+++ b/lib/routes/meritalk/articles.ts
@@ -43,7 +43,7 @@ async function handler() {
const a = $item.find('.news-block-title a');
const link = a.attr('href');
return {
- title: a.text().trim(),
+ title: a.text(),
link: link as string,
pubDate: parseDate($item.find('time[datetime]').attr('datetime') as string),
category: $item
@@ -60,8 +60,8 @@ async function handler() {
const { data: response } = await got(item.link);
const $ = load(response);
- const featuredImage = $('.single-featured-image').first().html() || '';
- const fullContent = $('.single-body').first().html() || '';
+ const featuredImage = $('.single-featured-image').html() || '';
+ const fullContent = $('.single-body').html() || '';
item!.description = renderDescription({
featuredImage,
fullContent,
diff --git a/lib/routes/meteoblue/weathernews.ts b/lib/routes/meteoblue/weathernews.ts
index e960b645276c..7402078f86ee 100644
--- a/lib/routes/meteoblue/weathernews.ts
+++ b/lib/routes/meteoblue/weathernews.ts
@@ -37,7 +37,7 @@ async function handler() {
// Get title and link from h3 > a
const $link = $article.find('h3[itemprop="headline"] a[itemprop="mainEntityOfPage"]');
- const title = $link.text().trim();
+ const title = $link.text();
const link = $link.attr('href');
if (!title || !link) {
@@ -50,7 +50,7 @@ async function handler() {
// Extract author from the time element text
const $authorMeta = $article.find('meta[itemprop="author"]');
- const author = $authorMeta.attr('content')?.trim() || 'meteoblue';
+ const author = $authorMeta.attr('content') || 'meteoblue';
// Get description from itemprop="description"
const $description = $article.find('div[itemprop="description"]');
diff --git a/lib/routes/mhlw/monthly-labour-survey.ts b/lib/routes/mhlw/monthly-labour-survey.ts
index a39aecd1da36..b994e062e8fa 100644
--- a/lib/routes/mhlw/monthly-labour-survey.ts
+++ b/lib/routes/mhlw/monthly-labour-survey.ts
@@ -40,14 +40,14 @@ async function handler(ctx: Context) {
.toArray()
.flatMap((row) => {
const $row = $(row);
- const year = $row.find('h3').text().trim();
+ const year = $row.find('h3').text();
return $row
.find('ul.ico-link li a')
.toArray()
.map((a) => {
const $a = $(a);
return {
- title: `${year}${$a.text().trim()}`,
+ title: `${year}${$a.text()}`,
link: new URL($a.attr('href')!, baseUrl).href,
};
})
@@ -61,12 +61,12 @@ async function handler(ctx: Context) {
const response = await fetchPage(item.link!);
const $ = load(response);
- const dateText = $('.prt-topContents .al-right').text().trim();
+ const dateText = $('.prt-topContents .al-right').text();
const cleanedDate = dateText.replaceAll(/([^)]+)/g, '');
const content = $('#contentsInner');
content.find('.prt-topContents, .prt-linkNavi, .prt-plugin').remove();
- item.title = $('h1#pageTitle').text().trim() || item.title;
+ item.title = $('h1#pageTitle').text() || item.title;
item.pubDate = timezone(parseDate(cleanedDate, 'YYYY年M月D日'), 9);
item.description = content.html()?.trim();
@@ -76,8 +76,8 @@ async function handler(ctx: Context) {
);
return {
- title: $('head title').text().trim(),
- description: $('meta[name="description"]').attr('content')?.trim(),
+ title: $('head title').text(),
+ description: $('meta[name="description"]').attr('content'),
link,
image: `${baseUrl}/favicon.ico`,
language: $('html').attr('lang'),
diff --git a/lib/routes/mi/utils.tsx b/lib/routes/mi/utils.tsx
index 464c60aa6744..d7206d121365 100644
--- a/lib/routes/mi/utils.tsx
+++ b/lib/routes/mi/utils.tsx
@@ -22,9 +22,6 @@ dayjs.extend(utc);
*/
export const getCrowdfundingList = async (): Promise => {
const response = await ofetch>('https://m.mi.com/v1/crowd/crowd_home', {
- headers: {
- referer: 'https://m.mi.com/',
- },
method: 'POST',
});
return response.data.list;
diff --git a/lib/routes/misskon/utils.ts b/lib/routes/misskon/utils.ts
index c45554a41599..7e2ada14a8cd 100644
--- a/lib/routes/misskon/utils.ts
+++ b/lib/routes/misskon/utils.ts
@@ -14,7 +14,6 @@ const getPosts = async (searchParams) => {
$('input').each((_, el) => {
$(el).replaceWith($(el).attr('value') || '');
});
- $('script').remove();
return {
title: item.title.rendered,
link: item.link,
diff --git a/lib/routes/mit/hanlab.ts b/lib/routes/mit/hanlab.ts
index 41472da306a1..66fc862f8ccc 100644
--- a/lib/routes/mit/hanlab.ts
+++ b/lib/routes/mit/hanlab.ts
@@ -42,8 +42,8 @@ async function handler() {
const titleEl = el.find('h3.text-title');
const title = titleEl.text().trim();
const link = new URL(el.attr('href') ?? '', rootUrl).href;
- const description = el.find('p.text-tldr').html() ?? undefined;
- const dateText = el.find('div.text-date').text().trim();
+ const description = el.find('p.text-tldr').html();
+ const dateText = el.find('div.text-date').text();
const pubDate = parseDate(dateText);
return {
diff --git a/lib/routes/mit/scratch/user-comments.ts b/lib/routes/mit/scratch/user-comments.ts
index e6602916edf9..31ea27bd872b 100644
--- a/lib/routes/mit/scratch/user-comments.ts
+++ b/lib/routes/mit/scratch/user-comments.ts
@@ -42,7 +42,7 @@ export const route: Route = {
.toArray()
.map((el) => {
const comment = $(el);
- const author = comment.find('.name a').first().text().trim();
+ const author = comment.find('.name a').text();
const contentHtml = comment.find('.content').html()?.trim() || '';
const textContent = comment.find('.content').text().trim();
const commentId = comment.attr('data-comment-id');
diff --git a/lib/routes/miyuki/news.ts b/lib/routes/miyuki/news.ts
index 1b1bcd2e079e..71d97c990132 100644
--- a/lib/routes/miyuki/news.ts
+++ b/lib/routes/miyuki/news.ts
@@ -90,7 +90,7 @@ function normalizePhotoLists($, content) {
const items = list
.children('li')
.toArray()
- .flatMap((item) => {
+ .map((item) => {
const photoItem = $(item);
photoItem.find('img.for_sp').remove();
photoItem.find('img').each((__, image) => {
@@ -101,13 +101,13 @@ function normalizePhotoLists($, content) {
return;
}
- img.attr('src', new URL(src, ORIGIN).href);
img.removeAttr('class');
});
const html = photoItem.html();
- return hasMeaningfulHtml(html) ? [`${html!.trim()}
`] : [];
- });
+ return hasMeaningfulHtml(html) ? `${html!.trim()}
` : undefined;
+ })
+ .filter(Boolean);
list.replaceWith(items.join('
'));
});
diff --git a/lib/routes/mrinalxdev/blog.ts b/lib/routes/mrinalxdev/blog.ts
index e9485d133041..57d346c77135 100644
--- a/lib/routes/mrinalxdev/blog.ts
+++ b/lib/routes/mrinalxdev/blog.ts
@@ -83,7 +83,7 @@ async function handler() {
$('a[href*="buymeacoffee"]').parent().remove();
// Extract main content - typically in body after nav
- const content = $('body').html() || '';
+ const content = $('body').html();
const dataItem: DataItem = {
title: item.title,
diff --git a/lib/routes/my-formosa/index.ts b/lib/routes/my-formosa/index.ts
index a027e322e967..339a73e115c5 100644
--- a/lib/routes/my-formosa/index.ts
+++ b/lib/routes/my-formosa/index.ts
@@ -21,50 +21,47 @@ export const route: Route = {
},
radar: [
{
- source: ['my-formosa.com/'],
+ source: ['m.my-formosa.com.tw/'],
},
],
- name: '首页',
+ name: '首頁',
maintainers: ['dzx-dzx'],
handler,
- url: 'my-formosa.com',
+ url: 'm.my-formosa.com.tw',
};
-async function fetch(url) {
- const raw = await ofetch(url, { responseType: 'arrayBuffer' });
- const decoder = new TextDecoder('big5');
- return decoder.decode(raw);
-}
-
async function handler() {
- const rootUrl = 'http://www.my-formosa.com/';
-
- const res = await fetch(rootUrl);
+ const rootUrl = 'https://m.my-formosa.com.tw';
+ const res = await ofetch(rootUrl);
const $ = load(res);
const items = await Promise.all(
- $('#featured-news h3 a')
+ $('ul.local-list li .cont h1 a')
.toArray()
.map((item) => {
- item = $(item);
+ const $item = $(item);
- const title = item.text();
- const link = new URL(item.attr('href'), rootUrl).href;
+ const title = $item.text();
+ const link = new URL($item.attr('href')!, rootUrl).href;
return cache.tryGet(link, async () => {
- const res = await fetch(link);
+ const res = await ofetch(link);
const $ = load(res);
- const isTV = new URL(link).pathname.startsWith('/TV');
+ const pubDate = $('.news_header .info')
+ .text()
+ .match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/)?.[0];
+ const media = $.html($('.news_header > img, .news_header > .media'));
+ const summary = $.html($('.product > h2'));
return {
title,
link,
- author: $('.page-header~#featured-news h4').text(),
- category: $("meta[name='keywords']").attr('content').split(',').filter(Boolean),
- pubDate: timezone(parseDate((isTV ? $('.icon-calendar')[0].next.data : $('.date').text()).trim()), 8),
- description: (isTV ? $('.post-item').html() : $('.body').html()).replaceAll(/\/News.*?\.jpg/g, (match) => `http://my-formosa.com${match}`),
+ author: $('.cont h1 a').text(),
+ category: [$('.story_header button').text()],
+ pubDate: pubDate ? timezone(parseDate(pubDate), 8) : undefined,
+ description: media + summary + ($('.body').html() ?? ''),
};
});
})
diff --git a/lib/routes/my-formosa/namespace.ts b/lib/routes/my-formosa/namespace.ts
index 8cd9c24c6c35..f56c9293113b 100644
--- a/lib/routes/my-formosa/namespace.ts
+++ b/lib/routes/my-formosa/namespace.ts
@@ -2,6 +2,6 @@ import type { Namespace } from '@/types';
export const namespace: Namespace = {
name: '美麗島電子報',
- url: 'my-formosa.com',
+ url: 'my-formosa.com.tw',
lang: 'zh-TW',
};
diff --git a/lib/routes/mycard520/news.ts b/lib/routes/mycard520/news.ts
index d9ecd3e3a490..090713585404 100644
--- a/lib/routes/mycard520/news.ts
+++ b/lib/routes/mycard520/news.ts
@@ -30,7 +30,7 @@ export const handler = async (ctx: Context): Promise => {
const $aEl: Cheerio = $el.find('a');
const title: string = $el.find('div.text_box p').text();
- const description: string | undefined = $aEl.html() ?? undefined;
+ const description = $aEl.html();
const pubDateStr: string | undefined = $el.find('div.date').text().trim();
const linkUrl: string | undefined = $aEl.attr('href');
const image: string | undefined = $el.find('div.img_box img').attr('src');
@@ -42,8 +42,8 @@ export const handler = async (ctx: Context): Promise => {
pubDate: pubDateStr ? parseDate(pubDateStr) : undefined,
link: linkUrl,
content: {
- html: description ?? '',
- text: description ?? '',
+ html: description,
+ text: description,
},
image,
banner: image,
@@ -67,12 +67,12 @@ export const handler = async (ctx: Context): Promise => {
const $$pageBox: Cheerio = $$('div.page_box');
const title: string = $$pageBox.find('h2').text();
- const pubDateStr: string | undefined = $$('div.date').first().text();
+ const pubDateStr: string | undefined = $$('div.date').text();
const upDatedStr: string | undefined = pubDateStr;
$$pageBox.find('h2, div.date, .the_champ_sharing_container').remove();
- const description: string | undefined = $$pageBox.html() ?? item.description;
+ const description: string | null | undefined = $$pageBox.html() ?? item.description;
const processedItem: DataItem = {
title,
diff --git a/lib/routes/nankai/ai-notice.ts b/lib/routes/nankai/ai-notice.ts
index cecd989b4389..0c5d70b22dba 100644
--- a/lib/routes/nankai/ai-notice.ts
+++ b/lib/routes/nankai/ai-notice.ts
@@ -72,18 +72,18 @@ export const route: Route = {
// 提取标题和链接
const $titleLink = titleCell.find('a');
- const title = $titleLink.text().trim();
+ const title = $titleLink.text();
let link = $titleLink.attr('href') || '';
// 处理相对链接
link = link && !link.startsWith('http') ? `${baseUrl}/${link}` : link;
// 提取日期
- const dateStr = dateCell.text().trim();
+ const dateStr = dateCell.text();
const pubDate = dateStr.includes('/') ? timezone(parseDate(dateStr, 'YYYY/MM/DD'), 8) : timezone(parseDate(dateStr), 8);
// 提取来源
- const source = sourceCell.text().trim();
+ const source = sourceCell.text();
return {
title,
@@ -100,31 +100,12 @@ export const route: Route = {
list.map((item) =>
item
? cache.tryGet(item.link, async () => {
- try {
- const { data: response } = await got(item.link);
- const $ = load(response);
-
- const $description = $('.v_news_content');
-
- // 处理相对链接,转换为绝对链接
- if ($description.length > 0) {
- // 处理图片
- $description.find('img').each((i, el) => {
- const $el = $(el);
- let src = $el.attr('src');
-
- if (src && !src.startsWith('http')) {
- src = `${baseUrl}${src}`;
- $el.attr('src', src);
- }
- });
- }
-
- item.description = $description.html() || item.title;
- } catch {
- // 如果获取详细内容失败,返回基本信息
- item.description = item.title + ' (获取详细内容失败)';
- }
+ const { data: response } = await got(item.link);
+ const $ = load(response);
+
+ const $description = $('.v_news_content');
+
+ item.description = $description.html() || item.title;
return item;
})
: null
diff --git a/lib/routes/nankai/graduate-notice.ts b/lib/routes/nankai/graduate-notice.ts
index b8e668edaeb5..4eb7d7bd9857 100644
--- a/lib/routes/nankai/graduate-notice.ts
+++ b/lib/routes/nankai/graduate-notice.ts
@@ -29,7 +29,7 @@ export const route: Route = {
maintainers: ['ladeng07'],
description: `| 最新动态 | 综合信息 | 招生工作 | 培养管理 | 国际交流 | 学科建设 | 学位管理 |
| -------- | -------- | -------- | -------- | -------- | -------- | -------- |
-| zxdt | 82 | 83 | 84 | 85 | 86 | 87 |`,
+| zxdt | 82 | 83 | 72 | 73 | xkjs | xwgl |`,
url: 'graduate.nankai.edu.cn',
handler: async (ctx) => {
// 从 URL 参数中获取通知分类
@@ -43,10 +43,10 @@ export const route: Route = {
zxdt: '最新动态',
'82': '综合信息',
'83': '招生工作',
- '84': '培养管理',
- '85': '国际交流',
- '86': '学科建设',
- '87': '学位管理',
+ '72': '培养管理',
+ '73': '国际交流',
+ xkjs: '学科建设',
+ xwgl: '学位管理',
};
const categoryName = categoryMap[type] || '最新动态';
@@ -68,7 +68,7 @@ export const route: Route = {
link = link && !link.startsWith('http') ? `${baseUrl}${link}` : link;
// 提取日期
- const dateStr = $timeDiv.text().trim();
+ const dateStr = $timeDiv.text();
const pubDate = timezone(parseDate(dateStr, 'YYYY-MM-DD'), 8);
return {
@@ -85,67 +85,32 @@ export const route: Route = {
const items = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- try {
- const { data: response } = await got(item.link);
- const $ = load(response);
-
- // 尝试多种内容选择器
- const $description = $('.wp_articlecontent');
-
- // 处理相对链接,转换为绝对链接
- if ($description.length > 0) {
- // 处理链接
- $description.find('a').each((i, el) => {
- const $el = $(el);
- const href = $el.attr('href');
- if (href && !href.startsWith('http')) {
- if (href.startsWith('/')) {
- $el.attr('href', `${baseUrl}${href}`);
- } else {
- $el.attr('href', `${baseUrl}/${href}`);
- }
- }
- });
-
- // 处理图片
- $description.find('img').each((i, el) => {
- const $el = $(el);
- let src = $el.attr('src');
-
- if (src && !src.startsWith('http')) {
- src = src.startsWith('/') ? `${baseUrl}${src}` : `${baseUrl}/${src}`;
- $el.attr('src', src);
+ const { data: response } = await got(item.link);
+ const $ = load(response);
+
+ // 尝试多种内容选择器
+ const $description = $('.wp_articlecontent');
+
+ if ($description.length > 0) {
+ // 处理PDF播放器div,提取PDF链接
+ $description.find('.wp_pdf_player').each((i, el) => {
+ const $el = $(el);
+ const pdfSrc = $el.attr('pdfsrc');
+ const sudyfileAttr = ($el.attr('sudyfile-attr') || '{}').replaceAll("'", '"');
+ const sudyfileAttrJson = JSON.parse(sudyfileAttr);
+ const fileName = sudyfileAttrJson.title || '未命名文件.pdf';
+ if (pdfSrc) {
+ let pdfUrl = pdfSrc;
+ if (!pdfUrl.startsWith('http')) {
+ pdfUrl = `${baseUrl}${pdfUrl}`;
}
- });
-
- // 处理PDF播放器div,提取PDF链接
- $description.find('.wp_pdf_player').each((i, el) => {
- const $el = $(el);
- const pdfSrc = $el.attr('pdfsrc');
- const sudyfileAttr = ($el.attr('sudyfile-attr') || '{}').replaceAll("'", '"');
-
- try {
- const sudyfileAttrJson = JSON.parse(sudyfileAttr);
- const fileName = sudyfileAttrJson.title || '未命名文件.pdf';
- if (pdfSrc) {
- let pdfUrl = pdfSrc;
- if (!pdfUrl.startsWith('http')) {
- pdfUrl = `${baseUrl}${pdfUrl}`;
- }
- // 替换PDF播放器为下载链接
- $el.replaceWith(`📄 ${fileName}
`);
- }
- } catch {
- // 如果解析失败,保留原始内容
- }
- });
- }
-
- item.description = $description.html() || item.title;
- } catch {
- // 如果获取详细内容失败,返回基本信息
- item.description = item.title + ' (获取详细内容失败)';
+ // 替换PDF播放器为下载链接
+ $el.replaceWith(`📄 ${fileName}
`);
+ }
+ });
}
+
+ item.description = $description.html() || item.title;
return item;
})
)
diff --git a/lib/routes/nankai/jwc.ts b/lib/routes/nankai/jwc.ts
index cfaebe42050f..0467f0f12f42 100644
--- a/lib/routes/nankai/jwc.ts
+++ b/lib/routes/nankai/jwc.ts
@@ -44,8 +44,8 @@ export const route: Route = {
const $dateMonth = $item.find('.d .d-m');
// 构建完整的日期
- const day = $dateDay.text().trim(); // 格式:04
- const monthYear = $dateMonth.text().trim(); // 格式:2025/06
+ const day = $dateDay.text(); // 格式:04
+ const monthYear = $dateMonth.text(); // 格式:2025/06
const fullDate = `${monthYear}/${day}`; // 2025/06/04
let linkStr = $link.attr('href');
@@ -55,7 +55,7 @@ export const route: Route = {
}
return {
- title: $link.text().trim(),
+ title: $link.text(),
link: linkStr,
pubDate: timezone(parseDate(fullDate, 'YYYY/MM/DD'), 8),
};
@@ -80,19 +80,6 @@ export const route: Route = {
// 获取文章内容
const content = $('.page-news-con .wp_articlecontent');
if (content.length > 0) {
- // 处理PDF链接,转换为绝对链接
- content.find('a').each((i, el) => {
- const $el = $(el);
- const href = $el.attr('href');
- if (href && !href.startsWith('http')) {
- if (href.startsWith('/')) {
- $el.attr('href', `${baseUrl}${href}`);
- } else {
- $el.attr('href', `${baseUrl}/${href}`);
- }
- }
- });
-
// 处理PDF播放器div,提取PDF链接
content.find('.wp_pdf_player').each((i, el) => {
const $el = $(el);
diff --git a/lib/routes/nankai/notice.ts b/lib/routes/nankai/notice.ts
index 60aa99154c09..ee1ea2cc270b 100644
--- a/lib/routes/nankai/notice.ts
+++ b/lib/routes/nankai/notice.ts
@@ -37,7 +37,7 @@ export const route: Route = {
.map((item) => {
const $item = $(item);
const $time = $item.find('.time');
- const day = $time.find('.time-d').text().trim();
+ const day = $time.find('.time-d').text();
const monthYear = $time.contents().last().text().trim();
const pubDate = timezone(parseDate(`${monthYear}-${day}`, 'YYYY-MM-DD'), 8);
@@ -46,7 +46,7 @@ export const route: Route = {
href = href.startsWith('http') ? href : new URL(href, baseUrl).href;
return {
- title: $link.text().trim(),
+ title: $link.text(),
link: href,
pubDate,
};
@@ -55,21 +55,16 @@ export const route: Route = {
const items = await Promise.all(
list.map((item) =>
cache.tryGet(item.link, async () => {
- try {
- // 判断link如果是https://xb.nankai.edu.cn/的则为校内访问的
- if (item.link.includes('xb.nankai.edu.cn')) {
- item.description = '该通知可能需要校内访问权限';
- } else {
- const { data: detailResponse } = await got(item.link);
- const $detail = load(detailResponse);
+ // 判断link如果是https://xb.nankai.edu.cn/的则为校内访问的
+ if (item.link.includes('xb.nankai.edu.cn')) {
+ item.description = '该通知可能需要校内访问权限';
+ } else {
+ const { data: detailResponse } = await got(item.link);
+ const $detail = load(detailResponse);
- // 提取正文内容
- const content = $detail('.wp_articlecontent').html() || '';
- item.description = content;
- }
- } catch {
- // 如果提取正文内容失败,则返回默认内容
- item.description = '正文内容获取失败';
+ // 提取正文内容
+ const content = $detail('.wp_articlecontent').html();
+ item.description = content;
}
return item;
})
diff --git a/lib/routes/nankai/yzb.ts b/lib/routes/nankai/yzb.ts
index 4507d99cdb77..5b5125bcea73 100644
--- a/lib/routes/nankai/yzb.ts
+++ b/lib/routes/nankai/yzb.ts
@@ -66,7 +66,7 @@ export const route: Route = {
cache.tryGet(item.link.toString(), async () => {
const { data: response } = await got(item.link);
const $ = load(response);
- item.description = $('.read').first().html();
+ item.description = $('.read').html();
// 提取PDF链接,先转换为数组再使用map
const pdfLinks = $('div[pdfsrc$=".pdf"]')
diff --git a/lib/routes/natgeo/natgeo.ts b/lib/routes/natgeo/natgeo.ts
index 5cd0bcc3fba4..984ec2c962ea 100644
--- a/lib/routes/natgeo/natgeo.ts
+++ b/lib/routes/natgeo/natgeo.ts
@@ -10,7 +10,7 @@ import { parseDate } from '@/utils/parse-date';
async function loadContent(link) {
const data = await ofetch(link);
const $ = load(data);
- const dtStr = $('.content-title-area').find('h6').first().text().replaceAll(' ', ' ').trim();
+ const dtStr = $('.content-title-area').find('h6').first().text().replaceAll(' ', ' ');
$('.splide__arrows, .slide-control, [class^="ad-"], style').remove();
diff --git a/lib/routes/ncu/jwc.ts b/lib/routes/ncu/jwc.ts
index 6f9c36ea2dff..45e477f195ee 100644
--- a/lib/routes/ncu/jwc.ts
+++ b/lib/routes/ncu/jwc.ts
@@ -48,10 +48,7 @@ async function handler() {
const rawLink = linkEl.attr('href');
const link = rawLink ? new URL(rawLink, baseUrl).href : '';
- const dateText = el
- .find(String.raw`.font-mono span.md\:inline`)
- .text()
- .trim();
+ const dateText = el.find(String.raw`.font-mono span.md\:inline`).text();
return {
title,
@@ -69,19 +66,6 @@ async function handler() {
const contentEl = $detail('.v_news_content');
- contentEl.find('a').each((_, el) => {
- const href = $detail(el).attr('href');
- if (href && !href.startsWith('http')) {
- $detail(el).attr('href', new URL(href, baseUrl).href);
- }
- });
- contentEl.find('img').each((_, el) => {
- const src = $detail(el).attr('src');
- if (src && !src.startsWith('http')) {
- $detail(el).attr('src', new URL(src, baseUrl).href);
- }
- });
-
let description = contentEl.html() || '';
const attachments = $detail('a[href*="download.jsp"]');
diff --git a/lib/routes/neea/jlpt.ts b/lib/routes/neea/jlpt.ts
index 5463710a1095..e676394d0a36 100644
--- a/lib/routes/neea/jlpt.ts
+++ b/lib/routes/neea/jlpt.ts
@@ -53,7 +53,7 @@ export const handler = async (ctx: Context): Promise => {
const $$: CheerioAPI = load(detailResponse);
const title: string = $$('div.dvTitle').text();
- const description: string = $$('div.dvContent').html() ?? '';
+ const description = $$('div.dvContent').html();
const processedItem: DataItem = {
title,
diff --git a/lib/routes/netflix/research.ts b/lib/routes/netflix/research.ts
index a398254178bc..721de82c474f 100644
--- a/lib/routes/netflix/research.ts
+++ b/lib/routes/netflix/research.ts
@@ -38,7 +38,7 @@ const resolveArticle = (data, store) => {
return target === undefined ? null : resolveArticle(target, store);
}
- const out = Array.isArray(data) ? [] : {};
+ const out = {};
for (const [k, v] of Object.entries(data)) {
out[k] = resolveArticle(v, store);
}
diff --git a/lib/routes/nextjs/blog.ts b/lib/routes/nextjs/blog.ts
index 2bf401cb30ad..8fb4281d5987 100644
--- a/lib/routes/nextjs/blog.ts
+++ b/lib/routes/nextjs/blog.ts
@@ -24,9 +24,9 @@ const handler: Route['handler'] = async () => {
const $ = load(data);
return {
- title: $('h1').first().text().trim(),
+ title: $('h1').text(),
link,
- description: $('div.prose').html() ?? '',
+ description: $('div.prose').html(),
pubDate: parseDate(
$('p[data-version="v1"]')
.first()
diff --git a/lib/routes/nga/post.ts b/lib/routes/nga/post.ts
index c80bd75a3e9b..b097c57dc4ab 100644
--- a/lib/routes/nga/post.ts
+++ b/lib/routes/nga/post.ts
@@ -99,7 +99,7 @@ async function handler(ctx) {
const pageId = await getLastPageId(tid, authorId);
const $ = await getPage(tid, authorId, pageId);
- const title = $('title').text() || '';
+ const title = $('title').text();
const posterMap = JSON.parse(
$('script')
.text()
diff --git a/lib/routes/niaogebiji/cat.ts b/lib/routes/niaogebiji/cat.ts
index a6e1e6e6940a..2577c9297798 100644
--- a/lib/routes/niaogebiji/cat.ts
+++ b/lib/routes/niaogebiji/cat.ts
@@ -43,9 +43,9 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
return {
- title: item.find('.articleTitle').text().trim(),
- description: item.find('.articleContentInner').text().trim(),
- author: item.find('.author').text().trim(),
+ title: item.find('.articleTitle').text(),
+ description: item.find('.articleContentInner').text(),
+ author: item.find('.author').text(),
link: new URL(item.find('a').first().attr('href'), link).href,
category: [
...item
@@ -63,7 +63,7 @@ async function handler(ctx) {
const response = await got(element.link);
const $ = load(response.data);
- element.pubDate = timezone(parseDate($('.writeTime3').text().trim()), 8);
+ element.pubDate = timezone(parseDate($('.writeTime3').text()), 8);
element.description = $('.pc_content').html();
return element;
diff --git a/lib/routes/nielsberglund/index.ts b/lib/routes/nielsberglund/index.ts
index 0ffab274e51e..3e992251071c 100644
--- a/lib/routes/nielsberglund/index.ts
+++ b/lib/routes/nielsberglund/index.ts
@@ -34,7 +34,7 @@ async function handler() {
const $item = $(item);
const $link = $item.find('a').first();
const href = $link.attr('href');
- const title = $item.find('.post-title').first().text().trim();
+ const title = $item.find('.post-title').text().trim();
const dateStr = $item.find('.post-meta').text().trim();
if (!href || !title) {
@@ -60,7 +60,7 @@ async function handler() {
const detailResponse = await got(item.link);
const $detail = load(detailResponse.data);
- item.description = $detail('.post-container').html() || '';
+ item.description = $detail('.post-container').html();
return item;
} catch {
diff --git a/lib/routes/nikkei/asia/index.ts b/lib/routes/nikkei/asia/index.ts
index 90209de9cec7..63e2fd043311 100644
--- a/lib/routes/nikkei/asia/index.ts
+++ b/lib/routes/nikkei/asia/index.ts
@@ -47,9 +47,9 @@ async function handler() {
const response = await got(item.link);
const $ = load(response.data);
- const description = $('div[class^="NewsArticle_newsArticleContentContainerWrapper"]').html() || '';
+ const description = $('div[class^="NewsArticle_newsArticleContentContainerWrapper"]').html();
- const author = $('div[class^="NewsArticleDetails_newsArticleDetailsByline"]').text() || '';
+ const author = $('div[class^="NewsArticleDetails_newsArticleDetailsByline"]').text();
return {
title,
pubDate,
diff --git a/lib/routes/njit/jwc.ts b/lib/routes/njit/jwc.ts
index edb757279bbc..7d0bb9e5e107 100644
--- a/lib/routes/njit/jwc.ts
+++ b/lib/routes/njit/jwc.ts
@@ -20,7 +20,7 @@ export const route: Route = {
supportPodcast: false,
supportScihub: false,
},
- name: '南京工程学院教务处',
+ name: '教务处',
maintainers: ['zefengdaguo'],
handler,
description: `| 教学 | 考试 | 信息 | 实践 |
diff --git a/lib/routes/njit/tzgg.ts b/lib/routes/njit/tzgg.ts
index 81f3cf0cc3a4..fac095e33e18 100644
--- a/lib/routes/njit/tzgg.ts
+++ b/lib/routes/njit/tzgg.ts
@@ -26,7 +26,7 @@ export const route: Route = {
source: ['www.njit.edu.cn/'],
},
],
- name: '南京工程学院通知公告',
+ name: '通知公告',
maintainers: ['zefengdaguo'],
handler,
url: 'www.njit.edu.cn/',
diff --git a/lib/routes/nju/scit.ts b/lib/routes/nju/scit.ts
index 6b5b8ab82608..d621db107384 100644
--- a/lib/routes/nju/scit.ts
+++ b/lib/routes/nju/scit.ts
@@ -50,7 +50,7 @@ async function handler(ctx) {
return {
title: item.find('a').attr('title'),
link: 'https://scit.nju.edu.cn' + item.find('a').attr('href'),
- pubDate: timezone(parseDate(item.find('.Article_PublishDate').first().text(), 'YYYY-MM-DD'), 8),
+ pubDate: timezone(parseDate(item.find('.Article_PublishDate').text(), 'YYYY-MM-DD'), 8),
};
}),
};
diff --git a/lib/routes/nju/zbb.ts b/lib/routes/nju/zbb.ts
index 7cd9a779a5db..6b066578cf72 100644
--- a/lib/routes/nju/zbb.ts
+++ b/lib/routes/nju/zbb.ts
@@ -48,9 +48,9 @@ async function handler(ctx) {
item = $(item);
return {
title: item.find('a').attr('title'),
- description: item.find('a').first().text(),
+ description: item.find('a').text(),
link: 'https://zbb.nju.edu.cn' + item.find('a').attr('href'),
- pubDate: timezone(parseDate(item.find('span').first().text(), 'YYYY-MM-DD'), 8),
+ pubDate: timezone(parseDate(item.find('span').text(), 'YYYY-MM-DD'), 8),
};
}),
};
@@ -80,9 +80,9 @@ async function handler(ctx) {
item = $(item);
return {
title: item.find('a').attr('title'),
- description: item.find('a').first().text(),
+ description: item.find('a').text(),
link: 'https://zbb.nju.edu.cn' + item.find('a').attr('href'),
- pubDate: timezone(parseDate(item.find('span').first().text(), 'YYYY-MM-DD'), 8),
+ pubDate: timezone(parseDate(item.find('span').text(), 'YYYY-MM-DD'), 8),
category: category_dict[c],
};
});
diff --git a/lib/routes/njucm/utils/index.ts b/lib/routes/njucm/utils/index.ts
index 1fff50cbd7a2..f91d670d1ca1 100644
--- a/lib/routes/njucm/utils/index.ts
+++ b/lib/routes/njucm/utils/index.ts
@@ -29,11 +29,7 @@ async function getNoticeList(ctx, url, host, listSelector, titleSelector, conten
} else {
const $ = load(response.data);
item.title = $(contentSelector.title).text();
- item.description = $(contentSelector.content)
- .html()
- .replaceAll('src="/', () => `src="${new URL('.', host).href}`)
- .replaceAll('href="/', () => `href="${new URL('.', host).href}`)
- .trim();
+ item.description = $(contentSelector.content).html().trim();
item.pubDate = timezone(parseDate($(contentSelector.date).text()), 8);
}
return item;
diff --git a/lib/routes/njupt/jwc.ts b/lib/routes/njupt/jwc.ts
index 50c269b911b5..d5db700e46c7 100644
--- a/lib/routes/njupt/jwc.ts
+++ b/lib/routes/njupt/jwc.ts
@@ -4,6 +4,8 @@ import type { Route } from '@/types';
import cache from '@/utils/cache';
import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
+import timezone from '@/utils/timezone';
+import { finishArticleItem } from '@/utils/wechat-mp';
const host = 'https://jwc.njupt.edu.cn';
@@ -39,75 +41,39 @@ async function handler(ctx) {
const response = await got({
method: 'get',
url: link,
- headers: {
- Referer: host,
- },
});
const $ = load(response.data);
- const urlList = $('.content')
- .find('a')
- .slice(0, 10)
+ const list = $('.news_list li')
.toArray()
- .map((e) => $(e).attr('href'));
+ .map((item) => {
+ const $item = $(item);
- const titleList = $('.content')
- .find('a')
- .slice(0, 10)
- .toArray()
- .map((e) => $(e).attr('title'));
-
- const dateList = $('.content tr')
- .find('div')
- .slice(0, 10)
- .toArray()
- .map((e) => $(e).text().replace('发布时间:', ''));
+ return {
+ title: $item.find('.news_title').text(),
+ link: new URL($item.find('a').attr('href')!, host).href,
+ pubDate: timezone(parseDate($item.find('.news_meta').text()), 8),
+ };
+ });
- const out = await Promise.all(
- urlList.map((itemUrl, index) => {
- itemUrl = new URL(itemUrl, host).href;
- if (itemUrl.includes('.htm')) {
- return cache.tryGet(itemUrl, async () => {
- const response = await got.get(itemUrl);
- if (response.redirectUrls.length !== 0) {
- const single = {
- title: titleList[index],
- link: itemUrl,
- description: '该通知无法直接预览, 请点击原文链接↑查看',
- pubDate: parseDate(dateList[index]),
- };
- return single;
- }
- const $ = load(response.data);
- const single = {
- title: $('.Article_Title').text(),
- link: itemUrl,
- description: $('.wp_articlecontent')
- .html()
- .replaceAll('src="/', () => `src="${new URL('.', host).href}`)
- .replaceAll('href="/', () => `href="${new URL('.', host).href}`)
- .trim(),
- pubDate: parseDate($('.Article_PublishDate').text().replace('发布时间:', '')),
- };
- return single;
- });
+ const items = await Promise.all(
+ list.map((item) => {
+ if (new URL(item.link).host === 'mp.weixin.qq.com') {
+ return finishArticleItem({ ...item, guid: item.link });
}
- const single = {
- title: titleList[index],
- link: itemUrl,
- description: '该通知为文件,请点击原文链接↑下载',
- pubDate: parseDate(dateList[index]),
- };
- return single;
+
+ return cache.tryGet(item.link, async () => {
+ const detailResponse = await got(item.link);
+ const $ = load(detailResponse.data);
+ item.description = $('.wp_articlecontent').html() ?? '该通知无法直接预览,请点击原文链接查看';
+ return item;
+ });
})
);
- let info = '通知公告';
- if (type === 'news') {
- info = '教务快讯';
- }
+
return {
- title: '南京邮电大学 -- ' + info,
+ title: `南京邮电大学 -- ${type === 'news' ? '教务快讯' : '通知公告'}`,
link,
- item: out,
+ item: items,
};
}
diff --git a/lib/routes/njxzc/home.ts b/lib/routes/njxzc/home.ts
index ec1f0ffd3bda..0559db25bb78 100644
--- a/lib/routes/njxzc/home.ts
+++ b/lib/routes/njxzc/home.ts
@@ -45,7 +45,7 @@ async function handler() {
return null;
}
return {
- title: $link.attr('title') || $link.text().trim(),
+ title: $link.attr('title') || $link.text(),
link: new URL(href, pageUrl).href,
pubDate: parsePubDate($item.find('.news_meta').text()),
};
diff --git a/lib/routes/njxzc/lib.ts b/lib/routes/njxzc/lib.ts
index 04c2b45e79f1..42c439efcef2 100644
--- a/lib/routes/njxzc/lib.ts
+++ b/lib/routes/njxzc/lib.ts
@@ -43,8 +43,8 @@ async function handler() {
if (!href) {
return null;
}
- const day = $link.find('.tm-1').text().trim();
- const yearMonth = $link.find('.tm-2').text().trim();
+ const day = $link.find('.tm-1').text();
+ const yearMonth = $link.find('.tm-2').text();
return {
title: $link.find('.btt-4').text().trim(),
link: new URL(href, pageUrl).href,
diff --git a/lib/routes/njxzc/utils/index.ts b/lib/routes/njxzc/utils/index.ts
index da92a4f7a008..e958d11a879d 100644
--- a/lib/routes/njxzc/utils/index.ts
+++ b/lib/routes/njxzc/utils/index.ts
@@ -31,27 +31,12 @@ async function fetchArticle(item: NoticeItem): Promise {
const $player = $(el);
const pdfSrc = $player.attr('pdfsrc');
if (pdfSrc) {
- $player.replaceWith(`附件下载
`);
+ $player.replaceWith(`附件下载
`);
} else {
$player.remove();
}
});
- $content.find('a').each((_, el) => {
- const $a = $(el);
- const href = $a.attr('href');
- if (href) {
- $a.attr('href', new URL(href, item.link).href);
- }
- });
- $content.find('img').each((_, el) => {
- const $img = $(el);
- const src = $img.attr('src');
- if (src) {
- $img.attr('src', new URL(src, item.link).href);
- }
- });
-
- const title = $('.arti_title').text().trim();
+ const title = $('.arti_title').text();
const pubDate = parsePubDate($('.arti_update').text());
return {
diff --git a/lib/routes/nmc/publish.ts b/lib/routes/nmc/publish.ts
index 86ffff178416..e5f088d19515 100644
--- a/lib/routes/nmc/publish.ts
+++ b/lib/routes/nmc/publish.ts
@@ -34,7 +34,7 @@ export const handler = async (ctx: Context): Promise => {
const timeStrArray = $el
.find('div.author b')
.toArray()
- .map((el) => $(el).text().trim());
+ .map((el) => $(el).text());
const pubDateStr: string | undefined = `${timeStrArray.pop()}:00 ${timeStrArray.join('/')}`;
const title = `${pubDateStr} - ${$el.find('div.title').text().replaceAll(/\s/g, '')}`;
@@ -86,7 +86,7 @@ export const handler = async (ctx: Context): Promise => {
const title = `${$el.find('div').text().trim()} - ${$('div.nav1 a.actived, div#menuNavBar button.dropdown-toggle')
.toArray()
- .map((el) => $(el).text().trim())
+ .map((el) => $(el).text())
.join(' - ')}`;
const description: string | undefined = renderDescription({
images: image
diff --git a/lib/routes/notion/release.ts b/lib/routes/notion/release.ts
index 06324cb84eae..e74e6a950649 100644
--- a/lib/routes/notion/release.ts
+++ b/lib/routes/notion/release.ts
@@ -16,9 +16,9 @@ const handler: Route['handler'] = async () => {
const $ = load(data);
// the first post, do not cache
- const title = $('h2').first().text() ?? '';
+ const title = $('h2').first().text();
const pubDate = parseDate($('time').first().text());
- const description = $('article.release article').first().html() ?? '';
+ const description = $('article.release article').first().html();
const link = `https://notion.so/releases/${day(pubDate).format('YYYY-MM-DD')}`;
// archive
@@ -39,9 +39,9 @@ const handler: Route['handler'] = async () => {
const $ = load(data);
return {
- title: $('h2').first().text() ?? '',
+ title: $('h2').first().text(),
pubDate: parseDate($('time').first().text()),
- description: $('article.release article').first().html() ?? '',
+ description: $('article.release article').first().html(),
link,
};
});
diff --git a/lib/routes/nowcoder/schedule.ts b/lib/routes/nowcoder/schedule.ts
index fa67bc84e814..24a5f694a9c6 100644
--- a/lib/routes/nowcoder/schedule.ts
+++ b/lib/routes/nowcoder/schedule.ts
@@ -43,7 +43,7 @@ async function handler(ctx) {
link: 'https://www.nowcoder.com/school/schedule',
description: '名企校招日程',
item: data.map((item) => {
- let desc = ` |
`;
+ let desc = ` |
`;
for (const each of item.schedules) {
desc += `| ${each.content} | ${each.time} |
`;
}
diff --git a/lib/routes/npr/full.ts b/lib/routes/npr/full.ts
index b56809541cdf..9ecdb7d78c48 100644
--- a/lib/routes/npr/full.ts
+++ b/lib/routes/npr/full.ts
@@ -13,10 +13,10 @@ const getArticleDetail = (link) =>
// Prefer tags to slug
let categories = $('.tag')
.toArray()
- .map((el) => $(el).text().trim());
+ .map((el) => $(el).text());
if (categories.length < 1) {
- const slug = $('.slug a').contents().first().text().trim();
+ const slug = $('.slug a').contents().first().text();
if (slug) {
categories = [slug];
diff --git a/lib/routes/nuist/bulletin.ts b/lib/routes/nuist/bulletin.ts
index 7dd30ef5e56d..392d172cb909 100644
--- a/lib/routes/nuist/bulletin.ts
+++ b/lib/routes/nuist/bulletin.ts
@@ -80,7 +80,7 @@ async function handler(ctx) {
const item = $(element);
// 从内部找 a 标签
- const a = item.find('.btt a').first();
+ const a = item.find('.btt a');
const href = a.attr('href');
if (!href) {
diff --git a/lib/routes/nuist/cas.ts b/lib/routes/nuist/cas.ts
index 98629346ab8e..691cfff91ab6 100644
--- a/lib/routes/nuist/cas.ts
+++ b/lib/routes/nuist/cas.ts
@@ -42,7 +42,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
return {
- title: item.find('.Title').text().trim(),
+ title: item.find('.Title').text(),
link: new URL(item.find('.Title').attr('href'), baseUrl).href,
pubDate: parseDate(
item
diff --git a/lib/routes/nyc/mayors-office-news.ts b/lib/routes/nyc/mayors-office-news.ts
index d7168a2eac8a..bf817a5a8294 100644
--- a/lib/routes/nyc/mayors-office-news.ts
+++ b/lib/routes/nyc/mayors-office-news.ts
@@ -91,7 +91,7 @@ Categories
// Remove `iframe` (e.g. YouTube embeds)
$('iframe').remove();
- item.description = $('#body-text-section').first().html();
+ item.description = $('#body-text-section').html();
return item;
})
diff --git a/lib/routes/nycu/aa.ts b/lib/routes/nycu/aa.ts
index 1c588541f7a0..442b6abf6127 100644
--- a/lib/routes/nycu/aa.ts
+++ b/lib/routes/nycu/aa.ts
@@ -36,7 +36,7 @@ async function handler(ctx: Context): Promise {
const item = $('.newslist li')
.toArray()
.map((e) => ({
- title: $('a', e).attr('title')?.trim() || '',
+ title: $('a', e).attr('title') || '',
link: $('a', e).attr('href') || '',
pubDate: ROCDate($('div p:nth-child(1)', e).text().replace('更新日期:', '').trim()),
category: [$('div p:nth-child(2)', e).text().replace('分類:', '')],
diff --git a/lib/routes/nycu/announcement.ts b/lib/routes/nycu/announcement.ts
index 9429172c4be9..3d674599ebf5 100644
--- a/lib/routes/nycu/announcement.ts
+++ b/lib/routes/nycu/announcement.ts
@@ -25,7 +25,7 @@ async function handler(ctx: Context): Promise {
const item = $('.category-style tr .style2')
.toArray()
.map((titleEle) => {
- const date = $(titleEle).parent().next().find('td').text().split('-', 1)[0]?.trim();
+ const date = $(titleEle).parent().next().find('td').text().split('-', 1)[0];
return {
title: $(titleEle).attr('title')?.trim() || '',
diff --git a/lib/routes/nycu/osa.ts b/lib/routes/nycu/osa.ts
index 73665c78c918..9e1e5c95ef32 100644
--- a/lib/routes/nycu/osa.ts
+++ b/lib/routes/nycu/osa.ts
@@ -70,9 +70,9 @@ async function handler(ctx: Context): Promise {
const item = $('.newslist li')
.toArray()
.map((e) => ({
- title: $('a', e).attr('title')?.trim() || '',
+ title: $('a', e).attr('title') || '',
link: $('a', e).attr('href') || '',
- pubDate: ROCDate($('div p:nth-child(1)', e).text().replace('更新日期:', '').trim() || ''),
+ pubDate: ROCDate($('div p:nth-child(1)', e).text().replace('更新日期:', '').trim()),
category: [$('div p:nth-child(2)', e).text().replace('分類:', '')],
author: $('div p:nth-child(3)', e).text().replace('發布單位:', ''),
}));
diff --git a/lib/routes/nymity/censorbib.ts b/lib/routes/nymity/censorbib.ts
index b48d4743fedf..f8eb0614702e 100644
--- a/lib/routes/nymity/censorbib.ts
+++ b/lib/routes/nymity/censorbib.ts
@@ -29,9 +29,9 @@ async function handler() {
.map((item): DataItem => {
const c = $(item);
const id = c.attr('id')!;
- const title = c.find('span.paper').text().trim();
- const author = c.find('span.author').text().trim();
- const other = c.find('span.other').text().trim();
+ const title = c.find('span.paper').text();
+ const author = c.find('span.author').text();
+ const other = c.find('span.other').text();
const download = c.find("img.icon[title='Download paper']").parent().attr('href');
const downloadBibTex = c.find("img.icon[title='Download BibTeX']").parent().attr('href');
const linkToPaper = c.find("img.icon[title='Link to paper']").parent().attr('href');
diff --git a/lib/routes/ollama/blog.ts b/lib/routes/ollama/blog.ts
index 7f393e1e00e8..2deed1a25488 100644
--- a/lib/routes/ollama/blog.ts
+++ b/lib/routes/ollama/blog.ts
@@ -27,10 +27,10 @@ async function handler() {
const items = $('a.group.border-b.py-10')
.toArray()
.map((item) => ({
- title: $(item).children('h2').first().text(),
+ title: $(item).children('h2').text(),
link: baseUrl + $(item).attr('href'),
- pubDate: parseDate($(item).children('h3').first().text()),
- description: $(item).children('p').first().text(),
+ pubDate: parseDate($(item).children('h3').text()),
+ description: $(item).children('p').text(),
}));
return {
title: 'ollama blog',
diff --git a/lib/routes/ollama/models.ts b/lib/routes/ollama/models.ts
index f1638b997821..2045f814bc41 100644
--- a/lib/routes/ollama/models.ts
+++ b/lib/routes/ollama/models.ts
@@ -23,9 +23,9 @@ async function handler() {
const items = $('#repo > ul > li > a')
.toArray()
.map((item) => {
- const name = $(item).find('h2 span').first();
+ const name = $(item).find('h2 span');
const link = $(item).attr('href');
- const description = $(item).find('div p.break-words').first();
+ const description = $(item).find('div p.break-words');
const pubDate = $(item).find('span:contains("Updated")').first();
return {
diff --git a/lib/routes/openrice/promos.ts b/lib/routes/openrice/promos.ts
index 009ad1be5adb..098162bd81cc 100644
--- a/lib/routes/openrice/promos.ts
+++ b/lib/routes/openrice/promos.ts
@@ -39,13 +39,13 @@ async function handler(ctx) {
const response = await ofetch(baseUrl + urlPath, {});
const $ = load(response);
- const title = $('title').text() ?? "Openrice - What's Hot";
+ const title = $('title').text();
const description = $('meta[name="description"]').attr('content') ?? "What's Hot from Openrice";
const data = $('.article-listing-content-cell-wrapper');
const resultList = data.toArray().map((item) => {
const $item = $(item);
- const title = $item.find('.title-name').text() ?? '';
+ const title = $item.find('.title-name').text();
const link = $item.find('a.sr1-listing-content-cell').attr('href') ?? '';
const coverImg =
$item
@@ -53,7 +53,7 @@ async function handler(ctx) {
.attr('style')
?.match(/url\(['"]?(.*?)['"]?\)/)?.[1] ?? null;
const description = renderDescription({
- description: $item.find('.article-details .desc').text() ?? '',
+ description: $item.find('.article-details .desc').text(),
image: coverImg,
});
return {
diff --git a/lib/routes/oreno3d/get-sec-page-data.ts b/lib/routes/oreno3d/get-sec-page-data.ts
index d8529f82d07b..8bf45dc73066 100644
--- a/lib/routes/oreno3d/get-sec-page-data.ts
+++ b/lib/routes/oreno3d/get-sec-page-data.ts
@@ -33,28 +33,24 @@ export const sync_detail = async (link) => {
.each((i, el) => {
authors[i] = $(el).text();
authors[i].replace(' ', ''); // 去空格
- authors[i].trim(); // 去首尾空格
});
$(sec_page_selector)
.find(origins_selector)
.each((i, el) => {
origins[i] = $(el).text();
origins[i].replace(' ', '');
- origins[i].trim();
});
$(sec_page_selector)
.find(characters_selector)
.each((i, el) => {
characters[i] = $(el).text();
characters[i].replace(' ', '');
- characters[i].trim();
});
$(sec_page_selector)
.find(tags_selector)
.each((i, el) => {
tags[i] = $(el).text();
tags[i].replace(' ', '');
- tags[i].trim();
});
// 筛选
const desc = $(sec_page_selector).find(desc_selector).text();
diff --git a/lib/routes/osu/beatmaps/packs.ts b/lib/routes/osu/beatmaps/packs.ts
index afef25ec410f..689e6941de96 100644
--- a/lib/routes/osu/beatmaps/packs.ts
+++ b/lib/routes/osu/beatmaps/packs.ts
@@ -36,7 +36,7 @@ async function handler(ctx) {
link,
item: itemList.toArray().map((element) => {
const item = $(element);
- const title = item.find('.beatmap-pack__name').text().trim();
+ const title = item.find('.beatmap-pack__name').text();
const link = item.find('.beatmap-pack__header').attr('href');
// Trying to get the description will return 429 (Too Many Requests).
const description = item.find('.beatmap-pack__body').html();
diff --git a/lib/routes/p-articles/contributors.ts b/lib/routes/p-articles/contributors.ts
index 8880096626f4..28a1b2693420 100644
--- a/lib/routes/p-articles/contributors.ts
+++ b/lib/routes/p-articles/contributors.ts
@@ -31,7 +31,7 @@ async function handler(ctx) {
.toArray()
.map((element) => {
const info = {
- title: $(element).find('h3').text().trim(),
+ title: $(element).find('h3').text(),
link: new URL($(element).attr('href'), rootUrl).href,
};
return info;
diff --git a/lib/routes/p-articles/utils.ts b/lib/routes/p-articles/utils.ts
index 3592d9024e5a..d34f09dded8f 100644
--- a/lib/routes/p-articles/utils.ts
+++ b/lib/routes/p-articles/utils.ts
@@ -8,10 +8,10 @@ const rootUrl = 'https://p-articles.com';
const ProcessFeed = (info, data) => {
// const $ = cheerio.load(data);
const $ = load(data);
- const author = $('div.detail_title_02 > h4 > a:nth-child(2)').text().trim();
+ const author = $('div.detail_title_02 > h4 > a:nth-child(2)').text();
info.author = author;
- const dateValue = $('div.detail_title_02 > h4 ').text().trim();
+ const dateValue = $('div.detail_title_02 > h4 ').text();
info.pubDate = timezone(parseDate(dateValue), 8);
const description = $('div.detail_contect_01').html();
diff --git a/lib/routes/papers/category.ts b/lib/routes/papers/category.ts
index 784791408f73..5f08828aa22c 100644
--- a/lib/routes/papers/category.ts
+++ b/lib/routes/papers/category.ts
@@ -34,7 +34,6 @@ export const handler = async (ctx: Context): Promise => {
.contents()
.last()
.text()
- ?.trim()
?.match(/(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})/)?.[1];
const linkUrl: string | undefined = $el.find('a.title-link').attr('href');
const categoryEls: Element[] = $el.find('p.subjects a').toArray();
@@ -66,7 +65,7 @@ export const handler = async (ctx: Context): Promise => {
language,
};
- const $enclosureEl: Cheerio = $el.find('a.title-pdf').first();
+ const $enclosureEl: Cheerio = $el.find('a.title-pdf');
const enclosureUrl: string | undefined = $enclosureEl.attr('onclick')?.match(/togglePdf\('.*?',\s'(.*?)',\sthis\)/)?.[1];
if (enclosureUrl) {
diff --git a/lib/routes/people/index.ts b/lib/routes/people/index.ts
index b03aead8d841..7ffb9cf213e3 100644
--- a/lib/routes/people/index.ts
+++ b/lib/routes/people/index.ts
@@ -55,7 +55,7 @@ async function handler(ctx) {
.map((item) => {
item = $(item);
- const link = item.attr('href').trim();
+ const link = item.attr('href');
return {
title: item.text(),
diff --git a/lib/routes/perplexity/blog.ts b/lib/routes/perplexity/blog.ts
index edacc7dde33d..a014fcaf8aae 100644
--- a/lib/routes/perplexity/blog.ts
+++ b/lib/routes/perplexity/blog.ts
@@ -23,7 +23,7 @@ export const route: Route = {
},
radar: [
{
- source: ['www.perplexity.ai/hub'],
+ source: ['www.perplexity.ai/hub/blog'],
target: '/blog',
},
],
@@ -36,7 +36,7 @@ export const route: Route = {
async function handler(ctx: Context) {
const limit = Number(ctx.req.query('limit') ?? '20');
- const rootUrl = 'https://www.perplexity.ai/hub';
+ const rootUrl = 'https://www.perplexity.ai/hub/blog';
const { page, destroy, context } = await getPlaywrightPage(rootUrl, {
onBeforeLoad: async (page) => {
@@ -56,7 +56,7 @@ async function handler(ctx: Context) {
// Step 1: Extract featured article using data-framer-name attribute
const featuredCard = $('[data-framer-name="Featured Card"]').first();
- const featuredHref = featuredCard.find('a[href^="./hub/blog/"]').first().attr('href');
+ const featuredHref = featuredCard.find('a[href^="./blog/"]').attr('href');
const featuredTitle = featuredCard.find('h4').first().text().trim();
if (featuredHref && featuredTitle) {
@@ -136,10 +136,10 @@ async function handler(ctx: Context) {
}
}
- $content('script, style, noscript').remove();
+ $content('style, noscript').remove();
const contentArea = $content('[data-framer-name="Content"]').first();
- const description = contentArea.length ? (contentArea.html() ?? undefined) : undefined;
+ const description = contentArea.length ? contentArea.html() : undefined;
return {
...item,
diff --git a/lib/routes/peterwunder/achievements.ts b/lib/routes/peterwunder/achievements.ts
index 959c7826a74a..2a84e6f3eaaf 100644
--- a/lib/routes/peterwunder/achievements.ts
+++ b/lib/routes/peterwunder/achievements.ts
@@ -18,29 +18,16 @@ type BadgeItem = DataItem & {
title: string;
};
-function absolutizeImageSource($: CheerioAPI, itemUrl: string) {
- $('article')
- .first()
- .find('[src]')
- .each((_, element) => {
- const value = $(element).attr('src');
-
- if (value) {
- $(element).attr('src', new URL(value, itemUrl).href);
- }
- });
-}
-
function extractBadgeDescription($: CheerioAPI) {
- const article = $('article').first();
+ const article = $('article');
if (!article.length) {
return;
}
- article.find('h1, script, style, noscript').remove();
+ article.find('h1, style, noscript').remove();
- return article.html() ?? undefined;
+ return article.html();
}
function extractListItems($: CheerioAPI, limit: number): BadgeItem[] {
@@ -50,7 +37,7 @@ function extractListItems($: CheerioAPI, limit: number): BadgeItem[] {
.map((element) => {
const badge = $(element);
const href = badge.attr('href');
- const title = badge.find('.title').text().trim();
+ const title = badge.find('.title').text();
if (!href || !title) {
return null;
@@ -74,10 +61,9 @@ function fetchBadge(item: BadgeItem) {
const { data: response } = await got(item.link);
const $: CheerioAPI = load(response);
- const title = $('article h1').first().text().trim();
+ const title = $('article h1').text();
const visibleStart = $('ul.metadata li').first().find('time.date').first().attr('datetime');
const image = $('meta[property="og:image"]').attr('content');
- absolutizeImageSource($, item.link);
return {
...item,
diff --git a/lib/routes/pincong/hot.ts b/lib/routes/pincong/hot.ts
index ad77f0ac8151..a22943d20463 100644
--- a/lib/routes/pincong/hot.ts
+++ b/lib/routes/pincong/hot.ts
@@ -39,7 +39,7 @@ async function handler(ctx) {
title: '品葱 - 精选',
link: `${baseUrl}/hot/${category === '0' ? '' : `category-${category}`}`,
item: list.toArray().map((item) => ({
- title: $(item).find('h2 a').text().trim(),
+ title: $(item).find('h2 a').text(),
description: $(item).find('div.markitup-box').html(),
link: baseUrl + $(item).find('div.mod-head h2 a').attr('href'),
pubDate: parseDate($(item).find('div.mod-footer .aw-small-text').text()),
diff --git a/lib/routes/pingwest/status.ts b/lib/routes/pingwest/status.ts
index f9bf584f9b59..b03a239744bf 100644
--- a/lib/routes/pingwest/status.ts
+++ b/lib/routes/pingwest/status.ts
@@ -35,9 +35,6 @@ async function handler() {
searchParams: {
page: 1,
},
- headers: {
- Referer: baseUrl,
- },
});
const $ = load(response.data.data.list);
const items = $('section.item')
diff --git a/lib/routes/pingwest/tag.ts b/lib/routes/pingwest/tag.ts
index e2c1f55c29fa..776acfae9055 100644
--- a/lib/routes/pingwest/tag.ts
+++ b/lib/routes/pingwest/tag.ts
@@ -44,11 +44,7 @@ async function handler(ctx) {
const baseUrl = 'https://www.pingwest.com';
const tagUrl = `${baseUrl}/tag/${tag}`;
const { tagId, tagName } = await cache.tryGet(`pingwest:tag:${tag}`, async () => {
- const res = await got(tagUrl, {
- headers: {
- Referer: baseUrl,
- },
- });
+ const res = await got(tagUrl);
const $ = load(res.data);
const tagId = $('.tag-detail').attr('data-id');
const tagName = $('.tag-detail .info .title').text();
@@ -61,9 +57,6 @@ async function handler(ctx) {
id: tagId,
type: type - 1,
},
- headers: {
- Referer: baseUrl,
- },
});
const $ = load(response.data.data.list);
diff --git a/lib/routes/pingwest/user.ts b/lib/routes/pingwest/user.ts
index 5580fe5ebddf..25c9680815e7 100644
--- a/lib/routes/pingwest/user.ts
+++ b/lib/routes/pingwest/user.ts
@@ -44,11 +44,7 @@ async function handler(ctx) {
const baseUrl = 'https://www.pingwest.com';
const aimUrl = `${baseUrl}/user/${uid}/${type}`;
const { userName, realUid, userSign, userAvatar } = await cache.tryGet(`pingwest:user:info:${uid}`, async () => {
- const res = await got(aimUrl, {
- headers: {
- Referer: baseUrl,
- },
- });
+ const res = await got(aimUrl);
const $ = load(res.data);
const userInfoNode = $('#J_userId');
return {
@@ -65,9 +61,6 @@ async function handler(ctx) {
user_id: realUid,
tab: type,
},
- headers: {
- Referer: baseUrl,
- },
});
const $ = load(response.data.data.list);
diff --git a/lib/routes/pku/eecs.ts b/lib/routes/pku/eecs.ts
index 3f7de9c4377a..49bd43c74135 100644
--- a/lib/routes/pku/eecs.ts
+++ b/lib/routes/pku/eecs.ts
@@ -5,34 +5,44 @@ import cache from '@/utils/cache';
import got from '@/utils/got';
import { parseDate } from '@/utils/parse-date';
-import { eecsMap } from './utils';
+const eecsMap = new Map([
+ [0, 'tzgg.htm'],
+ [1, 'tzgg/xytz.htm'],
+ [2, 'tzgg/rstz.htm'],
+ [6, 'tzgg/jwtz.htm'],
+ [8, 'tzgg/xgtz.htm'],
+ [3, 'tzgg/ghtz.htm'],
+ [4, 'tzgg/yytz.htm'],
+]);
export const route: Route = {
path: '/eecs/:type?',
- name: 'Unknown',
+ name: '信科公告通知',
+ example: '/pku/eecs/0',
maintainers: ['Ir1d'],
handler,
+ description: `| 全部 | 学院通知 | 人事通知 | 教务通知 | 学工通知 | 工会通知 | 院友通知 |
+| ---- | -------- | -------- | -------- | -------- | -------- | -------- |
+| 0 | 1 | 2 | 6 | 8 | 3 | 4 |`,
};
async function handler(ctx) {
const host = 'https://eecs.pku.edu.cn';
- let type = ctx.params && Number.parseInt(ctx.req.param('type'));
- if (type === undefined) {
- type = 0;
- }
+ const type = Number.parseInt(ctx.req.param('type')) || 0;
+ const listUrl = host + '/' + (eecsMap.get(type) ?? eecsMap.get(0));
- const response = await got(host + '/xygk1/ggtz/' + eecsMap.get(type));
+ const response = await got(listUrl);
const $ = load(response.data);
- let items = $('.hvr-shutter-out-vertical')
+ let items = $('ul.list-text > li > a')
.toArray()
.map((item) => {
item = $(item);
return {
- title: item.attr('title'),
- link: new URL(item.attr('href'), host).href,
- pubDate: parseDate(item.find('em').text()),
+ title: item.find('.tit').text(),
+ link: new URL(item.attr('href'), listUrl).href,
+ pubDate: parseDate(item.find('.date .mon').text() + '-' + item.find('.date .day').text()),
};
});
@@ -40,26 +50,12 @@ async function handler(ctx) {
items.map((item) =>
cache.tryGet(item.link, async () => {
const detail = await got(item.link);
- const content = load(detail.data);
+ const $ = load(detail.data);
- content('input').remove();
- content('h1').remove();
- content('.con_xq').remove();
+ const content = $('.Section1');
+ content.find('[style]').removeAttr('style');
- content('form[name=_newscontent_fromname] img').each((_, i) => {
- i = $(i);
- if (i.attr('src').startsWith('/')) {
- i.attr('src', new URL(i.attr('src'), host).href);
- }
- });
- content('form[name=_newscontent_fromname] ul li a').each((_, a) => {
- a = $(a);
- if (a.attr('href').startsWith('/')) {
- a.attr('href', new URL(a.attr('href'), host).href);
- }
- });
-
- item.description = content('form[name=_newscontent_fromname]').html();
+ item.description = content.html();
return item;
})
)
@@ -67,7 +63,7 @@ async function handler(ctx) {
return {
title: $('title').text(),
- link: host + '/xygk1/ggtz/' + eecsMap.get(type),
+ link: listUrl,
description: '北大信科 公告通知',
item: items,
};
diff --git a/lib/routes/pku/utils.ts b/lib/routes/pku/utils.ts
deleted file mode 100644
index 351692a8f4c8..000000000000
--- a/lib/routes/pku/utils.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-const eecsMap = new Map([
- [0, 'qb.htm'],
- [1, 'xytz.htm'],
- [2, 'rstz.htm'],
- [6, 'jwtz.htm'],
- [8, 'xgtz.htm'],
- [7, 'kytz.htm'],
- [5, 'cwtz.htm'],
- [3, 'ghtz.htm'],
- [4, 'yytz.htm'],
-]);
-
-export { eecsMap };
diff --git a/lib/routes/pornhub/category-url.ts b/lib/routes/pornhub/category-url.ts
index 87812372a731..e47c81e2c7b5 100644
--- a/lib/routes/pornhub/category-url.ts
+++ b/lib/routes/pornhub/category-url.ts
@@ -48,7 +48,7 @@ async function handler(ctx) {
.map((e) => parseItems($(e), showImages));
return {
- title: $('title').first().text(),
+ title: $('title').text(),
link,
language: $('html').attr('lang') as any,
item: items,
diff --git a/lib/routes/priconne-redive/news.ts b/lib/routes/priconne-redive/news.ts
index fc02c85092c7..cf29b3e27eef 100644
--- a/lib/routes/priconne-redive/news.ts
+++ b/lib/routes/priconne-redive/news.ts
@@ -51,7 +51,7 @@ async function handler(ctx) {
const parseContent = (htmlString) => {
const $ = load(htmlString);
$('.contents-body h3').remove();
- const time = $('.meta-info .time').text().trim();
+ const time = $('.meta-info .time').text();
$('.meta-info').remove();
const content = $('.contents-body');
@@ -72,7 +72,7 @@ async function handler(ctx) {
const out = await Promise.all(
list.map((index, item) => {
item = $(item);
- const link = item.find('a').first().attr('href');
+ const link = item.find('a').attr('href');
return cache.tryGet(link, async () => {
const rssitem = {
title: item.find('h4').text(),
diff --git a/lib/routes/projectjav/utils.ts b/lib/routes/projectjav/utils.ts
index d863ebc7bebd..40c76fbd8e5c 100644
--- a/lib/routes/projectjav/utils.ts
+++ b/lib/routes/projectjav/utils.ts
@@ -20,7 +20,7 @@ const processItems = async (currentUrl: string) => {
const item = $(element);
const link = item.find('a').attr('href');
return {
- title: item.find('div.name span').text() || '',
+ title: item.find('div.name span').text(),
link: link?.startsWith('http') ? link : `${rootUrl}${link}`,
};
})
@@ -80,7 +80,7 @@ const processItems = async (currentUrl: string) => {
}
// Get description
- item.description = mainContent.html() || '';
+ item.description = mainContent.html();
return item;
})
diff --git a/lib/routes/qingting/podcast.ts b/lib/routes/qingting/podcast.ts
index 98ad908b8388..e675652b436a 100644
--- a/lib/routes/qingting/podcast.ts
+++ b/lib/routes/qingting/podcast.ts
@@ -77,11 +77,7 @@ async function handler(ctx) {
const data = (await cache.tryGet(`qingting:podcast:${channelId}:${item.id}`, async () => {
const link = `https://www.qingting.fm/channels/${channelId}/programs/${item.id}/`;
- const detailRes = await ofetch(link, {
- headers: {
- Referer: 'https://www.qingting.fm/',
- },
- });
+ const detailRes = await ofetch(link);
const detail = JSON.parse(detailRes.match(/\},"program":(.*?),"plist":/)[1]);
diff --git a/lib/routes/qlu/notice.ts b/lib/routes/qlu/notice.ts
index cc2f6c8e5c60..ed9566144efa 100644
--- a/lib/routes/qlu/notice.ts
+++ b/lib/routes/qlu/notice.ts
@@ -55,7 +55,7 @@ async function handler() {
} else {
const result = await got(itemUrl);
const $ = load(result.data);
- description = $('.read').html().trim();
+ description = $('.read').html();
}
return {
title: itemTitle,
diff --git a/lib/routes/quicker/qa.ts b/lib/routes/quicker/qa.ts
index 796ac38a71ac..5bdc3f52135e 100644
--- a/lib/routes/quicker/qa.ts
+++ b/lib/routes/quicker/qa.ts
@@ -84,8 +84,7 @@ async function handler(ctx) {
const pubDate = content('.info-text')
.first()
.text()
- .replace(/创建于 /, '')
- .trim();
+ .replace(/创建于 /, '');
item.description = content('.topic-body').html();
item.author = content('.user-link').first().text();
diff --git a/lib/routes/quicker/share.ts b/lib/routes/quicker/share.ts
index cfc78802c5a1..29bd9e508efe 100644
--- a/lib/routes/quicker/share.ts
+++ b/lib/routes/quicker/share.ts
@@ -74,7 +74,7 @@ async function handler(ctx) {
content('section').last().remove();
content('#app').children().slice(0, 2).remove();
- const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.trim().replaceAll(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
+ const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.replaceAll(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
item.author = content('.user-link').first().text();
item.description = content('div[data-info="动作信息"]').html() ?? content('#app').html() ?? content('.row').eq(1).html();
diff --git a/lib/routes/quicker/user.ts b/lib/routes/quicker/user.ts
index 4d4ffea5691d..ca398698ba2b 100644
--- a/lib/routes/quicker/user.ts
+++ b/lib/routes/quicker/user.ts
@@ -66,7 +66,7 @@ async function handler(ctx) {
content('section').last().remove();
content('#app').children().slice(0, 2).remove();
- const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.trim().replaceAll(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
+ const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.replaceAll(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
item.author = content('.user-link').first().text();
item.description = content('div[data-info="动作信息"]').html() ?? content('#app').html() ?? content('.row').eq(1).html();
diff --git a/lib/routes/qztc/sjxy/index.ts b/lib/routes/qztc/sjxy/index.ts
index 7868446272a6..9973a1a7efb4 100644
--- a/lib/routes/qztc/sjxy/index.ts
+++ b/lib/routes/qztc/sjxy/index.ts
@@ -101,7 +101,7 @@ async function handler(ctx) {
} else {
const response = await ofetch(item.link);
const $ = load(response);
- newItem.description = $('.wp_articlecontent').html() || '';
+ newItem.description = $('.wp_articlecontent').html();
}
} else {
// 涉及到其他站点,不方便做统一的 html 解析,直接返回链接
diff --git a/lib/routes/railway/index.ts b/lib/routes/railway/index.ts
index 4c2e89ff6148..967d4fce1cd0 100644
--- a/lib/routes/railway/index.ts
+++ b/lib/routes/railway/index.ts
@@ -68,6 +68,6 @@ export const fetchArticleDetails = async (url: string) => {
const $article = $('article > section ');
return {
- content: $article.html() ?? undefined,
+ content: $article.html(),
};
};
diff --git a/lib/routes/raycast/changelog.ts b/lib/routes/raycast/changelog.ts
index 7e3f8cdba008..431baa994db2 100644
--- a/lib/routes/raycast/changelog.ts
+++ b/lib/routes/raycast/changelog.ts
@@ -17,8 +17,8 @@ const handler: Route['handler'] = async () => {
const $ = load(item);
const version = $('span[id]').attr('id');
- const html = $('div.markdown').html() ?? '';
- const date = $('span[class^=ChangelogEntry_changelogDate]').text().trim();
+ const html = $('div.markdown').html();
+ const date = $('span[class^=ChangelogEntry_changelogDate]').text();
return {
title: `Version ${version}`,
diff --git a/lib/routes/react/blog.ts b/lib/routes/react/blog.ts
index 88e3bc0e9347..90a833a8d9df 100644
--- a/lib/routes/react/blog.ts
+++ b/lib/routes/react/blog.ts
@@ -23,9 +23,9 @@ const handler: Route['handler'] = async () => {
const $ = load(data);
return {
- title: $('h1').first().text().trim(),
+ title: $('h1').first().text(),
link,
- description: $('article div:nth-child(2)').html() ?? '',
+ description: $('article div:nth-child(2)').html(),
pubDate: parseDate($('p.whitespace-pre-wrap').first().text().split(/\s+by/, 1)[0]),
};
});
diff --git a/lib/routes/resetera/thread.ts b/lib/routes/resetera/thread.ts
index 551c63d50d46..d02698d20468 100644
--- a/lib/routes/resetera/thread.ts
+++ b/lib/routes/resetera/thread.ts
@@ -93,8 +93,8 @@ const handler: Route['handler'] = async (ctx) => {
const dataTime = Number(timeEl.attr('data-time') || 0);
const pubDate = timeEl.attr('datetime') || (dataTime ? new Date(dataTime * 1000).toUTCString() : undefined);
- // 正文容器(clone 后处理)
- const $body = $el.find('.message-body .bbWrapper, .message-content .bbWrapper, .bbWrapper').first().clone();
+ // 正文容器(就地处理)
+ const $body = $el.find('.message-body .bbWrapper, .message-content .bbWrapper, .bbWrapper');
// 去掉引用块(回复别人的引用)
$body.find('.bbCodeBlock--quote, blockquote.bbCodeBlock').remove();
@@ -115,16 +115,15 @@ const handler: Route['handler'] = async (ctx) => {
const hasImage = imgs.length > 0;
// 文字 HTML:移除图片再取 HTML
- const $textOnly = $body.clone();
- $textOnly.find('img, picture').remove();
- const textHtml = ($textOnly.html() || '').trim();
+ $body.find('img, picture').remove();
+ const textHtml = ($body.html() || '').trim();
// 标题:作者 + 楼层号(若能取到)
const floor = $el.find('.message-attribution-opposite a').last().text().trim();
const title = author ? `${author}${floor ? ' - ' + floor : ''}` : floor || 'New post';
// 描述:Source 链接 + 文字 + 图片
- const imagesHtml = hasImage ? imgs.map((u) => `
`).join('') : '';
+ const imagesHtml = hasImage ? imgs.map((u) => `
`).join('') : '';
const description = `
🔗 Source post
${textHtml}${imagesHtml}
@@ -158,7 +157,6 @@ const handler: Route['handler'] = async (ctx) => {
// 5) 标题取“最新页”的