From 5f9844bb91c491078564bff6bf8eb6669d57ebab Mon Sep 17 00:00:00 2001 From: la3rence Date: Wed, 27 Dec 2023 22:16:36 +0800 Subject: [PATCH 01/76] feat(route): add new route for moj of gov.cn (#14122) * feat(route): add new route for moj of gov.cn * fix: typo in path Co-authored-by: Tony --------- --- lib/v2/gov/maintainer.js | 1 + lib/v2/gov/moj/lfyjzj.js | 53 ++++++++++++++++++++++++++++++ lib/v2/gov/radar.js | 11 +++++++ lib/v2/gov/router.js | 1 + website/docs/routes/government.mdx | 6 ++++ 5 files changed, 72 insertions(+) create mode 100644 lib/v2/gov/moj/lfyjzj.js diff --git a/lib/v2/gov/maintainer.js b/lib/v2/gov/maintainer.js index cfbb2c6a8..c7c01ac4e 100644 --- a/lib/v2/gov/maintainer.js +++ b/lib/v2/gov/maintainer.js @@ -40,6 +40,7 @@ module.exports = { '/mof/bond/:category?': ['la3rence'], '/mofcom/article/:suffix+': ['LogicJake'], '/moj/aac/news/:type?': ['TonyRL'], + '/moj/lfyjzj': ['la3rence'], '/mot/:category?': ['nczitzk'], '/ndrc/fggz/:category?': ['nczitzk'], '/ndrc/xwdt/:category?': ['nczitzk'], diff --git a/lib/v2/gov/moj/lfyjzj.js b/lib/v2/gov/moj/lfyjzj.js new file mode 100644 index 000000000..2e826fbd9 --- /dev/null +++ b/lib/v2/gov/moj/lfyjzj.js @@ -0,0 +1,53 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +const DOMAIN = 'www.moj.gov.cn'; + +module.exports = async (ctx) => { + const rootUrl = `https://${DOMAIN}`; + const currentUrl = `${rootUrl}/lfyjzj/lflfyjzj/index.html`; + const { data: response } = await got(currentUrl); + const $ = cheerio.load(response); + const siteName = $('title:first').text(); + const theme = $('div.list_title').text(); + const description = `${siteName} - ${theme}`; + const icon = new URL('/images/sfbgw_favicon.ico', rootUrl).href; + const indexes = $('ul.newsMsgList_zzy li') + .toArray() + .map((li) => { + const a = $(li).find('a'); + const pubDate = $(li).find('div.rightData').text(); + const href = a.prop('href'); + const link = href.startsWith('http') ? href : new URL(href, currentUrl).href; + return { + title: a.text(), + link, + pubDate: timezone(parseDate(pubDate), +8), + }; + }); + + const items = await Promise.all( + indexes.map((item) => + ctx.cache.tryGet(`gov:mof:${item.link}`, async () => { + const { data: detailResponse } = await got(item.link); + const content = cheerio.load(detailResponse); + item.description = content('div.TRS_Editor').html(); + item.author = content('div.sT_left span:first').text().split(':')[1]; + const pubDate = content('div.sT_left span:last').text().split(':')[1]; + item.pubDate = pubDate ? timezone(parseDate(pubDate), +8) : item.pubDate; + return item; + }) + ) + ); + + ctx.state.data = { + item: items, + title: theme, + link: currentUrl, + description, + author: siteName, + icon, + }; +}; diff --git a/lib/v2/gov/radar.js b/lib/v2/gov/radar.js index 8b805f8a3..35da7bc79 100644 --- a/lib/v2/gov/radar.js +++ b/lib/v2/gov/radar.js @@ -1273,6 +1273,17 @@ module.exports = { }, ], }, + 'moj.gov.cn': { + _name: '中华人民共和国司法部', + www: [ + { + title: '立法意见征集', + docs: 'https://docs.rsshub.app/routes/government#zhong-hua-ren-min-gong-he-guo-si-fa-bu', + source: ['/lfyjzj/lflfyjzj/*', '/pub/sfbgw/lfyjzj/lflfyjzj/*'], + target: '/gov/moj/lfyjzj', + }, + ], + }, 'moj.gov.tw': { _name: '台灣法務部廉政署', 'www.aac': [ diff --git a/lib/v2/gov/router.js b/lib/v2/gov/router.js index 657209843..1164beb42 100644 --- a/lib/v2/gov/router.js +++ b/lib/v2/gov/router.js @@ -34,6 +34,7 @@ module.exports = function (router) { router.get('/mof/bond/:category?', require('./mof/bond')); router.get('/mofcom/article/:suffix+', require('./mofcom/article')); router.get('/moj/aac/news/:type?', require('./moj/aac/news')); + router.get('/moj/lfyjzj', require('./moj/lfyjzj')); router.get('/ndrc/fggz/:category*', require('./ndrc/fggz')); router.get('/ndrc/xwdt/:category*', require('./ndrc/xwdt')); router.get('/nea/sjzz/ghs', require('./nea/ghs')); diff --git a/website/docs/routes/government.mdx b/website/docs/routes/government.mdx index f14580511..9cd45d80a 100644 --- a/website/docs/routes/government.mdx +++ b/website/docs/routes/government.mdx @@ -2032,6 +2032,12 @@ | :------: | :------: | :------: | :------: | :------: | :------: | | szyw | hjywnews | dfnews | xwfb | spxw | gsgg | +## 中华人民共和国司法部 {#zhong-hua-ren-min-gong-he-guo-si-fa-bu} + +### 立法意见征集 {#zhong-hua-ren-min-gong-he-guo-si-fa-bu-li-fa-yi-jian-zheng-ji} + + + ## 中华人民共和国退役军人事务部 {#zhong-hua-ren-min-gong-he-guo-tui-yi-jun-ren-shi-wu-bu} ### 中华人民共和国退役军人事务部 {#zhong-hua-ren-min-gong-he-guo-tui-yi-jun-ren-shi-wu-bu-zhong-hua-ren-min-gong-he-guo-tui-yi-jun-ren-shi-wu-bu} From 526d1ea94d25c12c8413fd69483032c5009ca34e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 22:25:33 +0000 Subject: [PATCH 02/76] chore(deps-dev): bump @types/supertest from 6.0.1 to 6.0.2 (#14126) * chore(deps-dev): bump @types/supertest from 6.0.1 to 6.0.2 Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest) --- updated-dependencies: - dependency-name: "@types/supertest" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0cdee8347..07467b456 100644 --- a/package.json +++ b/package.json @@ -178,7 +178,7 @@ "@types/plist": "3.0.5", "@types/request-promise-native": "1.0.21", "@types/require-all": "3.0.6", - "@types/supertest": "6.0.1", + "@types/supertest": "6.0.2", "@types/tiny-async-pool": "2.0.3", "@types/tough-cookie": "4.0.5", "@vercel/nft": "0.26.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 513d72115..1d1c6535f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,8 +287,8 @@ devDependencies: specifier: 3.0.6 version: 3.0.6 '@types/supertest': - specifier: 6.0.1 - version: 6.0.1 + specifier: 6.0.2 + version: 6.0.2 '@types/tiny-async-pool': specifier: 2.0.3 version: 2.0.3 @@ -1810,8 +1810,8 @@ packages: '@types/node': 20.5.6 dev: true - /@types/supertest@6.0.1: - resolution: {integrity: sha512-M1xs8grAWC4RisSEQjyQV0FZzXnL3y796540Q/HCdiPcErwKpcAfvsNQFb4xp+5btSWMOZG1YlDWs2z96pdbcw==} + /@types/supertest@6.0.2: + resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} dependencies: '@types/methods': 1.1.4 '@types/superagent': 8.1.1 From 2eefc7fecc52caf826bf3c3b72f356d84a249fb6 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 28 Dec 2023 21:01:23 +0000 Subject: [PATCH 03/76] feat(route): bluesky user posts (#14130) --- lib/v2/bsky/maintainer.js | 1 + lib/v2/bsky/posts.js | 42 ++++++++++++++++++++++ lib/v2/bsky/radar.js | 6 ++++ lib/v2/bsky/router.js | 1 + lib/v2/bsky/templates/post.art | 15 ++++++++ lib/v2/bsky/utils.js | 52 ++++++++++++++++++++++++++++ website/docs/routes/social-media.mdx | 4 +++ 7 files changed, 121 insertions(+) create mode 100644 lib/v2/bsky/posts.js create mode 100644 lib/v2/bsky/templates/post.art create mode 100644 lib/v2/bsky/utils.js diff --git a/lib/v2/bsky/maintainer.js b/lib/v2/bsky/maintainer.js index 61f792cbb..f7a7bde20 100644 --- a/lib/v2/bsky/maintainer.js +++ b/lib/v2/bsky/maintainer.js @@ -1,3 +1,4 @@ module.exports = { '/keyword/:keyword': ['untitaker'], + '/profile/:handle': ['TonyRL'], }; diff --git a/lib/v2/bsky/posts.js b/lib/v2/bsky/posts.js new file mode 100644 index 000000000..c53c59fb9 --- /dev/null +++ b/lib/v2/bsky/posts.js @@ -0,0 +1,42 @@ +const { parseDate } = require('@/utils/parse-date'); +const { resolveHandle, getProfile, getAuthorFeed } = require('./utils'); +const { art } = require('@/utils/render'); +const { join } = require('path'); + +module.exports = async (ctx) => { + const { handle } = ctx.params; + const DID = await resolveHandle(handle, ctx.cache.tryGet); + const profile = await getProfile(DID, ctx.cache.tryGet); + const authorFeed = await getAuthorFeed(DID, ctx.cache.tryGet); + + const items = authorFeed.feed.map(({ post }) => ({ + title: post.record.text.split('\n')[0], + description: art(join(__dirname, 'templates/post.art'), { + text: post.record.text.replace(/\n/g, '
'), + embed: post.embed, + // embed.$type "app.bsky.embed.record#view" and "app.bsky.embed.recordWithMedia#view" + // are not handled + }), + author: post.author.displayName, + pubDate: parseDate(post.record.createdAt), + link: `https://bsky.app/profile/${post.author.handle}/post/${post.uri.split('app.bsky.feed.post/')[1]}`, + upvotes: post.likeCount, + comments: post.replyCount, + })); + + ctx.state.data = { + title: `${profile.displayName} (@${profile.handle}) — Bluesky`, + description: profile.description.replace(/\n/g, ' '), + link: `https://bsky.app/profile/${profile.handle}`, + image: profile.banner, + icon: profile.avatar, + logo: profile.avatar, + item: items, + }; + + ctx.state.json = { + DID, + profile, + authorFeed, + }; +}; diff --git a/lib/v2/bsky/radar.js b/lib/v2/bsky/radar.js index ef04b280a..70a5f2d0d 100644 --- a/lib/v2/bsky/radar.js +++ b/lib/v2/bsky/radar.js @@ -8,6 +8,12 @@ module.exports = { source: '/search', target: (params, url) => `/bsky/keyword/${new URL(url).searchParams.get('q')}`, }, + { + title: 'Post', + docs: 'https://docs.rsshub.app/routes/social-media#bluesky-bsky', + source: '/profile/:handle', + target: '/bsky/profile/:handle', + }, ], }, }; diff --git a/lib/v2/bsky/router.js b/lib/v2/bsky/router.js index 3d4d1c62d..ed6101bd4 100644 --- a/lib/v2/bsky/router.js +++ b/lib/v2/bsky/router.js @@ -1,3 +1,4 @@ module.exports = (router) => { router.get('/keyword/:keyword', require('./keyword')); + router.get('/profile/:handle', require('./posts')); }; diff --git a/lib/v2/bsky/templates/post.art b/lib/v2/bsky/templates/post.art new file mode 100644 index 000000000..06b42960a --- /dev/null +++ b/lib/v2/bsky/templates/post.art @@ -0,0 +1,15 @@ +{{ if text }} + {{@ text }}
+{{ /if }} + +{{ if embed }} + {{ if embed.$type == 'app.bsky.embed.images#view'}} + {{ each embed.images i }} + {{ i.alt }}
+ {{ /each }} + {{ else if embed.$type == 'app.bsky.embed.external#view' }} + {{ embed.external.title }}
+ {{ embed.external.description }} +
+ {{ /if }} +{{ /if }} diff --git a/lib/v2/bsky/utils.js b/lib/v2/bsky/utils.js new file mode 100644 index 000000000..09f5a9f6e --- /dev/null +++ b/lib/v2/bsky/utils.js @@ -0,0 +1,52 @@ +const got = require('@/utils/got'); +const config = require('@/config').value; + +/** + * docs: https://atproto.com/lexicons/app-bsky + */ + +// https://github.com/bluesky-social/atproto/blob/main/lexicons/com/atproto/identity/resolveHandle.json +const resolveHandle = (handle, tryGet) => + tryGet(`bsky:${handle}`, async () => { + const { data } = await got('https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle', { + searchParams: { + handle, + }, + }); + return data.did; + }); + +// https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/actor/getProfile.json +const getProfile = (did, tryGet) => + tryGet(`bsky:profile:${did}`, async () => { + const { data } = await got('https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile', { + searchParams: { + actor: did, + }, + }); + return data; + }); + +// https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/getAuthorFeed.json +const getAuthorFeed = (did, tryGet) => + tryGet( + `bsky:authorFeed:${did}`, + async () => { + const { data } = await got('https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed', { + searchParams: { + actor: did, + filter: 'posts_and_author_threads', + limit: 30, + }, + }); + return data; + }, + config.cache.routeExpire, + false + ); + +module.exports = { + resolveHandle, + getProfile, + getAuthorFeed, +}; diff --git a/website/docs/routes/social-media.mdx b/website/docs/routes/social-media.mdx index 7246fb282..2fad79f99 100644 --- a/website/docs/routes/social-media.mdx +++ b/website/docs/routes/social-media.mdx @@ -339,6 +339,10 @@ ## Bluesky (bsky) {#bluesky-bsky} +### Post {#bluesky-bsky-post} + + + ### Keywords {#bluesky-bsky-keywords} From f90e5d5e354c930f6127d32be8d6c0774b347ffe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 22:03:41 +0000 Subject: [PATCH 04/76] chore(deps-dev): bump @types/react from 18.2.45 to 18.2.46 in /website (#14131) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.45 to 18.2.46. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" 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> --- website/package.json | 2 +- website/pnpm-lock.yaml | 54 +++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/website/package.json b/website/package.json index bf827ad88..0e6235b43 100644 --- a/website/package.json +++ b/website/package.json @@ -36,7 +36,7 @@ "@docusaurus/types": "3.0.1", "@types/markdown-it": "^13.0.7", "@types/mdx-js__react": "^1.5.8", - "@types/react": "^18.2.45", + "@types/react": "^18.2.46", "@types/react-dom": "^18.2.18", "typescript": "^5.3.3" }, diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 81fdb8f80..6c9066df7 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -19,10 +19,10 @@ dependencies: version: 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) + version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.45)(react@18.2.0) + version: 3.0.0(@types/react@18.2.46)(react@18.2.0) clsx: specifier: ^2.0.0 version: 2.0.0 @@ -62,8 +62,8 @@ devDependencies: specifier: ^1.5.8 version: 1.5.8 '@types/react': - specifier: ^18.2.45 - version: 18.2.45 + specifier: ^18.2.46 + version: 18.2.46 '@types/react-dom': specifier: ^18.2.18 version: 18.2.18 @@ -1580,7 +1580,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1600,7 +1600,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.45 + '@types/react': 18.2.46 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1939,7 +1939,7 @@ packages: '@docusaurus/react-loadable': 5.5.2(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 '@types/react-router-config': 5.0.10 '@types/react-router-dom': 5.3.3 react: 18.2.0 @@ -2320,7 +2320,7 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: @@ -2336,9 +2336,9 @@ packages: '@docusaurus/plugin-google-gtag': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-google-tag-manager': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-sitemap': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2368,11 +2368,11 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.46 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: @@ -2391,7 +2391,7 @@ packages: '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.46)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -2440,7 +2440,7 @@ packages: '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 '@types/react-router-config': 5.0.10 clsx: 2.0.0 parse-numeric-range: 1.3.0 @@ -2468,14 +2468,14 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.0.1 '@docusaurus/plugin-content-docs': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) @@ -2534,7 +2534,7 @@ packages: react-dom: ^18.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -2557,7 +2557,7 @@ packages: react-dom: ^18.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -2796,14 +2796,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.46)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.9 - '@types/react': 18.2.45 + '@types/react': 18.2.46 react: 18.2.0 dev: false @@ -3278,7 +3278,7 @@ packages: /@types/mdx-js__react@1.5.8: resolution: {integrity: sha512-iLQL8JZ4AZ+rpZvGUsQwENffpsSCMLYB8kE6OhGasLmdYn7aSLq53uOvZrKx5FM+hymE2nm08HDfq7tFx02ElA==} dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.46 dev: true /@types/mdx@2.0.10: @@ -3338,31 +3338,31 @@ packages: /@types/react-dom@18.2.18: resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.46 dev: true /@types/react-router-config@5.0.10: resolution: {integrity: sha512-Wn6c/tXdEgi9adCMtDwx8Q2vGty6TsPTc/wCQQ9kAlye8UqFxj0vGFWWuhywNfkwqth+SOgJxQTLTZukrqDQmQ==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.46 - /@types/react@18.2.45: - resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + /@types/react@18.2.46: + resolution: {integrity: sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==} dependencies: '@types/prop-types': 15.7.9 '@types/scheduler': 0.16.5 From e7f20b43b7d59422d047b7b51fbe3a78513d2640 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Fri, 29 Dec 2023 22:27:52 +0800 Subject: [PATCH 05/76] feat(route): add Cool Papers (#14129) * feat(route): add Cool Papers * fix typo * fix: remove kimi chat content * docs: fix typo --------- --- lib/v2/papers/index.js | 76 +++++++++++++++++++++++++ lib/v2/papers/maintainer.js | 3 + lib/v2/papers/radar.js | 17 ++++++ lib/v2/papers/router.js | 3 + lib/v2/papers/templates/description.art | 15 +++++ website/docs/routes/journal.mdx | 15 +++++ 6 files changed, 129 insertions(+) create mode 100644 lib/v2/papers/index.js create mode 100644 lib/v2/papers/maintainer.js create mode 100644 lib/v2/papers/radar.js create mode 100644 lib/v2/papers/router.js create mode 100644 lib/v2/papers/templates/description.art diff --git a/lib/v2/papers/index.js b/lib/v2/papers/index.js new file mode 100644 index 000000000..e8437ad52 --- /dev/null +++ b/lib/v2/papers/index.js @@ -0,0 +1,76 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const { category = 'arxiv/cs.CL' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 150; + + const rootUrl = 'https://papers.cool'; + const currentUrl = new URL(category, rootUrl).href; + + const site = category.split(/\//)[0]; + const apiKimiUrl = new URL(`${site}/kimi/`, rootUrl).href; + + const { data: response } = await got(currentUrl); + + const $ = cheerio.load(response); + + const pubDate = parseDate( + $('p.info') + .first() + .text() + .match(/(\d+\s\w+\s\d{4})/)[1], + ['DD MMM YYYY', 'D MMM YYYY'] + ); + + const items = $('div.panel') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + + const id = item.prop('id'); + const kimiUrl = new URL(id, apiKimiUrl).href; + const enclosureUrl = + item + .find('a.pdf-preview') + .prop('onclick') + .match(/'(http.*?)'/)?.[1] ?? undefined; + + return { + title: item.find('span[id]').first().text(), + link: kimiUrl, + description: art(path.join(__dirname, 'templates/description.art'), { + kimiUrl, + siteUrl: item.find('a').first().prop('href'), + pdfUrl: enclosureUrl, + summary: item.find('p.summary').text(), + }), + author: item + .find('p.authors a') + .toArray() + .map((a) => $(a).text()) + .join('; '), + guid: `${currentUrl}#${id}`, + pubDate, + enclosure_url: enclosureUrl, + enclosure_type: enclosureUrl ? 'application/pdf' : undefined, + }; + }); + + const title = $('title').text(); + const icon = new URL('favicon.ico', rootUrl).href; + + ctx.state.data = { + item: items, + title: title.split(/-/)[0].trim(), + link: currentUrl, + description: title, + icon, + logo: icon, + subtitle: $('h1').first().text(), + }; +}; diff --git a/lib/v2/papers/maintainer.js b/lib/v2/papers/maintainer.js new file mode 100644 index 000000000..81eb78d73 --- /dev/null +++ b/lib/v2/papers/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:category?': ['nczitzk'], +}; diff --git a/lib/v2/papers/radar.js b/lib/v2/papers/radar.js new file mode 100644 index 000000000..7c5b25b97 --- /dev/null +++ b/lib/v2/papers/radar.js @@ -0,0 +1,17 @@ +module.exports = { + 'papers.cool': { + _name: 'Cool Papers', + '.': [ + { + title: 'Category', + docs: 'https://docs.rsshub.app/routes/journal#cool-papers-category', + source: ['/:category*'], + target: (params) => { + const category = params.category; + + return `/papers${category ? `/${category}` : ''}`; + }, + }, + ], + }, +}; diff --git a/lib/v2/papers/router.js b/lib/v2/papers/router.js new file mode 100644 index 000000000..9aa561a60 --- /dev/null +++ b/lib/v2/papers/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:category*', require('./')); +}; diff --git a/lib/v2/papers/templates/description.art b/lib/v2/papers/templates/description.art new file mode 100644 index 000000000..368ea61f8 --- /dev/null +++ b/lib/v2/papers/templates/description.art @@ -0,0 +1,15 @@ +{{ if pdfUrl }} + [PDF] +{{ /if }} + +{{ if siteUrl }} + [Site] +{{ /if }} + +{{ if kimiUrl }} + [Kimi] +{{ /if }} + +{{ if summary }} +

{{ summary }}

+{{ /if }} \ No newline at end of file diff --git a/website/docs/routes/journal.mdx b/website/docs/routes/journal.mdx index c87650d69..0ee331017 100644 --- a/website/docs/routes/journal.mdx +++ b/website/docs/routes/journal.mdx @@ -114,6 +114,21 @@ Including 'cell', 'cancer-cell', 'cell-chemical-biology', 'cell-host-microbe', 'cell-metabolism', 'cell-reports', 'cell-reports-physical-science', 'cell-stem-cell', 'cell-systems', 'chem', 'current-biology', 'developmental-cell', 'immunity', 'joule', 'matter', 'molecular-cell', 'neuron', 'one-earth' and 'structure'.
+## Cool Papers {#cool-papers} + +### Category {#cool-papers-category} + + + | Category | id | + | ----------------------------------------------------- | ----------- | + | Arxiv Computation and Language (cs.CL) | arxiv/cs.CL | + | Arxiv Machine Learning (cs.LG) | arxiv/cs.LG | + | Arxiv Artificial Intelligence (cs.AI) | arxiv/cs.AI | + | Arxiv Information Retrieval (cs.IR) | arxiv/cs.IR | + | Arxiv Computer Vision and Pattern Recognition (cs.CV) | arxiv/cs.CV | + | Arxiv Machine Learning (stat.ML) | arxiv/stat.ML | + + ## Deloitte {#deloitte} ### Articles {#deloitte-articles} From 1fb2ddf7cf8d8ef2dd8664c53d933ebcfa804484 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 Dec 2023 14:29:20 +0000 Subject: [PATCH 06/76] style: auto format --- website/docs/routes/journal.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/docs/routes/journal.mdx b/website/docs/routes/journal.mdx index 0ee331017..f402a34ba 100644 --- a/website/docs/routes/journal.mdx +++ b/website/docs/routes/journal.mdx @@ -119,13 +119,13 @@ ### Category {#cool-papers-category} - | Category | id | - | ----------------------------------------------------- | ----------- | - | Arxiv Computation and Language (cs.CL) | arxiv/cs.CL | - | Arxiv Machine Learning (cs.LG) | arxiv/cs.LG | - | Arxiv Artificial Intelligence (cs.AI) | arxiv/cs.AI | - | Arxiv Information Retrieval (cs.IR) | arxiv/cs.IR | - | Arxiv Computer Vision and Pattern Recognition (cs.CV) | arxiv/cs.CV | + | Category | id | + | ----------------------------------------------------- | ------------- | + | Arxiv Computation and Language (cs.CL) | arxiv/cs.CL | + | Arxiv Machine Learning (cs.LG) | arxiv/cs.LG | + | Arxiv Artificial Intelligence (cs.AI) | arxiv/cs.AI | + | Arxiv Information Retrieval (cs.IR) | arxiv/cs.IR | + | Arxiv Computer Vision and Pattern Recognition (cs.CV) | arxiv/cs.CV | | Arxiv Machine Learning (stat.ML) | arxiv/stat.ML | From 9026a6c69aea2bd59ebf12c02dd79aed01220c49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:21:09 +0000 Subject: [PATCH 07/76] chore(deps-dev): bump eslint-plugin-n from 16.5.0 to 16.6.0 (#14140) * chore(deps-dev): bump eslint-plugin-n from 16.5.0 to 16.6.0 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.5.0 to 16.6.0. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.5.0...16.6.0) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 07467b456..70cf469af 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "cross-env": "7.0.3", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-n": "16.5.0", + "eslint-plugin-n": "16.6.0", "eslint-plugin-prettier": "5.1.2", "eslint-plugin-yml": "1.11.0", "fs-extra": "11.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d1c6535f..c4e331b13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,8 +308,8 @@ devDependencies: specifier: 9.1.0 version: 9.1.0(eslint@8.56.0) eslint-plugin-n: - specifier: 16.5.0 - version: 16.5.0(eslint@8.56.0) + specifier: 16.6.0 + version: 16.6.0(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.2 version: 5.1.2(@types/eslint@8.56.0)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) @@ -3319,8 +3319,8 @@ packages: eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-n@16.5.0(eslint@8.56.0): - resolution: {integrity: sha512-Hw02Bj1QrZIlKyj471Tb1jSReTl4ghIMHGuBGiMVmw+s0jOPbI4CBuYpGbZr+tdQ+VAvSK6FDSta3J4ib/SKHQ==} + /eslint-plugin-n@16.6.0(eslint@8.56.0): + resolution: {integrity: sha512-Ag3tYFF90lYU8JdHEl9qSSpeLYbVnO+Oj7sgPUarWUacv1mPL3d5h5yG4Bv3tLe71hrcxmgTi7oByYwKXaVatw==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' @@ -3330,6 +3330,7 @@ packages: eslint: 8.56.0 eslint-plugin-es-x: 7.5.0(eslint@8.56.0) get-tsconfig: 4.7.0 + globals: 13.24.0 ignore: 5.2.4 is-builtin-module: 3.2.1 is-core-module: 2.13.0 @@ -4014,6 +4015,13 @@ packages: type-fest: 0.20.2 dev: true + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /google-auth-library@9.0.0: resolution: {integrity: sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==} engines: {node: '>=14'} From d7a0f4608f074af0422c70cf6be42d99bbc18e5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:39:57 +0000 Subject: [PATCH 08/76] chore(deps): bump koa from 2.14.2 to 2.15.0 (#14141) * chore(deps): bump koa from 2.14.2 to 2.15.0 Bumps [koa](https://github.com/koajs/koa) from 2.14.2 to 2.15.0. - [Changelog](https://github.com/koajs/koa/blob/2.15.0/History.md) - [Commits](https://github.com/koajs/koa/compare/2.14.2...2.15.0) --- updated-dependencies: - dependency-name: koa dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 70cf469af..749fd8c35 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "json-bigint": "1.0.0", "json5": "2.2.3", "jsrsasign": "10.9.0", - "koa": "2.14.2", + "koa": "2.15.0", "koa-basic-auth": "4.0.0", "koa-favicon": "2.1.0", "koa-mount": "4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4e331b13..6afe13fca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,8 +105,8 @@ dependencies: specifier: 10.9.0 version: 10.9.0 koa: - specifier: 2.14.2 - version: 2.14.2 + specifier: 2.15.0 + version: 2.15.0 koa-basic-auth: specifier: 4.0.0 version: 4.0.0 @@ -2748,8 +2748,8 @@ packages: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true - /cookies@0.8.0: - resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} + /cookies@0.9.0: + resolution: {integrity: sha512-mtyMqy14RsH7+IRJglGcKtRLOq0SRt0DdXVrLgc+v1e/o0TNJUpdElhgr3AAi638LO0xZwEPcRRkJ3afxvGhUw==} engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 @@ -5456,15 +5456,15 @@ packages: - supports-color dev: false - /koa@2.14.2: - resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} + /koa@2.15.0: + resolution: {integrity: sha512-KEL/vU1knsoUvfP4MC4/GthpQrY/p6dzwaaGI6Rt4NQuFqkw3qrvsdYF5pz3wOfi7IGTvMPHC9aZIcUKYFNxsw==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 content-disposition: 0.5.4 content-type: 1.0.5 - cookies: 0.8.0 + cookies: 0.9.0 debug: 4.3.4(supports-color@5.5.0) delegates: 1.0.0 depd: 2.0.0 From 13ae721a096adab218f5f0634bcc9c45653b1645 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:46:59 +0000 Subject: [PATCH 09/76] chore(deps): bump clsx from 2.0.0 to 2.1.0 in /website (#14142) Bumps [clsx](https://github.com/lukeed/clsx) from 2.0.0 to 2.1.0. - [Release notes](https://github.com/lukeed/clsx/releases) - [Commits](https://github.com/lukeed/clsx/compare/v2.0.0...v2.1.0) --- updated-dependencies: - dependency-name: clsx 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> --- website/package.json | 2 +- website/pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/website/package.json b/website/package.json index 0e6235b43..71691f75c 100644 --- a/website/package.json +++ b/website/package.json @@ -22,7 +22,7 @@ "@docusaurus/plugin-pwa": "3.0.1", "@docusaurus/preset-classic": "3.0.1", "@mdx-js/react": "^3.0.0", - "clsx": "^2.0.0", + "clsx": "^2.1.0", "markdown-it": "^14.0.0", "meilisearch-docsearch": "^0.6.0", "pinyin-pro": "3.18.5", diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 6c9066df7..4b1f63acd 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -24,8 +24,8 @@ dependencies: specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.46)(react@18.2.0) clsx: - specifier: ^2.0.0 - version: 2.0.0 + specifier: ^2.1.0 + version: 2.1.0 markdown-it: specifier: ^14.0.0 version: 14.0.0 @@ -2253,7 +2253,7 @@ packages: '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) - clsx: 2.0.0 + clsx: 2.1.0 core-js: 3.33.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2392,7 +2392,7 @@ packages: '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@mdx-js/react': 3.0.0(@types/react@18.2.46)(react@18.2.0) - clsx: 2.0.0 + clsx: 2.1.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 @@ -2442,7 +2442,7 @@ packages: '@types/history': 4.7.11 '@types/react': 18.2.46 '@types/react-router-config': 5.0.10 - clsx: 2.0.0 + clsx: 2.1.0 parse-numeric-range: 1.3.0 prism-react-renderer: 2.3.1(react@18.2.0) react: 18.2.0 @@ -2485,7 +2485,7 @@ packages: '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) algoliasearch: 4.20.0 algoliasearch-helper: 3.15.0(algoliasearch@4.20.0) - clsx: 2.0.0 + clsx: 2.1.0 eta: 2.2.0 fs-extra: 11.2.0 lodash: 4.17.21 @@ -4180,8 +4180,8 @@ packages: kind-of: 6.0.3 shallow-clone: 3.0.1 - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} dev: false @@ -8277,7 +8277,7 @@ packages: react: '>=16.0.0' dependencies: '@types/prismjs': 1.26.2 - clsx: 2.0.0 + clsx: 2.1.0 react: 18.2.0 dev: false From d7ec908673fe652debc23ed1ca7dd9558251b0e2 Mon Sep 17 00:00:00 2001 From: la3rence Date: Sat, 30 Dec 2023 10:46:33 +0800 Subject: [PATCH 10/76] feat: add air quality content in qweather 3days forecast feed (#14136) * feat: add air quality content in qweather 3days report feed * chore: title enhancement * fix: resolve no needed lines * fix: add guard for api key config --- lib/v2/qweather/3days.js | 67 ++++++++++++++++++++--------- lib/v2/qweather/maintainer.js | 2 +- lib/v2/qweather/templates/3days.art | 2 + 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/lib/v2/qweather/3days.js b/lib/v2/qweather/3days.js index d3556be0a..3c3098884 100644 --- a/lib/v2/qweather/3days.js +++ b/lib/v2/qweather/3days.js @@ -2,45 +2,72 @@ const got = require('@/utils/got'); const { art } = require('@/utils/render'); const path = require('path'); const config = require('@/config').value; -const rootUrl = 'https://devapi.qweather.com/v7/weather/3d?'; + +const WEATHER_API = 'https://devapi.qweather.com/v7/weather/3d'; +const AIR_QUALITY_API = 'https://devapi.qweather.com/v7/air/5d'; +const CIRY_LOOKUP_API = 'https://geoapi.qweather.com/v2/city/lookup'; +const author = 'QWeather'; module.exports = async (ctx) => { + if (!config.hefeng.key) { + throw Error('QWeather RSS is disabled due to the lack of relevant config'); + } const id = await ctx.cache.tryGet(ctx.params.location + '_id', async () => { - const response = await got(`https://geoapi.qweather.com/v2/city/lookup?location=${ctx.params.location}&key=${config.hefeng.key}`); - const data = []; - for (const i in response.data.location) { - data.push(response.data.location[i]); - } - return data[0].id; + const response = await got(`${CIRY_LOOKUP_API}?location=${ctx.params.location}&key=${config.hefeng.key}`); + return response.data.location[0].id; }); - const requestUrl = rootUrl + 'key=' + config.hefeng.key + '&location=' + id; - const responseData = await ctx.cache.tryGet( + const weatherData = await ctx.cache.tryGet( ctx.params.location, async () => { - const response = await got(requestUrl); + const response = await got(`${WEATHER_API}?key=${config.hefeng.key}&location=${id}`); return response.data; }, config.cache.contentExpire, false ); - const data = []; - for (const i in responseData.daily) { - data.push(responseData.daily[i]); - } - const items = data.map((item) => ({ - title: `${item.fxDate}: ${item.textDay === item.textNight ? item.textDay : item.textDay + '转' + item.textNight}`, + const airQualityData = await ctx.cache.tryGet( + `qweather:air:${ctx.params.location}`, + async () => { + const airQualityResponse = await got(`${AIR_QUALITY_API}?location=${id}&key=${config.hefeng.key}`); + return airQualityResponse.data; + }, + config.cache.contentExpire, + false + ); + // merge weather data with air quality data + const combined = { + updateTime: weatherData.updateTime, + fxLink: weatherData.fxLink, + daily: weatherData.daily.map((weatherItem) => { + const dailyAirQuality = airQualityData.daily.find((airQualityItem) => airQualityItem.fxDate === weatherItem.fxDate); + if (dailyAirQuality) { + return { + ...weatherItem, + aqi: dailyAirQuality.aqi, + aqiLevel: dailyAirQuality.level, + aqiCategory: dailyAirQuality.category, + aqiPrimary: dailyAirQuality.primary, + }; + } + return weatherItem; + }), + }; + const items = combined.daily.map((item) => ({ + title: `${item.fxDate}: ${item.textDay === item.textNight ? item.textDay : item.textDay + '转' + item.textNight} ${item.tempMin}~${item.tempMax}℃`, description: art(path.join(__dirname, 'templates/3days.art'), { item, }), - pubDate: responseData.updateTime, + pubDate: combined.updateTime, guid: '位置:' + ctx.params.location + '--日期:' + item.fxDate, - link: responseData.fxLink, + link: combined.fxLink, + author, })); ctx.state.data = { title: ctx.params.location + '未来三天天气', - description: ctx.params.location + '未来三天天气情况,使用和风彩云api', + description: ctx.params.location + '未来三天天气情况,使用和风彩云 API (包括空气质量)', item: items, - link: responseData.fxLink, + link: combined.fxLink, + author, }; }; diff --git a/lib/v2/qweather/maintainer.js b/lib/v2/qweather/maintainer.js index 6739e5548..a4ae1c851 100644 --- a/lib/v2/qweather/maintainer.js +++ b/lib/v2/qweather/maintainer.js @@ -1,4 +1,4 @@ module.exports = { - '/3days/:location': ['Rein-Ou'], + '/3days/:location': ['Rein-Ou', 'la3rence'], '/now/:location': ['Rein-Ou'], }; diff --git a/lib/v2/qweather/templates/3days.art b/lib/v2/qweather/templates/3days.art index 5d97c1d92..8a217577d 100644 --- a/lib/v2/qweather/templates/3days.art +++ b/lib/v2/qweather/templates/3days.art @@ -4,6 +4,8 @@
相对湿度:{{item.humidity}}%
+空气质量指数:{{item.aqi}} ({{item.aqiCategory}}) +
大气压强:{{item.pressure}}百帕
紫外线强度:{{item.uvIndex}} From 0dba566711c674554b4a7778abaec07c5002e534 Mon Sep 17 00:00:00 2001 From: About RSS <63651465+AboutRSS@users.noreply.github.com> Date: Sat, 30 Dec 2023 14:25:04 +0800 Subject: [PATCH 11/76] docs: Update InstanceList.tsx - add an instance (#14143) add https://rsshub.rss.tips --- website/src/components/InstanceList.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/src/components/InstanceList.tsx b/website/src/components/InstanceList.tsx index e4dd388c1..2f0ec8471 100644 --- a/website/src/components/InstanceList.tsx +++ b/website/src/components/InstanceList.tsx @@ -46,6 +46,11 @@ export default function InstanceList(): JSX.Element { location: '🇺🇸', maintainer: 'limfoo', maintainerUrl: 'https://blog.limfoo.io', + }, { + url: 'https://rsshub.rss.tips', + location: '🇺🇸', + maintainer: 'AboutRSS', + maintainerUrl: 'https://github.com/AboutRSS/ALL-about-RSS', }] return ( From a01c645757e471ef4fdb0353cf3dc65fcd076148 Mon Sep 17 00:00:00 2001 From: changren-wcr <105254603+changren-wcr@users.noreply.github.com> Date: Sat, 30 Dec 2023 23:13:13 +0800 Subject: [PATCH 12/76] =?UTF-8?q?feat(route):=20=E4=B8=89=E8=81=94?= =?UTF-8?q?=E7=94=9F=E6=B4=BB=E5=91=A8=E5=88=8A=20(#14127)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): 三联生活周刊 * fix: namespace and data acquirement * fix: get article list by api * Update lib/v2/lifeweek/channel.js Co-authored-by: Tony * Update lib/v2/lifeweek/channel.js Co-authored-by: Tony * Update lib/v2/lifeweek/tag.js Co-authored-by: Tony * fix: rss url * refactor: getRssItem function * Update lib/v2/lifeweek/utils.js --------- Co-authored-by: Changren Wang --- lib/v2/lifeweek/channel.js | 25 +++++++++++++++++++++++ lib/v2/lifeweek/maintainer.js | 4 ++++ lib/v2/lifeweek/radar.js | 19 +++++++++++++++++ lib/v2/lifeweek/router.js | 4 ++++ lib/v2/lifeweek/tag.js | 24 ++++++++++++++++++++++ lib/v2/lifeweek/utils.js | 18 ++++++++++++++++ website/docs/routes/traditional-media.mdx | 22 ++++++++++++++++++++ 7 files changed, 116 insertions(+) create mode 100644 lib/v2/lifeweek/channel.js create mode 100644 lib/v2/lifeweek/maintainer.js create mode 100644 lib/v2/lifeweek/radar.js create mode 100644 lib/v2/lifeweek/router.js create mode 100644 lib/v2/lifeweek/tag.js create mode 100644 lib/v2/lifeweek/utils.js diff --git a/lib/v2/lifeweek/channel.js b/lib/v2/lifeweek/channel.js new file mode 100644 index 000000000..8ae9168e2 --- /dev/null +++ b/lib/v2/lifeweek/channel.js @@ -0,0 +1,25 @@ +const got = require('@/utils/got'); +const getRssItem = require('./utils'); + +const rootApiUrl = 'https://www.lifeweek.com.cn/api/userWebFollow/getFollowTagContentList?type=3&sort=2&tagId'; +const rootUrl = 'https://www.lifeweek.com.cn/column'; +const articleRootUrl = 'https://www.lifeweek.com.cn/article'; + +module.exports = async (ctx) => { + const channel = ctx.params.id; + const url = `${rootApiUrl}=${channel}`; + const { data } = await got(url); + const result = data.model.articleResponseList; + const items = await Promise.all( + result.map((item) => { + const articleLink = `${articleRootUrl}/${item.id}`; + return ctx.cache.tryGet(articleLink, () => getRssItem(item, articleLink)); + }) + ); + + ctx.state.data = { + title: data.model.tagName, + link: `${rootUrl}/${channel}`, + item: items, + }; +}; diff --git a/lib/v2/lifeweek/maintainer.js b/lib/v2/lifeweek/maintainer.js new file mode 100644 index 000000000..b9dca3363 --- /dev/null +++ b/lib/v2/lifeweek/maintainer.js @@ -0,0 +1,4 @@ +module.exports = { + '/channel/:channel': ['changren-wcr'], + '/tag/:tag': ['changren-wcr'], +}; diff --git a/lib/v2/lifeweek/radar.js b/lib/v2/lifeweek/radar.js new file mode 100644 index 000000000..80eeecd19 --- /dev/null +++ b/lib/v2/lifeweek/radar.js @@ -0,0 +1,19 @@ +module.exports = { + 'lifeweek.com.cn': { + _name: '三联生活周刊', + '.': [ + { + title: '栏目', + docs: 'https://docs.rsshub.app/routes/traditional-media#san-lian-sheng-huo-zhou-kan', + source: ['/column/:channel'], + target: '/lifeweek/channel/:channel', + }, + { + title: '标签', + docs: 'https://docs.rsshub.app/routes/traditional-media#san-lian-sheng-huo-zhou-kan', + source: ['/articleList/:tag'], + target: '/lifeweek/tag/:tag', + }, + ], + }, +}; diff --git a/lib/v2/lifeweek/router.js b/lib/v2/lifeweek/router.js new file mode 100644 index 000000000..556194740 --- /dev/null +++ b/lib/v2/lifeweek/router.js @@ -0,0 +1,4 @@ +module.exports = function (router) { + router.get('/channel/:id', require('./channel')); + router.get('/tag/:id', require('./tag')); +}; diff --git a/lib/v2/lifeweek/tag.js b/lib/v2/lifeweek/tag.js new file mode 100644 index 000000000..51a20bddd --- /dev/null +++ b/lib/v2/lifeweek/tag.js @@ -0,0 +1,24 @@ +const got = require('@/utils/got'); +const getRssItem = require('./utils'); +const rootApiUrl = 'https://www.lifeweek.com.cn/api/userWebFollow/getFollowTagContentList?type=4&sort=2&tagId'; +const rootUrl = 'https://www.lifeweek.com.cn/articleList'; +const articleRootUrl = 'https://www.lifeweek.com.cn/article'; + +module.exports = async (ctx) => { + const tag = ctx.params.id; + const url = `${rootApiUrl}=${tag}`; + const { data } = await got(url); + const result = data.model.articleResponseList; + const items = await Promise.all( + result.map((item) => { + const articleLink = `${articleRootUrl}/${item.id}`; + return ctx.cache.tryGet(articleLink, () => getRssItem(item, articleLink)); + }) + ); + + ctx.state.data = { + title: data.model.tagName, + link: `${rootUrl}/${tag}`, + item: items, + }; +}; diff --git a/lib/v2/lifeweek/utils.js b/lib/v2/lifeweek/utils.js new file mode 100644 index 000000000..67b29ae7b --- /dev/null +++ b/lib/v2/lifeweek/utils.js @@ -0,0 +1,18 @@ +const got = require('@/utils/got'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); +const articleApiRootUrl = 'https://www.lifeweek.com.cn/api/article'; + +async function getRssItem(item, articleLink) { + const articleApiLink = `${articleApiRootUrl}/${item.id}`; + const { data } = await got(articleApiLink); + const time = timezone(parseDate(item.pubTime), +8); + return { + title: item.title, + description: data.model.content, + link: articleLink, + pubDate: time, + }; +} + +module.exports = getRssItem; diff --git a/website/docs/routes/traditional-media.mdx b/website/docs/routes/traditional-media.mdx index ef5872940..1b685e0b8 100644 --- a/website/docs/routes/traditional-media.mdx +++ b/website/docs/routes/traditional-media.mdx @@ -1812,6 +1812,28 @@ This route adds the missing photo and Link element. (Offical RSS doesn't have Li | ---- | ---- | ---- | ---- | ---- | -------- |
+## 三联生活周刊 {#san-lian-sheng-huo-zhou-kan} + +### 栏目 {#san-lian-sheng-huo-zhou-kan-lan-mu} + +提取文章全文,获得更好的阅读体验。支持所有频道,频道名称见 [杂志栏目](https://www.lifeweek.com.cn/classify?type=2)。例如 [调查栏目](https://www.lifeweek.com.cn/column/9) URL 最后的数字为栏目 ID + + + | 调查 | 热点 | 人物 | 社会 | 经济 | 文化 | + | ---- | ---- | ---- | ---- | ---- | ---- | + | 9 | 6 | 10 | 2 | 3 | 4 | + + +### 标签 {#san-lian-sheng-huo-zhou-kan-biao-qian} + +提取文章全文,获得更好的阅读体验。支持所有标签,标签名称见 [全部标签](https://www.lifeweek.com.cn/classify?type=1)。例如 [社会调查标签](https://www.lifeweek.com.cn/articleList/122) URL 最后的数字为标签 ID + + + | 社会调查 | 社会 | 经济 | 理财 | 热点 | + | -------- | ---- | ---- | ---- | ---- | + | 122 | 21 | 73 | 74 | 123 | + + ## 厦门网 {#xia-men-wang} ### 数字媒体 {#xia-men-wang-shu-zi-mei-ti} From b13e3f640255c3f953b714ac346affbd647dfbe4 Mon Sep 17 00:00:00 2001 From: artificialUsagi <41666068+artefaritaKuniklo@users.noreply.github.com> Date: Sat, 30 Dec 2023 23:32:59 +0800 Subject: [PATCH 13/76] =?UTF-8?q?feat(route):=20add=20=E4=B8=AD=E5=9B=BD?= =?UTF-8?q?=E7=9A=84=E4=B8=AD=E5=8F=A4=20(#14139)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add 中国的中古 * Update lib/v2/medieval-china/post.js Co-authored-by: Tony * Update lib/v2/medieval-china/maintainer.js Co-authored-by: Tony * fix(route): fix desc of 中国的中古 * fix(route): fix data query of 中国的中古 * Update lib/v2/medieval-china/post.js Co-authored-by: Tony * style: auto format * fix(radar): add target --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- lib/v2/medieval-china/maintainer.js | 3 ++ lib/v2/medieval-china/post.js | 44 +++++++++++++++++++++++++++++ lib/v2/medieval-china/radar.js | 13 +++++++++ lib/v2/medieval-china/router.js | 3 ++ website/docs/routes/reading.mdx | 6 ++++ 5 files changed, 69 insertions(+) create mode 100644 lib/v2/medieval-china/maintainer.js create mode 100644 lib/v2/medieval-china/post.js create mode 100644 lib/v2/medieval-china/radar.js create mode 100644 lib/v2/medieval-china/router.js diff --git a/lib/v2/medieval-china/maintainer.js b/lib/v2/medieval-china/maintainer.js new file mode 100644 index 000000000..1b61246e8 --- /dev/null +++ b/lib/v2/medieval-china/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/': ['artefaritaKuniklo'], +}; diff --git a/lib/v2/medieval-china/post.js b/lib/v2/medieval-china/post.js new file mode 100644 index 000000000..251f28765 --- /dev/null +++ b/lib/v2/medieval-china/post.js @@ -0,0 +1,44 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const timezone = require('@/utils/timezone'); + +module.exports = async (ctx) => { + const baseUrl = 'https://medieval-china.club'; + const { data: response } = await got(baseUrl); + const $ = cheerio.load(response); + const posts = JSON.parse( + $('script:contains("window.localPosts")') + .text() + .match(/window\.localPosts = JSON\.parse\('(.*)'\);/)[1] + ) + .slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 10) + .map((item) => ({ + title: item.title, + link: `${baseUrl}${item.path}`, + pubDate: timezone(parseDate(item.date), +8), + })); + const items = await Promise.all( + posts.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: response } = await got(item.link); + const $ = cheerio.load(response); + const imgSrc = $('img').attr('data-original'); + $('img').attr('src', `${baseUrl}${imgSrc}`); + $('.head-mask').remove(); + $('div.lover-box').remove(); + item.description = $('article').first().html(); + return item; + }) + ) + ); + + ctx.state.data = { + title: '中国的中古', + link: baseUrl, + item: items, + image: 'https://medieval-china.club/images/icons/favicon-144x144.png', + description: + '世界那么大,你无法去到每一个地方,感受每一处风景;时间那么长,那些逝去的人你也终将无法与之谋面。而通过古人之文字,今人之分享,你可以领略以前风光之奇绝瑰玮,感受逝人之人情冷暖。中古就是这么一个地方,大家来自全球各地,不同时区,不同性别,不同身份,不同职业,但是大家都被中古的绚烂华章聚集在一起,哀其所哀,乐其所乐。这是一个虚拟的世界,但是我们仿佛跨越千里而来,谈一场绝世爱恋,今夕何夕!仅以此网站献给中古club的每一位成员,契阔谈宴,西园不芜!', + }; +}; diff --git a/lib/v2/medieval-china/radar.js b/lib/v2/medieval-china/radar.js new file mode 100644 index 000000000..aea6fcfce --- /dev/null +++ b/lib/v2/medieval-china/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'medieval-china.club': { + _name: '中国的中古', + '.': [ + { + title: '首页', + docs: 'https://docs.rsshub.app/routes/reading#zhong-guo-de-zhong-shou-ye', + source: '/', + target: '/medieval-china', + }, + ], + }, +}; diff --git a/lib/v2/medieval-china/router.js b/lib/v2/medieval-china/router.js new file mode 100644 index 000000000..9e0d5e7f9 --- /dev/null +++ b/lib/v2/medieval-china/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/', require('./post')); +}; diff --git a/website/docs/routes/reading.mdx b/website/docs/routes/reading.mdx index 0e3ac097b..c62257043 100644 --- a/website/docs/routes/reading.mdx +++ b/website/docs/routes/reading.mdx @@ -357,6 +357,12 @@ +## 中国的中古 {#zhong-guo-de-zhong-gu} + +### 首页 {#zhong-guo-de-zhong-gu-shou-ye} + + + ## 纵横 {#zong-heng} ### 章节 {#zong-heng-zhang-jie} From 6e244aaee87b746c46d9b328e00133ae84dea568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AC=A0=E9=99=A5=E9=9B=BB=E6=B0=97?= Date: Sun, 31 Dec 2023 00:09:54 +0800 Subject: [PATCH 14/76] feat(route): id param for shmeea (#14145) * feat(route): id param for shmeea * fix(route): fix radar docs url in shmeea/self-study * fix(route): id?=08000 && block requests to binary files && fix code style --------- --- lib/v2/shmeea/index.js | 61 ++++++++++++++++++++--------------- lib/v2/shmeea/maintainer.js | 2 +- lib/v2/shmeea/radar.js | 13 +++++--- lib/v2/shmeea/router.js | 2 +- website/docs/routes/study.mdx | 14 ++++++-- 5 files changed, 56 insertions(+), 36 deletions(-) diff --git a/lib/v2/shmeea/index.js b/lib/v2/shmeea/index.js index 14067fd34..6fc1c22f3 100644 --- a/lib/v2/shmeea/index.js +++ b/lib/v2/shmeea/index.js @@ -1,44 +1,53 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); module.exports = async (ctx) => { - const baseURL = 'http://www.shmeea.edu.cn'; - const rootUrl = baseURL + '/page/08000/index.html'; - const response = await got({ - method: 'get', - url: rootUrl, - }); + const id = ctx.params.id ?? '08000'; + const baseURL = 'https://www.shmeea.edu.cn'; + const link = `${baseURL}/page/${id}/index.html`; - const data = response.data; + const response = await got(link); + const $ = cheerio.load(response.data); - const $ = cheerio.load(data); + const title = `上海市教育考试院-${$('#main .pageh4-tit').text().trim()}`; - const list = $('#main .pageList li'); + const list = $('#main .pageList li') + .toArray() + .map((item) => { + item = $(item); + return { + title: item.find('a').attr('title') || item.find('a').text(), + link: new URL(item.find('a').attr('href'), baseURL).href, + pubDate: parseDate(item.find('.listTime').text().trim(), 'YYYY-MM-DD'), + }; + }); const items = await Promise.all( - list.map(async (i, item) => { - item = $(item); - const link = baseURL + item.find('a').attr('href'); - const description = await ctx.cache.tryGet(link, async () => { - const result = await got.get(link); + list.map((item) => + ctx.cache.tryGet(item.link, async () => { + if (!item.link.endsWith('.html') || new URL(item.link).hostname !== new URL(baseURL).hostname) { + return item; + } + const result = await got(item.link); const $ = cheerio.load(result.data); - return $('#ivs_content').html(); - }); - return { - title: item.find('a').text(), - pubDate: new Date(item.find('.listTime').text()), - link, - description, - }; - }) + const description = $('#ivs_content').html(); + const pbTimeText = $('#ivs_title .PBtime').text().trim(); + + item.description = description; + item.pubDate = pbTimeText ? timezone(parseDate(pbTimeText, 'YYYY-MM-DD HH:mm:ss'), +8) : item.pubDate; + + return item; + }) + ) ); ctx.state.data = { - title: '上海市教育考试院', - description: '消息速递', - link: baseURL, + title, + link, item: items, }; }; diff --git a/lib/v2/shmeea/maintainer.js b/lib/v2/shmeea/maintainer.js index 000328f18..091353e53 100644 --- a/lib/v2/shmeea/maintainer.js +++ b/lib/v2/shmeea/maintainer.js @@ -1,4 +1,4 @@ module.exports = { - '/': ['jialinghui'], + '/:id?': ['jialinghui', 'Misaka13514'], '/self-study': ['h2ws'], }; diff --git a/lib/v2/shmeea/radar.js b/lib/v2/shmeea/radar.js index 7f84a7b93..010c259f6 100644 --- a/lib/v2/shmeea/radar.js +++ b/lib/v2/shmeea/radar.js @@ -3,14 +3,17 @@ module.exports = { _name: '上海市教育考试院', www: [ { - title: '消息速递', - docs: 'https://docs.rsshub.app/routes/other#shang-hai-shi-jiao-yu-kao-shi-yuan', - source: ['/'], - target: '/shmeea', + title: '消息', + docs: 'https://docs.rsshub.app/routes/study#shang-hai-shi-jiao-yu-kao-shi-yuan', + source: ['/page/:id?/index.html'], + target: (params, url, document) => { + const li = document.querySelector('#main .pageList li'); + return li ? '/shmeea/:id?' : ''; + }, }, { title: '自学考试通知公告', - docs: 'https://docs.rsshub.app/routes/other#shang-hai-shi-jiao-yu-kao-shi-yuan', + docs: 'https://docs.rsshub.app/routes/study#shang-hai-shi-jiao-yu-kao-shi-yuan', source: ['/page/04000/index.html', '/'], target: '/shmeea/self-study', }, diff --git a/lib/v2/shmeea/router.js b/lib/v2/shmeea/router.js index b864ea159..2493022da 100644 --- a/lib/v2/shmeea/router.js +++ b/lib/v2/shmeea/router.js @@ -1,4 +1,4 @@ module.exports = function (router) { - router.get('/', require('./index')); router.get('/self-study', require('./self-study')); + router.get('/:id?', require('./index')); }; diff --git a/website/docs/routes/study.mdx b/website/docs/routes/study.mdx index 79dc2ebd2..587ae3e68 100644 --- a/website/docs/routes/study.mdx +++ b/website/docs/routes/study.mdx @@ -335,11 +335,19 @@ ## 上海市教育考试院 {#shang-hai-shi-jiao-yu-kao-shi-yuan} -### 消息速递 {#shang-hai-shi-jiao-yu-kao-shi-yuan-xiao-xi-su-di} +官方网址:[https://www.shmeea.edu.cn](https://www.shmeea.edu.cn) -官方网址:[http://www.shmeea.edu.cn](http://www.shmeea.edu.cn) +### 消息 {#shang-hai-shi-jiao-yu-kao-shi-yuan-xiao-xi} - + + :::tip + 例如:消息速递的网址为 `https://www.shmeea.edu.cn/page/08000/index.html`,则页面 ID 为 `08000`。 + ::: + + :::warning + 暂不支持大类分类和[院内动态](https://www.shmeea.edu.cn/page/19000/index.html) + ::: + ### 自学考试通知公告 {#shang-hai-shi-jiao-yu-kao-shi-yuan-zi-xue-kao-shi-tong-zhi-gong-gao} From 64d906fc9c66060dc49e0d0788450391b7bb594e Mon Sep 17 00:00:00 2001 From: Night Space <63776734+NightSpaceC@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:00:10 +0800 Subject: [PATCH 15/76] =?UTF-8?q?feat(route):=20=E6=B7=BB=E5=8A=A0=20dm=5F?= =?UTF-8?q?img=5Flist=20=E5=AD=97=E6=AE=B5=E9=98=B2=E6=AD=A2=E8=A2=AB=20Bi?= =?UTF-8?q?libili=20=E8=AF=86=E5=88=AB=20(#14128)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add dm_img_list parameter Signed-off-by: NightSpaceC * feat(route): readd video-all. It is still usable. * fix(route): use camelCase * feat(route): generate data of dm_img_list --------- Signed-off-by: NightSpaceC --- lib/v2/bilibili/cache.js | 12 +++--- lib/v2/bilibili/hotSearch.js | 4 +- lib/v2/bilibili/liveSearch.js | 4 +- lib/v2/bilibili/router.js | 1 + lib/v2/bilibili/utils.js | 40 +++++++++++++++++-- lib/v2/bilibili/video-all.js | 75 +++++++++++++++++++++++++++++++++++ lib/v2/bilibili/video.js | 12 ++---- 7 files changed, 126 insertions(+), 22 deletions(-) create mode 100644 lib/v2/bilibili/video-all.js diff --git a/lib/v2/bilibili/cache.js b/lib/v2/bilibili/cache.js index b4b4f0877..24d02d816 100644 --- a/lib/v2/bilibili/cache.js +++ b/lib/v2/bilibili/cache.js @@ -55,8 +55,8 @@ module.exports = { return cookie.join('; '); }); }, - getVerifyString: (ctx) => { - const key = 'bili-verify-string'; + getWbiVerifyString: (ctx) => { + const key = 'bili-wbi-verify-string'; return ctx.cache.tryGet(key, async () => { const cookie = await module.exports.getCookie(ctx); const { data: navResponse } = await got('https://api.bilibili.com/x/web-interface/nav', { @@ -97,14 +97,14 @@ module.exports = { const key = 'bili-username-from-uid-' + uid; return ctx.cache.tryGet(key, async () => { const cookie = await module.exports.getCookie(ctx); - const verifyString = await module.exports.getVerifyString(ctx); + const wbiVerifyString = await module.exports.getWbiVerifyString(ctx); // await got(`https://space.bilibili.com/${uid}/`, { // headers: { // Referer: 'https://www.bilibili.com/', // Cookie: cookie, // }, // }); - const params = utils.addVerifyInfo(`mid=${uid}&token=&platform=web&web_location=1550101`, verifyString); + const params = utils.addWbiVerifyInfo(`mid=${uid}&token=&platform=web&web_location=1550101`, wbiVerifyString); const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/wbi/acc/info?${params}`, { headers: { Referer: `https://space.bilibili.com/${uid}/`, @@ -121,14 +121,14 @@ module.exports = { let face = await ctx.cache.get(faceKey); if (!name || !face) { const cookie = await module.exports.getCookie(ctx); - const verifyString = await module.exports.getVerifyString(ctx); + const wbiVerifyString = await module.exports.getWbiVerifyString(ctx); // await got(`https://space.bilibili.com/${uid}/`, { // headers: { // Referer: `https://www.bilibili.com/`, // Cookie: cookie, // }, // }); - const params = utils.addVerifyInfo(`mid=${uid}&token=&platform=web&web_location=1550101`, verifyString); + const params = utils.addWbiVerifyInfo(`mid=${uid}&token=&platform=web&web_location=1550101`, wbiVerifyString); const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/wbi/acc/info?${params}`, { headers: { Referer: `https://space.bilibili.com/${uid}/`, diff --git a/lib/v2/bilibili/hotSearch.js b/lib/v2/bilibili/hotSearch.js index 66f51ac30..9c3bb7373 100644 --- a/lib/v2/bilibili/hotSearch.js +++ b/lib/v2/bilibili/hotSearch.js @@ -3,8 +3,8 @@ const cache = require('./cache'); const utils = require('./utils'); module.exports = async (ctx) => { - const verifyString = await cache.getVerifyString(ctx); - const params = utils.addVerifyInfo('limit=10&platform=web', verifyString); + const wbiVerifyString = await cache.getWbiVerifyString(ctx); + const params = utils.addWbiVerifyInfo('limit=10&platform=web', wbiVerifyString); const url = `https://api.bilibili.com/x/web-interface/wbi/search/square?${params}`; const response = await got({ method: 'get', diff --git a/lib/v2/bilibili/liveSearch.js b/lib/v2/bilibili/liveSearch.js index 9fec3303d..f16f88da1 100644 --- a/lib/v2/bilibili/liveSearch.js +++ b/lib/v2/bilibili/liveSearch.js @@ -17,9 +17,9 @@ module.exports = async (ctx) => { orderTitle = '人气直播'; break; } - const verifyString = await cache.getVerifyString(ctx); + const wbiVerifyString = await cache.getWbiVerifyString(ctx); let params = `__refresh__=true&_extra=&context=&page=1&page_size=42&order=${order}&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword=${urlEncodedKey}&ad_resource=&source_tag=3&gaia_vtoken=&category_id=&search_type=live&dynamic_offset=0&web_location=1430654`; - params = utils.addVerifyInfo(params, verifyString); + params = utils.addWbiVerifyInfo(params, wbiVerifyString); const response = await got({ method: 'get', diff --git a/lib/v2/bilibili/router.js b/lib/v2/bilibili/router.js index b6787da3a..578da6c29 100644 --- a/lib/v2/bilibili/router.js +++ b/lib/v2/bilibili/router.js @@ -32,6 +32,7 @@ module.exports = (router) => { router.get('/user/followers/:uid/:loginUid', require('./followers')); router.get('/user/followings/:uid/:loginUid', require('./followings')); router.get('/user/video/:uid/:disableEmbed?', require('./video')); + router.get('/user/video-all/:uid/:disableEmbed?', require('./video-all')); router.get('/video/danmaku/:bvid/:pid?', require('./danmaku')); router.get('/video/page/:bvid/:disableEmbed?', require('./page')); router.get('/video/reply/:bvid', require('./reply')); diff --git a/lib/v2/bilibili/utils.js b/lib/v2/bilibili/utils.js index ede92aa77..32b95552f 100644 --- a/lib/v2/bilibili/utils.js +++ b/lib/v2/bilibili/utils.js @@ -65,20 +65,54 @@ function hexsign(e) { return o; } -function addVerifyInfo(params, verifyString) { +function addWbiVerifyInfo(params, wbiVerifyString) { const searchParams = new URLSearchParams(params); searchParams.sort(); const verifyParam = searchParams.toString(); const wts = Math.round(Date.now() / 1000); - const w_rid = md5(`${verifyParam}&wts=${wts}${verifyString}`); + const w_rid = md5(`${verifyParam}&wts=${wts}${wbiVerifyString}`); return `${params}&w_rid=${w_rid}&wts=${wts}`; } +// https://github.com/errcw/gaussian/blob/master/lib/box-muller.js +function generateGaussianInteger(mean, std) { + const _2PI = Math.PI * 2; + const u1 = Math.random(); + const u2 = Math.random(); + + const z0 = Math.sqrt(-2.0 * Math.log(u1)) * Math.cos(_2PI * u2); + + return Math.round(z0 * std + mean); +} + +function getDmImgList() { + const x = Math.max(generateGaussianInteger(720, 20), 0); + const y = Math.max(generateGaussianInteger(480, 20), 0); + const path = [ + { + x: 3 * x + 2 * y, + y: 4 * x - 5 * y, + z: 0, + timestamp: Math.max(generateGaussianInteger(40, 5), 0), + type: 0, + }, + ]; + return JSON.stringify(path); +} + +function addDmVerifyInfo(params, dmImgList) { + const dmImgStr = Buffer.from('no webgl').toString('base64').slice(0, -2); + const dmCoverImgStr = Buffer.from('no webgl').toString('base64').slice(0, -2); + return `${params}&dm_img_list=${dmImgList}&dm_img_str=${dmImgStr}&dm_cover_img_str=${dmCoverImgStr}`; +} + module.exports = { iframe, lsid, _uuid, hexsign, - addVerifyInfo, + addWbiVerifyInfo, + getDmImgList, + addDmVerifyInfo, bvidTime: 1589990400, }; diff --git a/lib/v2/bilibili/video-all.js b/lib/v2/bilibili/video-all.js new file mode 100644 index 000000000..8baf2c4bf --- /dev/null +++ b/lib/v2/bilibili/video-all.js @@ -0,0 +1,75 @@ +const got = require('@/utils/got'); +const cache = require('./cache'); +const utils = require('./utils'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const uid = ctx.params.uid; + const disableEmbed = ctx.params.disableEmbed; + const cookie = await cache.getCookie(ctx); + const wbiVerifyString = await cache.getWbiVerifyString(ctx); + const dmImgList = utils.getDmImgList(); + const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid); + + await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, { + headers: { + Referer: `https://space.bilibili.com/${uid}/`, + Cookie: cookie, + }, + }); + const params = utils.addWbiVerifyInfo(utils.addDmVerifyInfo(`mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true`, dmImgList), wbiVerifyString); + const response = await got(`https://api.bilibili.com/x/space/wbi/arc/search?${params}`, { + headers: { + Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, + Cookie: cookie, + }, + }); + + const vlist = [...response.data.data.list.vlist]; + const pageTotal = Math.ceil(response.data.data.page.count / response.data.data.page.ps); + + const getPage = async (pageId) => { + const cookie = await cache.getCookie(ctx); + await got(`https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`, { + headers: { + Referer: `https://space.bilibili.com/${uid}/`, + Cookie: cookie, + }, + }); + const params = utils.addWbiVerifyInfo(utils.addDmVerifyInfo(`mid=${uid}&ps=30&tid=0&pn=${pageId}&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true`, dmImgList), wbiVerifyString); + return got(`https://api.bilibili.com/x/space/wbi/arc/search?${params}`, { + headers: { + Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`, + Cookie: cookie, + }, + }); + }; + + const promises = []; + + if (pageTotal > 1) { + for (let i = 2; i <= pageTotal; i++) { + promises.push(getPage(i)); + } + const rets = await Promise.all(promises); + rets.forEach((ret) => { + vlist.push(...ret.data.data.list.vlist); + }); + } + + ctx.state.data = { + title: name, + link: `https://space.bilibili.com/${uid}/video`, + description: `${name} 的 bilibili 所有视频`, + logo: face, + icon: face, + item: vlist.map((item) => ({ + title: item.title, + description: `${item.description}${!disableEmbed ? `

${utils.iframe(item.aid)}` : ''}
`, + pubDate: parseDate(item.created, 'X'), + link: item.created > utils.bvidTime && item.bvid ? `https://www.bilibili.com/video/${item.bvid}` : `https://www.bilibili.com/video/av${item.aid}`, + author: name, + comments: item.comment, + })), + }; +}; \ No newline at end of file diff --git a/lib/v2/bilibili/video.js b/lib/v2/bilibili/video.js index 4769d44a9..9d7a7edb9 100644 --- a/lib/v2/bilibili/video.js +++ b/lib/v2/bilibili/video.js @@ -7,7 +7,8 @@ module.exports = async (ctx) => { const uid = ctx.params.uid; const disableEmbed = ctx.params.disableEmbed; const cookie = await cache.getCookie(ctx); - const verifyString = await cache.getVerifyString(ctx); + const wbiVerifyString = await cache.getWbiVerifyString(ctx); + const dmImgList = utils.getDmImgList(); const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid); // await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, { @@ -16,14 +17,7 @@ module.exports = async (ctx) => { // Cookie: cookie, // }, // }); - const params = utils.addVerifyInfo( - `mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true&dm_img_list=[]&dm_img_str=${Buffer.from('no webgl').toString('base64').slice(0, -2)}&dm_cover_img_str=${Buffer.from( - 'no webgl' - ) - .toString('base64') - .slice(0, -2)}`, - verifyString - ); + const params = utils.addWbiVerifyInfo(utils.addDmVerifyInfo(`mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true`, dmImgList), wbiVerifyString); const response = await got(`https://api.bilibili.com/x/space/wbi/arc/search?${params}`, { headers: { Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, From f20bca610f37bf361da869c00e24402aeeece758 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 31 Dec 2023 16:01:43 +0000 Subject: [PATCH 16/76] style: auto format --- lib/v2/bilibili/video-all.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/v2/bilibili/video-all.js b/lib/v2/bilibili/video-all.js index 8baf2c4bf..0b0a86bc1 100644 --- a/lib/v2/bilibili/video-all.js +++ b/lib/v2/bilibili/video-all.js @@ -72,4 +72,4 @@ module.exports = async (ctx) => { comments: item.comment, })), }; -}; \ No newline at end of file +}; From 7a259bf4941a80ecfcf311e94de2d0735a040b58 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:36:21 +0800 Subject: [PATCH 17/76] =?UTF-8?q?feat(route):=20add=20=E5=9B=BD=E5=AE=B6?= =?UTF-8?q?=E6=B0=94=E5=80=99=E4=B8=AD=E5=BF=83=E6=9C=80=E6=96=B0=E7=9B=91?= =?UTF-8?q?=E6=B5=8B=20(#14151)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add 国家气候中心最新监测 * fix typo --- lib/v2/ncc-cma/cmdp.js | 81 ++++++++ lib/v2/ncc-cma/maintainer.js | 3 + lib/v2/ncc-cma/radar.js | 229 +++++++++++++++++++++++ lib/v2/ncc-cma/router.js | 3 + lib/v2/ncc-cma/templates/description.art | 9 + website/docs/routes/forecast.mdx | 71 +++++++ 6 files changed, 396 insertions(+) create mode 100644 lib/v2/ncc-cma/cmdp.js create mode 100644 lib/v2/ncc-cma/maintainer.js create mode 100644 lib/v2/ncc-cma/radar.js create mode 100644 lib/v2/ncc-cma/router.js create mode 100644 lib/v2/ncc-cma/templates/description.art diff --git a/lib/v2/ncc-cma/cmdp.js b/lib/v2/ncc-cma/cmdp.js new file mode 100644 index 000000000..9a15d9317 --- /dev/null +++ b/lib/v2/ncc-cma/cmdp.js @@ -0,0 +1,81 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); +const iconv = require('iconv-lite'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 50; + + const ids = id?.split(/\//) ?? []; + const titles = []; + + const rootUrl = 'http://cmdp.ncc-cma.net'; + const currentUrl = new URL('cn/index.htm', rootUrl).href; + + const { data: response } = await got(currentUrl, { + responseType: 'buffer', + }); + + const $ = cheerio.load(iconv.decode(response, 'gbk')); + + const author = '国家气候中心'; + + const items = $('ul.img-con-new-con li img[id]') + .toArray() + .filter((item) => ids.length === 0 || ids.includes($(item).prop('id'))) + .slice(0, limit) + .map((item) => { + item = $(item); + + const id = item.prop('id'); + const title = $(`li[data-id="${id}"]`).text() || undefined; + const src = new URL(item.prop('src'), currentUrl).href; + const date = + src + .match(/_(\d{4})(\d{2})(\d{2})_/) + ?.slice(1, 4) + .join('-') ?? new Date().toISOString().slice(0, 10); + + if (ids.length !== 0 && title) { + titles.push(title); + } + + return { + title: `${title} ${date}`, + link: currentUrl, + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src, + alt: `${title} ${date}`, + }, + }), + author, + category: [title], + guid: `ncc-cma#${id}#${date}`, + pubDate: parseDate(date), + enclosure_url: src, + enclosure_type: `image/${src.split(/\./).pop()}`, + }; + }); + + const subtitle = $('h1').last().text(); + const image = $('img.logo').prop('src'); + const icon = new URL('favicon.ico', rootUrl).href; + + ctx.state.data = { + item: items, + title: `${author} - ${subtitle}${titles.length === 0 ? '' : ` - ${titles.join('|')}`}`, + link: currentUrl, + description: $('title').text(), + language: 'zh', + image, + icon, + logo: icon, + subtitle, + author, + allowEmpty: true, + }; +}; diff --git a/lib/v2/ncc-cma/maintainer.js b/lib/v2/ncc-cma/maintainer.js new file mode 100644 index 000000000..f3aa9916c --- /dev/null +++ b/lib/v2/ncc-cma/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/cmdp/image/:id?': ['nczitzk'], +}; diff --git a/lib/v2/ncc-cma/radar.js b/lib/v2/ncc-cma/radar.js new file mode 100644 index 000000000..583e0e9d4 --- /dev/null +++ b/lib/v2/ncc-cma/radar.js @@ -0,0 +1,229 @@ +module.exports = { + 'ncc-cma.net': { + _name: '国家气候中心', + cmdp: [ + { + title: '中国气温 - 日平均气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/RPJQWQYZ', + }, + { + title: '中国气温 - 近5天平均气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ5TPJQWJP', + }, + { + title: '中国气温 - 近10天平均气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ10TQWJP', + }, + { + title: '中国气温 - 近20天平均气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ20TQWJP', + }, + { + title: '中国气温 - 近30天平均气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ30TQWJP', + }, + { + title: '中国气温 - 本月以来气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BYYLQWJP', + }, + { + title: '中国气温 - 本季以来气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BJYLQWJP', + }, + { + title: '中国气温 - 本年以来气温距平', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BNYLQWJP', + }, + { + title: '中国降水 - 日降水量分布', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/QGRJSLFBT0808S', + }, + { + title: '中国降水 - 近5天降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ5TJSLFBT', + }, + { + title: '中国降水 - 近10天降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ10TJSL', + }, + { + title: '中国降水 - 近20天降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ20TJSL', + }, + { + title: '中国降水 - 近30天降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ30TJSL', + }, + { + title: '中国降水 - 本月以来降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BYYLJSL', + }, + { + title: '中国降水 - 本季以来降水量', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BJYLJSL', + }, + { + title: '中国降水 - 近10天降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ10TJSLJP', + }, + { + title: '中国降水 - 近20天降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ20TJSLJP', + }, + { + title: '中国降水 - 近30天降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/ZJ30TJSLJP', + }, + { + title: '中国降水 - 本月以来降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BYYLJSLJPZYQHZ', + }, + { + title: '中国降水 - 本季以来降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BJYLJSLJPZJQHZ', + }, + { + title: '中国降水 - 本年以来降水量距平百分率', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/BNYLJSLJP', + }, + { + title: '全球气温 - 气温距平(最近10天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmeana10_', + }, + { + title: '全球气温 - 气温距平(最近20天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmeana20_', + }, + { + title: '全球气温 - 气温距平(最近30天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmeana30_', + }, + { + title: '全球气温 - 气温距平(最近90天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmeana90_', + }, + { + title: '全球气温 - 最低气温距平(最近30天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmina30_', + }, + { + title: '全球气温 - 最低气温距平(最近90天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmina90_', + }, + { + title: '全球气温 - 最高气温距平(最近30天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmaxa30_', + }, + { + title: '全球气温 - 最高气温距平(最近90天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbtmaxa90_', + }, + { + title: '全球降水 - 降水量(最近10天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbrain10_', + }, + { + title: '全球降水 - 降水量(最近20天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbrain20_', + }, + { + title: '全球降水 - 降水量(最近30天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbrain30_', + }, + { + title: '全球降水 - 降水量(最近90天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbrain90_', + }, + { + title: '全球降水 - 降水距平百分率(最近10天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbraina10_', + }, + { + title: '全球降水 - 降水距平百分率(最近20天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbraina20_', + }, + { + title: '全球降水 - 降水距平百分率(最近30天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbraina30_', + }, + { + title: '全球降水 - 降水距平百分率(最近90天)', + docs: 'https://docs.rsshub.app/routes/forecast#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce', + source: ['/cn/index.htm'], + target: '/ncc-cma/cmdp/image/glbraina90_', + }, + ], + }, +}; diff --git a/lib/v2/ncc-cma/router.js b/lib/v2/ncc-cma/router.js new file mode 100644 index 000000000..d2be06c8b --- /dev/null +++ b/lib/v2/ncc-cma/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/cmdp/image/:id*', require('./cmdp')); +}; diff --git a/lib/v2/ncc-cma/templates/description.art b/lib/v2/ncc-cma/templates/description.art new file mode 100644 index 000000000..baa091693 --- /dev/null +++ b/lib/v2/ncc-cma/templates/description.art @@ -0,0 +1,9 @@ +{{ if image?.src }} +
+ {{ image.alt }} +
+{{ /if }} \ No newline at end of file diff --git a/website/docs/routes/forecast.mdx b/website/docs/routes/forecast.mdx index bb8faf736..2f17b104e 100644 --- a/website/docs/routes/forecast.mdx +++ b/website/docs/routes/forecast.mdx @@ -68,6 +68,77 @@ +## 国家气候中心 {#guo-jia-qi-hou-zhong-xin} + +### 最新监测 {#guo-jia-qi-hou-zhong-xin-zui-xin-jian-ce} + + + :::tip + 若订阅全部最新监测信息,此时路由为 [`/ncc-cma/cmdp/image`](https://rsshub.app/ncc-cma/cmdp/image)。 + + 若订阅中国气温 **日平均气温距平** 的最新监测信息,此时路由为 [`/ncc-cma/cmdp/image/RPJQWQYZ`](https://rsshub.app/ncc-cma/cmdp/image/RPJQWQYZ)。 + + 若订阅全球降水 **降水量(最近 10 天)** / **降水量(最近 10 天)** / **降水量(最近 10 天)** 的最新监测信息,此时路由为 [`/ncc-cma/cmdp/image/glbrain10_/glbrain20_/glbrain30_`](https://rsshub.app/ncc-cma/cmdp/image/glbrain10_/glbrain20_/glbrain30_)。 + ::: + + #### [中国气温](http://cmdp.ncc-cma.net/cn/index.htm) + + | 分类 | ID | + | -------------------- | ---------- | + | 日平均气温距平 | RPJQWQYZ | + | 近 5 天平均气温距平 | ZJ5TPJQWJP | + | 近 10 天平均气温距平 | ZJ10TQWJP | + | 近 20 天平均气温距平 | ZJ20TQWJP | + | 近 30 天平均气温距平 | ZJ30TQWJP | + | 本月以来气温距平 | BYYLQWJP | + | 本季以来气温距平 | BJYLQWJP | + | 本年以来气温距平 | BNYLQWJP | + + #### [中国降水](http://cmdp.ncc-cma.net/cn/index.htm) + + | 分类 | ID | + | ------------------------ | -------------- | + | 日降水量分布 | QGRJSLFBT0808S | + | 近 5 天降水量 | ZJ5TJSLFBT | + | 近 10 天降水量 | ZJ10TJSL | + | 近 20 天降水量 | ZJ20TJSL | + | 近 30 天降水量 | ZJ30TJSL | + | 本月以来降水量 | BYYLJSL | + | 本季以来降水量 | BJYLJSL | + | 近 10 天降水量距平百分率 | ZJ10TJSLJP | + | 近 20 天降水量距平百分率 | ZJ20TJSLJP | + | 近 30 天降水量距平百分率 | ZJ30TJSLJP | + | 本月以来降水量距平百分率 | BYYLJSLJPZYQHZ | + | 本季以来降水量距平百分率 | BJYLJSLJPZJQHZ | + | 本年以来降水量距平百分率 | BNYLJSLJP | + + #### [全球气温](http://cmdp.ncc-cma.net/cn/index.htm) + + | 分类 | ID | + | -------------------------- | ------------- | + | 气温距平(最近 10 天) | glbtmeana10\_ | + | 气温距平(最近 20 天) | glbtmeana20\_ | + | 气温距平(最近 30 天) | glbtmeana30\_ | + | 气温距平(最近 90 天) | glbtmeana90\_ | + | 最低气温距平(最近 30 天) | glbtmina30\_ | + | 最低气温距平(最近 90 天) | glbtmina90\_ | + | 最高气温距平(最近 30 天) | glbtmaxa30\_ | + | 最高气温距平(最近 90 天) | glbtmaxa90\_ | + + #### [全球降水](http://cmdp.ncc-cma.net/cn/index.htm) + + | 分类 | ID | + | ---------------------------- | ------------ | + | 降水量(最近 10 天) | glbrain10\_ | + | 降水量(最近 20 天) | glbrain20\_ | + | 降水量(最近 30 天) | glbrain30\_ | + | 降水量(最近 90 天) | glbrain90\_ | + | 降水距平百分率(最近 10 天) | glbraina10\_ | + | 降水距平百分率(最近 20 天) | glbraina20\_ | + | 降水距平百分率(最近 30 天) | glbraina30\_ | + | 降水距平百分率(最近 90 天) | glbraina90\_ | + + ## 国家突发事件预警信息发布网 {#guo-jia-tu-fa-shi-jian-yu-jing-xin-xi-fa-bu-wang} ### 当前生效预警 {#guo-jia-tu-fa-shi-jian-yu-jing-xin-xi-fa-bu-wang-dang-qian-sheng-xiao-yu-jing} From 81282775a10f56fd4e775034a499a715c7252665 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Mon, 1 Jan 2024 08:09:36 +0800 Subject: [PATCH 18/76] =?UTF-8?q?feat(route):=20add=20=E4=B8=8A=E6=B5=B7?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E5=B7=A5=E4=B8=9A=E5=A4=A7=E5=AD=A6=E4=BD=93?= =?UTF-8?q?=E8=82=B2=E9=83=A8=20(#14149)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add 上海第二工业大学体育部 * fix docs * fix: block requests to binary files --- lib/v2/sspu/maintainer.js | 1 + lib/v2/sspu/pe.js | 65 ++++++++++++++++++++++++++++++ lib/v2/sspu/radar.js | 8 ++++ lib/v2/sspu/router.js | 1 + website/docs/routes/university.mdx | 48 ++++++++++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 lib/v2/sspu/pe.js diff --git a/lib/v2/sspu/maintainer.js b/lib/v2/sspu/maintainer.js index 7ddb6347a..81b227d6e 100644 --- a/lib/v2/sspu/maintainer.js +++ b/lib/v2/sspu/maintainer.js @@ -1,3 +1,4 @@ module.exports = { '/jwc/:listId': ['TonyRL'], + '/pe/:id?': ['nczitzk'], }; diff --git a/lib/v2/sspu/pe.js b/lib/v2/sspu/pe.js new file mode 100644 index 000000000..143e6179b --- /dev/null +++ b/lib/v2/sspu/pe.js @@ -0,0 +1,65 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { id = '342' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 30; + + const rootUrl = 'https://pe2016.sspu.edu.cn'; + const currentUrl = new URL(`${id}/list.htm`, rootUrl).href; + + const { data: response } = await got(currentUrl); + + const $ = cheerio.load(response); + + let items = $('table.wp_article_list_table a[title]') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + + return { + title: item.text(), + link: new URL(item.prop('href'), rootUrl).href, + pubDate: parseDate(item.prev().text()), + }; + }); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + if (item.link.endsWith('htm')) { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + const info = content('div.time').text(); + + item.title = content('div.title').text(); + item.description = content('div.wp_articlecontent').html(); + item.author = info.match(/来源:(.*?)\s/)?.[1] ?? undefined; + item.pubDate = info.match(/发布时间:(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s/)?.[1] ?? undefined; + } + + return item; + }) + ) + ); + + const author = '上海第二工业大学'; + const subtitle = $('title').text(); + const icon = new URL($('link[rel="shortcut icon"]').prop('href'), rootUrl).href; + + ctx.state.data = { + item: items, + title: `${author} - ${subtitle}`, + link: currentUrl, + description: $('div.tyb_headtitle1').text(), + language: $('html').prop('lang'), + icon, + logo: icon, + subtitle, + author, + }; +}; diff --git a/lib/v2/sspu/radar.js b/lib/v2/sspu/radar.js index b0c3b7664..36fb4a379 100644 --- a/lib/v2/sspu/radar.js +++ b/lib/v2/sspu/radar.js @@ -9,5 +9,13 @@ module.exports = { target: '/sspu/jwc/:listId', }, ], + pe2016: [ + { + title: '体育部', + docs: 'https://docs.rsshub.app/university#shang-hai-di-er-gong-ye-da-xue-ti-yu-bu', + source: ['/:id/list.htm'], + target: '/sspu/pe/:id', + }, + ], }, }; diff --git a/lib/v2/sspu/router.js b/lib/v2/sspu/router.js index fa4184a46..4309b4dcb 100644 --- a/lib/v2/sspu/router.js +++ b/lib/v2/sspu/router.js @@ -1,3 +1,4 @@ module.exports = (router) => { router.get('/jwc/:listId', require('./jwc')); + router.get('/pe/:id?', require('./pe')); }; diff --git a/website/docs/routes/university.mdx b/website/docs/routes/university.mdx index cf1928b10..7c45c70ed 100644 --- a/website/docs/routes/university.mdx +++ b/website/docs/routes/university.mdx @@ -2345,6 +2345,54 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE\_TL | 897 | 898 | +### 体育部 {#shang-hai-di-er-gong-ye-da-xue-ti-yu-bu} + + + | 通知公告 | 体育新闻 | 场馆管理 | 相关下载 | + | -------- | -------- | -------- | -------- | + | 342 | 343 | 324 | 325 | + +
+ 更多栏目 + + #### [部门概况](https://pe2016.sspu.edu.cn/318/list.htm) + + | [部门简介](https://pe2016.sspu.edu.cn/327/list.htm) | [师资介绍](https://pe2016.sspu.edu.cn/328/list.htm) | [机构设置](https://pe2016.sspu.edu.cn/329/list.htm) | [团队建设](https://pe2016.sspu.edu.cn/330/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | + | 327 | 328 | 329 | 330 | + + #### [教育教学](https://pe2016.sspu.edu.cn/319/list.htm) + + | [课程介绍](https://pe2016.sspu.edu.cn/331/list.htm) | [教学管理](https://pe2016.sspu.edu.cn/332/list.htm) | [教学成果](https://pe2016.sspu.edu.cn/333/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | + | 331 | 332 | 333 | + + #### [学科研究](https://pe2016.sspu.edu.cn/320/list.htm) + + | [学术交流](https://pe2016.sspu.edu.cn/334/list.htm) | [科研工作](https://pe2016.sspu.edu.cn/335/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | + | 334 | 335 | + + #### [运动竞赛](https://pe2016.sspu.edu.cn/321/list.htm) + + | [竞赛管理](https://pe2016.sspu.edu.cn/336/list.htm) | [竞赛成绩](https://pe2016.sspu.edu.cn/337/list.htm) | [特色项目](https://pe2016.sspu.edu.cn/338/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | + | 336 | 337 | 338 | + + #### [群体活动](https://pe2016.sspu.edu.cn/322/list.htm) + + | [阳光体育](https://pe2016.sspu.edu.cn/345/list.htm) | [体育社团](https://pe2016.sspu.edu.cn/346/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | + | 345 | 346 | + + #### [党群工作](https://pe2016.sspu.edu.cn/323/list.htm) + + | [党务公开](https://pe2016.sspu.edu.cn/339/list.htm) | [精神文明](https://pe2016.sspu.edu.cn/340/list.htm) | [教工之家](https://pe2016.sspu.edu.cn/341/list.htm) | + | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | + | 339 | 340 | 341 | +
+
+ ## 上海电力大学 {#shang-hai-dian-li-da-xue} ### 新闻网与学院通知 {#shang-hai-dian-li-da-xue-xin-wen-wang-yu-xue-yuan-tong-zhi} From 66844b055e686814635ab67b8aee4c0b35550acd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Summer=E2=9B=B1?= <57806936+honue@users.noreply.github.com> Date: Mon, 1 Jan 2024 22:36:49 +0800 Subject: [PATCH 19/76] fix(route): douban recommended two-digit month (#14153) --- lib/v2/douban/other/recommended.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/v2/douban/other/recommended.js b/lib/v2/douban/other/recommended.js index 7d0397de3..e8ef689ac 100644 --- a/lib/v2/douban/other/recommended.js +++ b/lib/v2/douban/other/recommended.js @@ -18,7 +18,9 @@ module.exports = async (ctx) => { const date = new Date(); const year = date.getFullYear(); - const mon = date.getMonth() + 1; + const month = date.getMonth() + 1; + const mon = month < 10 ? '0' + month : month.toString(); + let items = response.data.data[0].items; const subjectCollectionId = items.find((item) => item.title.startsWith(`${year}年${mon}月`)).id; From 85879388c5895b52f6d03bd844504ae9a7a28b21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 01:45:37 +0000 Subject: [PATCH 20/76] chore(deps): bump @tonyrl/rand-user-agent from 2.0.43 to 2.0.44 (#14156) * chore(deps): bump @tonyrl/rand-user-agent from 2.0.43 to 2.0.44 Bumps [@tonyrl/rand-user-agent](https://github.com/TonyRL/rand-user-agent) from 2.0.43 to 2.0.44. - [Release notes](https://github.com/TonyRL/rand-user-agent/releases) - [Commits](https://github.com/TonyRL/rand-user-agent/compare/v2.0.43...v2.0.44) --- updated-dependencies: - dependency-name: "@tonyrl/rand-user-agent" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 749fd8c35..9a73f79cb 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@notionhq/client": "2.2.14", "@postlight/parser": "2.2.3", "@sentry/node": "7.91.0", - "@tonyrl/rand-user-agent": "2.0.43", + "@tonyrl/rand-user-agent": "2.0.44", "aes-js": "3.1.2", "art-template": "4.13.2", "bbcodejs": "0.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6afe13fca..5899fd31b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: 7.91.0 version: 7.91.0 '@tonyrl/rand-user-agent': - specifier: 2.0.43 - version: 2.0.43 + specifier: 2.0.44 + version: 2.0.44 aes-js: specifier: 3.1.2 version: 3.1.2 @@ -1357,8 +1357,8 @@ packages: defer-to-connect: 2.0.1 dev: false - /@tonyrl/rand-user-agent@2.0.43: - resolution: {integrity: sha512-WSRY50iLJnaDSmOeHRgFHXuZrVjUZAkC0lYnGSe2OVJFtzFzAwoZcUEUCrqlOAKNWg0AjNvxD/kxvWFUYGBpZg==} + /@tonyrl/rand-user-agent@2.0.44: + resolution: {integrity: sha512-m+186oR7dSKjbOcQYW7twY/uLrstr4zi69FI0bqOjiyoKPuRkXgI5VWQss2VNACKn18trI0qtqbO+6B+UJqbMQ==} engines: {node: '>=14.16'} dev: false From 8998f70f8af240599f987498ce57901fbae302fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 01:46:05 +0000 Subject: [PATCH 21/76] chore(deps): bump chrono-node from 2.7.3 to 2.7.4 (#14155) * chore(deps): bump chrono-node from 2.7.3 to 2.7.4 Bumps [chrono-node](https://github.com/wanasit/chrono) from 2.7.3 to 2.7.4. - [Release notes](https://github.com/wanasit/chrono/releases) - [Commits](https://github.com/wanasit/chrono/compare/v2.7.3...v2.7.4) --- updated-dependencies: - dependency-name: chrono-node dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9a73f79cb..a11d19bb1 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "art-template": "4.13.2", "bbcodejs": "0.0.4", "cheerio": "1.0.0-rc.12", - "chrono-node": "2.7.3", + "chrono-node": "2.7.4", "city-timezones": "1.2.1", "crypto-js": "4.2.0", "currency-symbol-map": "5.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5899fd31b..72e0813ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ dependencies: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 chrono-node: - specifier: 2.7.3 - version: 2.7.3 + specifier: 2.7.4 + version: 2.7.4 city-timezones: specifier: 1.2.1 version: 1.2.1 @@ -2553,8 +2553,8 @@ packages: urlpattern-polyfill: 9.0.0 dev: false - /chrono-node@2.7.3: - resolution: {integrity: sha512-M/CusGocGJaubS8OFPEzmSa6IT/MJo2LaVqFyUVaLMo+UWwqyahKHsDe9FQBzwaytVGwR/bwZ5JhnAcu894Owg==} + /chrono-node@2.7.4: + resolution: {integrity: sha512-gk2xUWroQftZW3Z9mDqD3/HZW1d7fxSf0S0rNxOCfY+uUQP1FuuEcb5ulFcsEWSOQvzl02dqTeY1RK+zmc0WOQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dayjs: 1.11.8 From c058d6a00cfe33e8f87aaa4ef52193ef6e42bf96 Mon Sep 17 00:00:00 2001 From: Tony Date: Tue, 2 Jan 2024 10:55:39 +0000 Subject: [PATCH 22/76] feat(route): add OTOBANANA (#14160) * feat(route): add OTOBANANA * fix: live guid --- lib/v2/otobanana/cast.js | 29 ++++++++++ lib/v2/otobanana/livestream.js | 29 ++++++++++ lib/v2/otobanana/maintainer.js | 5 ++ lib/v2/otobanana/radar.js | 25 ++++++++ lib/v2/otobanana/router.js | 5 ++ lib/v2/otobanana/templates/description.art | 11 ++++ lib/v2/otobanana/timeline.js | 29 ++++++++++ lib/v2/otobanana/utils.js | 67 ++++++++++++++++++++++ website/docs/routes/multimedia.mdx | 14 +++++ 9 files changed, 214 insertions(+) create mode 100644 lib/v2/otobanana/cast.js create mode 100644 lib/v2/otobanana/livestream.js create mode 100644 lib/v2/otobanana/maintainer.js create mode 100644 lib/v2/otobanana/radar.js create mode 100644 lib/v2/otobanana/router.js create mode 100644 lib/v2/otobanana/templates/description.art create mode 100644 lib/v2/otobanana/timeline.js create mode 100644 lib/v2/otobanana/utils.js diff --git a/lib/v2/otobanana/cast.js b/lib/v2/otobanana/cast.js new file mode 100644 index 000000000..bb45141a3 --- /dev/null +++ b/lib/v2/otobanana/cast.js @@ -0,0 +1,29 @@ +const got = require('@/utils/got'); +const { apiBase, baseUrl, getUserInfo, renderCast } = require('./utils'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const userInfo = await getUserInfo(id, ctx.cache.tryGet); + const { data: castData } = await got(`${apiBase}/users/${id}/casts/`); + + const casts = castData.results.map((item) => renderCast(item)); + + ctx.state.data = { + title: `${userInfo.name} (@${userInfo.username}) - 音声投稿 | OTOBANANA`, + description: userInfo.bio.replace(/\n/g, ' '), + link: `${baseUrl}/user/${id}`, + image: userInfo.avatar_url, + icon: userInfo.avatar_url, + logo: userInfo.avatar_url, + language: 'ja', + author: userInfo.name, + itunes_author: userInfo.name, + item: casts, + }; + + ctx.state.json = { + userInfo, + castData, + }; +}; diff --git a/lib/v2/otobanana/livestream.js b/lib/v2/otobanana/livestream.js new file mode 100644 index 000000000..e8f029e48 --- /dev/null +++ b/lib/v2/otobanana/livestream.js @@ -0,0 +1,29 @@ +const got = require('@/utils/got'); +const { apiBase, baseUrl, getUserInfo, renderLive } = require('./utils'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const userInfo = await getUserInfo(id, ctx.cache.tryGet); + const { data: liveData } = await got(`${apiBase}/users/${id}/livestreams/`); + + const casts = liveData.results.map((item) => renderLive(item)); + + ctx.state.data = { + title: `${userInfo.name} (@${userInfo.username}) - ライブ配信 | OTOBANANA`, + description: userInfo.bio.replace(/\n/g, ' '), + link: `${baseUrl}/user/${id}`, + image: userInfo.avatar_url, + icon: userInfo.avatar_url, + logo: userInfo.avatar_url, + language: 'ja', + author: userInfo.name, + itunes_author: userInfo.name, + item: casts, + }; + + ctx.state.json = { + userInfo, + liveData, + }; +}; diff --git a/lib/v2/otobanana/maintainer.js b/lib/v2/otobanana/maintainer.js new file mode 100644 index 000000000..1db1a6d2f --- /dev/null +++ b/lib/v2/otobanana/maintainer.js @@ -0,0 +1,5 @@ +module.exports = { + '/user/:id': ['TonyRL'], + '/user/:id/cast': ['TonyRL'], + '/user/:id/livestream': ['TonyRL'], +}; diff --git a/lib/v2/otobanana/radar.js b/lib/v2/otobanana/radar.js new file mode 100644 index 000000000..3927bb424 --- /dev/null +++ b/lib/v2/otobanana/radar.js @@ -0,0 +1,25 @@ +module.exports = { + 'otobanana.com': { + _name: 'OTOBANANA', + '.': [ + { + title: 'Timeline タイムライン', + docs: 'https://docs.rsshub.app/multimedia#otobanana', + source: ['/user/:id'], + target: '/otobanana/user/:id', + }, + { + title: 'Cast 音声投稿', + docs: 'https://docs.rsshub.app/multimedia#otobanana', + source: ['/user/:id/cast', '/user/:id'], + target: '/otobanana/user/:id/cast', + }, + { + title: 'Livestream ライブ配信', + docs: 'https://docs.rsshub.app/multimedia#otobanana', + source: ['/user/:id/livestream', '/user/:id'], + target: '/otobanana/user/:id/livestream', + }, + ], + }, +}; diff --git a/lib/v2/otobanana/router.js b/lib/v2/otobanana/router.js new file mode 100644 index 000000000..1d3ec6d66 --- /dev/null +++ b/lib/v2/otobanana/router.js @@ -0,0 +1,5 @@ +module.exports = (router) => { + router.get('/user/:id', require('./timeline')); + router.get('/user/:id/cast', require('./cast')); + router.get('/user/:id/livestream', require('./livestream')); +}; diff --git a/lib/v2/otobanana/templates/description.art b/lib/v2/otobanana/templates/description.art new file mode 100644 index 000000000..72a6921cf --- /dev/null +++ b/lib/v2/otobanana/templates/description.art @@ -0,0 +1,11 @@ +{{ if cast }} + +
+ +
+💬 {{ cast.comment_count }} ❤️ {{ cast.like_count }} 🍌 {{ cast.gift_banana }} {{ cast.play_count }} 再生 +
+{{@ cast.text.replace(/\n/g, '
') }} +{{ /if }} diff --git a/lib/v2/otobanana/timeline.js b/lib/v2/otobanana/timeline.js new file mode 100644 index 000000000..93984b608 --- /dev/null +++ b/lib/v2/otobanana/timeline.js @@ -0,0 +1,29 @@ +const got = require('@/utils/got'); +const { apiBase, baseUrl, getUserInfo, renderPost } = require('./utils'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const userInfo = await getUserInfo(id, ctx.cache.tryGet); + const { data: postData } = await got(`${apiBase}/users/${id}/posts/`); + + const posts = postData.results.map((item) => renderPost(item)); + + ctx.state.data = { + title: `${userInfo.name} (@${userInfo.username}) - タイムライン | OTOBANANA`, + description: userInfo.bio.replace(/\n/g, ' '), + link: `${baseUrl}/user/${id}`, + image: userInfo.avatar_url, + icon: userInfo.avatar_url, + logo: userInfo.avatar_url, + language: 'ja', + author: userInfo.name, + itunes_author: userInfo.name, + item: posts, + }; + + ctx.state.json = { + userInfo, + postData, + }; +}; diff --git a/lib/v2/otobanana/utils.js b/lib/v2/otobanana/utils.js new file mode 100644 index 000000000..61b4d853c --- /dev/null +++ b/lib/v2/otobanana/utils.js @@ -0,0 +1,67 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const { join } = require('path'); + +const domain = 'otobanana.com'; +const apiBase = `https://api.${domain}`; +const baseUrl = `https://${domain}`; + +const getUserInfo = (id, tryGet) => + tryGet(`otobanana:user:${id}`, async () => { + const { data } = await got(`${apiBase}/users/${id}/`); + return data; + }); + +const renderCast = (cast) => ({ + title: cast.title, + description: art(join(__dirname, 'templates/description.art'), { cast }), + pubDate: parseDate(cast.created_at), + link: `https://otobanana.com/cast/${cast.id}`, + author: `${cast.user.name} (@${cast.user.username})`, + itunes_item_image: cast.thumbnail_url, + itunes_duration: cast.duration_time, + enclosure_url: cast.audio_url, + enclosure_type: 'audio/x-m4a', + upvotes: cast.like_count, + comments: cast.comment_count, +}); + +const renderLive = (live) => ({ + title: live.title, + description: live.is_open ? '配信中のライブ' : '終了しました', + pubDate: parseDate(live.created_at), + link: live.room_url, + guid: `${live.room_url}#${live.id}`, + author: `${live.user.name} (@${live.user.username})`, + upvotes: live.like_count, + comments: live.comment_count, +}); + +const renderPost = ({ id, type_label: type, cast, /** livestream */ message /** , event */ }) => { + switch (type) { + case 'cast': + return renderCast(cast); + case 'message': + return { + title: message.text.split('\n')[0], + description: message.text.replace(/\n/g, '
'), + pubDate: parseDate(message.created_at), + link: `https://otobanana.com/${type}/${id}`, + author: `${message.user.name} (@${message.user.username})`, + upvotes: message.like_count, + comments: message.comment_count, + }; + default: + throw Error(`Unknown post type: ${type}`); + } +}; + +module.exports = { + apiBase, + baseUrl, + getUserInfo, + renderCast, + renderLive, + renderPost, +}; diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index f6f5b4f34..cd2e33066 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -957,6 +957,20 @@ JavDB 有多个备用域名,本路由默认使用永久域名 `https://javdb.c `day` 类型的关键词必须填写 **日期** ,按照示例写成形如 `20200730` 的格式
+## OTOBANANA {#otobanana} + +### Timeline タイムライン {#otobanana-timeline-%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%A9%E3%82%A4%E3%83%B3} + + + +### Cast 音声投稿 {#otobanana-cast-yin-sheng-tou-gao} + + + +### Livestream ライブ配信 {#otobanana-livestream-%E3%83%A9%E3%82%A4%E3%83%96-pei-xin} + + + ## PornHub {#pornhub} ### Category {#pornhub-category} From 8dcbbb50ecb5038345945e0116e3232a3e9e703e Mon Sep 17 00:00:00 2001 From: Jankin Wei Date: Tue, 2 Jan 2024 21:27:18 +0800 Subject: [PATCH 23/76] feat: utgd add premium identification (#14163) --- lib/v2/utgd/category.js | 1 + lib/v2/utgd/templates/description.art | 6 +++++- lib/v2/utgd/timeline.js | 1 + lib/v2/utgd/topic.js | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/v2/utgd/category.js b/lib/v2/utgd/category.js index 101d052b8..b3182ccaf 100644 --- a/lib/v2/utgd/category.js +++ b/lib/v2/utgd/category.js @@ -47,6 +47,7 @@ module.exports = async (ctx) => { title: item.title, link: `${rootUrl}/article/${item.id}`, description: art(path.join(__dirname, 'templates/description.art'), { + membership: item.article_for_membership, image: item.article_image, description: md.render(item.article_description), }), diff --git a/lib/v2/utgd/templates/description.art b/lib/v2/utgd/templates/description.art index 38f14bf4b..8ce3b4866 100644 --- a/lib/v2/utgd/templates/description.art +++ b/lib/v2/utgd/templates/description.art @@ -2,6 +2,10 @@
{{ /if }} +{{ if membership }} +
+UNTAG Premium +{{ /if }} {{ if description }} {{@ description }} -{{ /if }} \ No newline at end of file +{{ /if }} diff --git a/lib/v2/utgd/timeline.js b/lib/v2/utgd/timeline.js index 9646e88c2..c484cca52 100644 --- a/lib/v2/utgd/timeline.js +++ b/lib/v2/utgd/timeline.js @@ -35,6 +35,7 @@ module.exports = async (ctx) => { title: item.title, link: `${rootUrl}/article/${item.id}`, description: art(path.join(__dirname, 'templates/description.art'), { + membership: data.article_for_membership, image: item.article_image, description: md.render(data.article_description), }), diff --git a/lib/v2/utgd/topic.js b/lib/v2/utgd/topic.js index 8716cc57f..b4b9e7e3e 100644 --- a/lib/v2/utgd/topic.js +++ b/lib/v2/utgd/topic.js @@ -50,6 +50,7 @@ module.exports = async (ctx) => { title: item.title, link: `${rootUrl}/article/${item.id}`, description: art(path.join(__dirname, 'templates/description.art'), { + membership: item.article_for_membership, image: item.article_image, description: md.render(detailResponse.data.article_description), }), From 78c49772759b31a6fa1aeb400c8f83ae30f1858f Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Tue, 2 Jan 2024 22:38:46 +0800 Subject: [PATCH 24/76] =?UTF-8?q?fix(route):=20=E7=95=8C=E9=9D=A2=E6=96=B0?= =?UTF-8?q?=E9=97=BB=E9=87=8D=E5=A4=8D=E6=96=87=E7=AB=A0=E8=A7=86=E9=A2=91?= =?UTF-8?q?=20(#14162)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(route): 界面新闻重复文章视频 * fix: improve url sanitization --- lib/v2/jiemian/lists.js | 103 +++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 48 deletions(-) diff --git a/lib/v2/jiemian/lists.js b/lib/v2/jiemian/lists.js index a0cf7b251..c956e95ad 100644 --- a/lib/v2/jiemian/lists.js +++ b/lib/v2/jiemian/lists.js @@ -15,62 +15,69 @@ module.exports = async (ctx) => { const $ = cheerio.load(response); - let items = $('a.logStore, a[aid], div.title a, div.news-header a') + let items = $('a') .toArray() - .map((item) => { + .reduce((acc, item) => { item = $(item); - return { - title: item.text(), - link: item.prop('href'), - }; - }) - .filter((item) => item.link && !item.link.startsWith(new URL('special', rootUrl).href)); + 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)) { + acc[link] = { + title: item.text(), + link, + }; + } + return acc; + }, {}); items = await Promise.all( - items.slice(0, limit).map((item) => - ctx.cache.tryGet(item.link, async () => { - const { data: detailResponse } = await got(item.link); + Object.values(items) + .slice(0, limit) + .map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); - const content = cheerio.load(detailResponse); - const image = content('div.article-img img').first(); - const video = content('#video-player').first(); + const content = cheerio.load(detailResponse); + const image = content('div.article-img img').first(); + const video = content('#video-player').first(); - item.title = content('div.article-header h1').text(); - item.description = art(path.join(__dirname, 'templates/description.art'), { - 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() ? parseInt(content('span.opt-praise__count').text(), 10) : 0; - item.comments = content('span.opt-comment__count').text() ? parseInt(content('span.opt-comment__count').text(), 10) : 0; + item.title = content('div.article-header h1').text(); + item.description = art(path.join(__dirname, 'templates/description.art'), { + 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() ? parseInt(content('span.opt-praise__count').text(), 10) : 0; + item.comments = content('span.opt-comment__count').text() ? parseInt(content('span.opt-comment__count').text(), 10) : 0; - return item; - }) - ) + return item; + }) + ) ); const title = $('title').text(); From 3bf9dd28c1661ad3d2b2d316aa30f900bb722594 Mon Sep 17 00:00:00 2001 From: Tony Date: Tue, 2 Jan 2024 17:37:59 +0000 Subject: [PATCH 25/76] feat(route): backlinko (#14164) * feat(route): backlinko * Refactor blog.js to destructure nested properties --- lib/v2/backlinko/blog.js | 44 ++++++++++++++++++++++++++++++++++ lib/v2/backlinko/maintainer.js | 3 +++ lib/v2/backlinko/radar.js | 13 ++++++++++ lib/v2/backlinko/router.js | 3 +++ website/docs/routes/blog.mdx | 6 +++++ 5 files changed, 69 insertions(+) create mode 100644 lib/v2/backlinko/blog.js create mode 100644 lib/v2/backlinko/maintainer.js create mode 100644 lib/v2/backlinko/radar.js create mode 100644 lib/v2/backlinko/router.js diff --git a/lib/v2/backlinko/blog.js b/lib/v2/backlinko/blog.js new file mode 100644 index 000000000..6ceba525b --- /dev/null +++ b/lib/v2/backlinko/blog.js @@ -0,0 +1,44 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const baseUrl = 'https://backlinko.com'; + const { data: response, url: link } = await got(`${baseUrl}/blog`); + + const $ = cheerio.load(response); + const nextData = JSON.parse($('#__NEXT_DATA__').text()); + const { + buildId, + props: { pageProps }, + } = nextData; + + const posts = pageProps.posts.nodes.concat(pageProps.backlinkoLockedPosts.nodes).map((post) => ({ + title: post.title, + link: `${baseUrl}/${post.slug}`, + pubDate: parseDate(post.modified), + author: post.author.node.name, + apiUrl: `${baseUrl}/_next/data/${buildId}/${post.slug}.json`, + })); + + const items = await Promise.all( + posts.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data } = await got(item.apiUrl); + const post = data.pageProps.post || data.pageProps.lockedPost; + + item.description = post.content; + + return item; + }) + ) + ); + + ctx.state.data = { + title: pageProps.page.seo.title, + description: pageProps.page.seo.metaDesc, + link, + language: 'en', + item: items, + }; +}; diff --git a/lib/v2/backlinko/maintainer.js b/lib/v2/backlinko/maintainer.js new file mode 100644 index 000000000..96ec7b2a6 --- /dev/null +++ b/lib/v2/backlinko/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/blog': ['TonyRL'], +}; diff --git a/lib/v2/backlinko/radar.js b/lib/v2/backlinko/radar.js new file mode 100644 index 000000000..173c86303 --- /dev/null +++ b/lib/v2/backlinko/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'backlinko.com': { + _name: 'Backlinko', + '.': [ + { + title: 'Blog', + docs: 'https://docs.rsshub.app/routes/blog#backlinko', + source: ['/blog', '/'], + target: '/backlinko/blog', + }, + ], + }, +}; diff --git a/lib/v2/backlinko/router.js b/lib/v2/backlinko/router.js new file mode 100644 index 000000000..eadc22005 --- /dev/null +++ b/lib/v2/backlinko/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/blog', require('./blog')); +}; diff --git a/website/docs/routes/blog.mdx b/website/docs/routes/blog.mdx index 7ba996bc8..51dae7bcd 100644 --- a/website/docs/routes/blog.mdx +++ b/website/docs/routes/blog.mdx @@ -22,6 +22,12 @@ +## Backlinko {#backlinko} + +### Blog {#backlinko-blog} + + + ## Benedict Evans {#benedict-evans} ### Essays {#benedict-evans-essays} From 4889799af6130d7880e326272f8e8dc594e07cc0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 21:52:42 +0000 Subject: [PATCH 26/76] chore(deps): bump pinyin-pro from 3.18.5 to 3.18.6 in /website (#14167) Bumps [pinyin-pro](https://github.com/zh-lx/pinyin-pro) from 3.18.5 to 3.18.6. - [Release notes](https://github.com/zh-lx/pinyin-pro/releases) - [Changelog](https://github.com/zh-lx/pinyin-pro/blob/main/CHANGELOG.md) - [Commits](https://github.com/zh-lx/pinyin-pro/compare/3.18.5...3.18.6) --- updated-dependencies: - dependency-name: pinyin-pro 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> --- website/package.json | 2 +- website/pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/package.json b/website/package.json index 71691f75c..c46340a16 100644 --- a/website/package.json +++ b/website/package.json @@ -25,7 +25,7 @@ "clsx": "^2.1.0", "markdown-it": "^14.0.0", "meilisearch-docsearch": "^0.6.0", - "pinyin-pro": "3.18.5", + "pinyin-pro": "3.18.6", "prism-react-renderer": "^2.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 4b1f63acd..95f006421 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -33,8 +33,8 @@ dependencies: specifier: ^0.6.0 version: 0.6.0 pinyin-pro: - specifier: 3.18.5 - version: 3.18.5 + specifier: 3.18.6 + version: 3.18.6 prism-react-renderer: specifier: ^2.3.1 version: 2.3.1(react@18.2.0) @@ -7826,8 +7826,8 @@ packages: engines: {node: '>=8.6'} dev: false - /pinyin-pro@3.18.5: - resolution: {integrity: sha512-WNnVRkNj+SLkSLL+zUqWgs2t9RuEaCZFTNPyjwBqbgJYu6VSX5bZMP/hmKiUD0n21VJSQTBQHrW8plQQvK8b0A==} + /pinyin-pro@3.18.6: + resolution: {integrity: sha512-+1/xFQ65km8ltN4VunvOvZRYL1V/rl4yzgmLtQVlXsmO6MOQU0ieF4WNs60/lXpEVusvYYmy6oU9bZGGQWeSXg==} dev: false /pkg-dir@7.0.0: From 25f628f134e7ab5f9bcc7b47dc7fe3ea09025580 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 04:37:08 +0000 Subject: [PATCH 27/76] chore(deps-dev): bump @stylistic/eslint-plugin-js from 1.5.1 to 1.5.3 (#14165) * chore(deps-dev): bump @stylistic/eslint-plugin-js from 1.5.1 to 1.5.3 Bumps [@stylistic/eslint-plugin-js](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin-js) from 1.5.1 to 1.5.3. - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v1.5.3/packages/eslint-plugin-js) --- updated-dependencies: - dependency-name: "@stylistic/eslint-plugin-js" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a11d19bb1..aaa453749 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ }, "devDependencies": { "@microsoft/eslint-formatter-sarif": "3.0.0", - "@stylistic/eslint-plugin-js": "1.5.1", + "@stylistic/eslint-plugin-js": "1.5.3", "@types/aes-js": "3.1.4", "@types/crypto-js": "4.2.1", "@types/eslint": "8.56.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72e0813ed..b644a2c0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,8 +209,8 @@ devDependencies: specifier: 3.0.0 version: 3.0.0 '@stylistic/eslint-plugin-js': - specifier: 1.5.1 - version: 1.5.1(eslint@8.56.0) + specifier: 1.5.3 + version: 1.5.3(eslint@8.56.0) '@types/aes-js': specifier: 3.1.4 version: 3.1.4 @@ -1337,13 +1337,13 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@stylistic/eslint-plugin-js@1.5.1(eslint@8.56.0): - resolution: {integrity: sha512-iZF0rF+uOhAmOJYOJx1Yvmm3CZ1uz9n0SRd9dpBYHA3QAvfABUORh9LADWwZCigjHJkp2QbCZelGFJGwGz7Siw==} + /@stylistic/eslint-plugin-js@1.5.3(eslint@8.56.0): + resolution: {integrity: sha512-XlKnm82fD7Sw9kQ6FFigE0tobvptNBXZWsdfoKmUyK7bNxHsAHOFT8zJGY3j3MjZ0Fe7rLTu86hX/vOl0bRRdQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: '>=8.40.0' dependencies: - acorn: 8.11.2 + acorn: 8.11.3 escape-string-regexp: 4.0.0 eslint: 8.56.0 eslint-visitor-keys: 3.4.3 @@ -1932,6 +1932,12 @@ packages: hasBin: true dev: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false From a2e47b1af818a14eba771d6ffc844d1d0dcc1e66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 05:49:49 +0000 Subject: [PATCH 28/76] chore(deps-dev): bump eslint-plugin-n from 16.6.0 to 16.6.1 (#14166) * chore(deps-dev): bump eslint-plugin-n from 16.6.0 to 16.6.1 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.6.0 to 16.6.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.6.0...16.6.1) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index aaa453749..cfecd5057 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "cross-env": "7.0.3", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-n": "16.6.0", + "eslint-plugin-n": "16.6.1", "eslint-plugin-prettier": "5.1.2", "eslint-plugin-yml": "1.11.0", "fs-extra": "11.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b644a2c0c..6ea0d1454 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,8 +308,8 @@ devDependencies: specifier: 9.1.0 version: 9.1.0(eslint@8.56.0) eslint-plugin-n: - specifier: 16.6.0 - version: 16.6.0(eslint@8.56.0) + specifier: 16.6.1 + version: 16.6.1(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.2 version: 5.1.2(@types/eslint@8.56.0)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) @@ -3325,8 +3325,8 @@ packages: eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-n@16.6.0(eslint@8.56.0): - resolution: {integrity: sha512-Ag3tYFF90lYU8JdHEl9qSSpeLYbVnO+Oj7sgPUarWUacv1mPL3d5h5yG4Bv3tLe71hrcxmgTi7oByYwKXaVatw==} + /eslint-plugin-n@16.6.1(eslint@8.56.0): + resolution: {integrity: sha512-M1kE5bVQRLBMDYRZwDhWzlzbp370SRRRC1MHqq4I3L2Tatey+9/2csc5mwLDPlmhJaDvkojbrNUME5/llpRyDg==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' From 25173052f4a48e0bd7f87987ad760a40c80af47c Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Thu, 4 Jan 2024 00:33:30 +0800 Subject: [PATCH 29/76] =?UTF-8?q?fix(route):=20=E7=AC=AC=E4=B8=80=E8=B4=A2?= =?UTF-8?q?=E7=BB=8FDT=E8=B4=A2=E7=BB=8F=20(#14171)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/v2/yicai/dt.js | 107 ++++++++++++++ lib/v2/yicai/maintainer.js | 1 + lib/v2/yicai/radar.js | 164 ++++++++++++++++++++++ lib/v2/yicai/router.js | 1 + lib/v2/yicai/templates/description.art | 42 +++++- lib/v2/yicai/utils.js | 12 +- website/docs/routes/traditional-media.mdx | 46 ++++++ 7 files changed, 363 insertions(+), 10 deletions(-) create mode 100644 lib/v2/yicai/dt.js diff --git a/lib/v2/yicai/dt.js b/lib/v2/yicai/dt.js new file mode 100644 index 000000000..e7f84400b --- /dev/null +++ b/lib/v2/yicai/dt.js @@ -0,0 +1,107 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); + +const types = { + article: 2, + report: 3, + visualization: 4, +}; + +module.exports = async (ctx) => { + const { type = 'article', category = '0' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 30; + + const rootUrl = 'https://dt.yicai.com'; + const apiUrl = new URL('api/getNewsList', rootUrl).href; + const currentUrl = new URL(type, rootUrl).href; + + const { data: response } = await got(apiUrl, { + searchParams: { + page: 1, + rid: types[type], + cid: category, + pageSize: limit, + }, + }); + + let items = response.data.data.slice(0, limit).map((item) => ({ + title: item.newstitle, + link: new URL(item.url, rootUrl).href, + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src: item.originPic, + alt: item.newstitle, + }, + intro: item.newsnotes, + }), + author: item.creatername, + category: [item.channelrootname, item.channelname, item.NewsTypeName].filter((c) => c), + guid: `yicai-dt-${item.newsid}`, + pubDate: parseDate(item.utc_createdate), + updated: parseDate(item.utc_lastdate), + enclosure_url: item.originVideo, + enclosure_type: item.originVideo ? `video/${item.originVideo.split(/\./).pop()}` : undefined, + upvotes: item.newsscore ?? 0, + })); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + content('div.logintips').remove(); + + content('img').each((_, e) => { + e = content(e); + + content(e).replaceWith( + art(path.join(__dirname, 'templates/description.art'), { + image: { + src: e.prop('data-original') ?? e.prop('src'), + alt: e.prop('alt'), + width: e.prop('width'), + height: e.prop('height'), + }, + }) + ); + }); + + item.description += art(path.join(__dirname, 'templates/description.art'), { + description: content('div.txt').html(), + }); + item.author = content('div.authortime h3').text(); + item.enclosure_url = ''; + item.enclosure_type = 'video/mp4'; + + return item; + }) + ) + ); + + const { data: currentResponse } = await got(currentUrl); + + const $ = cheerio.load(currentResponse); + + const title = $('title').text(); + const image = $('div.logo a img').prop('src'); + const icon = new URL($('link[rel="shortcut icon"]').prop('href'), rootUrl).href; + + ctx.state.data = { + item: items, + title: `${$(`a[data-cid="${category}"]`).text()}${title}`, + link: currentUrl, + description: $('meta[name="keywords"]').prop('content'), + language: 'zh', + image, + icon, + logo: icon, + subtitle: $('meta[name="description"]').prop('content'), + author: title.split(/_/).pop(), + allowEmpty: true, + }; +}; diff --git a/lib/v2/yicai/maintainer.js b/lib/v2/yicai/maintainer.js index 00afadad5..49e59b905 100644 --- a/lib/v2/yicai/maintainer.js +++ b/lib/v2/yicai/maintainer.js @@ -1,6 +1,7 @@ module.exports = { '/author/:id?': ['nczitzk'], '/brief': ['sanmmm', 'nczitzk'], + '/dt/:column?/:category?': ['nczitzk'], '/feed/:id?': ['nczitzk'], '/headline': ['nczitzk'], '/latest': ['nczitzk'], diff --git a/lib/v2/yicai/radar.js b/lib/v2/yicai/radar.js index 1dc2bd777..12c434df0 100644 --- a/lib/v2/yicai/radar.js +++ b/lib/v2/yicai/radar.js @@ -51,5 +51,169 @@ module.exports = { target: '/yicai/author/:id', }, ], + dt: [ + { + title: 'DT 财经 - 可视化 - 全部', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/0', + }, + { + title: 'DT 财经 - 可视化 - 新流行', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/39', + }, + { + title: 'DT 财经 - 可视化 - 新趋势', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/40', + }, + { + title: 'DT 财经 - 可视化 - 商业黑马', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/41', + }, + { + title: 'DT 财经 - 可视化 - 新品', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/42', + }, + { + title: 'DT 财经 - 可视化 - 营销', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/43', + }, + { + title: 'DT 财经 - 可视化 - 大公司', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/44', + }, + { + title: 'DT 财经 - 可视化 - 城市生活', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/visualization'], + target: '/yicai/dt/visualization/45', + }, + { + title: 'DT 财经 - 文章 - 全部', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/0', + }, + { + title: 'DT 财经 - 文章 - 新流行', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/31', + }, + { + title: 'DT 财经 - 文章 - 新趋势', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/32', + }, + { + title: 'DT 财经 - 文章 - 商业黑马', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/33', + }, + { + title: 'DT 财经 - 文章 - 新品', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/34', + }, + { + title: 'DT 财经 - 文章 - 营销', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/35', + }, + { + title: 'DT 财经 - 文章 - 大公司', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/36', + }, + { + title: 'DT 财经 - 文章 - 城市生活', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/article'], + target: '/yicai/dt/article/38', + }, + { + title: 'DT 财经 - 报告 - 全部', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/0', + }, + { + title: 'DT 财经 - 报告 - 人群观念', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/9', + }, + { + title: 'DT 财经 - 报告 - 人群行为', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/22', + }, + { + title: 'DT 财经 - 报告 - 美妆个护', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/23', + }, + { + title: 'DT 财经 - 报告 - 3C数码', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/24', + }, + { + title: 'DT 财经 - 报告 - 营销趋势', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/25', + }, + { + title: 'DT 财经 - 报告 - 服饰鞋包', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/27', + }, + { + title: 'DT 财经 - 报告 - 互联网', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/28', + }, + { + title: 'DT 财经 - 报告 - 城市与居住', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/29', + }, + { + title: 'DT 财经 - 报告 - 消费趋势', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/30', + }, + { + title: 'DT 财经 - 报告 - 生活趋势', + docs: 'https://docs.rsshub.app/routes/traditional-media#di-yi-cai-jing-dt-cai-jing', + source: ['/report'], + target: '/yicai/dt/report/37', + }, + ], }, }; diff --git a/lib/v2/yicai/router.js b/lib/v2/yicai/router.js index eb10737d5..3dc1750de 100644 --- a/lib/v2/yicai/router.js +++ b/lib/v2/yicai/router.js @@ -1,6 +1,7 @@ module.exports = function (router) { router.get('/author/:id?', require('./author')); router.get('/brief', require('./brief')); + router.get('/dt/:column?/:category?', require('./dt')); router.get('/feed/:id?', require('./feed')); router.get('/headline', require('./headline')); router.get('/latest', require('./latest')); diff --git a/lib/v2/yicai/templates/description.art b/lib/v2/yicai/templates/description.art index 790b2de1f..83b5eb0b7 100644 --- a/lib/v2/yicai/templates/description.art +++ b/lib/v2/yicai/templates/description.art @@ -1,11 +1,39 @@ -{{ if thumb }} - +{{ if !video?.src && image?.src }} +
+ {{ image.alt }} +
{{ /if }} -{{ if video }} - + +{{ if intro }} +

{{ intro }}

{{ /if }} + +{{ if video?.src }} + +{{ /if }} + {{ if description }} -

{{ description }}

+ {{@ description }} {{ /if }} \ No newline at end of file diff --git a/lib/v2/yicai/utils.js b/lib/v2/yicai/utils.js index 6414d8cfb..749c9c834 100644 --- a/lib/v2/yicai/utils.js +++ b/lib/v2/yicai/utils.js @@ -22,9 +22,15 @@ module.exports = { pubDate: timezone(parseDate(item.CreateDate), +8), category: [item.ChannelName], description: art(path.join(__dirname, 'templates/description.art'), { - thumb: item.originPic, - video: item.VideoUrl, - description: item.NewsNotes, + image: { + src: item.originPic, + alt: item.NewsTitle, + }, + video: { + src: item.VideoUrl, + type: item.VideoUrl?.split(/\./).pop() ?? undefined, + }, + intro: item.NewsNotes, }), })); diff --git a/website/docs/routes/traditional-media.mdx b/website/docs/routes/traditional-media.mdx index 1b685e0b8..8a5709a28 100644 --- a/website/docs/routes/traditional-media.mdx +++ b/website/docs/routes/traditional-media.mdx @@ -961,6 +961,52 @@ This route adds the missing photo and Link element. (Offical RSS doesn't have Li +### DT 财经 {#di-yi-cai-jing-dt-cai-jing} + + + #### [文章](https://dt.yicai.com/article) + + | 分类 | ID | + | -------- | ---------- | + | 全部 | article/0 | + | 新流行 | article/31 | + | 新趋势 | article/32 | + | 商业黑马 | article/33 | + | 新品 | article/34 | + | 营销 | article/35 | + | 大公司 | article/36 | + | 城市生活 | article/38 | + + #### [报告](https://dt.yicai.com/report) + + | 分类 | ID | + | ---------- | --------- | + | 全部 | report/0 | + | 人群观念 | report/9 | + | 人群行为 | report/22 | + | 美妆个护 | report/23 | + | 3C 数码 | report/24 | + | 营销趋势 | report/25 | + | 服饰鞋包 | report/27 | + | 互联网 | report/28 | + | 城市与居住 | report/29 | + | 消费趋势 | report/30 | + | 生活趋势 | report/37 | + + #### [可视化](https://dt.yicai.com/visualization) + + | 分类 | ID | + | -------- | ---------------- | + | 全部 | visualization/0 | + | 新流行 | visualization/39 | + | 新趋势 | visualization/40 | + | 商业黑马 | visualization/41 | + | 新品 | visualization/42 | + | 营销 | visualization/43 | + | 大公司 | visualization/44 | + | 城市生活 | visualization/45 | + + ## 东方网 {#dong-fang-wang} ### 上海新闻 {#dong-fang-wang-shang-hai-xin-wen} From ca03dd45b02971fbeade4ad4f3b15570bb1cd1f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 22:20:39 +0000 Subject: [PATCH 30/76] chore(deps-dev): bump @types/imapflow from 1.0.16 to 1.0.17 (#14172) * chore(deps-dev): bump @types/imapflow from 1.0.16 to 1.0.17 Bumps [@types/imapflow](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/imapflow) from 1.0.16 to 1.0.17. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/imapflow) --- updated-dependencies: - dependency-name: "@types/imapflow" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cfecd5057..c40a3838e 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "@types/fs-extra": "11.0.4", "@types/git-rev-sync": "2.0.2", "@types/html-to-text": "9.0.4", - "@types/imapflow": "1.0.16", + "@types/imapflow": "1.0.17", "@types/jsdom": "21.1.6", "@types/json-bigint": "1.0.4", "@types/koa": "2.13.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ea0d1454..7951b9340 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -236,8 +236,8 @@ devDependencies: specifier: 9.0.4 version: 9.0.4 '@types/imapflow': - specifier: 1.0.16 - version: 1.0.16 + specifier: 1.0.17 + version: 1.0.17 '@types/jsdom': specifier: 21.1.6 version: 21.1.6 @@ -1554,8 +1554,8 @@ packages: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} dev: true - /@types/imapflow@1.0.16: - resolution: {integrity: sha512-4bWf+MPhut/WpuyQnn60J6EaX1PP5e0QrYf4wIi8p6Cr1XT7eCpNzIFQDdalaELZnzDJPyLkILHkTvjacu6hsQ==} + /@types/imapflow@1.0.17: + resolution: {integrity: sha512-L7qvMfFhaB5sMP+nx83pZL5r48yBhWIoLsSZwPPTvNHxUKbD2F20aViUm2NeL1h+Be9zDAXcnMyvO7pvhjXjng==} dependencies: '@types/node': 20.5.6 dev: true From 6973a21f2031b97340c84238c6805d8fa5f89f00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 22:21:07 +0000 Subject: [PATCH 31/76] chore(deps-dev): bump @types/eslint from 8.56.0 to 8.56.1 (#14173) * chore(deps-dev): bump @types/eslint from 8.56.0 to 8.56.1 Bumps [@types/eslint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/eslint) from 8.56.0 to 8.56.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/eslint) --- updated-dependencies: - dependency-name: "@types/eslint" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index c40a3838e..e66a5d3ee 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "@stylistic/eslint-plugin-js": "1.5.3", "@types/aes-js": "3.1.4", "@types/crypto-js": "4.2.1", - "@types/eslint": "8.56.0", + "@types/eslint": "8.56.1", "@types/eslint-config-prettier": "6.11.3", "@types/etag": "1.8.3", "@types/fs-extra": "11.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7951b9340..1157a85fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -218,8 +218,8 @@ devDependencies: specifier: 4.2.1 version: 4.2.1 '@types/eslint': - specifier: 8.56.0 - version: 8.56.0 + specifier: 8.56.1 + version: 8.56.1 '@types/eslint-config-prettier': specifier: 6.11.3 version: 6.11.3 @@ -312,7 +312,7 @@ devDependencies: version: 16.6.1(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.2 - version: 5.1.2(@types/eslint@8.56.0)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) + version: 5.1.2(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) eslint-plugin-yml: specifier: 1.11.0 version: 1.11.0(eslint@8.56.0) @@ -1474,8 +1474,8 @@ packages: resolution: {integrity: sha512-3wXCiM8croUnhg9LdtZUJQwNcQYGWxxdOWDjPe1ykCqJFPVpzAKfs/2dgSoCtAvdPeaponcWPI7mPcGGp9dkKQ==} dev: true - /@types/eslint@8.56.0: - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + /@types/eslint@8.56.1: + resolution: {integrity: sha512-18PLWRzhy9glDQp3+wOgfLYRWlhgX0azxgJ63rdpoUHyrC9z0f5CkFburjQx4uD7ZCruw85ZtMt6K+L+R8fLJQ==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 @@ -3345,7 +3345,7 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-prettier@5.1.2(@types/eslint@8.56.0)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): + /eslint-plugin-prettier@5.1.2(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): resolution: {integrity: sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3359,7 +3359,7 @@ packages: eslint-config-prettier: optional: true dependencies: - '@types/eslint': 8.56.0 + '@types/eslint': 8.56.1 eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) prettier: 3.1.1 From 6a1f53d8011354ee3ebfaa8bf17356c7b7bc29c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 22:21:32 +0000 Subject: [PATCH 32/76] chore(deps-dev): bump @vercel/nft from 0.26.0 to 0.26.2 (#14174) * chore(deps-dev): bump @vercel/nft from 0.26.0 to 0.26.2 Bumps [@vercel/nft](https://github.com/vercel/nft) from 0.26.0 to 0.26.2. - [Release notes](https://github.com/vercel/nft/releases) - [Commits](https://github.com/vercel/nft/compare/0.26.0...0.26.2) --- updated-dependencies: - dependency-name: "@vercel/nft" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- 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 e66a5d3ee..985e018ec 100644 --- a/package.json +++ b/package.json @@ -181,7 +181,7 @@ "@types/supertest": "6.0.2", "@types/tiny-async-pool": "2.0.3", "@types/tough-cookie": "4.0.5", - "@vercel/nft": "0.26.0", + "@vercel/nft": "0.26.2", "cross-env": "7.0.3", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1157a85fd..fde1b675b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -296,8 +296,8 @@ devDependencies: specifier: 4.0.5 version: 4.0.5 '@vercel/nft': - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.26.2 + version: 0.26.2 cross-env: specifier: 7.0.3 version: 7.0.3 @@ -1858,15 +1858,15 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vercel/nft@0.26.0: - resolution: {integrity: sha512-4JoDL1jMPoPb9PpilQx7IQwxDUYCSwnonN8GrR6bP2BVJR390toF/tJe20tcI+wDWPkJKJqNloipfaeQfTeU2w==} - engines: {node: '>=18'} + /@vercel/nft@0.26.2: + resolution: {integrity: sha512-bxe2iShmKZi7476xYamyKvhhKwQ6JPEtQ2FSq1AjMUH2buMd8LQMkdoHinTqZYc+1sMTh3G0ARdjzNvV1FEisA==} + engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.11.2 - acorn-import-attributes: 1.9.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-import-attributes: 1.9.2(acorn@8.11.3) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -1904,12 +1904,12 @@ packages: negotiator: 0.6.3 dev: false - /acorn-import-attributes@1.9.2(acorn@8.11.2): + /acorn-import-attributes@1.9.2(acorn@8.11.3): resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn-jsx@5.3.2(acorn@8.11.2): From b8f7b38be1f35a2260103beaf4678a9337fa066b Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 4 Jan 2024 11:44:42 +0800 Subject: [PATCH 33/76] feat: recover /ft/myft, close #14096 --- lib/v2/ft/maintainer.js | 1 + lib/v2/ft/myft.js | 51 +++++++++++++++++++++++ lib/v2/ft/radar.js | 13 ++++++ lib/v2/ft/router.js | 1 + website/docs/routes/traditional-media.mdx | 9 ++++ 5 files changed, 75 insertions(+) create mode 100644 lib/v2/ft/myft.js diff --git a/lib/v2/ft/maintainer.js b/lib/v2/ft/maintainer.js index 8a46d5a55..3aa646268 100644 --- a/lib/v2/ft/maintainer.js +++ b/lib/v2/ft/maintainer.js @@ -1,3 +1,4 @@ module.exports = { + '/myft/:key': ['HenryQW'], '/:language/:channel?': ['HenryQW', 'xyqfer'], }; diff --git a/lib/v2/ft/myft.js b/lib/v2/ft/myft.js new file mode 100644 index 000000000..fbb87baf8 --- /dev/null +++ b/lib/v2/ft/myft.js @@ -0,0 +1,51 @@ +const got = require('@/utils/got'); +const parser = require('@/utils/rss-parser'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const ProcessFeed = (content) => { + // clean up the article + content.find('div.o-share, aside, div.o-ads').remove(); + + return content.html(); + }; + + const link = `https://www.ft.com/myft/following/${ctx.params.key}.rss`; + + const feed = await parser.parseURL(link); + + const items = await Promise.all( + feed.items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const response = await got({ + method: 'get', + url: item.link, + headers: { + Referer: 'https://www.facebook.com', + }, + }); + + const $ = cheerio.load(response.data); + + item.description = ProcessFeed($('article.js-article__content-body')); + item.category = [$('.n-content-tag--with-follow').text()].concat( + $('.article__right-bottom a.concept-list__concept') + .map((i, e) => $(e).text().trim()) + .get() + ); + item.author = $('a.n-content-tag--author') + .map((i, e) => $(e).text()) + .get(); + + return item; + }) + ) + ); + + ctx.state.data = { + title: `FT.com - myFT`, + link, + description: `FT.com - myFT`, + item: items, + }; +}; diff --git a/lib/v2/ft/radar.js b/lib/v2/ft/radar.js index 0f7df9fe8..9a49b381e 100644 --- a/lib/v2/ft/radar.js +++ b/lib/v2/ft/radar.js @@ -6,6 +6,19 @@ module.exports = { title: 'FT 中文网', docs: 'https://docs.rsshub.app/routes/traditional-media#financial-times', }, + { + title: 'myFT 个人 RSS', + docs: 'https://docs.rsshub.app/routes/traditional-media#financial-times', + }, + ], + }, + 'ft.com': { + _name: 'Financial Times', + '.': [ + { + title: 'myFT personal RSS', + docs: 'https://docs.rsshub.app/routes/en/traditional-media#financial-times', + }, ], }, }; diff --git a/lib/v2/ft/router.js b/lib/v2/ft/router.js index 763e36974..11cf5c86a 100644 --- a/lib/v2/ft/router.js +++ b/lib/v2/ft/router.js @@ -1,3 +1,4 @@ module.exports = function (router) { + router.get('/myft/:key', require('./myft')); router.get('/:language/:channel?', require('./channel')); }; diff --git a/website/docs/routes/traditional-media.mdx b/website/docs/routes/traditional-media.mdx index 8a5709a28..28cb8c45c 100644 --- a/website/docs/routes/traditional-media.mdx +++ b/website/docs/routes/traditional-media.mdx @@ -194,6 +194,15 @@ - 频道包含多重路径,如 `http://www.ftchinese.com/rss/column/007000002` 则替换 `/` 为 `-` `/ft/chinese/column-007000002`. +### myFT personal RSS {#financial-times-myft-personal-rss} + + + :::tip + - Visit ft.com -> myFT -> Contact Preferences to enable personal RSS feed, see [help.ft.com](https://help.ft.com/faq/email-alerts-and-contact-preferences/what-is-myft-rss-feed/) + - Obtain the key from the personal RSS address, it looks like `12345678-abcd-4036-82db-vdv20db024b8` + ::: + + ## Korean Central News Agency (KCNA) 朝鲜中央通讯社 {#korean-central-news-agency-kcna-chao-xian-zhong-yang-tong-xun-she} ### News {#korean-central-news-agency-kcna-chao-xian-zhong-yang-tong-xun-she-news} From 9af13494c3438fece2fc1ac7f1ea189893c524da Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Thu, 4 Jan 2024 12:06:17 +0800 Subject: [PATCH 34/76] =?UTF-8?q?fix(route):=20=E7=AC=AC=E4=B8=80=E8=B4=A2?= =?UTF-8?q?=E7=BB=8FDT=E8=B4=A2=E7=BB=8F=E6=8A=A5=E5=91=8A=E9=99=84?= =?UTF-8?q?=E4=BB=B6=20(#14176)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/v2/yicai/dt.js | 53 ++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/lib/v2/yicai/dt.js b/lib/v2/yicai/dt.js index e7f84400b..30cd8b43e 100644 --- a/lib/v2/yicai/dt.js +++ b/lib/v2/yicai/dt.js @@ -4,48 +4,53 @@ const { parseDate } = require('@/utils/parse-date'); const { art } = require('@/utils/render'); const path = require('path'); -const types = { +const columns = { article: 2, report: 3, visualization: 4, }; module.exports = async (ctx) => { - const { type = 'article', category = '0' } = ctx.params; + const { column = 'article', category = '0' } = ctx.params; const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 30; const rootUrl = 'https://dt.yicai.com'; const apiUrl = new URL('api/getNewsList', rootUrl).href; - const currentUrl = new URL(type, rootUrl).href; + const currentUrl = new URL(column, rootUrl).href; const { data: response } = await got(apiUrl, { searchParams: { page: 1, - rid: types[type], + rid: columns[column], cid: category, pageSize: limit, }, }); - let items = response.data.data.slice(0, limit).map((item) => ({ - title: item.newstitle, - link: new URL(item.url, rootUrl).href, - description: art(path.join(__dirname, 'templates/description.art'), { - image: { - src: item.originPic, - alt: item.newstitle, - }, - intro: item.newsnotes, - }), - author: item.creatername, - category: [item.channelrootname, item.channelname, item.NewsTypeName].filter((c) => c), - guid: `yicai-dt-${item.newsid}`, - pubDate: parseDate(item.utc_createdate), - updated: parseDate(item.utc_lastdate), - enclosure_url: item.originVideo, - enclosure_type: item.originVideo ? `video/${item.originVideo.split(/\./).pop()}` : undefined, - upvotes: item.newsscore ?? 0, - })); + let items = response.data.data.slice(0, limit).map((item) => { + const enclosureUrl = item.originVideo; + const enclosureExt = enclosureUrl.split(/\./).pop(); + + return { + title: item.newstitle, + link: new URL(item.url, rootUrl).href, + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src: item.originPic, + alt: item.newstitle, + }, + intro: item.newsnotes, + }), + author: item.creatername, + category: [item.channelrootname, item.channelname, item.NewsTypeName].filter((c) => c), + guid: `yicai-dt-${item.newsid}`, + pubDate: parseDate(item.utc_createdate), + updated: parseDate(item.utc_lastdate), + enclosure_url: enclosureUrl, + enclosure_type: enclosureUrl ? `${enclosureExt === 'mp4' ? 'video' : 'application'}/${enclosureExt}` : undefined, + upvotes: item.newsscore ?? 0, + }; + }); items = await Promise.all( items.map((item) => @@ -75,8 +80,6 @@ module.exports = async (ctx) => { description: content('div.txt').html(), }); item.author = content('div.authortime h3').text(); - item.enclosure_url = ''; - item.enclosure_type = 'video/mp4'; return item; }) From 91ce25bcff1684fc695fa775f87d74b86c855955 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 4 Jan 2024 18:15:56 +0000 Subject: [PATCH 35/76] feat(route): recover gofans (#14183) --- lib/v2/gofans/index.js | 41 +++++++++++++++++++++++++ lib/v2/gofans/maintainer.js | 3 ++ lib/v2/gofans/radar.js | 13 ++++++++ lib/v2/gofans/router.js | 3 ++ lib/v2/gofans/templates/description.art | 7 +++++ website/docs/routes/program-update.mdx | 6 ++++ 6 files changed, 73 insertions(+) create mode 100644 lib/v2/gofans/index.js create mode 100644 lib/v2/gofans/maintainer.js create mode 100644 lib/v2/gofans/radar.js create mode 100644 lib/v2/gofans/router.js create mode 100644 lib/v2/gofans/templates/description.art diff --git a/lib/v2/gofans/index.js b/lib/v2/gofans/index.js new file mode 100644 index 000000000..78665a647 --- /dev/null +++ b/lib/v2/gofans/index.js @@ -0,0 +1,41 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const { join } = require('path'); + +module.exports = async (ctx) => { + const { kind = '' } = ctx.params; + const baseUrl = 'https://gofans.cn'; + + const { data: response } = await got('https://api.gofans.cn/v1/web/app_records', { + headers: { + origin: baseUrl, + }, + searchParams: { + limit: 20, + kind: kind && (kind === 'macos' ? 1 : 2), + page: 1, + }, + }); + + const items = response.data.map((item) => ({ + title: `「${item.price === '0.00' ? '免费' : '降价'}」-「${item.kind === 1 ? 'macOS' : 'iOS'}」${item.name}`, + description: art(join(__dirname, 'templates/description.art'), { + icon: item.icon, + originalPrice: item.original_price, + price: item.price, + kind: item.kind, + description: item.description.replaceAll('\n', '
'), + }), + pubDate: parseDate(item.updated_at, 'X'), + link: new URL(`/app/${item.uuid}`, baseUrl).href, + category: item.primary_genre_name, + })); + + ctx.state.data = { + title: '最新限免 / 促销应用', + link: baseUrl, + description: 'GoFans:最新限免 / 促销应用', + item: items, + }; +}; diff --git a/lib/v2/gofans/maintainer.js b/lib/v2/gofans/maintainer.js new file mode 100644 index 000000000..c820bec4f --- /dev/null +++ b/lib/v2/gofans/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:kind?': ['HenryQW'], +}; diff --git a/lib/v2/gofans/radar.js b/lib/v2/gofans/radar.js new file mode 100644 index 000000000..b8980cb27 --- /dev/null +++ b/lib/v2/gofans/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'gofans.cn': { + _name: 'GoFans', + '.': [ + { + title: '最新限免 / 促销应用', + docs: 'https://docs.rsshub.app/program-update#gofans', + source: ['/limited/:kind?', '/'], + target: (params) => `/gofans${(params.kind && (params.kind === 'macos' ? '/macos' : '/ios')) || ''}`, + }, + ], + }, +}; diff --git a/lib/v2/gofans/router.js b/lib/v2/gofans/router.js new file mode 100644 index 000000000..7267a807a --- /dev/null +++ b/lib/v2/gofans/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:kind?', require('./index')); +}; diff --git a/lib/v2/gofans/templates/description.art b/lib/v2/gofans/templates/description.art new file mode 100644 index 000000000..1126b1bb6 --- /dev/null +++ b/lib/v2/gofans/templates/description.art @@ -0,0 +1,7 @@ + +
+原价:¥{{ originalPrice }} -> 现价:¥{{ price }} +
+平台:{{ kind === 1 ? 'macOS' : 'iOS' }} +
+{{@ description }} diff --git a/website/docs/routes/program-update.mdx b/website/docs/routes/program-update.mdx index 03f96da3c..506dae42b 100644 --- a/website/docs/routes/program-update.mdx +++ b/website/docs/routes/program-update.mdx @@ -266,6 +266,12 @@ Need to configure `CIVITAI_COOKIE` to obtain image information of NSFW models. +## GoFans {#gofans} + +### 最新限免 / 促销应用 {#gofans-zui-xin-xian-mian-cu-xiao-ying-yong} + + + ## Greasy Fork {#greasy-fork} ### Script Update {#greasy-fork-script-update} From 50ad0378fc342e60b8700f8359d3302e33f7107e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 00:40:03 +0000 Subject: [PATCH 36/76] chore(deps): bump mailparser from 3.6.5 to 3.6.6 (#14184) * chore(deps): bump mailparser from 3.6.5 to 3.6.6 Bumps [mailparser](https://github.com/nodemailer/mailparser) from 3.6.5 to 3.6.6. - [Release notes](https://github.com/nodemailer/mailparser/releases) - [Changelog](https://github.com/nodemailer/mailparser/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodemailer/mailparser/compare/v3.6.5...v3.6.6) --- updated-dependencies: - dependency-name: mailparser dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 40 +++++++++++++++------------------------- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 985e018ec..ac251a1f1 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "koa-static": "5.0.0", "lru-cache": "10.1.0", "lz-string": "1.5.0", - "mailparser": "3.6.5", + "mailparser": "3.6.6", "markdown-it": "14.0.0", "module-alias": "2.2.3", "notion-to-md": "3.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fde1b675b..c6230d6d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -126,8 +126,8 @@ dependencies: specifier: 1.5.0 version: 1.5.0 mailparser: - specifier: 3.6.5 - version: 3.6.5 + specifier: 3.6.6 + version: 3.6.6 markdown-it: specifier: 14.0.0 version: 14.0.0 @@ -5566,12 +5566,6 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /linkify-it@4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} - dependencies: - uc.micro: 1.0.6 - dev: false - /linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} dependencies: @@ -5750,18 +5744,18 @@ packages: hasBin: true dev: false - /mailparser@3.6.5: - resolution: {integrity: sha512-nteTpF0Khm5JLOnt4sigmzNdUH/6mO7PZ4KEnvxf4mckyXYFFhrtAWZzbq/V5aQMH+049gA7ZjfLdh+QiX2Uqg==} + /mailparser@3.6.6: + resolution: {integrity: sha512-noCjBl3FToxmqTP2fp7z17hQsiCroWNntfTd8O+UejOAF59xeN5WGZK27ilexXV2e2X/cbUhG3L8sfEKaz0/sw==} dependencies: encoding-japanese: 2.0.0 he: 1.2.0 html-to-text: 9.0.5 iconv-lite: 0.6.3 libmime: 5.2.1 - linkify-it: 4.0.1 + linkify-it: 5.0.0 mailsplit: 5.4.0 - nodemailer: 6.9.3 - tlds: 1.240.0 + nodemailer: 6.9.8 + tlds: 1.248.0 dev: false /mailsplit@5.4.0: @@ -6841,13 +6835,13 @@ packages: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true - /nodemailer@6.9.3: - resolution: {integrity: sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==} + /nodemailer@6.9.7: + resolution: {integrity: sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==} engines: {node: '>=6.0.0'} dev: false - /nodemailer@6.9.7: - resolution: {integrity: sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==} + /nodemailer@6.9.8: + resolution: {integrity: sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==} engines: {node: '>=6.0.0'} dev: false @@ -8558,13 +8552,13 @@ packages: engines: {node: '>=12'} dev: true - /tlds@1.240.0: - resolution: {integrity: sha512-1OYJQenswGZSOdRw7Bql5Qu7uf75b+F3HFBXbqnG/ifHa0fev1XcG+3pJf3pA/KC6RtHQzfKgIf1vkMlMG7mtQ==} + /tlds@1.242.0: + resolution: {integrity: sha512-aP3dXawgmbfU94mA32CJGHmJUE1E58HCB1KmlKRhBNtqBL27mSQcAEmcaMaQ1Za9kIVvOdbxJD3U5ycDy7nJ3w==} hasBin: true dev: false - /tlds@1.242.0: - resolution: {integrity: sha512-aP3dXawgmbfU94mA32CJGHmJUE1E58HCB1KmlKRhBNtqBL27mSQcAEmcaMaQ1Za9kIVvOdbxJD3U5ycDy7nJ3w==} + /tlds@1.248.0: + resolution: {integrity: sha512-noj0KdpWTBhwsKxMOXk0rN9otg4kTgLm4WohERRHbJ9IY+kSDKr3RmjitaQ3JFzny+DyvBOQKlFZhp0G0qNSfg==} hasBin: true dev: false @@ -8755,10 +8749,6 @@ packages: mime-types: 2.1.35 dev: false - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: false - /uc.micro@2.0.0: resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} dev: false From 955efb94ed966b6a0572f4d37de1a160880400f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 00:44:32 +0000 Subject: [PATCH 37/76] chore(deps): bump puppeteer from 21.6.1 to 21.7.0 (#14185) * chore(deps): bump puppeteer from 21.6.1 to 21.7.0 Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 21.6.1 to 21.7.0. - [Release notes](https://github.com/puppeteer/puppeteer/releases) - [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json) - [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v21.6.1...puppeteer-v21.7.0) --- updated-dependencies: - dependency-name: puppeteer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++++++++------------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index ac251a1f1..364277336 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "oauth-1.0a": "2.2.6", "plist": "3.1.0", "proxy-chain": "2.4.0", - "puppeteer": "21.6.1", + "puppeteer": "21.7.0", "puppeteer-extra": "3.3.6", "puppeteer-extra-plugin-stealth": "2.11.2", "puppeteer-extra-plugin-user-data-dir": "2.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6230d6d3..221bf831e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,11 +147,11 @@ dependencies: specifier: 2.4.0 version: 2.4.0 puppeteer: - specifier: 21.6.1 - version: 21.6.1 + specifier: 21.7.0 + version: 21.7.0 puppeteer-extra: specifier: 3.3.6 - version: 3.3.6(puppeteer@21.6.1) + version: 3.3.6(puppeteer@21.7.0) puppeteer-extra-plugin-stealth: specifier: 2.11.2 version: 2.11.2(puppeteer-extra@3.3.6) @@ -1238,8 +1238,8 @@ packages: safe-buffer: 5.2.1 dev: false - /@puppeteer/browsers@1.9.0: - resolution: {integrity: sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==} + /@puppeteer/browsers@1.9.1: + resolution: {integrity: sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==} engines: {node: '>=16.3.0'} hasBin: true dependencies: @@ -2549,8 +2549,8 @@ packages: engines: {node: '>=10'} dev: true - /chromium-bidi@0.5.1(devtools-protocol@0.0.1203626): - resolution: {integrity: sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==} + /chromium-bidi@0.5.2(devtools-protocol@0.0.1203626): + resolution: {integrity: sha512-PbVOSddxgKyj+JByqavWMNqWPCoCaT6XK5Z1EFe168sxnB/BM51LnZEPXSbFcFAJv/+u2B4XNTs9uXxy4GW3cQ==} peerDependencies: devtools-protocol: '*' dependencies: @@ -7443,16 +7443,16 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - /puppeteer-core@21.6.1: - resolution: {integrity: sha512-0chaaK/RL9S1U3bsyR4fUeUfoj51vNnjWvXgG6DcsyMjwYNpLcAThv187i1rZCo7QhJP0wZN8plQkjNyrq2h+A==} + /puppeteer-core@21.7.0: + resolution: {integrity: sha512-elPYPozrgiM3phSy7VDUJCVWQ07SPnOm78fpSaaSNFoQx5sur/MqhTSro9Wz8lOEjqCykGC6WRkwxDgmqcy1dQ==} engines: {node: '>=16.13.2'} dependencies: - '@puppeteer/browsers': 1.9.0 - chromium-bidi: 0.5.1(devtools-protocol@0.0.1203626) + '@puppeteer/browsers': 1.9.1 + chromium-bidi: 0.5.2(devtools-protocol@0.0.1203626) cross-fetch: 4.0.0 debug: 4.3.4(supports-color@5.5.0) devtools-protocol: 0.0.1203626 - ws: 8.15.1 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - encoding @@ -7473,7 +7473,7 @@ packages: optional: true dependencies: debug: 4.3.4(supports-color@5.5.0) - puppeteer-extra: 3.3.6(puppeteer@21.6.1) + puppeteer-extra: 3.3.6(puppeteer@21.7.0) puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6) puppeteer-extra-plugin-user-preferences: 2.4.1(puppeteer-extra@3.3.6) transitivePeerDependencies: @@ -7494,7 +7494,7 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) fs-extra: 10.1.0 - puppeteer-extra: 3.3.6(puppeteer@21.6.1) + puppeteer-extra: 3.3.6(puppeteer@21.7.0) puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6) rimraf: 3.0.2 transitivePeerDependencies: @@ -7515,7 +7515,7 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) deepmerge: 4.3.1 - puppeteer-extra: 3.3.6(puppeteer@21.6.1) + puppeteer-extra: 3.3.6(puppeteer@21.7.0) puppeteer-extra-plugin: 3.2.3(puppeteer-extra@3.3.6) puppeteer-extra-plugin-user-data-dir: 2.4.1(puppeteer-extra@3.3.6) transitivePeerDependencies: @@ -7537,12 +7537,12 @@ packages: '@types/debug': 4.1.8 debug: 4.3.4(supports-color@5.5.0) merge-deep: 3.0.3 - puppeteer-extra: 3.3.6(puppeteer@21.6.1) + puppeteer-extra: 3.3.6(puppeteer@21.7.0) transitivePeerDependencies: - supports-color dev: false - /puppeteer-extra@3.3.6(puppeteer@21.6.1): + /puppeteer-extra@3.3.6(puppeteer@21.7.0): resolution: {integrity: sha512-rsLBE/6mMxAjlLd06LuGacrukP2bqbzKCLzV1vrhHFavqQE/taQ2UXv3H5P0Ls7nsrASa+6x3bDbXHpqMwq+7A==} engines: {node: '>=8'} peerDependencies: @@ -7560,20 +7560,20 @@ packages: '@types/debug': 4.1.8 debug: 4.3.4(supports-color@5.5.0) deepmerge: 4.3.1 - puppeteer: 21.6.1 + puppeteer: 21.7.0 transitivePeerDependencies: - supports-color dev: false - /puppeteer@21.6.1: - resolution: {integrity: sha512-O+pbc61oj8ln6m8EJKncrsQFmytgRyFYERtk190PeLbJn5JKpmmynn2p1PiFrlhCitAQXLJ0MOy7F0TeyCRqBg==} + /puppeteer@21.7.0: + resolution: {integrity: sha512-Yy+UUy0b9siJezbhHO/heYUoZQUwyqDK1yOQgblTt0l97tspvDVFkcW9toBlnSvSfkDmMI3Dx9cZL6R8bDArHA==} engines: {node: '>=16.13.2'} hasBin: true requiresBuild: true dependencies: - '@puppeteer/browsers': 1.9.0 + '@puppeteer/browsers': 1.9.1 cosmiconfig: 8.3.6 - puppeteer-core: 21.6.1 + puppeteer-core: 21.7.0 transitivePeerDependencies: - bufferutil - encoding @@ -8957,7 +8957,7 @@ packages: optional: true dependencies: ip-regex: 4.3.0 - tlds: 1.242.0 + tlds: 1.248.0 dev: false /url-template@2.0.8: @@ -9218,8 +9218,8 @@ packages: optional: true dev: false - /ws@8.15.1: - resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From 48fea975558da3e29347b71cb62cc618cde0330e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 00:45:23 +0000 Subject: [PATCH 38/76] chore(deps): bump @sentry/node from 7.91.0 to 7.92.0 (#14186) * chore(deps): bump @sentry/node from 7.91.0 to 7.92.0 Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.91.0 to 7.92.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/7.91.0...7.92.0) --- updated-dependencies: - dependency-name: "@sentry/node" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- 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, 23 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 364277336..25d020e78 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@koa/router": "12.0.1", "@notionhq/client": "2.2.14", "@postlight/parser": "2.2.3", - "@sentry/node": "7.91.0", + "@sentry/node": "7.92.0", "@tonyrl/rand-user-agent": "2.0.44", "aes-js": "3.1.2", "art-template": "4.13.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 221bf831e..e0da4bb60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: 2.2.3 version: 2.2.3 '@sentry/node': - specifier: 7.91.0 - version: 7.91.0 + specifier: 7.92.0 + version: 7.92.0 '@tonyrl/rand-user-agent': specifier: 2.0.44 version: 2.0.44 @@ -1269,46 +1269,46 @@ packages: selderee: 0.11.0 dev: false - /@sentry-internal/tracing@7.91.0: - resolution: {integrity: sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==} + /@sentry-internal/tracing@7.92.0: + resolution: {integrity: sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.91.0 - '@sentry/types': 7.91.0 - '@sentry/utils': 7.91.0 + '@sentry/core': 7.92.0 + '@sentry/types': 7.92.0 + '@sentry/utils': 7.92.0 dev: false - /@sentry/core@7.91.0: - resolution: {integrity: sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==} + /@sentry/core@7.92.0: + resolution: {integrity: sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.91.0 - '@sentry/utils': 7.91.0 + '@sentry/types': 7.92.0 + '@sentry/utils': 7.92.0 dev: false - /@sentry/node@7.91.0: - resolution: {integrity: sha512-hTIfSQxD7L+AKIqyjoq8CWBRkEQrrMZmA3GSZgPI5JFWBHgO0HBo5TH/8TU81oEJh6kqqHAl2ObMhmcnaFqlzg==} + /@sentry/node@7.92.0: + resolution: {integrity: sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA==} engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.91.0 - '@sentry/core': 7.91.0 - '@sentry/types': 7.91.0 - '@sentry/utils': 7.91.0 + '@sentry-internal/tracing': 7.92.0 + '@sentry/core': 7.92.0 + '@sentry/types': 7.92.0 + '@sentry/utils': 7.92.0 https-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color dev: false - /@sentry/types@7.91.0: - resolution: {integrity: sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==} + /@sentry/types@7.92.0: + resolution: {integrity: sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==} engines: {node: '>=8'} dev: false - /@sentry/utils@7.91.0: - resolution: {integrity: sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==} + /@sentry/utils@7.92.0: + resolution: {integrity: sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.91.0 + '@sentry/types': 7.92.0 dev: false /@sinclair/typebox@0.27.8: From c33deddf78e685d447c970f0f0818d7a8d0c5a97 Mon Sep 17 00:00:00 2001 From: savokiss Date: Fri, 5 Jan 2024 21:53:13 +0800 Subject: [PATCH 39/76] fix: domp4 supports secondary address (#14181) (#14189) * fix: domp4 supports secondary address * fix: domp4 remove invalid domain --- lib/v2/domp4/detail.js | 10 ++++++---- lib/v2/domp4/utils.js | 2 +- website/docs/routes/multimedia.mdx | 2 ++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/v2/domp4/detail.js b/lib/v2/domp4/detail.js index aebbb7183..726b1bc88 100644 --- a/lib/v2/domp4/detail.js +++ b/lib/v2/domp4/detail.js @@ -25,7 +25,7 @@ function getDomList($, detailUrl) { return list; } -function getItemList($, detailUrl) { +function getItemList($, detailUrl, second) { const encoded = $('.article script[type]') .text() .match(/return p}\('(.*)',(\d+),(\d+),'(.*)'.split\(/); @@ -39,7 +39,9 @@ function getItemList($, detailUrl) { .replace(/\\\\"/g, '"') .replace(/\\\\\\/g, '') ); - const { downurls } = data.Data[0]; + // support secondary download address + const { downurls } = second && data.Data.length > 1 ? data.Data[1] : data.Data[0]; + return downurls.map((item) => { const [title, downurl] = item.split('$'); const urlType = getUrlType(downurl); @@ -69,7 +71,7 @@ function getMetaInfo($) { module.exports = async (ctx) => { const { id } = ctx.params; - const { domain } = ctx.query; + const { domain, second } = ctx.query; let pureId = id; let detailType = 'html'; // compatible for .html suffix in radar @@ -84,7 +86,7 @@ module.exports = async (ctx) => { const res = await got(detailUrl); const $ = cheerio.load(res.data); - const list = getItemList($, detailUrl); + const list = getItemList($, detailUrl, second); const meta = getMetaInfo($); ctx.state.data = { diff --git a/lib/v2/domp4/utils.js b/lib/v2/domp4/utils.js index ba385a44a..723cd7cc0 100644 --- a/lib/v2/domp4/utils.js +++ b/lib/v2/domp4/utils.js @@ -2,7 +2,7 @@ const config = require('@/config').value; const defaultDomain = 'mp4us.com'; -const allowedDomains = ['domp4.cc', 'mp4kan.com', 'mp4us.com', 'wemp4.com', 'dbmp4.com']; +const allowedDomains = ['domp4.cc', 'mp4us.com', 'wemp4.com', 'dbmp4.com']; /** * trackers from https://www.domp4.cc/Style/2020/js/base.js?v=2 diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index cd2e33066..9f26a31db 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -403,6 +403,8 @@ Full transcript support for better user experience. :::tip 由于大部分详情页是 `/html/xxx.html`,还有部分是 `/detail/123.html`,所以此处做了兼容,id 取 `xxx` 或者 `123` 都可以。 + +新增 `second` 参数,用于选择下载地址二(地址二不可用或者不填都默认地址一),用法: `/domp4/detail/LBTANI22222I?second=1`。 ::: ## E-Hentai {#e-hentai} From 1c850539228bedd3ac24a8c4ba95c36ce670eecf Mon Sep 17 00:00:00 2001 From: Night Space <63776734+NightSpaceC@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:55:15 +0800 Subject: [PATCH 40/76] =?UTF-8?q?feat(route):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=BC=A0=E6=A0=87=E8=B7=AF=E5=BE=84=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=8C=E5=9C=A8=E9=85=8D=E7=BD=AE=E4=B8=AD?= =?UTF-8?q?=E9=A2=84=E7=BD=AE=E8=B7=AF=E5=BE=84=20(#14179)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(route): adjust the parameter to generate path * feat(route): use the path from configure * feat(docs): add the usage of BILIBILI_DM_IMG_LIST --- lib/config.js | 1 + lib/v2/bilibili/utils.js | 11 ++++++++--- website/docs/install/config.md | 5 +++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/config.js b/lib/config.js index 585babd6b..a786fd58d 100644 --- a/lib/config.js +++ b/lib/config.js @@ -121,6 +121,7 @@ const calculateValue = () => { // Route-specific Configurations bilibili: { cookies: bilibili_cookies, + dmImgList: envs.BILIBILI_DM_IMG_LIST, }, bitbucket: { username: envs.BITBUCKET_USERNAME, diff --git a/lib/v2/bilibili/utils.js b/lib/v2/bilibili/utils.js index 32b95552f..15e77490d 100644 --- a/lib/v2/bilibili/utils.js +++ b/lib/v2/bilibili/utils.js @@ -1,3 +1,4 @@ +const config = require('@/config').value; const md5 = require('@/utils/md5'); const CryptoJS = require('crypto-js'); @@ -86,14 +87,18 @@ function generateGaussianInteger(mean, std) { } function getDmImgList() { - const x = Math.max(generateGaussianInteger(720, 20), 0); - const y = Math.max(generateGaussianInteger(480, 20), 0); + if (typeof (config.bilibili.dmImgList) !== 'undefined') { + const dmImgList = JSON.parse(config.bilibili.dmImgList); + return JSON.stringify([dmImgList[Math.floor(Math.random() * dmImgList.length)]]); + } + const x = Math.max(generateGaussianInteger(650, 5), 0); + const y = Math.max(generateGaussianInteger(400, 5), 0); const path = [ { x: 3 * x + 2 * y, y: 4 * x - 5 * y, z: 0, - timestamp: Math.max(generateGaussianInteger(40, 5), 0), + timestamp: Math.max(generateGaussianInteger(30, 5), 0), type: 0, }, ]; diff --git a/website/docs/install/config.md b/website/docs/install/config.md index 92cacbdda..20d524a2d 100644 --- a/website/docs/install/config.md +++ b/website/docs/install/config.md @@ -261,6 +261,11 @@ See docs of the specified route and `lib/config.js` for detailed information. 2. 打开控制台,切换到 Network 面板,刷新 3. 点击 dynamic_new 请求,找到 Cookie 4. 视频和专栏,UP 主粉丝及关注只要求 `SESSDATA` 字段,动态需复制整段 Cookie +- `BILIBILI_DM_IMG_LIST`: 用于获取UP主投稿系列的路由,获取方式: + 1. 打开 [任意UP主个人空间页](https://space.bilibili.com/1) + 2. 打开控制台,切换到 Network 面板,关闭缓存,刷新,鼠标在窗口内不断移动 + 3. 使用过滤器找到符合 `https://api.bilibili.com/x/space/wbi/arc/search` 的请求 + 4. 复制请求参数中 `dm_img_list` 字段的内容,如 `[{"x":2721,"y":615,"z":0,"timestamp":29,"type":0}]` ### Bitbucket From 008fcaea83f56e3d0d123c665625ed605535bc13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 15:56:51 +0000 Subject: [PATCH 41/76] style: auto format --- lib/v2/bilibili/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/v2/bilibili/utils.js b/lib/v2/bilibili/utils.js index 15e77490d..77c0037ac 100644 --- a/lib/v2/bilibili/utils.js +++ b/lib/v2/bilibili/utils.js @@ -87,7 +87,7 @@ function generateGaussianInteger(mean, std) { } function getDmImgList() { - if (typeof (config.bilibili.dmImgList) !== 'undefined') { + if (typeof config.bilibili.dmImgList !== 'undefined') { const dmImgList = JSON.parse(config.bilibili.dmImgList); return JSON.stringify([dmImgList[Math.floor(Math.random() * dmImgList.length)]]); } From 16d4e5932ba6a265ffc4787a6f8aca4bf8152bd0 Mon Sep 17 00:00:00 2001 From: Jon Hao Date: Fri, 5 Jan 2024 08:36:50 -0800 Subject: [PATCH 42/76] feat: New Router for liveuamap (#14175) * Added new route for liveuamap * Fix unsafe domain and the 3rd level domain defaulting * docs: fix heading --------- --- lib/v2/liveuamap/index.js | 41 +++++++++++++++++++++++++++++++ lib/v2/liveuamap/maintainer.js | 3 +++ lib/v2/liveuamap/radar.js | 13 ++++++++++ lib/v2/liveuamap/router.js | 3 +++ website/docs/routes/new-media.mdx | 6 +++++ 5 files changed, 66 insertions(+) create mode 100644 lib/v2/liveuamap/index.js create mode 100644 lib/v2/liveuamap/maintainer.js create mode 100644 lib/v2/liveuamap/radar.js create mode 100644 lib/v2/liveuamap/router.js diff --git a/lib/v2/liveuamap/index.js b/lib/v2/liveuamap/index.js new file mode 100644 index 000000000..229fb2337 --- /dev/null +++ b/lib/v2/liveuamap/index.js @@ -0,0 +1,41 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { isValidHost } = require('@/utils/valid-host'); + +module.exports = async (ctx) => { + let region = ctx.params.region ?? 'ukraine'; + const limit = ctx.query.limit ? parseInt(ctx.query.limit) : 50; + if (!isValidHost(region)) { + throw Error('Invalid region'); + } + + let url = `https://${region}.liveuamap.com/`; + if (region === undefined) { + region = 'Default'; + url = 'https://liveuamap.com/'; + } + + const response = await got({ + method: 'get', + url, + }); + const $ = cheerio.load(response.data); + + const items = $('div#feedler > div') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + return { + title: item.find('div.title').text(), + description: item.find('div.title').text(), + link: item.attr('data-link'), + }; + }); + + ctx.state.data = { + title: `Liveuamap - ${region}`, + link: url, + item: items, + }; +}; diff --git a/lib/v2/liveuamap/maintainer.js b/lib/v2/liveuamap/maintainer.js new file mode 100644 index 000000000..f4c914280 --- /dev/null +++ b/lib/v2/liveuamap/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:region?': ['CoderSherlock'], +}; diff --git a/lib/v2/liveuamap/radar.js b/lib/v2/liveuamap/radar.js new file mode 100644 index 000000000..3610c00fb --- /dev/null +++ b/lib/v2/liveuamap/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'liveuamap.com': { + _name: 'Live Universal Awareness Map', + '.': [ + { + title: 'Region', + docs: 'https://docs.rsshub.app/routes/new-media#live-universal-awareness-map', + source: ['/:region*'], + target: '/liveuamap/:region', + }, + ], + }, +}; diff --git a/lib/v2/liveuamap/router.js b/lib/v2/liveuamap/router.js new file mode 100644 index 000000000..e540ed9ba --- /dev/null +++ b/lib/v2/liveuamap/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:region?', require('./')); +}; diff --git a/website/docs/routes/new-media.mdx b/website/docs/routes/new-media.mdx index 49ae0b440..02fd7947f 100644 --- a/website/docs/routes/new-media.mdx +++ b/website/docs/routes/new-media.mdx @@ -910,6 +910,12 @@ +## Live Universal Awareness Map {#live-universal-awareness-map} + +### 实时消息 {#live-universal-awareness-map-shi-shi-xiao-xi} + + + ## LVV2 {#lvv2} ### 频道 {#lvv2-pin-dao} From c2eb18d4130c36f8ef3198f9dd222574910328d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jan 2024 10:52:49 +0800 Subject: [PATCH 43/76] chore(deps): bump googleapis from 129.0.0 to 130.0.0 (#14193) * chore(deps): bump googleapis from 129.0.0 to 130.0.0 Bumps [googleapis](https://github.com/googleapis/google-api-nodejs-client) from 129.0.0 to 130.0.0. - [Release notes](https://github.com/googleapis/google-api-nodejs-client/releases) - [Changelog](https://github.com/googleapis/google-api-nodejs-client/blob/main/release-please-config.json) - [Commits](https://github.com/googleapis/google-api-nodejs-client/compare/googleapis-v129.0.0...googleapis-v130.0.0) --- updated-dependencies: - dependency-name: googleapis dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 28 +++++----------------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 25d020e78..c9f7fb33a 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "etag": "1.8.1", "fanfou-sdk": "4.2.0", "git-rev-sync": "3.0.2", - "googleapis": "129.0.0", + "googleapis": "130.0.0", "got": "11.8.6", "html-to-text": "9.0.5", "https-proxy-agent": "7.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0da4bb60..23b56ceaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,8 +63,8 @@ dependencies: specifier: 3.0.2 version: 3.0.2 googleapis: - specifier: 129.0.0 - version: 129.0.0 + specifier: 130.0.0 + version: 130.0.0 got: specifier: 11.8.6 version: 11.8.6 @@ -4059,8 +4059,8 @@ packages: - supports-color dev: false - /googleapis@129.0.0: - resolution: {integrity: sha512-gFatrzby+oh/GxEeMhJOKzgs9eG7yksRcTon9b+kPie4ZnDSgGQ85JgtUaBtLSBkcKpUKukdSP6Km1aCjs4y4Q==} + /googleapis@130.0.0: + resolution: {integrity: sha512-+ZSOowVv+vGBTueu1Ot9O7EqC0U4PS9l7fUjzc0ThCT4w4g+r78Vgn17q7eGBB5JMu4hxYC1hbbm1U/MCnYFdg==} engines: {node: '>=14.0.0'} dependencies: google-auth-library: 9.0.0 @@ -5275,7 +5275,7 @@ packages: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.14.2 + ws: 8.16.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -8552,11 +8552,6 @@ packages: engines: {node: '>=12'} dev: true - /tlds@1.242.0: - resolution: {integrity: sha512-aP3dXawgmbfU94mA32CJGHmJUE1E58HCB1KmlKRhBNtqBL27mSQcAEmcaMaQ1Za9kIVvOdbxJD3U5ycDy7nJ3w==} - hasBin: true - dev: false - /tlds@1.248.0: resolution: {integrity: sha512-noj0KdpWTBhwsKxMOXk0rN9otg4kTgLm4WohERRHbJ9IY+kSDKr3RmjitaQ3JFzny+DyvBOQKlFZhp0G0qNSfg==} hasBin: true @@ -9205,19 +9200,6 @@ packages: signal-exit: 3.0.7 dev: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - 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 - dev: false - /ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} From afc17f1fea379a6a9654fcc780cf1448c750c9ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jan 2024 10:55:40 +0800 Subject: [PATCH 44/76] chore(deps): bump jsdom from 23.0.1 to 23.1.0 (#14194) * chore(deps): bump jsdom from 23.0.1 to 23.1.0 Bumps [jsdom](https://github.com/jsdom/jsdom) from 23.0.1 to 23.1.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/23.0.1...23.1.0) --- updated-dependencies: - dependency-name: jsdom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index c9f7fb33a..4f0d56403 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "ioredis": "5.3.2", "ip-regex": "4.3.0", "is-localhost-ip": "2.0.0", - "jsdom": "23.0.1", + "jsdom": "23.1.0", "json-bigint": "1.0.0", "json5": "2.2.3", "jsrsasign": "10.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23b56ceaf..e2563fcde 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,8 +93,8 @@ dependencies: specifier: 2.0.0 version: 2.0.0 jsdom: - specifier: 23.0.1 - version: 23.0.1 + specifier: 23.1.0 + version: 23.1.0 json-bigint: specifier: 1.0.0 version: 1.0.0 @@ -2870,9 +2870,9 @@ packages: engines: {node: '>= 6'} dev: false - /cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} + /cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 dev: false @@ -5247,8 +5247,8 @@ packages: engines: {node: '>=0.1.90'} dev: true - /jsdom@23.0.1: - resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} + /jsdom@23.1.0: + resolution: {integrity: sha512-wRscu8dBFxi7O65Cvi0jFRDv0Qa7XEHPix8Qg/vlXHLAMQsRWV1EDeQHBermzXf4Dt7JtFgBLbva3iTcBZDXEQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -5256,7 +5256,7 @@ packages: canvas: optional: true dependencies: - cssstyle: 3.0.0 + cssstyle: 4.0.1 data-urls: 5.0.0 decimal.js: 10.4.3 form-data: 4.0.0 From ee19f9e987dc74fca9156e5a99f58247493da761 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jan 2024 11:01:05 +0800 Subject: [PATCH 45/76] chore(deps): bump the docusaurus group in /website with 7 updates (#14192) Bumps the docusaurus group in /website with 7 updates: | Package | From | To | | --- | --- | --- | | [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) | `3.0.1` | `3.1.0` | | [@docusaurus/plugin-client-redirects](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-client-redirects) | `3.0.1` | `3.1.0` | | [@docusaurus/plugin-pwa](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-pwa) | `3.0.1` | `3.1.0` | | [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) | `3.0.1` | `3.1.0` | | [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.0.1` | `3.1.0` | | [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.0.1` | `3.1.0` | | [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) | `3.0.1` | `3.1.0` | Updates `@docusaurus/core` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus) Updates `@docusaurus/plugin-client-redirects` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-plugin-client-redirects) Updates `@docusaurus/plugin-pwa` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-plugin-pwa) Updates `@docusaurus/preset-classic` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-preset-classic) Updates `@docusaurus/module-type-aliases` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-module-type-aliases) Updates `@docusaurus/tsconfig` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-tsconfig) Updates `@docusaurus/types` from 3.0.1 to 3.1.0 - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v3.1.0/packages/docusaurus-types) --- updated-dependencies: - dependency-name: "@docusaurus/core" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/plugin-client-redirects" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/plugin-pwa" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/preset-classic" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/module-type-aliases" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/tsconfig" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: docusaurus - dependency-name: "@docusaurus/types" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: docusaurus ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package.json | 14 +- website/pnpm-lock.yaml | 2607 +++++++++++++++++++++++----------------- 2 files changed, 1527 insertions(+), 1094 deletions(-) diff --git a/website/package.json b/website/package.json index c46340a16..853ce3d2d 100644 --- a/website/package.json +++ b/website/package.json @@ -17,10 +17,10 @@ }, "dependencies": { "@dipakparmar/docusaurus-plugin-umami": "^2.1.2", - "@docusaurus/core": "3.0.1", - "@docusaurus/plugin-client-redirects": "3.0.1", - "@docusaurus/plugin-pwa": "3.0.1", - "@docusaurus/preset-classic": "3.0.1", + "@docusaurus/core": "3.1.0", + "@docusaurus/plugin-client-redirects": "3.1.0", + "@docusaurus/plugin-pwa": "3.1.0", + "@docusaurus/preset-classic": "3.1.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.1.0", "markdown-it": "^14.0.0", @@ -31,9 +31,9 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.0.1", - "@docusaurus/tsconfig": "^3.0.1", - "@docusaurus/types": "3.0.1", + "@docusaurus/module-type-aliases": "3.1.0", + "@docusaurus/tsconfig": "^3.1.0", + "@docusaurus/types": "3.1.0", "@types/markdown-it": "^13.0.7", "@types/mdx-js__react": "^1.5.8", "@types/react": "^18.2.46", diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 95f006421..c499923de 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -9,17 +9,17 @@ dependencies: specifier: ^2.1.2 version: 2.1.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/core': - specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: 3.1.0 + version: 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-client-redirects': - specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: 3.1.0 + version: 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-pwa': - specifier: 3.0.1 - version: 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: 3.1.0 + version: 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': - specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) + specifier: 3.1.0 + version: 3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.46)(react@18.2.0) @@ -47,14 +47,14 @@ dependencies: devDependencies: '@docusaurus/module-type-aliases': - specifier: 3.0.1 - version: 3.0.1(react-dom@18.2.0)(react@18.2.0) + specifier: 3.1.0 + version: 3.1.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/tsconfig': - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.1.0 + version: 3.1.0 '@docusaurus/types': - specifier: 3.0.1 - version: 3.0.1(react-dom@18.2.0)(react@18.2.0) + specifier: 3.1.0 + version: 3.1.0(react-dom@18.2.0)(react@18.2.0) '@types/markdown-it': specifier: ^13.0.7 version: 13.0.7 @@ -73,142 +73,142 @@ devDependencies: packages: - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.11.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + '@algolia/client-search': 4.22.0 + algoliasearch: 4.22.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 + '@algolia/client-search': 4.22.0 + algoliasearch: 4.22.0 dev: false - /@algolia/cache-browser-local-storage@4.20.0: - resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} + /@algolia/cache-browser-local-storage@4.22.0: + resolution: {integrity: sha512-uZ1uZMLDZb4qODLfTSNHxSi4fH9RdrQf7DXEzW01dS8XK7QFtFh29N5NGKa9S+Yudf1vUMIF+/RiL4i/J0pWlQ==} dependencies: - '@algolia/cache-common': 4.20.0 + '@algolia/cache-common': 4.22.0 dev: false - /@algolia/cache-common@4.20.0: - resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} + /@algolia/cache-common@4.22.0: + resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} dev: false - /@algolia/cache-in-memory@4.20.0: - resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} + /@algolia/cache-in-memory@4.22.0: + resolution: {integrity: sha512-kf4Cio9NpPjzp1+uXQgL4jsMDeck7MP89BYThSvXSjf2A6qV/0KeqQf90TL2ECS02ovLOBXkk98P7qVarM+zGA==} dependencies: - '@algolia/cache-common': 4.20.0 + '@algolia/cache-common': 4.22.0 dev: false - /@algolia/client-account@4.20.0: - resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} + /@algolia/client-account@4.22.0: + resolution: {integrity: sha512-Bjb5UXpWmJT+yGWiqAJL0prkENyEZTBzdC+N1vBuHjwIJcjLMjPB6j1hNBRbT12Lmwi55uzqeMIKS69w+0aPzA==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-analytics@4.20.0: - resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} + /@algolia/client-analytics@4.22.0: + resolution: {integrity: sha512-os2K+kHUcwwRa4ArFl5p/3YbF9lN3TLOPkbXXXxOvDpqFh62n9IRZuzfxpHxMPKAQS3Et1s0BkKavnNP02E9Hg==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-common@4.20.0: - resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} + /@algolia/client-common@4.22.0: + resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} dependencies: - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-personalization@4.20.0: - resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} + /@algolia/client-personalization@4.22.0: + resolution: {integrity: sha512-pEOftCxeBdG5pL97WngOBi9w5Vxr5KCV2j2D+xMVZH8MuU/JX7CglDSDDb0ffQWYqcUN+40Ry+xtXEYaGXTGow==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-search@4.20.0: - resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} + /@algolia/client-search@4.22.0: + resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common@4.20.0: - resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} + /@algolia/logger-common@4.22.0: + resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} dev: false - /@algolia/logger-console@4.20.0: - resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} + /@algolia/logger-console@4.22.0: + resolution: {integrity: sha512-7JKb6hgcY64H7CRm3u6DRAiiEVXMvCJV5gRE672QFOUgDxo4aiDpfU61g6Uzy8NKjlEzHMmgG4e2fklELmPXhQ==} dependencies: - '@algolia/logger-common': 4.20.0 + '@algolia/logger-common': 4.22.0 dev: false - /@algolia/requester-browser-xhr@4.20.0: - resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} + /@algolia/requester-browser-xhr@4.22.0: + resolution: {integrity: sha512-BHfv1h7P9/SyvcDJDaRuIwDu2yrDLlXlYmjvaLZTtPw6Ok/ZVhBR55JqW832XN/Fsl6k3LjdkYHHR7xnsa5Wvg==} dependencies: - '@algolia/requester-common': 4.20.0 + '@algolia/requester-common': 4.22.0 dev: false - /@algolia/requester-common@4.20.0: - resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} + /@algolia/requester-common@4.22.0: + resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} dev: false - /@algolia/requester-node-http@4.20.0: - resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} + /@algolia/requester-node-http@4.22.0: + resolution: {integrity: sha512-8xHoGpxVhz3u2MYIieHIB6MsnX+vfd5PS4REgglejJ6lPigftRhTdBCToe6zbwq4p0anZXjjPDvNWMlgK2+xYA==} dependencies: - '@algolia/requester-common': 4.20.0 + '@algolia/requester-common': 4.22.0 dev: false - /@algolia/transporter@4.20.0: - resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} + /@algolia/transporter@4.22.0: + resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} dependencies: - '@algolia/cache-common': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/requester-common': 4.20.0 + '@algolia/cache-common': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/requester-common': 4.22.0 dev: false /@ampproject/remapping@2.2.1: @@ -244,20 +244,20 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.23.5: - resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} + /@babel/core@7.23.7: + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helpers': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.7 + '@babel/parser': 7.23.6 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -271,7 +271,17 @@ packages: resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: false + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 @@ -281,64 +291,64 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.1 + browserslist: 4.22.2 lru-cache: 5.1.1 semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} + /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.5): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.5): - resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7): + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -357,37 +367,37 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -399,7 +409,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-plugin-utils@7.22.5: @@ -407,25 +417,25 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.5): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -435,21 +445,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false /@babel/helper-string-parser@7.23.4: @@ -473,16 +483,16 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false - /@babel/helpers@7.23.5: - resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} + /@babel/helpers@7.23.7: + resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color dev: false @@ -496,991 +506,1009 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/parser@7.23.5: - resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.5): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.5): + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.7): resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: false - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.5): - resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: false - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.7): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) - '@babel/types': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/types': 7.23.6 dev: false - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-runtime@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-runtime@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-runtime@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-typescript@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==} + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/preset-env@7.23.5(@babel/core@7.23.5): - resolution: {integrity: sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==} + /@babel/preset-env@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.7 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.5) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) - core-js-compat: 3.33.3 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-async-generator-functions': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) + core-js-compat: 3.35.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.5): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 esutils: 2.0.3 dev: false - /@babel/preset-react@7.23.3(@babel/core@7.23.5): + /@babel/preset-react@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.7) dev: false - /@babel/preset-typescript@7.23.3(@babel/core@7.23.5): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) dev: false /@babel/regjsgen@0.8.0: @@ -1491,23 +1519,38 @@ packages: resolution: {integrity: sha512-7+ziVclejQTLYhXl+Oi1f6gTGD1XDCeLa4R472TNGQxb08zbEJ0OdNoh5Piz+57Ltmui6xR88BXR4gS3/Toslw==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.33.3 - regenerator-runtime: 0.14.0 + core-js-pure: 3.35.0 + regenerator-runtime: 0.14.1 + dev: false + + /@babel/runtime-corejs3@7.23.7: + resolution: {integrity: sha512-ER55qzLREVA5YxeyQ3Qu48tgsF2ZrFjFjUS6V6wF0cikSw+goBJgB9PBRM1T6+Ah4iiM+sxmfS/Sy/jdzFfhiQ==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.35.0 + regenerator-runtime: 0.14.1 dev: false /@babel/runtime@7.23.5: resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 + dev: false + + /@babel/runtime@7.23.7: + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 dev: false /@babel/traverse@7.23.5: @@ -1520,16 +1563,34 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.23.5: - resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} + /@babel/traverse@7.23.7: + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 @@ -1580,7 +1641,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1597,14 +1658,14 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) '@docsearch/css': 3.5.2 '@types/react': 18.2.46 - algoliasearch: 4.20.0 + algoliasearch: 4.22.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.11.0 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -1617,13 +1678,13 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/generator': 7.23.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-react': 7.23.3(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) '@babel/runtime': 7.23.5 '@babel/runtime-corejs3': 7.23.5 '@babel/traverse': 7.23.5 @@ -1637,7 +1698,7 @@ packages: '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.16(postcss@8.4.31) - babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) + babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -1647,7 +1708,7 @@ packages: combine-promises: 1.2.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0(webpack@5.89.0) - core-js: 3.33.3 + core-js: 3.35.0 css-loader: 6.8.1(webpack@5.89.0) css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.89.0) cssnano: 5.1.15(postcss@8.4.31) @@ -1679,7 +1740,7 @@ packages: semver: 7.5.4 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(webpack@5.89.0) tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) @@ -1708,35 +1769,35 @@ packages: - webpack-cli dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} + /@docusaurus/core@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-react': 7.23.3(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) - '@babel/runtime': 7.23.5 - '@babel/runtime-corejs3': 7.23.5 - '@babel/traverse': 7.23.5 - '@docusaurus/cssnano-preset': 3.0.1 - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/core': 7.23.7 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@babel/runtime-corejs3': 7.23.7 + '@babel/traverse': 7.23.7 + '@docusaurus/cssnano-preset': 3.1.0 + '@docusaurus/logger': 3.1.0 + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.16(postcss@8.4.31) - babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) + autoprefixer: 10.4.16(postcss@8.4.33) + babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -1746,10 +1807,10 @@ packages: combine-promises: 1.2.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0(webpack@5.89.0) - core-js: 3.33.3 + core-js: 3.35.0 css-loader: 6.8.1(webpack@5.89.0) css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.89.0) - cssnano: 5.1.15(postcss@8.4.31) + cssnano: 5.1.15(postcss@8.4.33) del: 6.1.1 detect-port: 1.5.1 escape-html: 1.0.3 @@ -1758,12 +1819,12 @@ packages: fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.5.3(webpack@5.89.0) + html-webpack-plugin: 5.6.0(webpack@5.89.0) leven: 3.1.0 lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) - postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0) + postcss: 8.4.33 + postcss-loader: 7.3.4(postcss@8.4.33)(typescript@5.3.3)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 react-dev-utils: 12.0.1(typescript@5.3.3)(webpack@5.89.0) @@ -1778,7 +1839,7 @@ packages: semver: 7.5.4 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(webpack@5.89.0) tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) @@ -1790,6 +1851,7 @@ packages: transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -1816,13 +1878,13 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/cssnano-preset@3.0.1: - resolution: {integrity: sha512-wjuXzkHMW+ig4BD6Ya1Yevx9UJadO4smNZCEljqBoQfIQrQskTswBs7lZ8InHP7mCt273a/y/rm36EZhqJhknQ==} + /@docusaurus/cssnano-preset@3.1.0: + resolution: {integrity: sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA==} engines: {node: '>=18.0'} dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.31) - postcss: 8.4.31 - postcss-sort-media-queries: 4.4.1(postcss@8.4.31) + cssnano-preset-advanced: 5.3.10(postcss@8.4.33) + postcss: 8.4.33 + postcss-sort-media-queries: 4.4.1(postcss@8.4.33) tslib: 2.6.2 dev: false @@ -1834,8 +1896,8 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/logger@3.0.1: - resolution: {integrity: sha512-I5L6Nk8OJzkVA91O2uftmo71LBSxe1vmOn9AMR6JRCzYeEBrqneWMH02AqMvjJ2NpMiviO+t0CyPjyYV7nxCWQ==} + /@docusaurus/logger@3.1.0: + resolution: {integrity: sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 @@ -1849,7 +1911,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.6 '@babel/traverse': 7.23.5 '@docusaurus/logger': 3.0.0 '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -1860,7 +1922,7 @@ packages: estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.89.0) fs-extra: 11.2.0 - image-size: 1.0.2 + image-size: 1.1.1 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 react: 18.2.0 @@ -1886,25 +1948,25 @@ packages: - webpack-cli dev: false - /@docusaurus/mdx-loader@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ldnTmvnvlrONUq45oKESrpy+lXtbnTcTsFkOTIDswe5xx5iWJjt6eSa0f99ZaWlnm24mlojcIGoUWNCS53qVlQ==} + /@docusaurus/mdx-loader@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.5 - '@babel/traverse': 7.23.5 - '@docusaurus/logger': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.7 + '@docusaurus/logger': 3.1.0 + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) '@mdx-js/mdx': 3.0.0 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.89.0) fs-extra: 11.2.0 - image-size: 1.0.2 + image-size: 1.1.1 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 react: 18.2.0 @@ -1930,40 +1992,41 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@3.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DEHpeqUDsLynl3AhQQiO7AbC7/z/lBra34jTcdYuvp9eGm01pfH1wTVq8YqWZq6Jyx0BgcVl/VJqtE9StRd9Ag==} + /@docusaurus/module-type-aliases@3.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg==} peerDependencies: react: '*' react-dom: '*' dependencies: '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 '@types/react': 18.2.46 - '@types/react-router-config': 5.0.10 + '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 2.0.1(react-dom@18.2.0)(react@18.2.0) + react-helmet-async: 2.0.4(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) transitivePeerDependencies: - '@swc/core' - esbuild + - supports-color - uglify-js - webpack-cli - /@docusaurus/plugin-client-redirects@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-CoZapnHbV3j5jsHCa/zmKaa8+H+oagHBgg91dN5I8/3kFit/xtZPfRaznvDX49cHg2nSoV74B3VMAT+bvCmzFQ==} + /@docusaurus/plugin-client-redirects@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-CuFbdciMGvtGYiIPSOpj5idsHOQUcqZWTLCmZV3ePhviekm4dRZm1+QK/BxigmSTL5ICJMGbtOQnz7bgFSWHqg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.1.0 + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) eta: 2.2.0 fs-extra: 11.2.0 lodash: 4.17.21 @@ -1973,6 +2036,7 @@ packages: transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -1989,20 +2053,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} + /@docusaurus/plugin-content-blog@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.1.0 + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -2017,6 +2081,7 @@ packages: webpack: 5.89.0 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2033,21 +2098,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} + /@docusaurus/plugin-content-docs@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@types/react-router-config': 5.0.10 + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.1.0 + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) + '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 js-yaml: 4.1.0 @@ -2059,6 +2124,7 @@ packages: webpack: 5.89.0 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2075,18 +2141,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} + /@docusaurus/plugin-content-pages@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2094,6 +2160,7 @@ packages: webpack: 5.89.0 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2110,16 +2177,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} + /@docusaurus/plugin-debug@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2127,6 +2194,7 @@ packages: tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2143,21 +2211,22 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} + /@docusaurus/plugin-google-analytics@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2174,22 +2243,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} + /@docusaurus/plugin-google-gtag@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) '@types/gtag.js': 0.0.12 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2206,21 +2276,22 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} + /@docusaurus/plugin-google-tag-manager@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2237,36 +2308,37 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-pwa@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-KC9Axpw7NOB2RiW/28jq56Q8o6CLXo2pqo/b513g9WTqYkSCadm43inIEo7bSiyXaOTWvhW1f5H5jUEU4wM8LA==} + /@docusaurus/plugin-pwa@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-8UXyD35x3BALl7GuWWqSbC/ldnJHW8wfk5xzMDHfi5kKK+8OxpayJNxmXFXd0FlCVGN1PxE5EAhpdYIj9SBMUQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) + '@babel/core': 7.23.7 + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-translations': 3.1.0 + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) + babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) clsx: 2.1.0 - core-js: 3.33.3 + core-js: 3.35.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - terser-webpack-plugin: 5.3.9(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(webpack@5.89.0) tslib: 2.6.2 webpack: 5.89.0 webpack-merge: 5.10.0 webpackbar: 5.0.2(webpack@5.89.0) - workbox-build: 6.6.1 - workbox-precaching: 6.6.1 - workbox-window: 6.6.1 + workbox-build: 7.0.0 + workbox-precaching: 7.0.0 + workbox-window: 7.0.0 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - '@types/babel__core' @@ -2284,19 +2356,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} + /@docusaurus/plugin-sitemap@3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.1.0 + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2304,6 +2376,7 @@ packages: tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2320,31 +2393,32 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): - resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} + /@docusaurus/preset-classic@3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-blog': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-debug': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-analytics': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-gtag': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-tag-manager': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-sitemap': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-debug': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-analytics': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-gtag': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-tag-manager': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-sitemap': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.1.0(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@algolia/client-search' - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - '@types/react' @@ -2372,32 +2446,32 @@ packages: prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} + /@docusaurus/theme-classic@3.1.0(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-translations': 3.1.0 + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) '@mdx-js/react': 3.0.0(@types/react@18.2.46)(react@18.2.0) clsx: 2.1.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.4.31 + postcss: 8.4.33 prism-react-renderer: 2.3.1(react@18.2.0) prismjs: 1.29.0 react: 18.2.0 @@ -2408,6 +2482,7 @@ packages: utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - '@types/react' @@ -2425,23 +2500,23 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} + /@docusaurus/theme-common@3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/mdx-loader': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) '@types/history': 4.7.11 '@types/react': 18.2.46 - '@types/react-router-config': 5.0.10 + '@types/react-router-config': 5.0.11 clsx: 2.1.0 parse-numeric-range: 1.3.0 prism-react-renderer: 2.3.1(react@18.2.0) @@ -2452,6 +2527,7 @@ packages: transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - bufferutil @@ -2468,23 +2544,23 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.3): - resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} + /@docusaurus/theme-search-algolia@3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - algoliasearch: 4.20.0 - algoliasearch-helper: 3.15.0(algoliasearch@4.20.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.1.0 + '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-translations': 3.1.0 + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) + '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) + algoliasearch: 4.22.0 + algoliasearch-helper: 3.16.1(algoliasearch@4.22.0) clsx: 2.1.0 eta: 2.2.0 fs-extra: 11.2.0 @@ -2497,6 +2573,7 @@ packages: - '@algolia/client-search' - '@docusaurus/types' - '@parcel/css' + - '@rspack/core' - '@swc/core' - '@swc/css' - '@types/react' @@ -2515,16 +2592,16 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.0.1: - resolution: {integrity: sha512-6UrbpzCTN6NIJnAtZ6Ne9492vmPVX+7Fsz4kmp+yor3KQwA1+MCzQP7ItDNkP38UmVLnvB/cYk/IvehCUqS3dg==} + /@docusaurus/theme-translations@3.1.0: + resolution: {integrity: sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.2.0 tslib: 2.6.2 dev: false - /@docusaurus/tsconfig@3.0.1: - resolution: {integrity: sha512-hT2HCdNE3pWTzXV/7cSsowfmaOxXVOTFOXmkqaYjBWjaxjJ3FO0nHbdJ8rF6Da7PvWmIPbUekdP5gep1XCJ7Vg==} + /@docusaurus/tsconfig@3.1.0: + resolution: {integrity: sha512-PE6fSuj5gJy5sNC1OO+bYAU1/xZH5YqddGjhrNu3/T7OAUroqkMZfVl13Tz70CjYB8no4OWcraqSkObAeNdIcQ==} dev: true /@docusaurus/types@3.0.0(react-dom@18.2.0)(react@18.2.0): @@ -2550,12 +2627,13 @@ packages: - webpack-cli dev: false - /@docusaurus/types@3.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-plyX2iU1tcUsF46uQ01pAd4JhexR7n0iiQ5MSnBFX6M6NSJgDYdru/i1/YNPKOnQHBoXGLHv0dNT6OAlDWNjrg==} + /@docusaurus/types@3.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: + '@mdx-js/mdx': 3.0.0 '@types/history': 4.7.11 '@types/react': 18.2.46 commander: 5.1.0 @@ -2569,6 +2647,7 @@ packages: transitivePeerDependencies: - '@swc/core' - esbuild + - supports-color - uglify-js - webpack-cli @@ -2585,8 +2664,8 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/utils-common@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-W0AxD6w6T8g6bNro8nBRWf7PeZ/nn7geEWM335qHU2DDDjHuV4UZjgUGP1AQsdcSikPrlIqTJJbKzer1lRSlIg==} + /@docusaurus/utils-common@3.1.0(@docusaurus/types@3.1.0): + resolution: {integrity: sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -2594,7 +2673,7 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 dev: false @@ -2616,12 +2695,12 @@ packages: - webpack-cli dev: false - /@docusaurus/utils-validation@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-ujTnqSfyGQ7/4iZdB4RRuHKY/Nwm58IIb+41s5tCXOv/MBU2wGAjOHq3U+AEyJ8aKQcHbxvTKJaRchNHYUVUQg==} + /@docusaurus/utils-validation@3.1.0(@docusaurus/types@3.1.0): + resolution: {integrity: sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/logger': 3.1.0 + '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) joi: 17.11.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -2669,8 +2748,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-TwZ33Am0q4IIbvjhUOs+zpjtD/mXNmLmEgeTGuRq01QzulLHuPhaBTTAC/DHu6kFx3wDgmgpAlaRuCHfTcXv8g==} + /@docusaurus/utils@3.1.0(@docusaurus/types@3.1.0): + resolution: {integrity: sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -2678,8 +2757,8 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/logger': 3.1.0 + '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.89.0) @@ -2726,7 +2805,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.1 + '@types/node': 20.10.6 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -2794,7 +2873,6 @@ packages: vfile: 6.0.1 transitivePeerDependencies: - supports-color - dev: false /@mdx-js/react@3.0.0(@types/react@18.2.46)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} @@ -2825,7 +2903,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.16.0 dev: false /@pnpm/config.env-replace@1.1.0: @@ -2849,11 +2927,11 @@ packages: config-chain: 1.1.13 dev: false - /@polka/url@1.0.0-next.23: - resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.23.5)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.7)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -2864,7 +2942,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 @@ -2958,101 +3036,101 @@ packages: string.prototype.matchall: 4.0.10 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.5): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.5): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.23.5): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.7): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.5) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.5) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.7) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.7) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -3064,7 +3142,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 entities: 4.5.0 dev: false @@ -3074,8 +3152,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.7) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -3099,11 +3177,11 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-react': 7.23.3(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -3127,48 +3205,46 @@ packages: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.5 - dev: false /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.41 - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: '@types/ms': 0.7.34 - dev: false /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.44.8 + '@types/eslint': 8.56.1 '@types/estree': 1.0.5 - /@types/eslint@8.44.8: - resolution: {integrity: sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==} + /@types/eslint@8.56.1: + resolution: {integrity: sha512-18PLWRzhy9glDQp3+wOgfLYRWlhgX0azxgJ63rdpoUHyrC9z0f5CkFburjQx4uD7ZCruw85ZtMt6K+L+R8fLJQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -3177,7 +3253,6 @@ packages: resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} dependencies: '@types/estree': 1.0.5 - dev: false /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -3189,8 +3264,8 @@ packages: /@types/express-serve-static-core@4.17.41: resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: - '@types/node': 20.10.1 - '@types/qs': 6.9.10 + '@types/node': 20.10.6 + '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: false @@ -3200,7 +3275,7 @@ packages: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.41 - '@types/qs': 6.9.10 + '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 dev: false @@ -3212,7 +3287,6 @@ packages: resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} dependencies: '@types/unist': 3.0.2 - dev: false /@types/history@4.7.11: resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} @@ -3232,7 +3306,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -3269,7 +3343,6 @@ packages: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: '@types/unist': 3.0.2 - dev: false /@types/mdurl@1.0.4: resolution: {integrity: sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==} @@ -3283,7 +3356,6 @@ packages: /@types/mdx@2.0.10: resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} - dev: false /@types/mdx@2.0.9: resolution: {integrity: sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==} @@ -3299,20 +3371,19 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false - /@types/node-forge@1.3.10: - resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node@20.10.1: - resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} + /@types/node@20.10.6: + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} dependencies: undici-types: 5.26.5 @@ -3327,8 +3398,8 @@ packages: /@types/prop-types@15.7.9: resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} - /@types/qs@6.9.10: - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} dev: false /@types/range-parser@1.2.7: @@ -3341,8 +3412,8 @@ packages: '@types/react': 18.2.46 dev: true - /@types/react-router-config@5.0.10: - resolution: {integrity: sha512-Wn6c/tXdEgi9adCMtDwx8Q2vGty6TsPTc/wCQQ9kAlye8UqFxj0vGFWWuhywNfkwqth+SOgJxQTLTZukrqDQmQ==} + /@types/react-router-config@5.0.11: + resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 '@types/react': 18.2.46 @@ -3371,7 +3442,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/retry@0.12.0: @@ -3381,7 +3452,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 20.10.1 + '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.5: @@ -3391,7 +3462,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/serve-index@1.9.4: @@ -3405,13 +3476,13 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/trusted-types@2.0.7: @@ -3420,16 +3491,14 @@ packages: /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - dev: false /@types/unist@3.0.2: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - dev: false /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 dev: false /@types/yargs-parser@21.0.3: @@ -3444,7 +3513,6 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: false /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} @@ -3551,28 +3619,27 @@ packages: negotiator: 0.6.3 dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.2): + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 - dev: false + acorn: 8.11.3 - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} engines: {node: '>=0.4.0'} dev: false - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -3633,32 +3700,32 @@ packages: uri-js: 4.4.1 dev: false - /algoliasearch-helper@3.15.0(algoliasearch@4.20.0): - resolution: {integrity: sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==} + /algoliasearch-helper@3.16.1(algoliasearch@4.22.0): + resolution: {integrity: sha512-qxAHVjjmT7USVvrM8q6gZGaJlCK1fl4APfdAA7o8O6iXEc68G0xMNrzRkxoB/HmhhvyHnoteS/iMTiHiTcQQcg==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.20.0 + algoliasearch: 4.22.0 dev: false - /algoliasearch@4.20.0: - resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} + /algoliasearch@4.22.0: + resolution: {integrity: sha512-gfceltjkwh7PxXwtkS8KVvdfK+TSNQAWUeNSxf4dA29qW5tf2EGwa8jkJujlT9jLm17cixMVoGNc+GJFO1Mxhg==} dependencies: - '@algolia/cache-browser-local-storage': 4.20.0 - '@algolia/cache-common': 4.20.0 - '@algolia/cache-in-memory': 4.20.0 - '@algolia/client-account': 4.20.0 - '@algolia/client-analytics': 4.20.0 - '@algolia/client-common': 4.20.0 - '@algolia/client-personalization': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/logger-console': 4.20.0 - '@algolia/requester-browser-xhr': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/requester-node-http': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/cache-browser-local-storage': 4.22.0 + '@algolia/cache-common': 4.22.0 + '@algolia/cache-in-memory': 4.22.0 + '@algolia/client-account': 4.22.0 + '@algolia/client-analytics': 4.22.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-personalization': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/logger-console': 4.22.0 + '@algolia/requester-browser-xhr': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/requester-node-http': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false /ansi-align@3.0.1: @@ -3735,10 +3802,6 @@ packages: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false - /array-flatten@2.1.2: - resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} - dev: false - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -3760,7 +3823,6 @@ packages: /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true - dev: false /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} @@ -3782,8 +3844,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.1 - caniuse-lite: 1.0.30001565 + browserslist: 4.22.2 + caniuse-lite: 1.0.30001574 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -3791,6 +3853,22 @@ packages: postcss-value-parser: 4.2.0 dev: false + /autoprefixer@10.4.16(postcss@8.4.33): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001574 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -3799,21 +3877,21 @@ packages: /axios@1.6.2: resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: - follow-redirects: 1.15.3 + follow-redirects: 1.15.4 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: false - /babel-loader@9.1.3(@babel/core@7.23.5)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.7)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 @@ -3825,45 +3903,44 @@ packages: object.assign: 4.1.5 dev: false - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.5): - resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): + resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.5): - resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) - core-js-compat: 3.33.3 + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) + core-js-compat: 3.35.0 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.5): - resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): + resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) transitivePeerDependencies: - supports-color dev: false /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -3902,11 +3979,9 @@ packages: - supports-color dev: false - /bonjour-service@1.1.1: - resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} + /bonjour-service@1.2.0: + resolution: {integrity: sha512-xdzMA6JGckxyJzZByjEWRcfKmDxXaGXZWVftah3FkCqdlePNS9DjHSUN5zkP4oEfz/t0EXXlro88EIhzwMB4zA==} dependencies: - array-flatten: 2.1.2 - dns-equal: 1.0.0 fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 dev: false @@ -3963,15 +4038,15 @@ packages: fill-range: 7.0.1 dev: false - /browserslist@4.22.1: - resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001565 - electron-to-chromium: 1.4.598 - node-releases: 2.0.13 - update-browserslist-db: 1.0.13(browserslist@4.22.1) + caniuse-lite: 1.0.30001574 + electron-to-chromium: 1.4.623 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4042,18 +4117,17 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.22.1 - caniuse-lite: 1.0.30001565 + browserslist: 4.22.2 + caniuse-lite: 1.0.30001574 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false - /caniuse-lite@1.0.30001565: - resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} + /caniuse-lite@1.0.30001574: + resolution: {integrity: sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4084,19 +4158,15 @@ packages: /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false /character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -4187,7 +4257,6 @@ packages: /collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - dev: false /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -4232,7 +4301,6 @@ packages: /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} @@ -4368,19 +4436,19 @@ packages: webpack: 5.89.0 dev: false - /core-js-compat@3.33.3: - resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} + /core-js-compat@3.35.0: + resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 dev: false - /core-js-pure@3.33.3: - resolution: {integrity: sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==} + /core-js-pure@3.35.0: + resolution: {integrity: sha512-f+eRYmkou59uh7BPcyJ8MC76DiGhspj1KMxVIcF24tzP8NA9HVa1uC7BTW2tgx7E1QVCzDzsgp7kArrzhlz8Ew==} requiresBuild: true dev: false - /core-js@3.33.3: - resolution: {integrity: sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==} + /core-js@3.35.0: + resolution: {integrity: sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==} requiresBuild: true dev: false @@ -4464,18 +4532,27 @@ packages: postcss: 8.4.31 dev: false + /css-declaration-sorter@6.4.1(postcss@8.4.33): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.33 + dev: false + /css-loader@6.8.1(webpack@5.89.0): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.31) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.31) - postcss-modules-scope: 3.0.0(postcss@8.4.31) - postcss-modules-values: 4.0.0(postcss@8.4.31) + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.33) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.33) + postcss-modules-scope: 3.1.0(postcss@8.4.33) + postcss-modules-values: 4.0.0(postcss@8.4.33) postcss-value-parser: 4.2.0 semver: 7.5.4 webpack: 5.89.0 @@ -4507,9 +4584,9 @@ packages: optional: true dependencies: clean-css: 5.3.3 - cssnano: 5.1.15(postcss@8.4.31) + cssnano: 5.1.15(postcss@8.4.33) jest-worker: 29.7.0 - postcss: 8.4.31 + postcss: 8.4.33 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 @@ -4570,6 +4647,21 @@ packages: postcss-zindex: 5.1.0(postcss@8.4.31) dev: false + /cssnano-preset-advanced@5.3.10(postcss@8.4.33): + resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + autoprefixer: 10.4.16(postcss@8.4.33) + cssnano-preset-default: 5.2.14(postcss@8.4.33) + postcss: 8.4.33 + postcss-discard-unused: 5.1.0(postcss@8.4.33) + postcss-merge-idents: 5.1.1(postcss@8.4.33) + postcss-reduce-idents: 5.2.0(postcss@8.4.33) + postcss-zindex: 5.1.0(postcss@8.4.33) + dev: false + /cssnano-preset-default@5.2.14(postcss@8.4.31): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} @@ -4608,6 +4700,44 @@ packages: postcss-unique-selectors: 5.1.1(postcss@8.4.31) dev: false + /cssnano-preset-default@5.2.14(postcss@8.4.33): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.33) + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-calc: 8.2.4(postcss@8.4.33) + postcss-colormin: 5.3.1(postcss@8.4.33) + postcss-convert-values: 5.1.3(postcss@8.4.33) + postcss-discard-comments: 5.1.2(postcss@8.4.33) + postcss-discard-duplicates: 5.1.0(postcss@8.4.33) + postcss-discard-empty: 5.1.1(postcss@8.4.33) + postcss-discard-overridden: 5.1.0(postcss@8.4.33) + postcss-merge-longhand: 5.1.7(postcss@8.4.33) + postcss-merge-rules: 5.1.4(postcss@8.4.33) + postcss-minify-font-values: 5.1.0(postcss@8.4.33) + postcss-minify-gradients: 5.1.1(postcss@8.4.33) + postcss-minify-params: 5.1.4(postcss@8.4.33) + postcss-minify-selectors: 5.2.1(postcss@8.4.33) + postcss-normalize-charset: 5.1.0(postcss@8.4.33) + postcss-normalize-display-values: 5.1.0(postcss@8.4.33) + postcss-normalize-positions: 5.1.1(postcss@8.4.33) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.33) + postcss-normalize-string: 5.1.0(postcss@8.4.33) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.33) + postcss-normalize-unicode: 5.1.1(postcss@8.4.33) + postcss-normalize-url: 5.1.0(postcss@8.4.33) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.33) + postcss-ordered-values: 5.1.3(postcss@8.4.33) + postcss-reduce-initial: 5.1.2(postcss@8.4.33) + postcss-reduce-transforms: 5.1.0(postcss@8.4.33) + postcss-svgo: 5.1.0(postcss@8.4.33) + postcss-unique-selectors: 5.1.1(postcss@8.4.33) + dev: false + /cssnano-utils@3.1.0(postcss@8.4.31): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} @@ -4617,6 +4747,15 @@ packages: postcss: 8.4.31 dev: false + /cssnano-utils@3.1.0(postcss@8.4.33): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /cssnano@5.1.15(postcss@8.4.31): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} @@ -4629,6 +4768,18 @@ packages: yaml: 1.10.2 dev: false + /cssnano@5.1.15(postcss@8.4.33): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.33) + lilconfig: 2.1.0 + postcss: 8.4.33 + yaml: 1.10.2 + dev: false + /csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} @@ -4664,13 +4815,11 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: false /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: false /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -4756,7 +4905,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: false /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -4792,7 +4940,6 @@ packages: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 - dev: false /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -4801,10 +4948,6 @@ packages: path-type: 4.0.0 dev: false - /dns-equal@1.0.0: - resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} - dev: false - /dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -4902,8 +5045,8 @@ packages: jake: 10.8.7 dev: false - /electron-to-chromium@1.4.598: - resolution: {integrity: sha512-0JnipX0scPUlwsptQVCZggoCpREv+IrVD3h0ZG+sldmK9L27tSV3QjV8+QdaA4qQTzDf3PluNS45YYJky1oASw==} + /electron-to-chromium@1.4.623: + resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5078,7 +5221,6 @@ packages: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: '@types/estree': 1.0.5 - dev: false /estree-util-build-jsx@3.0.1: resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} @@ -5087,11 +5229,9 @@ packages: devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 - dev: false /estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false /estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} @@ -5099,7 +5239,6 @@ packages: '@types/estree-jsx': 1.0.3 astring: 1.8.6 source-map: 0.7.4 - dev: false /estree-util-value-to-estree@3.0.1: resolution: {integrity: sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==} @@ -5114,7 +5253,6 @@ packages: dependencies: '@types/estree-jsx': 1.0.3 '@types/unist': 3.0.2 - dev: false /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} @@ -5124,7 +5262,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -5145,7 +5282,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 require-like: 0.1.2 dev: false @@ -5220,7 +5357,6 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -5245,8 +5381,8 @@ packages: punycode: 1.4.1 dev: false - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: reusify: 1.0.4 dev: false @@ -5350,8 +5486,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + /follow-redirects@1.15.4: + resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -5761,7 +5897,6 @@ packages: zwitch: 2.0.4 transitivePeerDependencies: - supports-color - dev: false /hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} @@ -5778,12 +5913,11 @@ packages: mdast-util-mdxjs-esm: 2.0.1 property-information: 6.4.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.4 + style-to-object: 1.0.5 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false /hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} @@ -5801,7 +5935,6 @@ packages: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.3 - dev: false /hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} @@ -5821,7 +5954,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -5863,7 +5996,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.24.0 + terser: 5.26.0 dev: false /html-minifier-terser@7.2.0: @@ -5877,7 +6010,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.24.0 + terser: 5.26.0 dev: false /html-tags@3.3.1: @@ -5903,6 +6036,26 @@ packages: webpack: 5.89.0 dev: false + /html-webpack-plugin@5.6.0(webpack@5.89.0): + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.89.0 + dev: false + /htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} dependencies: @@ -5978,7 +6131,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.3 + follow-redirects: 1.15.4 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -6004,13 +6157,13 @@ packages: safer-buffer: 2.1.2 dev: false - /icss-utils@5.1.0(postcss@8.4.31): + /icss-utils@5.1.0(postcss@8.4.33): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.33 dev: false /idb@7.1.1: @@ -6022,9 +6175,9 @@ packages: engines: {node: '>= 4'} dev: false - /image-size@1.0.2: - resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} - engines: {node: '>=14.0.0'} + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} hasBin: true dependencies: queue: 6.0.2 @@ -6088,11 +6241,9 @@ packages: /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: false /inline-style-parser@0.2.2: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - dev: false /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} @@ -6125,14 +6276,12 @@ packages: /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false /is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} @@ -6194,7 +6343,6 @@ packages: /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -6226,7 +6374,6 @@ packages: /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} @@ -6290,7 +6437,6 @@ packages: /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - dev: false /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} @@ -6307,7 +6453,6 @@ packages: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - dev: false /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -6417,7 +6562,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.1 + '@types/node': 20.10.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -6428,7 +6573,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -6437,7 +6582,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -6445,7 +6590,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.6 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -6642,7 +6787,6 @@ packages: /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -6683,7 +6827,6 @@ packages: /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} - dev: false /markdown-it@14.0.0: resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} @@ -6742,7 +6885,6 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false /mdast-util-frontmatter@2.0.1: resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} @@ -6837,7 +6979,6 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false /mdast-util-mdx-jsx@3.0.0: resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} @@ -6857,7 +6998,6 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false /mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} @@ -6869,7 +7009,6 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} @@ -6882,14 +7021,12 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false /mdast-util-phrasing@4.0.0: resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - dev: false /mdast-util-to-hast@13.0.2: resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} @@ -6902,7 +7039,6 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - dev: false /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -6915,13 +7051,11 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false /mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: '@types/mdast': 4.0.3 - dev: false /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -6996,7 +7130,6 @@ packages: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-extension-directive@3.0.0: resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} @@ -7102,7 +7235,6 @@ packages: micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-extension-mdx-jsx@3.0.0: resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} @@ -7117,13 +7249,11 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 - dev: false /micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} dependencies: micromark-util-types: 2.0.0 - dev: false /micromark-extension-mdxjs-esm@3.0.0: resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} @@ -7137,20 +7267,18 @@ packages: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 - dev: false /micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} @@ -7158,7 +7286,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} @@ -7167,7 +7294,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-factory-mdx-expression@2.0.1: resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} @@ -7180,7 +7306,6 @@ packages: micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.2 - dev: false /micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} @@ -7194,7 +7319,6 @@ packages: dependencies: micromark-util-character: 2.0.1 micromark-util-types: 2.0.0 - dev: false /micromark-factory-title@2.0.0: resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} @@ -7203,7 +7327,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-factory-whitespace@2.0.0: resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} @@ -7212,7 +7335,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-character@1.2.0: resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} @@ -7226,13 +7348,11 @@ packages: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-chunked@2.0.0: resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: micromark-util-symbol: 2.0.0 - dev: false /micromark-util-classify-character@2.0.0: resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} @@ -7240,20 +7360,17 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-combine-extensions@2.0.0: resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-decode-numeric-character-reference@2.0.1: resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: micromark-util-symbol: 2.0.0 - dev: false /micromark-util-decode-string@2.0.0: resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} @@ -7262,11 +7379,9 @@ packages: micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false /micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false /micromark-util-events-to-acorn@2.0.2: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} @@ -7279,23 +7394,19 @@ packages: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 - dev: false /micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false /micromark-util-normalize-identifier@2.0.0: resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: micromark-util-symbol: 2.0.0 - dev: false /micromark-util-resolve-all@2.0.0: resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: micromark-util-types: 2.0.0 - dev: false /micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} @@ -7303,7 +7414,6 @@ packages: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false /micromark-util-subtokenize@2.0.0: resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} @@ -7312,7 +7422,6 @@ packages: micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false /micromark-util-symbol@1.1.0: resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} @@ -7320,7 +7429,6 @@ packages: /micromark-util-symbol@2.0.0: resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false /micromark-util-types@1.1.0: resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} @@ -7328,7 +7436,6 @@ packages: /micromark-util-types@2.0.0: resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false /micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} @@ -7352,7 +7459,6 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -7436,8 +7542,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false - /mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} dev: false @@ -7447,7 +7553,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -7509,8 +7614,8 @@ packages: engines: {node: '>= 6.13.0'} dev: false - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -7717,7 +7822,6 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -7816,7 +7920,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -7850,7 +7953,17 @@ packages: postcss: ^8.2.2 dependencies: postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-calc@8.2.4(postcss@8.4.33): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: false @@ -7860,24 +7973,48 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false + /postcss-colormin@5.3.1(postcss@8.4.33): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-convert-values@5.1.3(postcss@8.4.31): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false + /postcss-convert-values@5.1.3(postcss@8.4.33): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-discard-comments@5.1.2(postcss@8.4.31): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} @@ -7887,6 +8024,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-discard-comments@5.1.2(postcss@8.4.33): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss-discard-duplicates@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} @@ -7896,6 +8042,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-discard-duplicates@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss-discard-empty@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} @@ -7905,6 +8060,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-discard-empty@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss-discard-overridden@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} @@ -7914,6 +8078,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-discard-overridden@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss-discard-unused@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} engines: {node: ^10 || ^12 || >=14.0} @@ -7921,7 +8094,17 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 + dev: false + + /postcss-discard-unused@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 dev: false /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0): @@ -7940,6 +8123,22 @@ packages: - typescript dev: false + /postcss-loader@7.3.4(postcss@8.4.33)(typescript@5.3.3)(webpack@5.89.0): + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 8.3.6(typescript@5.3.3) + jiti: 1.21.0 + postcss: 8.4.33 + semver: 7.5.4 + webpack: 5.89.0 + transitivePeerDependencies: + - typescript + dev: false + /postcss-merge-idents@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} engines: {node: ^10 || ^12 || >=14.0} @@ -7951,6 +8150,17 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-merge-idents@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-merge-longhand@5.1.7(postcss@8.4.31): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} @@ -7962,17 +8172,41 @@ packages: stylehacks: 5.1.1(postcss@8.4.31) dev: false + /postcss-merge-longhand@5.1.7(postcss@8.4.33): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.33) + dev: false + /postcss-merge-rules@5.1.4(postcss@8.4.31): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 caniuse-api: 3.0.0 cssnano-utils: 3.1.0(postcss@8.4.31) postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 + dev: false + + /postcss-merge-rules@5.1.4(postcss@8.4.33): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 dev: false /postcss-minify-font-values@5.1.0(postcss@8.4.31): @@ -7985,6 +8219,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-minify-font-values@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-minify-gradients@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} @@ -7997,18 +8241,42 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-minify-gradients@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-minify-params@5.1.4(postcss@8.4.31): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 cssnano-utils: 3.1.0(postcss@8.4.31) postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false + /postcss-minify-params@5.1.4(postcss@8.4.33): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-minify-selectors@5.2.1(postcss@8.4.31): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} @@ -8016,48 +8284,58 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: false - /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): + /postcss-minify-selectors@5.2.1(postcss@8.4.33): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 + dev: false + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.33): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.33 dev: false - /postcss-modules-local-by-default@4.0.3(postcss@8.4.31): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.33): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope@3.0.0(postcss@8.4.31): - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + /postcss-modules-scope@3.1.0(postcss@8.4.33): + resolution: {integrity: sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 dev: false - /postcss-modules-values@4.0.0(postcss@8.4.31): + /postcss-modules-values@4.0.0(postcss@8.4.33): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 dev: false /postcss-normalize-charset@5.1.0(postcss@8.4.31): @@ -8069,6 +8347,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-normalize-charset@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss-normalize-display-values@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} @@ -8079,6 +8366,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-display-values@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-positions@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} @@ -8089,6 +8386,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-positions@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} @@ -8099,6 +8406,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-string@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} @@ -8109,6 +8426,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-string@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} @@ -8119,17 +8446,38 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-unicode@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-unicode@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-url@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} @@ -8141,6 +8489,17 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-url@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-normalize-whitespace@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} @@ -8151,6 +8510,16 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-normalize-whitespace@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-ordered-values@5.1.3(postcss@8.4.31): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} @@ -8162,6 +8531,17 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-ordered-values@5.1.3(postcss@8.4.33): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-reduce-idents@5.2.0(postcss@8.4.31): resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} engines: {node: ^10 || ^12 || >=14.0} @@ -8172,17 +8552,38 @@ packages: postcss-value-parser: 4.2.0 dev: false + /postcss-reduce-idents@5.2.0(postcss@8.4.33): + resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + /postcss-reduce-initial@5.1.2(postcss@8.4.31): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 caniuse-api: 3.0.0 postcss: 8.4.31 dev: false + /postcss-reduce-initial@5.1.2(postcss@8.4.33): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + caniuse-api: 3.0.0 + postcss: 8.4.33 + dev: false + /postcss-reduce-transforms@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} @@ -8193,8 +8594,18 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-reduce-transforms@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -8211,6 +8622,16 @@ packages: sort-css-media-queries: 2.1.0 dev: false + /postcss-sort-media-queries@4.4.1(postcss@8.4.33): + resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.4.16 + dependencies: + postcss: 8.4.33 + sort-css-media-queries: 2.1.0 + dev: false + /postcss-svgo@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} @@ -8222,6 +8643,17 @@ packages: svgo: 2.8.0 dev: false + /postcss-svgo@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false + /postcss-unique-selectors@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} @@ -8229,7 +8661,17 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 + dev: false + + /postcss-unique-selectors@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 dev: false /postcss-value-parser@4.2.0: @@ -8245,6 +8687,15 @@ packages: postcss: 8.4.31 dev: false + /postcss-zindex@5.1.0(postcss@8.4.33): + resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.33 + dev: false + /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -8254,6 +8705,15 @@ packages: source-map-js: 1.0.2 dev: false + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -8307,7 +8767,6 @@ packages: /property-information@6.4.0: resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} - dev: false /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -8414,7 +8873,7 @@ packages: dependencies: '@babel/code-frame': 7.23.5 address: 1.2.2 - browserslist: 4.22.1 + browserslist: 4.22.2 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 @@ -8466,7 +8925,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 @@ -8474,8 +8933,8 @@ packages: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - /react-helmet-async@2.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-SFvEqfhFpLr5xqU6fWFb8wjVPjOR4A5skkNVNN5gAr/QeHutfDe4m1Cdo521umTiFRAY8hDOcl4xJO8sXN1n2Q==} + /react-helmet-async@2.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yxjQMWposw+akRfvpl5+8xejl4JtUlHnEBcji6u8/e6oc7ozT+P9PNTWMhCbz2y9tc5zPegw2BvKjQA+NwdEjQ==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 @@ -8505,7 +8964,7 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) webpack: 5.89.0 dev: false @@ -8516,7 +8975,7 @@ packages: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 react: 18.2.0 react-router: 5.3.4(react@18.2.0) dev: false @@ -8526,7 +8985,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -8541,7 +9000,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -8616,13 +9075,13 @@ packages: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: false - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 dev: false /regexp.prototype.flags@1.5.1: @@ -8733,7 +9192,6 @@ packages: micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - dev: false /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -8744,7 +9202,6 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false /remark-rehype@11.0.0: resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} @@ -8754,7 +9211,6 @@ packages: mdast-util-to-hast: 13.0.2 unified: 11.0.4 vfile: 6.0.1 - dev: false /remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -8843,7 +9299,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.24.0 + terser: 5.26.0 dev: false /rollup@2.79.1: @@ -8865,7 +9321,7 @@ packages: dependencies: escalade: 3.1.1 picocolors: 1.0.0 - postcss: 8.4.31 + postcss: 8.4.33 strip-json-comments: 3.1.1 dev: false @@ -8946,8 +9402,8 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: false - /search-insights@2.11.0: - resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false /section-matter@1.0.0: @@ -8966,7 +9422,7 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} dependencies: - '@types/node-forge': 1.3.10 + '@types/node-forge': 1.3.11 node-forge: 1.3.1 dev: false @@ -9141,12 +9597,12 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false - /sirv@2.0.3: - resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.23 - mrmime: 1.0.1 + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 totalist: 3.0.1 dev: false @@ -9220,7 +9676,6 @@ packages: /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - dev: false /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -9236,7 +9691,6 @@ packages: /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -9288,8 +9742,8 @@ packages: engines: {node: '>= 0.8'} dev: false - /std-env@3.5.0: - resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: false /string-width@4.2.3: @@ -9366,7 +9820,6 @@ packages: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false /stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} @@ -9420,13 +9873,11 @@ packages: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 - dev: false - /style-to-object@1.0.4: - resolution: {integrity: sha512-KyNO6mfijxSnypdvEjeXlhvbGPSh0l1zBJp80n+ncBQvrEbSwBHwZCpo0xz6Q4AKSPfXowWwypCBAUAdfz3rFQ==} + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} dependencies: inline-style-parser: 0.2.2 - dev: false /stylehacks@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} @@ -9434,9 +9885,20 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 postcss: 8.4.31 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 + dev: false + + /stylehacks@5.1.1(postcss@8.4.33): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.22.2 + postcss: 8.4.33 + postcss-selector-parser: 6.0.15 dev: false /supports-color@5.5.0: @@ -9506,8 +9968,8 @@ packages: unique-string: 2.0.0 dev: false - /terser-webpack-plugin@5.3.9(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + /terser-webpack-plugin@5.3.10(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -9526,16 +9988,16 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.24.0 + terser: 5.26.0 webpack: 5.89.0 - /terser@5.24.0: - resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + /terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.2 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -9589,11 +10051,9 @@ packages: /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -9725,7 +10185,6 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 - dev: false /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} @@ -9745,39 +10204,33 @@ packages: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.2 - dev: false /unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: '@types/unist': 3.0.2 - dev: false /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.2 - dev: false /unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 - dev: false /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.2 - dev: false /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -9785,7 +10238,6 @@ packages: '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -9802,13 +10254,13 @@ packages: engines: {node: '>=4'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.1): + /update-browserslist-db@1.0.13(browserslist@4.22.2): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 @@ -9897,7 +10349,6 @@ packages: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false /vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} @@ -9905,7 +10356,6 @@ packages: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false /wait-on@7.2.0: resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} @@ -9952,8 +10402,8 @@ packages: hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.2 - acorn-walk: 8.3.0 + acorn: 8.11.3 + acorn-walk: 8.3.1 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -9962,7 +10412,7 @@ packages: is-plain-object: 5.0.0 opener: 1.5.2 picocolors: 1.0.0 - sirv: 2.0.3 + sirv: 2.0.4 ws: 7.5.9 transitivePeerDependencies: - bufferutil @@ -10004,7 +10454,7 @@ packages: '@types/sockjs': 0.3.36 '@types/ws': 8.5.10 ansi-html-community: 0.0.8 - bonjour-service: 1.1.1 + bonjour-service: 1.2.0 chokidar: 3.5.3 colorette: 2.0.20 compression: 1.7.4 @@ -10026,7 +10476,7 @@ packages: spdy: 4.0.2 webpack: 5.89.0 webpack-dev-middleware: 5.3.3(webpack@5.89.0) - ws: 8.14.2 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - debug @@ -10061,9 +10511,9 @@ packages: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) - browserslist: 4.22.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.4.1 @@ -10077,7 +10527,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -10094,7 +10544,7 @@ packages: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 - std-env: 3.5.0 + std-env: 3.7.0 webpack: 5.89.0 dev: false @@ -10173,31 +10623,28 @@ packages: /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - /workbox-background-sync@6.6.1: - resolution: {integrity: sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg==} - deprecated: this package has been deprecated + /workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} dependencies: idb: 7.1.1 - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-broadcast-update@6.6.1: - resolution: {integrity: sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ==} - deprecated: this package has been deprecated + /workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-build@6.6.1: - resolution: {integrity: sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw==} + /workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} engines: {node: '>=16.0.0'} - deprecated: this package has been deprecated dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.23.5 - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/runtime': 7.23.5 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.5)(rollup@2.79.1) + '@babel/core': 7.23.7 + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.7)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -10215,124 +10662,111 @@ packages: strip-comments: 2.0.1 tempy: 0.6.0 upath: 1.2.0 - workbox-background-sync: 6.6.1 - workbox-broadcast-update: 6.6.1 - workbox-cacheable-response: 6.6.1 - workbox-core: 6.6.1 - workbox-expiration: 6.6.1 - workbox-google-analytics: 6.6.1 - workbox-navigation-preload: 6.6.1 - workbox-precaching: 6.6.1 - workbox-range-requests: 6.6.1 - workbox-recipes: 6.6.1 - workbox-routing: 6.6.1 - workbox-strategies: 6.6.1 - workbox-streams: 6.6.1 - workbox-sw: 6.6.1 - workbox-window: 6.6.1 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: false - /workbox-cacheable-response@6.6.1: - resolution: {integrity: sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag==} - deprecated: workbox-background-sync@6.6.1 + /workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-core@6.6.1: - resolution: {integrity: sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw==} - deprecated: this package has been deprecated + /workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} dev: false - /workbox-expiration@6.6.1: - resolution: {integrity: sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A==} - deprecated: this package has been deprecated + /workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} dependencies: idb: 7.1.1 - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-google-analytics@6.6.1: - resolution: {integrity: sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA==} - deprecated: this package has been deprecated + /workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} dependencies: - workbox-background-sync: 6.6.1 - workbox-core: 6.6.1 - workbox-routing: 6.6.1 - workbox-strategies: 6.6.1 + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: false - /workbox-navigation-preload@6.6.1: - resolution: {integrity: sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA==} - deprecated: this package has been deprecated + /workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-precaching@6.6.1: - resolution: {integrity: sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A==} - deprecated: this package has been deprecated + /workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} dependencies: - workbox-core: 6.6.1 - workbox-routing: 6.6.1 - workbox-strategies: 6.6.1 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: false - /workbox-range-requests@6.6.1: - resolution: {integrity: sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g==} - deprecated: this package has been deprecated + /workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-recipes@6.6.1: - resolution: {integrity: sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g==} - deprecated: this package has been deprecated + /workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} dependencies: - workbox-cacheable-response: 6.6.1 - workbox-core: 6.6.1 - workbox-expiration: 6.6.1 - workbox-precaching: 6.6.1 - workbox-routing: 6.6.1 - workbox-strategies: 6.6.1 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: false - /workbox-routing@6.6.1: - resolution: {integrity: sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg==} - deprecated: this package has been deprecated + /workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-strategies@6.6.1: - resolution: {integrity: sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw==} - deprecated: this package has been deprecated + /workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} dependencies: - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false - /workbox-streams@6.6.1: - resolution: {integrity: sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q==} - deprecated: this package has been deprecated + /workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} dependencies: - workbox-core: 6.6.1 - workbox-routing: 6.6.1 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 dev: false - /workbox-sw@6.6.1: - resolution: {integrity: sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ==} - deprecated: this package has been deprecated + /workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} dev: false - /workbox-window@6.6.1: - resolution: {integrity: sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ==} - deprecated: this package has been deprecated + /workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} dependencies: '@types/trusted-types': 2.0.7 - workbox-core: 6.6.1 + workbox-core: 7.0.0 dev: false /wrap-ansi@8.1.0: @@ -10370,8 +10804,8 @@ packages: optional: true dev: false - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10420,4 +10854,3 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false From 51168fe8e09ffdc39104e8a741839cc69e39a851 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Sun, 7 Jan 2024 20:37:07 +0800 Subject: [PATCH 46/76] fix(route): Tradingview Blog (#14191) * fix(route): Tradingview Blog * fix: use tiny-async-pool --- lib/v2/tradingview/blog.js | 87 ++++++++++++++----- lib/v2/tradingview/maintainer.js | 2 +- lib/v2/tradingview/radar.js | 88 +++++++++++++++++++- lib/v2/tradingview/router.js | 2 +- lib/v2/tradingview/templates/description.art | 15 +++- website/docs/routes/program-update.mdx | 23 ++++- 6 files changed, 186 insertions(+), 31 deletions(-) diff --git a/lib/v2/tradingview/blog.js b/lib/v2/tradingview/blog.js index bbac1845f..2efb7889b 100644 --- a/lib/v2/tradingview/blog.js +++ b/lib/v2/tradingview/blog.js @@ -6,55 +6,98 @@ const { art } = require('@/utils/render'); const path = require('path'); module.exports = async (ctx) => { - const language = ctx.params.language ?? 'en'; + const { category = 'en' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 22; const rootUrl = 'https://www.tradingview.com'; - const currentUrl = `${rootUrl}/blog/${language}`; + const currentUrl = new URL(`blog/${category.endsWith('/') ? category : `${category}/`}`, rootUrl).href; - const response = await got({ - method: 'get', - url: currentUrl, - }); + const { data: response } = await got(currentUrl); - const $ = cheerio.load(response.data); + const $ = cheerio.load(response); - const list = $('.articles-grid-item a[rel="bookmark"]') - .slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 20) + const items = $('article[id]') + .slice(0, limit) .toArray() .map((item) => { item = $(item); + const title = item.find('div.title').text(); + return { - title: item.find('.title').text(), - link: item.attr('href'), - pubDate: parseDate(item.find('.date').text(), 'MMMM D, YYYY'), + title, + link: item.find('a.articles-grid-link').prop('href'), + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src: item + .find('div.articles-grid-img img') + .prop('src') + .replace(/-\d+x\d+\./, '.'), + alt: title, + }, + }), + category: item + .find('a.section') + .toArray() + .map((c) => $(c).text()), + guid: `tradingview-blog-${category}-${item.prop('id')}`, + pubDate: parseDate(item.find('div.date').text(), 'MMM D, YYYY'), }; }); - const items = []; - for await (const item of asyncPool(3, list, (item) => + for await (const item of asyncPool(3, items, (item) => ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); + const { data: detailResponse } = await got(item.link); - const content = cheerio.load(detailResponse.data); + const content = cheerio.load(detailResponse); + content('div.entry-content') + .find('img') + .each((_, e) => { + content(e).replaceWith( + art(path.join(__dirname, 'templates/description.art'), { + image: { + src: content(e) + .prop('src') + .replace(/-\d+x\d+\./, '.'), + width: content(e).prop('width'), + height: content(e).prop('height'), + }, + }) + ); + }); + + item.title = content('meta[property="og:title"]').prop('content'); item.description = art(path.join(__dirname, 'templates/description.art'), { - image: content('.single-img img').attr('src'), - description: content('.entry-content').html(), + image: { + src: content('meta[property="og:image"]').prop('content'), + alt: item.title, + }, + description: content('div.entry-content').html(), }); + item.author = content('meta[property="og:site_name"]').prop('content'); + item.category = content('div.sections a.section') + .toArray() + .map((c) => content(c).text()); + item.pubDate = parseDate(content('div.single-date').text(), 'MMM D, YYYY'); return item; }) )) { + items.shift(); items.push(item); } + const icon = new URL($('link[rel="icon"]').prop('href'), rootUrl).href; + ctx.state.data = { + item: items, title: $('title').text(), link: currentUrl, - item: items, + description: $('div.site-subtitle').text(), + language: $('html').prop('lang'), + icon, + logo: icon, + subtitle: $('h1.site-title').text(), }; }; diff --git a/lib/v2/tradingview/maintainer.js b/lib/v2/tradingview/maintainer.js index 8135e010a..cb9d37b3a 100644 --- a/lib/v2/tradingview/maintainer.js +++ b/lib/v2/tradingview/maintainer.js @@ -1,3 +1,3 @@ module.exports = { - '/blog/:language?': ['nczitzk'], + '/blog/:language?/category/:category?': ['nczitzk'], }; diff --git a/lib/v2/tradingview/radar.js b/lib/v2/tradingview/radar.js index 6dd935085..642caa3f6 100644 --- a/lib/v2/tradingview/radar.js +++ b/lib/v2/tradingview/radar.js @@ -5,8 +5,92 @@ module.exports = { { title: 'Blog', docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', - source: ['/blog/:language', '/'], - target: '/tradingview/blog', + source: ['/blog/:language/'], + target: '/tradingview/blog/:language/', + }, + { + title: 'Blog - Alerts', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/alerts/'], + target: '/tradingview/blog/:language/category/alerts', + }, + { + title: 'Blog - Bitcoin and Crypto', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/bitcoin-charts/'], + target: '/tradingview/blog/:language/category/bitcoin-charts', + }, + { + title: 'Blog - Business Updates', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/business-updates/'], + target: '/tradingview/blog/:language/category/business-updates', + }, + { + title: 'Blog - Charting', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/charts/'], + target: '/tradingview/blog/:language/category/charts', + }, + { + title: 'Blog - Charting Library', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/charting-library/'], + target: '/tradingview/blog/:language/category/charting-library', + }, + { + title: 'Blog - Data Feeds and Exchanges', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/data-feeds-exchanges/'], + target: '/tradingview/blog/:language/category/data-feeds-exchanges', + }, + { + title: 'Blog - Desktop', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/desktop/'], + target: '/tradingview/blog/:language/category/desktop', + }, + { + title: 'Blog - Market Analysis', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/market-analysis/'], + target: '/tradingview/blog/:language/category/market-analysis', + }, + { + title: 'Blog - Mobile', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/mobile/'], + target: '/tradingview/blog/:language/category/mobile', + }, + { + title: 'Blog - Pine Script®', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/pine/'], + target: '/tradingview/blog/:language/category/pine', + }, + { + title: 'Blog - Screener', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/stock-screener/'], + target: '/tradingview/blog/:language/category/stock-screener', + }, + { + title: 'Blog - Social', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/social/'], + target: '/tradingview/blog/:language/category/social', + }, + { + title: 'Blog - Trading and Brokerage', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/trading/'], + target: '/tradingview/blog/:language/category/trading', + }, + { + title: 'Blog - Widgets', + docs: 'https://docs.rsshub.app/routes/program-update#tradingview-blog', + source: ['/blog/:language/category/widgets/'], + target: '/tradingview/blog/:language/category/widgets', }, ], }, diff --git a/lib/v2/tradingview/router.js b/lib/v2/tradingview/router.js index fadb0f6b3..98bb22bf2 100644 --- a/lib/v2/tradingview/router.js +++ b/lib/v2/tradingview/router.js @@ -1,3 +1,3 @@ module.exports = function (router) { - router.get('/blog/:language?', require('./blog')); + router.get('/blog/:category*', require('./blog')); }; diff --git a/lib/v2/tradingview/templates/description.art b/lib/v2/tradingview/templates/description.art index c823516c9..a89e118b2 100644 --- a/lib/v2/tradingview/templates/description.art +++ b/lib/v2/tradingview/templates/description.art @@ -1,4 +1,13 @@ -{{ if image }} - +{{ if image?.src }} +
+ {{ image.alt }} +
{{ /if }} -{{@ description }} \ No newline at end of file + +{{ if description }} + {{@ description }} +{{ /if }} \ No newline at end of file diff --git a/website/docs/routes/program-update.mdx b/website/docs/routes/program-update.mdx index 506dae42b..ccf012212 100644 --- a/website/docs/routes/program-update.mdx +++ b/website/docs/routes/program-update.mdx @@ -570,8 +570,8 @@ Logseq 开发团队已经放弃了 [旧网站](https://logseq.com/blog)。 ### Blog {#tradingview-blog} - - Language + + #### Language | Id | Language | | -- | ------------------- | @@ -595,6 +595,25 @@ Logseq 开发团队已经放弃了 [旧网站](https://logseq.com/blog)。 | sv | Svenska | | ar | العربية | | il | Hebrew | + + #### Category + + | Category | ID | + | ---------------------------------------------------------------------------------------------- | ----------------------------- | + | [Alerts](https://www.tradingview.com/blog/en/category/alerts/) | category/alerts | + | [Bitcoin and Crypto](https://www.tradingview.com/blog/en/category/bitcoin-charts/) | category/bitcoin-charts | + | [Business Updates](https://www.tradingview.com/blog/en/category/business-updates/) | category/business-updates | + | [Charting](https://www.tradingview.com/blog/en/category/charts/) | category/charts | + | [Charting Library](https://www.tradingview.com/blog/en/category/charting-library/) | category/charting-library | + | [Data Feeds and Exchanges](https://www.tradingview.com/blog/en/category/data-feeds-exchanges/) | category/data-feeds-exchanges | + | [Desktop](https://www.tradingview.com/blog/en/category/desktop/) | category/desktop | + | [Market Analysis](https://www.tradingview.com/blog/en/category/market-analysis/) | category/market-analysis | + | [Mobile](https://www.tradingview.com/blog/en/category/mobile/) | category/mobile | + | [Pine Script®](https://www.tradingview.com/blog/en/category/pine/) | category/pine | + | [Screener](https://www.tradingview.com/blog/en/category/stock-screener/) | category/stock-screener | + | [Social](https://www.tradingview.com/blog/en/category/social/) | category/social | + | [Trading and Brokerage](https://www.tradingview.com/blog/en/category/trading/) | category/trading | + | [Widgets](https://www.tradingview.com/blog/en/category/widgets/) | category/widgets | ## Typora {#typora} From 86dfd066d4123827711f680724e9650d44bcb6f9 Mon Sep 17 00:00:00 2001 From: SUEPbot <114787369+SUEPbot@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:06:09 +0800 Subject: [PATCH 47/76] fix(route): fix shiep/jsjxy shiep/jwc (#14196) --- lib/v2/shiep/config.js | 4 ++-- lib/v2/shiep/index.js | 29 ++++++++++++++++------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/v2/shiep/config.js b/lib/v2/shiep/config.js index 8694d39a4..7051f3bd1 100644 --- a/lib/v2/shiep/config.js +++ b/lib/v2/shiep/config.js @@ -26,9 +26,9 @@ const config = { jjc: { title: '基建处', id: '327' }, jjxy: { title: '继续教育学院(国际教育学院)', id: '2582' }, jsjxfzzx: { title: '教师教学发展中心', id: '3909' }, - jsjxy: { title: '计算机科学与技术学院', id: 'xygg', listSelector: 'div.post-entry-2', pubDateSelector: 'span:nth-child(2)' }, + jsjxy: { title: '计算机科学与技术学院', id: 'xygg', listSelector: 'div.xylist', pubDateSelector: 'span:nth-child(2)' }, jszyzx: { title: '技术转移中心', id: '4247' }, - jwc: { title: '教务处', id: '227' }, + jwc: { title: '教务处', id: '227', listSelector: 'div.text-list li', pubDateSelector: 'span.time' }, jxfz: { title: '电力装备设计与制造虚拟仿真中心', id: '3330' }, kczx: { title: '能源电力科创中心', id: '3946' }, kyc: { title: '科研处/融合办', id: '834' }, diff --git a/lib/v2/shiep/index.js b/lib/v2/shiep/index.js index f189ddc90..044c4c41c 100644 --- a/lib/v2/shiep/index.js +++ b/lib/v2/shiep/index.js @@ -10,7 +10,13 @@ module.exports = async (ctx) => { const type = ctx.params.type; if (!Object.keys(config).includes(type)) { - throw Error('Invalid type'); + throw Error(`Invalid type: ${type}`); + } + + const { listSelector = '.list_item', pubDateSelector = '.Article_PublishDate', descriptionSelector = '.wp_articlecontent', title } = config[type]; + + if (!title) { + throw Error(`Invalid type: ${type}`); } const host = `https://${type}.shiep.edu.cn`; @@ -20,23 +26,21 @@ module.exports = async (ctx) => { const response = await got(link); const $ = cheerio.load(response.data); - const listSelector = config[type].listSelector || '.list_item'; - const pubDateSelector = config[type].pubDateSelector || '.Article_PublishDate'; - const descriptionSelector = config[type].descriptionSelector || '.wp_articlecontent'; - const list = $(listSelector) .toArray() - .filter((item) => { - const date = dayjs($(item).find(pubDateSelector).text().trim()); - return date.isValid(); - }) .map((item) => { item = $(item); + const pubDateText = item.find(pubDateSelector).text().trim(); + const match = pubDateText.match(/\b(\d{4}-\d{2}-\d{2})\b/); return { - title: item.find('a').attr('title') || item.find('a').text(), + title: item.find('a').attr('title') || item.find('h3').text() || item.find('a').text(), link: new URL(item.find('a').attr('href'), host).href, - pubDate: parseDate(item.find(pubDateSelector).text().trim(), 'YYYY-MM-DD'), + pubDate: match ? parseDate(match[0], 'YYYY-MM-DD') : null, }; + }) + .filter((item) => { + const date = dayjs(item.pubDate); + return date.isValid(); }); const items = await Promise.all( @@ -62,9 +66,8 @@ module.exports = async (ctx) => { ); ctx.state.data = { - title: '上海电力大学-' + config[type].title, + title: `上海电力大学-${title}`, link, - description: '上海电力大学-' + config[type].title, item: items, }; }; From 176341e95b7ef784c6183130cbfa80c1249191cf Mon Sep 17 00:00:00 2001 From: Manish Bhattarai Date: Sun, 7 Jan 2024 23:16:11 -0500 Subject: [PATCH 48/76] docs: change html example to use items variable instead of item (#14205) * change html example to use items variable instead of item The existing example for HTML retrieval uses 'item' variable on item retrieval, but the final rss output uses the 'items' variable. This results in undefined variable for anyone who directly uses the example code. * docs: fix cn docs too --------- --- website/docs/joinus/new-rss/start-code.md | 4 ++-- .../current/joinus/new-rss/start-code.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/docs/joinus/new-rss/start-code.md b/website/docs/joinus/new-rss/start-code.md index 6f9061d0b..525c3cfea 100644 --- a/website/docs/joinus/new-rss/start-code.md +++ b/website/docs/joinus/new-rss/start-code.md @@ -320,7 +320,7 @@ Next, we'll use Cheerio selectors to select the relevant HTML elements, parse th // We use a Cheerio selector to select all 'div' elements with the class name 'js-navigation-container' // that contain child elements with the class name 'flex-auto'. // highlight-start - const item = $('div.js-navigation-container .flex-auto') + const items = $('div.js-navigation-container .flex-auto') // We use the `toArray()` method to retrieve all the DOM elements selected as an array. .toArray() // We use the `map()` method to traverse the array and parse the data we need from each element. @@ -366,7 +366,7 @@ module.exports = async (ctx) => { const { data: response } = await got(`${baseUrl}/${user}/${repo}/issues`); const $ = cheerio.load(response); - const item = $('div.js-navigation-container .flex-auto') + const items = $('div.js-navigation-container .flex-auto') .toArray() .map((item) => { item = $(item); diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/joinus/new-rss/start-code.md b/website/i18n/zh/docusaurus-plugin-content-docs/current/joinus/new-rss/start-code.md index eec52ca0c..ff1334426 100644 --- a/website/i18n/zh/docusaurus-plugin-content-docs/current/joinus/new-rss/start-code.md +++ b/website/i18n/zh/docusaurus-plugin-content-docs/current/joinus/new-rss/start-code.md @@ -317,7 +317,7 @@ module.exports = async (ctx) => { // 我们使用 Cheerio 选择器选择所有带类名“js-navigation-container”的“div”元素, // 其中包含带类名“flex-auto”的子元素。 // highlight-start - const item = $('div.js-navigation-container .flex-auto') + const items = $('div.js-navigation-container .flex-auto') // 使用“toArray()”方法将选择的所有 DOM 元素以数组的形式返回。 .toArray() // 使用“map()”方法遍历数组,并从每个元素中解析需要的数据。 @@ -363,7 +363,7 @@ module.exports = async (ctx) => { const { data: response } = await got(`${baseUrl}/${user}/${repo}/issues`); const $ = cheerio.load(response); - const item = $('div.js-navigation-container .flex-auto') + const items = $('div.js-navigation-container .flex-auto') .toArray() .map((item) => { item = $(item); From 64d87889decc60586df594dd6cb08eb04ea49fe2 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:22:35 +0800 Subject: [PATCH 49/76] =?UTF-8?q?feat(route):=20add=20=E4=B8=AD=E5=8D=8E?= =?UTF-8?q?=E5=85=A8=E5=9B=BD=E4=B8=93=E5=88=A9=E4=BB=A3=E7=90=86=E5=B8=88?= =?UTF-8?q?=E5=8D=8F=E4=BC=9A=20(#14197)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/v2/acpaa/index.js | 57 +++++++++++++++++++++++++++++++++++ lib/v2/acpaa/maintainer.js | 3 ++ lib/v2/acpaa/radar.js | 19 ++++++++++++ lib/v2/acpaa/router.js | 3 ++ website/docs/routes/other.mdx | 6 ++++ 5 files changed, 88 insertions(+) create mode 100644 lib/v2/acpaa/index.js create mode 100644 lib/v2/acpaa/maintainer.js create mode 100644 lib/v2/acpaa/radar.js create mode 100644 lib/v2/acpaa/router.js diff --git a/lib/v2/acpaa/index.js b/lib/v2/acpaa/index.js new file mode 100644 index 000000000..6a96add20 --- /dev/null +++ b/lib/v2/acpaa/index.js @@ -0,0 +1,57 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { id = '1', name = '重要通知' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 30; + + const rootUrl = 'http://www.acpaa.cn'; + const currentUrl = new URL(`article/taglist.jhtml?tagIds=${id}&tagname=${name}`, rootUrl).href; + + const { data: response } = await got(currentUrl); + + const $ = cheerio.load(response); + + let items = $('div.text01 ul li a[title]') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + + return { + title: item.prop('title'), + link: new URL(item.prop('href'), rootUrl).href, + pubDate: timezone(parseDate(item.find('span[title]').prop('title')), +8), + }; + }); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + item.title = content('div.xhjj_head01').text(); + item.description = content('div.text01').html(); + + return item; + }) + ) + ); + + const author = $('title').text().replace(/-/g, ''); + const subtitle = $('span.myTitle').text().trim(); + + ctx.state.data = { + item: items, + title: `${author} - ${subtitle}`, + link: currentUrl, + description: $('meta[property="og:description"]').prop('content'), + language: 'zh', + subtitle, + author, + }; +}; diff --git a/lib/v2/acpaa/maintainer.js b/lib/v2/acpaa/maintainer.js new file mode 100644 index 000000000..de07fba0f --- /dev/null +++ b/lib/v2/acpaa/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:id?/:name?': ['nczitzk'], +}; diff --git a/lib/v2/acpaa/radar.js b/lib/v2/acpaa/radar.js new file mode 100644 index 000000000..3be0bb419 --- /dev/null +++ b/lib/v2/acpaa/radar.js @@ -0,0 +1,19 @@ +module.exports = { + 'acpaa.cn': { + _name: '中华全国专利代理师协会', + '.': [ + { + title: '文章', + docs: 'https://docs.rsshub.app/routes/other#zhong-hua-quan-guo-zhuan-li-dai-li-shi-xie-hui', + source: ['/article/taglist.jhtml'], + target: (url) => { + url = new URL(url); + const id = url.searchParams.get('id'); + const name = url.searchParams.get('name'); + + return `/acpaa${id ? `/${id}${name ? `/${name}` : ''}` : ''}`; + }, + }, + ], + }, +}; diff --git a/lib/v2/acpaa/router.js b/lib/v2/acpaa/router.js new file mode 100644 index 000000000..b9338560b --- /dev/null +++ b/lib/v2/acpaa/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:id?/:name?', require('./')); +}; diff --git a/website/docs/routes/other.mdx b/website/docs/routes/other.mdx index 42aeebd69..273321b10 100644 --- a/website/docs/routes/other.mdx +++ b/website/docs/routes/other.mdx @@ -1065,6 +1065,12 @@ Specify options (in the format of query string) in parameter `routeParams` param | short | zs | xh | xc | xhmr | xhmc | xcmr | xcmc | +## 中华全国专利代理师协会 {#zhong-hua-quan-guo-zhuan-li-dai-li-shi-xie-hui} + +### 标签 {#zhong-hua-quan-guo-zhuan-li-dai-li-shi-xie-hui-biao-qian} + + + ## はてな {#%E3%81%AF%E3%81%A6%E3%81%AA} ### はてな匿名ダイアリー - 人気記事アーカイブ {#%E3%81%AF%E3%81%A6%E3%81%AA-%E3%81%AF%E3%81%A6%E3%81%AA-ni-ming-%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AA%E3%83%BC-ren-qi-ji-shi-%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%96} From acf59ee40edbd208c73d57a77222a3a90dec3a6b Mon Sep 17 00:00:00 2001 From: Jebbs Date: Mon, 8 Jan 2024 12:49:17 +0800 Subject: [PATCH 50/76] fix: zhihu timeline (#14169) * fix zhihu timeline * deal with content in an array * adopt content_html if exists --- lib/v2/zhihu/timeline.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/v2/zhihu/timeline.js b/lib/v2/zhihu/timeline.js index ed648dc19..67162a370 100644 --- a/lib/v2/zhihu/timeline.js +++ b/lib/v2/zhihu/timeline.js @@ -53,13 +53,28 @@ module.exports = async (ctx) => { return actors.map((e) => e.name).join(', '); }; + const getContent = (content) => { + if (!content || !Array.isArray(content)) { + return content; + } + // content can be a string or an array of objects + return ( + content + .map((e) => e.content) + .filter((e) => e instanceof String && !!e) + // some content may not be wrapped in tag, it will cause error when parsing + .map((e) => `
${e}
`) + .join('') + ); + }; + const buildItem = (e) => { if (!e || !e.target) { return {}; } return { title: `${e.action_text_tpl.replace('{}', buildActors(e))}: ${getOne([e.target.title, e.target.question ? e.target.question.title : ''])}`, - description: utils.ProcessImage(getOne([e.target.content, e.target.detail, e.target.excerpt, ''])), + description: utils.ProcessImage(`
${getOne([e.target.content_html, getContent(e.target.content), e.target.detail, e.target.excerpt, ''])}
`), pubDate: parseDate(e.updated_time * 1000), link: buildLink(e), author: e.target.author ? e.target.author.name : '', From c626f8ccde9944284812f0e8100f078cb838bd86 Mon Sep 17 00:00:00 2001 From: Nano Date: Mon, 8 Jan 2024 13:48:20 +0800 Subject: [PATCH 51/76] =?UTF-8?q?fix(route):=20=E5=A4=84=E7=90=86=E5=A4=A7?= =?UTF-8?q?=E9=BA=A6=E7=BD=91=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E6=83=85=E5=86=B5=20(#14203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(route): 处理大麦网查询结果为空的情况 * refactor: migrate to v2 --------- --- lib/router.js | 2 +- lib/routes/damai/activity.js | 28 ------------------ lib/v2/damai/activity.js | 44 +++++++++++++++++++++++++++++ lib/v2/damai/maintainer.js | 3 ++ lib/v2/damai/radar.js | 13 +++++++++ lib/v2/damai/router.js | 3 ++ lib/v2/damai/templates/activity.art | 5 ++++ website/docs/routes/shopping.mdx | 2 +- 8 files changed, 70 insertions(+), 30 deletions(-) delete mode 100644 lib/routes/damai/activity.js create mode 100644 lib/v2/damai/activity.js create mode 100644 lib/v2/damai/maintainer.js create mode 100644 lib/v2/damai/radar.js create mode 100644 lib/v2/damai/router.js create mode 100644 lib/v2/damai/templates/activity.art diff --git a/lib/router.js b/lib/router.js index 9ba588b47..a5a00f7c9 100644 --- a/lib/router.js +++ b/lib/router.js @@ -911,7 +911,7 @@ router.get('/4gamers/tag/:tag', lazyloadRouteHandler('./routes/4gamers/tag')); router.get('/4gamers/topic/:topic', lazyloadRouteHandler('./routes/4gamers/topic')); // 大麦网 -router.get('/damai/activity/:city/:category/:subcategory/:keyword?', lazyloadRouteHandler('./routes/damai/activity')); +// router.get('/damai/activity/:city/:category/:subcategory/:keyword?', lazyloadRouteHandler('./routes/damai/activity')); // 桂林电子科技大学新闻资讯 router.get('/guet/xwzx/:type?', lazyloadRouteHandler('./routes/guet/news')); diff --git a/lib/routes/damai/activity.js b/lib/routes/damai/activity.js deleted file mode 100644 index f20245c46..000000000 --- a/lib/routes/damai/activity.js +++ /dev/null @@ -1,28 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const city = ctx.params.city === '全部' ? '' : ctx.params.city; - const category = ctx.params.category === '全部' ? '' : ctx.params.category; - const subcategory = ctx.params.subcategory === '全部' ? '' : ctx.params.subcategory; - const keyword = ctx.params.keyword ? ctx.params.keyword : ''; - - const url = `https://search.damai.cn/searchajax.html?keyword=${encodeURIComponent(keyword)}&cty=${encodeURIComponent(city)}&ctl=${encodeURIComponent(category)}&sctl=${encodeURIComponent( - subcategory - )}&tsg=0&st=&et=&order=3&pageSize=30&currPage=1&tn=`; - - const response = await got.get(url); - const data = response.data; - const list = data.pageData.resultData; - - ctx.state.data = { - title: `大麦网票务 - ${city ? city : '全国'} - ${category ? category : '全部分类'}${subcategory ? ' - ' + subcategory : ''}${keyword ? ' - ' + keyword : ''}`, - link: 'https://search.damai.cn/search.htm', - item: list.map((item) => ({ - title: item.nameNoHtml, - author: item.actors ? item.actors.replace(/<[^<>]*>/, '') : '大麦网', - description: `

${item.description}

地点:${item.venuecity} | ${item.venue}

时间:${item.showtime}

票价:${item.price_str}

`, - pubDate: new Date(), - link: `https://detail.damai.cn/item.htm?id=${item.projectid}`, - })), - }; -}; diff --git a/lib/v2/damai/activity.js b/lib/v2/damai/activity.js new file mode 100644 index 000000000..bc6bb8ea9 --- /dev/null +++ b/lib/v2/damai/activity.js @@ -0,0 +1,44 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { art } = require('@/utils/render'); +const { join } = require('path'); + +module.exports = async (ctx) => { + const city = ctx.params.city === '全部' ? '' : ctx.params.city; + const category = ctx.params.category === '全部' ? '' : ctx.params.category; + const subcategory = ctx.params.subcategory === '全部' ? '' : ctx.params.subcategory; + const keyword = ctx.params.keyword ? ctx.params.keyword : ''; + + const url = 'https://search.damai.cn/searchajax.html'; + + const response = await got(url, { + searchParams: { + keyword, + cty: city, + ctl: category, + sctl: subcategory, + tsg: 0, + st: '', + et: '', + order: 3, + pageSize: 30, + currPage: 1, + tn: '', + }, + }); + const data = response.data; + const list = data.pageData.resultData || []; + + ctx.state.data = { + title: `大麦网票务 - ${city || '全国'} - ${category || '全部分类'}${subcategory ? ' - ' + subcategory : ''}${keyword ? ' - ' + keyword : ''}`, + link: 'https://search.damai.cn/search.htm', + item: list.map((item) => ({ + title: item.nameNoHtml, + author: item.actors ? cheerio.load(item.actors, null, false).text() : '大麦网', + description: art(join(__dirname, 'templates/activity.art'), { + item, + }), + link: `https://detail.damai.cn/item.htm?id=${item.projectid}`, + })), + }; +}; diff --git a/lib/v2/damai/maintainer.js b/lib/v2/damai/maintainer.js new file mode 100644 index 000000000..1e5144889 --- /dev/null +++ b/lib/v2/damai/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/activity/:city/:category/:subcategory/:keyword?': ['hoilc'], +}; diff --git a/lib/v2/damai/radar.js b/lib/v2/damai/radar.js new file mode 100644 index 000000000..bd47baad7 --- /dev/null +++ b/lib/v2/damai/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'damai.cn': { + _name: '大麦网', + search: [ + { + title: '票务更新', + docs: 'https://docs.rsshub.app/routes/shopping#da-mai-wang', + source: ['/search.html'], + target: (_params, url) => `/damai/activity/全部/全部/全部/${new URL(url).searchParams.get('keyword') || ''}`, + }, + ], + }, +}; diff --git a/lib/v2/damai/router.js b/lib/v2/damai/router.js new file mode 100644 index 000000000..98e08502e --- /dev/null +++ b/lib/v2/damai/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/activity/:city/:category/:subcategory/:keyword?', require('./activity')); +}; diff --git a/lib/v2/damai/templates/activity.art b/lib/v2/damai/templates/activity.art new file mode 100644 index 000000000..5e0e359c5 --- /dev/null +++ b/lib/v2/damai/templates/activity.art @@ -0,0 +1,5 @@ + +

{{@ item.description }}

+

地点:{{ item.venuecity }} | {{ item.venue }}

+

时间:{{ item.showtime }}

+

票价:{{ item.price_str }}

diff --git a/website/docs/routes/shopping.mdx b/website/docs/routes/shopping.mdx index 749e0a035..767cdd6bc 100644 --- a/website/docs/routes/shopping.mdx +++ b/website/docs/routes/shopping.mdx @@ -239,7 +239,7 @@ For instance, in `https://www.zagg.com/en_us/new-arrivals?brand=164&cat=3038%2C3 ### 票务更新 {#da-mai-wang-piao-wu-geng-xin} - + 城市、分类名、子分类名,请参见[大麦网搜索页面](https://search.damai.cn/search.htm) From 6a3a89ff82a73400d8e2642fa74df5395a2e1d3a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:06:44 +0000 Subject: [PATCH 52/76] chore(deps): bump @tonyrl/rand-user-agent from 2.0.44 to 2.0.45 (#14208) * chore(deps): bump @tonyrl/rand-user-agent from 2.0.44 to 2.0.45 Bumps [@tonyrl/rand-user-agent](https://github.com/TonyRL/rand-user-agent) from 2.0.44 to 2.0.45. - [Release notes](https://github.com/TonyRL/rand-user-agent/releases) - [Commits](https://github.com/TonyRL/rand-user-agent/compare/v2.0.44...v2.0.45) --- updated-dependencies: - dependency-name: "@tonyrl/rand-user-agent" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4f0d56403..0228a7fec 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@notionhq/client": "2.2.14", "@postlight/parser": "2.2.3", "@sentry/node": "7.92.0", - "@tonyrl/rand-user-agent": "2.0.44", + "@tonyrl/rand-user-agent": "2.0.45", "aes-js": "3.1.2", "art-template": "4.13.2", "bbcodejs": "0.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e2563fcde..5f9e2b653 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: 7.92.0 version: 7.92.0 '@tonyrl/rand-user-agent': - specifier: 2.0.44 - version: 2.0.44 + specifier: 2.0.45 + version: 2.0.45 aes-js: specifier: 3.1.2 version: 3.1.2 @@ -1357,8 +1357,8 @@ packages: defer-to-connect: 2.0.1 dev: false - /@tonyrl/rand-user-agent@2.0.44: - resolution: {integrity: sha512-m+186oR7dSKjbOcQYW7twY/uLrstr4zi69FI0bqOjiyoKPuRkXgI5VWQss2VNACKn18trI0qtqbO+6B+UJqbMQ==} + /@tonyrl/rand-user-agent@2.0.45: + resolution: {integrity: sha512-7G3VVt+7VHo3ifY+ztvbA9IO2kJyo2HjasKfiYwcVP38ENnQ980Xh6Aw5vl3+gQ6AWck03fDqNJbiEp74pikxA==} engines: {node: '>=14.16'} dev: false From c5b9f06b65e017cdff549fece502acef4590f5ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:16:04 +0000 Subject: [PATCH 53/76] chore(deps): bump jsdom from 23.1.0 to 23.2.0 (#14209) * chore(deps): bump jsdom from 23.1.0 to 23.2.0 Bumps [jsdom](https://github.com/jsdom/jsdom) from 23.1.0 to 23.2.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/23.1.0...23.2.0) --- updated-dependencies: - dependency-name: jsdom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 0228a7fec..1a4e368ba 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "ioredis": "5.3.2", "ip-regex": "4.3.0", "is-localhost-ip": "2.0.0", - "jsdom": "23.1.0", + "jsdom": "23.2.0", "json-bigint": "1.0.0", "json5": "2.2.3", "jsrsasign": "10.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f9e2b653..1406e4f24 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,8 +93,8 @@ dependencies: specifier: 2.0.0 version: 2.0.0 jsdom: - specifier: 23.1.0 - version: 23.1.0 + specifier: 23.2.0 + version: 23.2.0 json-bigint: specifier: 1.0.0 version: 1.0.0 @@ -413,6 +413,14 @@ packages: '@jridgewell/trace-mapping': 0.3.19 dev: true + /@asamuzakjp/dom-selector@2.0.1: + resolution: {integrity: sha512-QJAJffmCiymkv6YyQ7voyQb5caCth6jzZsQncYCpHXrJ7RqdYG5y43+is8mnFcYubdOkr7cn1+na9BdFMxqw7w==} + dependencies: + bidi-js: 1.0.3 + css-tree: 2.3.1 + is-potential-custom-element-name: 1.0.1 + dev: false + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -2226,6 +2234,12 @@ packages: dependencies: tweetnacl: 0.14.5 + /bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + dependencies: + require-from-string: 2.0.2 + dev: false + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} @@ -2861,6 +2875,14 @@ packages: nth-check: 2.1.1 dev: false + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: false + /css-what@2.1.3: resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} dev: false @@ -5247,8 +5269,8 @@ packages: engines: {node: '>=0.1.90'} dev: true - /jsdom@23.1.0: - resolution: {integrity: sha512-wRscu8dBFxi7O65Cvi0jFRDv0Qa7XEHPix8Qg/vlXHLAMQsRWV1EDeQHBermzXf4Dt7JtFgBLbva3iTcBZDXEQ==} + /jsdom@23.2.0: + resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -5256,6 +5278,7 @@ packages: canvas: optional: true dependencies: + '@asamuzakjp/dom-selector': 2.0.1 cssstyle: 4.0.1 data-urls: 5.0.0 decimal.js: 10.4.3 @@ -5264,7 +5287,6 @@ packages: http-proxy-agent: 7.0.0 https-proxy-agent: 7.0.2 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 @@ -6066,6 +6088,10 @@ packages: '@types/mdast': 4.0.3 dev: true + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false + /mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: false @@ -6939,10 +6965,6 @@ packages: boolbase: 1.0.0 dev: false - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: false - /oauth-1.0a@2.2.6: resolution: {integrity: sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==} dev: false @@ -7887,6 +7909,11 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: false @@ -8203,6 +8230,11 @@ packages: atomic-sleep: 1.0.0 dev: false + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: From 377dd9f2c78bfddb94d08610bc8b60feb26eee30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:38:50 +0000 Subject: [PATCH 54/76] chore(deps-dev): bump @types/react from 18.2.46 to 18.2.47 in /website (#14210) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.46 to 18.2.47. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" 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> --- website/package.json | 2 +- website/pnpm-lock.yaml | 54 +++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/website/package.json b/website/package.json index 853ce3d2d..c9b01ead8 100644 --- a/website/package.json +++ b/website/package.json @@ -36,7 +36,7 @@ "@docusaurus/types": "3.1.0", "@types/markdown-it": "^13.0.7", "@types/mdx-js__react": "^1.5.8", - "@types/react": "^18.2.46", + "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "typescript": "^5.3.3" }, diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index c499923de..1dda6f60e 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -19,10 +19,10 @@ dependencies: version: 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': specifier: 3.1.0 - version: 3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + version: 3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.46)(react@18.2.0) + version: 3.0.0(@types/react@18.2.47)(react@18.2.0) clsx: specifier: ^2.1.0 version: 2.1.0 @@ -62,8 +62,8 @@ devDependencies: specifier: ^1.5.8 version: 1.5.8 '@types/react': - specifier: ^18.2.46 - version: 18.2.46 + specifier: ^18.2.47 + version: 18.2.47 '@types/react-dom': specifier: ^18.2.18 version: 18.2.18 @@ -1641,7 +1641,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1661,7 +1661,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.46 + '@types/react': 18.2.47 algoliasearch: 4.22.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2001,7 +2001,7 @@ packages: '@docusaurus/react-loadable': 5.5.2(react@18.2.0) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 18.2.0 @@ -2393,7 +2393,7 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/preset-classic@3.1.0(@algolia/client-search@4.22.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ==} engines: {node: '>=18.0'} peerDependencies: @@ -2409,9 +2409,9 @@ packages: '@docusaurus/plugin-google-gtag': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-google-tag-manager': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-sitemap': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.1.0(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.1.0(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-common': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@docusaurus/types': 3.1.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2442,11 +2442,11 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.46 + '@types/react': 18.2.47 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.1.0(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-classic@3.1.0(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw==} engines: {node: '>=18.0'} peerDependencies: @@ -2465,7 +2465,7 @@ packages: '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) '@docusaurus/utils-validation': 3.1.0(@docusaurus/types@3.1.0) - '@mdx-js/react': 3.0.0(@types/react@18.2.46)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.47)(react@18.2.0) clsx: 2.1.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -2515,7 +2515,7 @@ packages: '@docusaurus/utils': 3.1.0(@docusaurus/types@3.1.0) '@docusaurus/utils-common': 3.1.0(@docusaurus/types@3.1.0) '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 '@types/react-router-config': 5.0.11 clsx: 2.1.0 parse-numeric-range: 1.3.0 @@ -2544,14 +2544,14 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/theme-search-algolia@3.1.0(@algolia/client-search@4.22.0)(@docusaurus/types@3.1.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docusaurus/core': 3.1.0(@docusaurus/types@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.1.0 '@docusaurus/plugin-content-docs': 3.1.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) @@ -2611,7 +2611,7 @@ packages: react-dom: ^18.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -2635,7 +2635,7 @@ packages: dependencies: '@mdx-js/mdx': 3.0.0 '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -2874,14 +2874,14 @@ packages: transitivePeerDependencies: - supports-color - /@mdx-js/react@3.0.0(@types/react@18.2.46)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.47)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.9 - '@types/react': 18.2.46 + '@types/react': 18.2.47 react: 18.2.0 dev: false @@ -3351,7 +3351,7 @@ packages: /@types/mdx-js__react@1.5.8: resolution: {integrity: sha512-iLQL8JZ4AZ+rpZvGUsQwENffpsSCMLYB8kE6OhGasLmdYn7aSLq53uOvZrKx5FM+hymE2nm08HDfq7tFx02ElA==} dependencies: - '@types/react': 18.2.46 + '@types/react': 18.2.47 dev: true /@types/mdx@2.0.10: @@ -3409,31 +3409,31 @@ packages: /@types/react-dom@18.2.18: resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} dependencies: - '@types/react': 18.2.46 + '@types/react': 18.2.47 dev: true /@types/react-router-config@5.0.11: resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.46 + '@types/react': 18.2.47 - /@types/react@18.2.46: - resolution: {integrity: sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==} + /@types/react@18.2.47: + resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==} dependencies: '@types/prop-types': 15.7.9 '@types/scheduler': 0.16.5 From 413c97a0cf95fe616523d4fc7969854ca9c4fe71 Mon Sep 17 00:00:00 2001 From: Damian Kaczmarczyk Date: Tue, 9 Jan 2024 16:40:40 +0100 Subject: [PATCH 55/76] feat(route): Add Onet (#14200) * feat(route): Add Onet * use arrow function in `router.js` * Update lib/v2/onet/templates/article.art * Update lib/v2/onet/templates/image.art * Update lib/v2/onet/maintainer.js * Update website/docs/routes/new-media.mdx --------- --- lib/v2/onet/maintainer.js | 3 ++ lib/v2/onet/news.js | 56 +++++++++++++++++++++++++++++++ lib/v2/onet/radar.js | 13 +++++++ lib/v2/onet/router.js | 3 ++ lib/v2/onet/templates/article.art | 5 +++ lib/v2/onet/templates/image.art | 9 +++++ lib/v2/onet/utils.js | 51 ++++++++++++++++++++++++++++ website/docs/routes/new-media.mdx | 8 +++++ 8 files changed, 148 insertions(+) create mode 100644 lib/v2/onet/maintainer.js create mode 100644 lib/v2/onet/news.js create mode 100644 lib/v2/onet/radar.js create mode 100644 lib/v2/onet/router.js create mode 100644 lib/v2/onet/templates/article.art create mode 100644 lib/v2/onet/templates/image.art create mode 100644 lib/v2/onet/utils.js diff --git a/lib/v2/onet/maintainer.js b/lib/v2/onet/maintainer.js new file mode 100644 index 000000000..8a1875e34 --- /dev/null +++ b/lib/v2/onet/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/news': ['Vegann'], +}; diff --git a/lib/v2/onet/news.js b/lib/v2/onet/news.js new file mode 100644 index 000000000..225e146a7 --- /dev/null +++ b/lib/v2/onet/news.js @@ -0,0 +1,56 @@ +const parser = require('@/utils/rss-parser'); +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); +const { parseArticleContent, parseMainImage } = require('./utils'); + +module.exports = async (ctx) => { + const rssUrl = 'https://wiadomosci.onet.pl/.feed'; + const feed = await parser.parseURL(rssUrl); + const items = await Promise.all( + feed.items.map(async (item) => { + const { description, author, category } = await ctx.cache.tryGet(item.link, async () => { + const { data: response } = await got(item.link, { + headers: { + referer: 'https://www.onet.pl/', // for some reason onet.pl will redirect to the main page if referer is not set + }, + }); + + const $ = cheerio.load(response); + const content = parseArticleContent($); + + const mainImage = parseMainImage($); + + const description = art(path.join(__dirname, 'templates/article.art'), { + mainImage, + lead: $('#lead').text()?.trim(), + content: content.html()?.trim(), + }); + + const author = $('.authorNameWrapper span[itemprop="name"]').text()?.trim(); + const category = $('span.relatedTopic').text()?.trim(); + + return { description, author, category }; + }); + return { + title: item.title, + link: item.link, + description, + author, + category, + pubDate: parseDate(item.pubDate), + guid: item.id, + }; + }) + ); + ctx.state.data = { + title: feed.title, + link: feed.link, + description: feed.title, + item: items, + language: 'pl', + image: 'https://ocdn.eu/wiadomosciucs/static/logo2017/onet2017big_dark.png', + }; +}; diff --git a/lib/v2/onet/radar.js b/lib/v2/onet/radar.js new file mode 100644 index 000000000..f29d2f6b0 --- /dev/null +++ b/lib/v2/onet/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'onet.pl': { + _name: 'Onet', + wiadomosci: [ + { + title: 'News', + docs: 'https://docs.rsshub.app/routes/new-media#onet', + source: '/', + target: '/onet/news', + }, + ], + }, +}; diff --git a/lib/v2/onet/router.js b/lib/v2/onet/router.js new file mode 100644 index 000000000..630036b8e --- /dev/null +++ b/lib/v2/onet/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/news', require('./news')); +}; diff --git a/lib/v2/onet/templates/article.art b/lib/v2/onet/templates/article.art new file mode 100644 index 000000000..36ed5db53 --- /dev/null +++ b/lib/v2/onet/templates/article.art @@ -0,0 +1,5 @@ +{{if lead }} +

{{ lead }}

+{{/if}} +{{@ mainImage }} +{{@ content }} diff --git a/lib/v2/onet/templates/image.art b/lib/v2/onet/templates/image.art new file mode 100644 index 000000000..a4a8c8724 --- /dev/null +++ b/lib/v2/onet/templates/image.art @@ -0,0 +1,9 @@ +
+ {{ alt }} + + {{if caption }} + {{ caption }} - + {{/if}} + {{ author }} + +
diff --git a/lib/v2/onet/utils.js b/lib/v2/onet/utils.js new file mode 100644 index 000000000..af8a9a814 --- /dev/null +++ b/lib/v2/onet/utils.js @@ -0,0 +1,51 @@ +const { art } = require('@/utils/render'); +const path = require('path'); + +const parseMainImage = ($) => { + const mainImage = $('figure.mainPhoto'); + const img = mainImage.find('img'); + const author = mainImage.find('span.copyright'); + const caption = mainImage.find('span.imageDescription'); + + return art(path.join(__dirname, 'templates/image.art'), { + url: img.attr('src'), + alt: img.attr('alt')?.trim(), + author: author.text()?.trim(), + caption: caption.text()?.trim(), + }); +}; + +const parseArticleContent = ($) => { + const content = $('[itemprop="articleBody"]'); + $('*') + .contents() + .filter(function () { + return this.nodeType === 8; + }) + .remove(); + content.find('aside').remove(); + content.find('.videoPlayerContainer').remove(); + content.find('.pulsevideo').remove(); + content.find('.adsContainer').remove(); + content.find('.placeholder').remove(); + content.find('.contentPremium').removeAttr('style'); + content.find('div.image').each((i, el) => { + const img = $(el).find('img'); + const author = $(el).find('span.author'); + const caption = $(el).find('span.caption'); + const html = art(path.join(__dirname, 'templates/image.art'), { + url: img.attr('src'), + alt: img.attr('alt')?.trim(), + caption: caption.text()?.trim(), + author: author.text()?.trim(), + }); + + $(el).replaceWith(html); + }); + + return content; +}; +module.exports = { + parseArticleContent, + parseMainImage, +}; diff --git a/website/docs/routes/new-media.mdx b/website/docs/routes/new-media.mdx index 02fd7947f..e0c42d38c 100644 --- a/website/docs/routes/new-media.mdx +++ b/website/docs/routes/new-media.mdx @@ -1107,6 +1107,14 @@ +## Onet {#onet} + +### News {#onet-news} + + + This route provides a better reading experience (full text articles) over the official one for `https://wiadomosci.onet.pl`. + + ## OpenAI {#openai} ### Blog {#openai-blog} From 5348812899c29eeced8306d43887c0d7bde5f242 Mon Sep 17 00:00:00 2001 From: CrackTC Date: Wed, 10 Jan 2024 00:06:14 +0800 Subject: [PATCH 56/76] fix(route): saraba1st digest image (#14206) * fix saraba1st digest image * add missing semicolon --- lib/v2/saraba1st/digest.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/v2/saraba1st/digest.js b/lib/v2/saraba1st/digest.js index 07e4f3ab5..286549b0e 100644 --- a/lib/v2/saraba1st/digest.js +++ b/lib/v2/saraba1st/digest.js @@ -75,5 +75,17 @@ async function fetchContent(url) { } }); + stubS.find('img').each(function () { + const img = subind(this); + const file = img.attr('file'); + if (file) { + img.attr('src', file); + img.removeAttr('zoomfile'); + img.removeAttr('file'); + img.removeAttr('onmouseover'); + img.removeAttr('onclick'); + } + }); + return stubS.html(); } From 035fdca3b7b3d597c37ee609d31e07de933ff840 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 22:29:01 +0000 Subject: [PATCH 57/76] chore(deps-dev): bump @types/koa from 2.13.12 to 2.14.0 (#14215) * chore(deps-dev): bump @types/koa from 2.13.12 to 2.14.0 Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.13.12 to 2.14.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa) --- updated-dependencies: - dependency-name: "@types/koa" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- 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 1a4e368ba..ce0602240 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,7 @@ "@types/imapflow": "1.0.17", "@types/jsdom": "21.1.6", "@types/json-bigint": "1.0.4", - "@types/koa": "2.13.12", + "@types/koa": "2.14.0", "@types/koa-basic-auth": "2.0.6", "@types/koa-favicon": "2.1.3", "@types/koa-mount": "4.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1406e4f24..4fb3d014a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,8 +245,8 @@ devDependencies: specifier: 1.0.4 version: 1.0.4 '@types/koa': - specifier: 2.13.12 - version: 2.13.12 + specifier: 2.14.0 + version: 2.14.0 '@types/koa-basic-auth': specifier: 2.0.6 version: 2.0.6 @@ -1619,42 +1619,42 @@ packages: /@types/koa-basic-auth@2.0.6: resolution: {integrity: sha512-1/FdT3KiHIkVf+TxYiPPey0wnPBzuts6lz/Obskgo9ZY485J02+uI6STnD114L2iG+Wi5MBqU7EYNphKdKwZWQ==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/koa-compose@3.2.5: resolution: {integrity: sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/koa-favicon@2.1.3: resolution: {integrity: sha512-L1XAF8k1iOuh3hA/ZjEqWURm9/62a8A1x7BZR9ZCMw8nbnUBt6oZksz2rfKRCEwESqI2e6WVGlF03fs9DbQQXQ==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/koa-mount@4.0.5: resolution: {integrity: sha512-pV1njJ7r94iqAFzT9D5sGSYKUHFGudCLAnmr4WFli7V5tJf5MAgRQK9leTPJ4gjvgr+hnTf86fZsKoFN358c7w==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/koa-send@4.1.3: resolution: {integrity: sha512-daaTqPZlgjIJycSTNjKpHYuKhXYP30atFc1pBcy6HHqB9+vcymDgYTguPdx9tO4HMOqNyz6bz/zqpxt5eLR+VA==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/koa-static@4.0.4: resolution: {integrity: sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 '@types/koa-send': 4.1.3 dev: true - /@types/koa@2.13.12: - resolution: {integrity: sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==} + /@types/koa@2.14.0: + resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} dependencies: '@types/accepts': 1.3.5 '@types/content-disposition': 0.5.5 @@ -1669,7 +1669,7 @@ packages: /@types/koa__router@12.0.4: resolution: {integrity: sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==} dependencies: - '@types/koa': 2.13.12 + '@types/koa': 2.14.0 dev: true /@types/linkify-it@3.0.3: From 12b409fa620724a3dd614defa7378575cb6f2167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=B8=BD?= Date: Wed, 10 Jan 2024 10:38:26 +0800 Subject: [PATCH 58/76] feat(route): add huggingface zh blog (#14211) * feat(route): add huggingface zh blog * refactor: update --- lib/v2/huggingface/blog-zh.js | 34 +++++++++++++++++++++++++++++ lib/v2/huggingface/maintainer.js | 1 + lib/v2/huggingface/radar.js | 6 +++++ lib/v2/huggingface/router.js | 1 + website/docs/routes/programming.mdx | 4 ++++ 5 files changed, 46 insertions(+) create mode 100644 lib/v2/huggingface/blog-zh.js diff --git a/lib/v2/huggingface/blog-zh.js b/lib/v2/huggingface/blog-zh.js new file mode 100644 index 000000000..0682fc1c9 --- /dev/null +++ b/lib/v2/huggingface/blog-zh.js @@ -0,0 +1,34 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { body: response } = await got('https://huggingface.co/blog/zh'); + const $ = cheerio.load(response); + + /** @type {Array<{blog: {local: string, title: string, author: string, thumbnail: string, date: string, tags: Array}, blogUrl: string, lang: 'zh', link: string}>} */ + const papers = $('div[data-target="BlogThumbnail"]') + .toArray() + .map((item) => { + const props = $(item).data('props'); + const link = $(item).find('a').attr('href'); + return { + ...props, + link, + }; + }); + + const items = papers.map((item) => ({ + title: item.blog.title, + link: `https://huggingface.co${item.link}`, + category: item.blog.tags, + pubDate: parseDate(item.blog.date), + author: item.blog.author, + })); + + ctx.state.data = { + title: 'Huggingface 中文博客', + link: 'https://huggingface.co/blog/zh', + item: items, + }; +}; diff --git a/lib/v2/huggingface/maintainer.js b/lib/v2/huggingface/maintainer.js index 1abfb6105..ffc93bc13 100644 --- a/lib/v2/huggingface/maintainer.js +++ b/lib/v2/huggingface/maintainer.js @@ -1,3 +1,4 @@ module.exports = { + '/blog-zh': ['zcf0508'], '/daily-papers': ['zeyugao'], }; diff --git a/lib/v2/huggingface/radar.js b/lib/v2/huggingface/radar.js index 24bf34063..7198e5238 100644 --- a/lib/v2/huggingface/radar.js +++ b/lib/v2/huggingface/radar.js @@ -8,6 +8,12 @@ module.exports = { source: ['/papers', '/'], target: '/huggingface/daily-papers', }, + { + title: '中文博客', + docs: 'https://docs.rsshub.app/routes/programming#huggingface', + source: ['/blog/zh', '/'], + target: '/huggingface/blog-zh', + }, ], }, }; diff --git a/lib/v2/huggingface/router.js b/lib/v2/huggingface/router.js index ca991e4dd..5c62ff5f1 100644 --- a/lib/v2/huggingface/router.js +++ b/lib/v2/huggingface/router.js @@ -1,3 +1,4 @@ module.exports = (router) => { + router.get('/blog-zh', require('./blog-zh')); router.get('/daily-papers', require('./daily-papers')); }; diff --git a/website/docs/routes/programming.mdx b/website/docs/routes/programming.mdx index e264355ef..c4d14219b 100644 --- a/website/docs/routes/programming.mdx +++ b/website/docs/routes/programming.mdx @@ -492,6 +492,10 @@ Subscribe to the updates (threads and submission) from a paritcular Hacker News +### 中文博客 {#huggingface-zhong-wen-bo-ke} + + + ## Issue Hunt {#issue-hunt} ### Project Funded {#issue-hunt-project-funded} From 327d0d0c77669b6e370ed3e6d378de8e894ce8d9 Mon Sep 17 00:00:00 2001 From: Manish Bhattarai Date: Tue, 9 Jan 2024 22:05:23 -0500 Subject: [PATCH 59/76] feat(route): Add ekantipur.com (Nepal) (#14207) * feat(route): Add ekantipur remove unused deps * feat(route): Add ekantipur radar * removed undefined field * updated maintainer.js to use optional field character - ? * updated radar.js with full name --------- --- lib/v2/ekantipur/issue.js | 64 +++++++++++++++++++++++ lib/v2/ekantipur/maintainer.js | 3 ++ lib/v2/ekantipur/radar.js | 13 +++++ lib/v2/ekantipur/router.js | 3 ++ website/docs/routes/traditional-media.mdx | 12 +++++ 5 files changed, 95 insertions(+) create mode 100644 lib/v2/ekantipur/issue.js create mode 100644 lib/v2/ekantipur/maintainer.js create mode 100644 lib/v2/ekantipur/radar.js create mode 100644 lib/v2/ekantipur/router.js diff --git a/lib/v2/ekantipur/issue.js b/lib/v2/ekantipur/issue.js new file mode 100644 index 000000000..2028b9b03 --- /dev/null +++ b/lib/v2/ekantipur/issue.js @@ -0,0 +1,64 @@ +// Require necessary modules +const got = require('@/utils/got'); // a customised got +const cheerio = require('cheerio'); // an HTML parser with a jQuery-like API + +module.exports = async (ctx) => { + // Your logic here + // Defining base URL + const baseUrl = 'https://ekantipur.com'; + + // Retrive the channel parameter + const { channel = 'news' } = ctx.params; + + // Fetches content of the requested channel + const { data: response } = await got(`${baseUrl}/${channel}`); + const $ = cheerio.load(response); + + // Retrive articles + const list = $('article.normal') + // We use the `toArray()` method to retrieve all the DOM elements selected as an array. + .toArray() + // We use the `map()` method to traverse the array and parse the data we need from each element. + .map((item) => { + item = $(item); + const a = item.find('a').first(); + return { + title: a.text(), + // We need an absolute URL for `link`, but `a.attr('href')` returns a relative URL. + link: `${baseUrl}${a.attr('href')}`, + author: item.find('div.author').text(), + category: channel, + }; + }); + + const items = await Promise.all( + list.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: response } = await got(item.link); + const $ = cheerio.load(response); + + // Remove sponsor elements + $('a.static-sponsor').remove(); + $('div.ekans-wrapper').remove(); + + // Fetch title from the article page + item.title = $('h1.eng-text-heading').text(); + // Fetch article content from the article page + item.description = $('div.current-news-block').first().html(); + + // Every property of a list item defined above is reused here + // and we add a new property 'description' + return item; + }) + ) + ); + + ctx.state.data = { + // channel title + title: `Ekantipur - ${channel}`, + // channel link + link: `${baseUrl}/${channel}`, + // each feed item + item: items, + }; +}; \ No newline at end of file diff --git a/lib/v2/ekantipur/maintainer.js b/lib/v2/ekantipur/maintainer.js new file mode 100644 index 000000000..e96a3817c --- /dev/null +++ b/lib/v2/ekantipur/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:channel?': ['maniche04'], +}; \ No newline at end of file diff --git a/lib/v2/ekantipur/radar.js b/lib/v2/ekantipur/radar.js new file mode 100644 index 000000000..756d7e967 --- /dev/null +++ b/lib/v2/ekantipur/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'ekantipur.com': { + _name: 'Ekantipur', + '.': [ + { + title: 'Full Article RSS', + docs: 'https://docs.rsshub.app/routes/traditional-media#ekantipur-%E0%A4%95%E0%A4%BE%E0%A4%A8%E0%A5%8D%E0%A4%A4%E0%A4%BF%E0%A4%AA%E0%A5%81%E0%A4%B0-nepal', + source: ['/:channel'], + target: '/ekantipur/:channel', + }, + ], + }, +}; \ No newline at end of file diff --git a/lib/v2/ekantipur/router.js b/lib/v2/ekantipur/router.js new file mode 100644 index 000000000..77f4234df --- /dev/null +++ b/lib/v2/ekantipur/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:channel?', require('./issue')); +}; \ No newline at end of file diff --git a/website/docs/routes/traditional-media.mdx b/website/docs/routes/traditional-media.mdx index 28cb8c45c..f76ce0aa6 100644 --- a/website/docs/routes/traditional-media.mdx +++ b/website/docs/routes/traditional-media.mdx @@ -177,6 +177,18 @@ ::: +## Ekantipur / कान्तिपुर (Nepal) + +### Full Article RSS {#ekantipur-rss} + + + Channels: + + | समाचार | अर्थ / वाणिज्य | विचार | खेलकुद | उपत्यका | मनोरञ्जन | फोटोफिचर | फिचर | विश्व | ब्लग | + | --------- | --------- | ----- | ------------- | ------ | ----- | --------- | --------- | -------- | ----- | + | news | business | opinion | sports | national | entertainment | photo_feature | feature | world | blog | + + ## Financial Times {#financial-times} ### FT 中文网 {#financial-times-ft-zhong-wen-wang} From f8a432e830de4719a984bc58da804a722d02da54 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 03:07:01 +0000 Subject: [PATCH 60/76] style: auto format --- lib/v2/ekantipur/issue.js | 2 +- lib/v2/ekantipur/maintainer.js | 2 +- lib/v2/ekantipur/radar.js | 2 +- lib/v2/ekantipur/router.js | 2 +- website/docs/routes/traditional-media.mdx | 10 +++++----- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/v2/ekantipur/issue.js b/lib/v2/ekantipur/issue.js index 2028b9b03..0df7b094e 100644 --- a/lib/v2/ekantipur/issue.js +++ b/lib/v2/ekantipur/issue.js @@ -61,4 +61,4 @@ module.exports = async (ctx) => { // each feed item item: items, }; -}; \ No newline at end of file +}; diff --git a/lib/v2/ekantipur/maintainer.js b/lib/v2/ekantipur/maintainer.js index e96a3817c..a8d2de20d 100644 --- a/lib/v2/ekantipur/maintainer.js +++ b/lib/v2/ekantipur/maintainer.js @@ -1,3 +1,3 @@ module.exports = { '/:channel?': ['maniche04'], -}; \ No newline at end of file +}; diff --git a/lib/v2/ekantipur/radar.js b/lib/v2/ekantipur/radar.js index 756d7e967..b0ecd84e3 100644 --- a/lib/v2/ekantipur/radar.js +++ b/lib/v2/ekantipur/radar.js @@ -10,4 +10,4 @@ module.exports = { }, ], }, -}; \ No newline at end of file +}; diff --git a/lib/v2/ekantipur/router.js b/lib/v2/ekantipur/router.js index 77f4234df..b472b8643 100644 --- a/lib/v2/ekantipur/router.js +++ b/lib/v2/ekantipur/router.js @@ -1,3 +1,3 @@ module.exports = (router) => { router.get('/:channel?', require('./issue')); -}; \ No newline at end of file +}; diff --git a/website/docs/routes/traditional-media.mdx b/website/docs/routes/traditional-media.mdx index f76ce0aa6..b09385418 100644 --- a/website/docs/routes/traditional-media.mdx +++ b/website/docs/routes/traditional-media.mdx @@ -177,16 +177,16 @@ ::: -## Ekantipur / कान्तिपुर (Nepal) +## Ekantipur / कान्तिपुर (Nepal) {#ekantipur-%E0%A4%95%E0%A4%BE%E0%A4%A8%E0%A5%8D%E0%A4%A4%E0%A4%BF%E0%A4%AA%E0%A5%81%E0%A4%B0-nepal} -### Full Article RSS {#ekantipur-rss} +### Full Article RSS {#ekantipur-%E0%A4%95%E0%A4%BE%E0%A4%A8%E0%A5%8D%E0%A4%A4%E0%A4%BF%E0%A4%AA%E0%A5%81%E0%A4%B0-nepal-full-article-rss} Channels: - | समाचार | अर्थ / वाणिज्य | विचार | खेलकुद | उपत्यका | मनोरञ्जन | फोटोफिचर | फिचर | विश्व | ब्लग | - | --------- | --------- | ----- | ------------- | ------ | ----- | --------- | --------- | -------- | ----- | - | news | business | opinion | sports | national | entertainment | photo_feature | feature | world | blog | + | समाचार | अर्थ / वाणिज्य | विचार | खेलकुद | उपत्यका | मनोरञ्जन | फोटोफिचर | फिचर | विश्व | ब्लग | + | ---- | -------- | ------- | ------ | -------- | ------------- | -------------- | ------- | ----- | ---- | + | news | business | opinion | sports | national | entertainment | photo\_feature | feature | world | blog | ## Financial Times {#financial-times} From 1cf341f1faa1eb6425f51b08292504d6b3591fa4 Mon Sep 17 00:00:00 2001 From: ZenoTian Date: Wed, 10 Jan 2024 23:38:32 +0800 Subject: [PATCH 61/76] feat(route): HoYoLAB (#14146) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * hoyolab * 修改分页参数 * 统一名称 * 替换limit参数 * 参数默认值问题 * 参数默认值问题 --- lib/v2/hoyolab/constant.js | 47 +++++++++++++++++++ lib/v2/hoyolab/maintainer.js | 3 ++ lib/v2/hoyolab/news.js | 89 ++++++++++++++++++++++++++++++++++++ lib/v2/hoyolab/radar.js | 22 +++++++++ lib/v2/hoyolab/router.js | 3 ++ website/docs/routes/game.mdx | 37 +++++++++++++++ 6 files changed, 201 insertions(+) create mode 100644 lib/v2/hoyolab/constant.js create mode 100644 lib/v2/hoyolab/maintainer.js create mode 100644 lib/v2/hoyolab/news.js create mode 100644 lib/v2/hoyolab/radar.js create mode 100644 lib/v2/hoyolab/router.js diff --git a/lib/v2/hoyolab/constant.js b/lib/v2/hoyolab/constant.js new file mode 100644 index 000000000..29187f294 --- /dev/null +++ b/lib/v2/hoyolab/constant.js @@ -0,0 +1,47 @@ +// 域名 +const HOST = 'https://bbs-api-os.hoyolab.com'; +// 活动列接口 +const EVENT_LIST = '/community/community_contribution/wapi/event/list'; +// 活动详情接口 +const POST_FULL = '/community/post/wapi/getPostFull'; +// 公告和资讯接口 +const NEW_LIST = '/community/post/wapi/getNewsList'; + +const ICON = 'https://img-os-static.hoyolab.com/favicon.ico'; +// 源网站链接 +const LINK = 'https://www.hoyolab.com'; + +// 部分图片使用了禁止公开访问的域名 +const PRIVATE_IMG = ' { + const query = new URLSearchParams({ + type, + gids, + page_size: size, + }).toString(); + const url = `${HOST}${NEW_LIST}?${query}`; + const res = await got({ + method: 'get', + url, + headers: { + 'X-Rpc-Language': language, + }, + }).json(); + const list = res?.data?.list || []; + return list; +}; + +const replaceImgDomain = (content) => content.replaceAll(PRIVATE_IMG, PUBLIC_IMG); + +const getPostContent = (ctx, list, { type, language }) => + Promise.all( + list.map(async (row) => { + const post = row.post; + const post_id = post.post_id; + const query = new URLSearchParams({ + post_id, + language, // language为了区分缓存,对接口并无意义 + }).toString(); + const url = `${HOST}${POST_FULL}?${query}`; + return await ctx.cache.tryGet(url, async () => { + const res = await got({ + method: 'get', + url, + headers: { + 'X-Rpc-Language': language, + }, + }).json(); + const author = res?.data?.post?.user?.nickname || ''; + let content = res?.data?.post?.post?.content || ''; + if (content === language || !content) { + content = post.content; + } + const description = replaceImgDomain(content); + return { + // 文章标题 + title: post.subject, + // 文章链接 + link: `${LINK}/article/${post_id}`, + // 文章正文 + description, + // 文章发布日期 + pubDate: parseDate(post.created_at * 1000), + // 如果有的话,文章分类 + category: `${GIDS_MAP[post.game_id]}-${TYPE_MAP[type]}`, + author, + }; + }); + }) + ); + +module.exports = async (ctx) => { + try { + const { type, gids, language } = ctx.params; + const params = { + type, + gids, + language, + size: parseInt(ctx.query?.limit) || 15, + }; + const list = await getEventList(params); + const items = await getPostContent(ctx, list, params); + ctx.state.data = { + title: `HoYoLAB-${GIDS_MAP[gids]}-${TYPE_MAP[type]}`, + link: LINK, + item: items, + image: ICON, + icon: ICON, + logo: ICON, + }; + } catch (error) { + logger.error(error); + } +}; diff --git a/lib/v2/hoyolab/radar.js b/lib/v2/hoyolab/radar.js new file mode 100644 index 000000000..95cb1aa60 --- /dev/null +++ b/lib/v2/hoyolab/radar.js @@ -0,0 +1,22 @@ +module.exports = { + 'hoyolab.com': { + _name: 'HoYoLAB', + '.': [ + { + title: '活动公告资讯', + docs: 'https://docs.rsshub.app/routes/game#hoyolab-news', + source: ['/', '/circles/:gid/:unknow/official'], + target: (params, url) => { + const typeMap = { + notices: '1', + events: '2', + news: '3', + }; + const query = new URL(url).searchParams; + const type = typeMap[query.get('page_sort')] || '2'; + return `/hoyolab/news/zh-cn/${params?.gid || 2}/${type}`; + }, + }, + ], + }, +}; diff --git a/lib/v2/hoyolab/router.js b/lib/v2/hoyolab/router.js new file mode 100644 index 000000000..622b245a0 --- /dev/null +++ b/lib/v2/hoyolab/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/news/:language/:gids/:type', require('./news')); +}; diff --git a/website/docs/routes/game.mdx b/website/docs/routes/game.mdx index 80f3f2ee5..a550b6e29 100644 --- a/website/docs/routes/game.mdx +++ b/website/docs/routes/game.mdx @@ -234,6 +234,43 @@ +## HoYoLAB {#hoyolab} + +### 公告 {#hoyolab-gong-gao} + + + 语言 language + + | Language | Code | + | ---------------- | ----- | + | 简体中文 | zh-cn | + | 繁體中文 | zh-tw | + | 日本語 | ja-jp | + | 한국어 | ko-kr | + | English (US) | en-us | + | Español (EU) | es-es | + | Français | fr-fr | + | Deutsch | de-de | + | Русский | ru-ru | + | Português | pt-pt | + | Español (Latino) | es-mx | + | Indonesia | id-id | + | Tiếng Việt | vi-vn | + | ภาษาไทย | th-th | + + 游戏 gids + + | 崩坏三 | 原神 | 未定事件簿 | HoYoLAB | 崩坏:星穹铁道 | 绝区零 | + | ------ | ---- | ---------- | ------- | -------------- | ------ | + | 1 | 2 | 4 | 5 | 6 | 8 | + + 公告类型 type + + | 公告 | 活动 | 资讯 | + | ---- | ---- | ---- | + | 1 | 2 | 3 | + + ## Indienova {#indienova} ### indienova 文章 {#indienova-indienova-wen-zhang} From 72067b58114aa2b9c71c1624f260addb882774da Mon Sep 17 00:00:00 2001 From: Yohan Wal <59358312+CookiePieWw@users.noreply.github.com> Date: Thu, 11 Jan 2024 01:09:48 +0800 Subject: [PATCH 62/76] feat(route): trending papers on arXiv from trendingpapers (#14182) --- lib/v2/trendingpapers/maintainer.js | 3 +++ lib/v2/trendingpapers/papers.js | 42 +++++++++++++++++++++++++++++ lib/v2/trendingpapers/radar.js | 11 ++++++++ lib/v2/trendingpapers/router.js | 3 +++ website/docs/routes/journal.mdx | 6 +++++ 5 files changed, 65 insertions(+) create mode 100644 lib/v2/trendingpapers/maintainer.js create mode 100644 lib/v2/trendingpapers/papers.js create mode 100644 lib/v2/trendingpapers/radar.js create mode 100644 lib/v2/trendingpapers/router.js diff --git a/lib/v2/trendingpapers/maintainer.js b/lib/v2/trendingpapers/maintainer.js new file mode 100644 index 000000000..acfb2d231 --- /dev/null +++ b/lib/v2/trendingpapers/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/papers/:category?/:time?/:cited?': ['CookiePieWw'], +}; diff --git a/lib/v2/trendingpapers/papers.js b/lib/v2/trendingpapers/papers.js new file mode 100644 index 000000000..f7cb8dd42 --- /dev/null +++ b/lib/v2/trendingpapers/papers.js @@ -0,0 +1,42 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { time = 'Since beginning', cited = 'Cited and uncited papers', category = 'All categories' } = ctx.params; + + const rootUrl = 'https://trendingpapers.com'; + const currentUrl = `${rootUrl}/api/papers?p=1&o=pagerank_growth&pd=${time}&cc=${cited}&c=${category}`; + + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = response.data; + + const papers = $.data + .map((_) => { + const title = _.title; + const abstract = _.abstract; + const url = _.url; + const arxivId = _.arxiv_id; + + const pubDate = parseDate(_.pub_date); + const summaryCategories = _.summary_categories; + + return { + title, + description: abstract, + link: url, + guid: arxivId, + pubDate, + category: summaryCategories, + }; + }); + + ctx.state.data = { + title: `Trending Papers on arXiv.org | ${category} | ${time} | ${cited} | `, + link: currentUrl, + item: papers, + }; +}; diff --git a/lib/v2/trendingpapers/radar.js b/lib/v2/trendingpapers/radar.js new file mode 100644 index 000000000..243533c9d --- /dev/null +++ b/lib/v2/trendingpapers/radar.js @@ -0,0 +1,11 @@ +module.exports = { + 'trendingpapers.com': { + _name: 'trendingpapers', + '.': [ + { + title: 'Trending Papers on arXiv', + docs: 'https://docs.rsshub.app/routes/journal#trending-papers-trending-papers-on-arxiv', + }, + ], + }, +}; diff --git a/lib/v2/trendingpapers/router.js b/lib/v2/trendingpapers/router.js new file mode 100644 index 000000000..d85cef26a --- /dev/null +++ b/lib/v2/trendingpapers/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/papers/:category?/:time?/:cited?', require('./papers.js')); +}; diff --git a/website/docs/routes/journal.mdx b/website/docs/routes/journal.mdx index f402a34ba..4005e3648 100644 --- a/website/docs/routes/journal.mdx +++ b/website/docs/routes/journal.mdx @@ -462,6 +462,12 @@ You can get all short name of a journal from [https://www.nature.com/siteindex]( +## Trending Papers {#trending-papers} + +### Trending Papers on arXiv {#trending-papers-trending-papers-on-arxiv} + + + ## USENIX {#usenix} ### Security Symposia {#usenix-security-symposia} From 2aac55f874f23a6aa4312ae35cda5b73d3058304 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 17:11:19 +0000 Subject: [PATCH 63/76] style: auto format --- lib/v2/trendingpapers/papers.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/lib/v2/trendingpapers/papers.js b/lib/v2/trendingpapers/papers.js index f7cb8dd42..c3942673e 100644 --- a/lib/v2/trendingpapers/papers.js +++ b/lib/v2/trendingpapers/papers.js @@ -14,25 +14,24 @@ module.exports = async (ctx) => { const $ = response.data; - const papers = $.data - .map((_) => { - const title = _.title; - const abstract = _.abstract; - const url = _.url; - const arxivId = _.arxiv_id; + const papers = $.data.map((_) => { + const title = _.title; + const abstract = _.abstract; + const url = _.url; + const arxivId = _.arxiv_id; - const pubDate = parseDate(_.pub_date); - const summaryCategories = _.summary_categories; + const pubDate = parseDate(_.pub_date); + const summaryCategories = _.summary_categories; - return { - title, - description: abstract, - link: url, - guid: arxivId, - pubDate, - category: summaryCategories, - }; - }); + return { + title, + description: abstract, + link: url, + guid: arxivId, + pubDate, + category: summaryCategories, + }; + }); ctx.state.data = { title: `Trending Papers on arXiv.org | ${category} | ${time} | ${cited} | `, From 880b809944eac744bebd776925f2f5225850878c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 22:27:59 +0000 Subject: [PATCH 64/76] chore(deps): bump @sentry/node from 7.92.0 to 7.93.0 (#14220) * chore(deps): bump @sentry/node from 7.92.0 to 7.93.0 Bumps [@sentry/node](https://github.com/getsentry/sentry-javascript) from 7.92.0 to 7.93.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/7.92.0...7.93.0) --- updated-dependencies: - dependency-name: "@sentry/node" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- 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, 23 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index ce0602240..525b4851a 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@koa/router": "12.0.1", "@notionhq/client": "2.2.14", "@postlight/parser": "2.2.3", - "@sentry/node": "7.92.0", + "@sentry/node": "7.93.0", "@tonyrl/rand-user-agent": "2.0.45", "aes-js": "3.1.2", "art-template": "4.13.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fb3d014a..0afda9dd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: 2.2.3 version: 2.2.3 '@sentry/node': - specifier: 7.92.0 - version: 7.92.0 + specifier: 7.93.0 + version: 7.93.0 '@tonyrl/rand-user-agent': specifier: 2.0.45 version: 2.0.45 @@ -1277,46 +1277,46 @@ packages: selderee: 0.11.0 dev: false - /@sentry-internal/tracing@7.92.0: - resolution: {integrity: sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==} + /@sentry-internal/tracing@7.93.0: + resolution: {integrity: sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.92.0 - '@sentry/types': 7.92.0 - '@sentry/utils': 7.92.0 + '@sentry/core': 7.93.0 + '@sentry/types': 7.93.0 + '@sentry/utils': 7.93.0 dev: false - /@sentry/core@7.92.0: - resolution: {integrity: sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==} + /@sentry/core@7.93.0: + resolution: {integrity: sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.92.0 - '@sentry/utils': 7.92.0 + '@sentry/types': 7.93.0 + '@sentry/utils': 7.93.0 dev: false - /@sentry/node@7.92.0: - resolution: {integrity: sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA==} + /@sentry/node@7.93.0: + resolution: {integrity: sha512-nUXPCZQm5Y9Ipv7iWXLNp5dbuyi1VvbJ3RtlwD7utgsNkRYB4ixtKE9w2QU8DZZAjaEF6w2X94OkYH6C932FWw==} engines: {node: '>=8'} dependencies: - '@sentry-internal/tracing': 7.92.0 - '@sentry/core': 7.92.0 - '@sentry/types': 7.92.0 - '@sentry/utils': 7.92.0 + '@sentry-internal/tracing': 7.93.0 + '@sentry/core': 7.93.0 + '@sentry/types': 7.93.0 + '@sentry/utils': 7.93.0 https-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color dev: false - /@sentry/types@7.92.0: - resolution: {integrity: sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==} + /@sentry/types@7.93.0: + resolution: {integrity: sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==} engines: {node: '>=8'} dev: false - /@sentry/utils@7.92.0: - resolution: {integrity: sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==} + /@sentry/utils@7.93.0: + resolution: {integrity: sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.92.0 + '@sentry/types': 7.93.0 dev: false /@sinclair/typebox@0.27.8: From 83917faf9a41d2b3a9166c1e78cab4717ce41b24 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 01:30:33 +0000 Subject: [PATCH 65/76] chore(deps-dev): bump eslint-plugin-n from 16.6.1 to 16.6.2 (#14216) * chore(deps-dev): bump eslint-plugin-n from 16.6.1 to 16.6.2 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 16.6.1 to 16.6.2. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.6.1...16.6.2) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 525b4851a..fee85ee6b 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "cross-env": "7.0.3", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-n": "16.6.1", + "eslint-plugin-n": "16.6.2", "eslint-plugin-prettier": "5.1.2", "eslint-plugin-yml": "1.11.0", "fs-extra": "11.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0afda9dd6..69f2bfbdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,8 +308,8 @@ devDependencies: specifier: 9.1.0 version: 9.1.0(eslint@8.56.0) eslint-plugin-n: - specifier: 16.6.1 - version: 16.6.1(eslint@8.56.0) + specifier: 16.6.2 + version: 16.6.2(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.2 version: 5.1.2(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) @@ -3347,8 +3347,8 @@ packages: eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-n@16.6.1(eslint@8.56.0): - resolution: {integrity: sha512-M1kE5bVQRLBMDYRZwDhWzlzbp370SRRRC1MHqq4I3L2Tatey+9/2csc5mwLDPlmhJaDvkojbrNUME5/llpRyDg==} + /eslint-plugin-n@16.6.2(eslint@8.56.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' From 28db73c1e4de9aae874a0bd4ae091f7e27a138f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 02:26:51 +0000 Subject: [PATCH 66/76] chore(deps-dev): bump eslint-plugin-prettier from 5.1.2 to 5.1.3 (#14221) * chore(deps-dev): bump eslint-plugin-prettier from 5.1.2 to 5.1.3 Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.1.2 to 5.1.3. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.1.2...v5.1.3) --- updated-dependencies: - dependency-name: eslint-plugin-prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fee85ee6b..b03b490b0 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-n": "16.6.2", - "eslint-plugin-prettier": "5.1.2", + "eslint-plugin-prettier": "5.1.3", "eslint-plugin-yml": "1.11.0", "fs-extra": "11.2.0", "husky": "8.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69f2bfbdf..f84113bce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -311,8 +311,8 @@ devDependencies: specifier: 16.6.2 version: 16.6.2(eslint@8.56.0) eslint-plugin-prettier: - specifier: 5.1.2 - version: 5.1.2(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) + specifier: 5.1.3 + version: 5.1.3(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) eslint-plugin-yml: specifier: 1.11.0 version: 1.11.0(eslint@8.56.0) @@ -3367,8 +3367,8 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-prettier@5.1.2(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): - resolution: {integrity: sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==} + /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' From 551a086dac62e1ff2526396c8ab257c3ab9d53c2 Mon Sep 17 00:00:00 2001 From: lidashuang Date: Thu, 11 Jan 2024 22:39:25 +0800 Subject: [PATCH 67/76] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20cyzone=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9Elink=20=E4=B8=BA=E7=A9=BA=20(#14224)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(egsea): pubDate Invalid Date the https://rsshub.app/egsea/flash response error pubDate Invalid Date * refactor: migrate to v2 * Refactor link generation in util.js --------- --- lib/v2/cyzone/util.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/v2/cyzone/util.js b/lib/v2/cyzone/util.js index 36a97f584..d7811a22f 100644 --- a/lib/v2/cyzone/util.js +++ b/lib/v2/cyzone/util.js @@ -100,7 +100,8 @@ const processItems = async (apiUrl, limit, tryGet, ...searchParams) => { }); item.title = data.title; - item.link = /^\/\//.test(data.link_url) ? `https:${data.link_url}` : data.link_url; + // api 返回的 link_url 数据可能是空, 所有最好自己通过 id 拼接 url + item.link = `${rootUrl}/article/${item.guid}.html`; item.description = content.html(); item.author = data.author_name ?? data.author; item.category = [...new Set(categories)].filter((c) => c); From e85787e997deaf5850d8275b325284746f88e25a Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:20:43 +0800 Subject: [PATCH 68/76] =?UTF-8?q?fix(route):=20=E5=9B=BD=E5=AE=B6=E5=A4=96?= =?UTF-8?q?=E6=B1=87=E7=AE=A1=E7=90=86=E5=B1=80=E4=B8=9A=E5=8A=A1=E5=92=A8?= =?UTF-8?q?=E8=AF=A2=20&=20=E6=8A=95=E8=AF=89=E5=BB=BA=E8=AE=AE=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=20(#14226)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/v2/gov/maintainer.js | 2 +- lib/v2/gov/safe/util.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/v2/gov/maintainer.js b/lib/v2/gov/maintainer.js index c7c01ac4e..e02d78322 100644 --- a/lib/v2/gov/maintainer.js +++ b/lib/v2/gov/maintainer.js @@ -58,7 +58,7 @@ module.exports = { '/pbc/tradeAnnouncement': ['nczitzk'], '/pbc/zcyj': ['Fatpandac'], '/samr/xgzlyhd/:category?/:department?': ['nczitzk'], - '/safe/bussiness/:site?': ['nczitzk'], + '/safe/business/:site?': ['nczitzk'], '/safe/complaint/:site?': ['nczitzk'], '/sasac/:path+': ['TonyRL'], '/stats/:path+': ['bigfei', 'nczitzk'], diff --git a/lib/v2/gov/safe/util.js b/lib/v2/gov/safe/util.js index 8fb315f13..a9a05a692 100644 --- a/lib/v2/gov/safe/util.js +++ b/lib/v2/gov/safe/util.js @@ -44,13 +44,13 @@ const processZxfkItems = async (site = 'beijing', category = 'ywzx', limit = '3' return { title: `${message.author}: ${message.content}`, - link: new URL(item.find('.title').prop('href'), rootUrl).href, + link: currentUrl, description: art(path.join(__dirname, 'templates/message.art'), { message, reply, }), author: `${message.author}/${reply.author}`, - guid: item.find('.id').text(), + guid: `${currentUrl}#${message.author}(${message.date})/${reply.author}(${reply.date})`, pubDate: parseDate(message.date), updated: parseDate(reply.date), }; From 7821a11a7122da102a1a8966419a97e22f16e59b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 00:30:17 +0000 Subject: [PATCH 69/76] chore(deps): bump pinyin-pro from 3.18.6 to 3.19.0 in /website (#14222) Bumps [pinyin-pro](https://github.com/zh-lx/pinyin-pro) from 3.18.6 to 3.19.0. - [Release notes](https://github.com/zh-lx/pinyin-pro/releases) - [Changelog](https://github.com/zh-lx/pinyin-pro/blob/main/CHANGELOG.md) - [Commits](https://github.com/zh-lx/pinyin-pro/commits) --- updated-dependencies: - dependency-name: pinyin-pro 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> --- website/package.json | 2 +- website/pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/package.json b/website/package.json index c9b01ead8..b0eab6a49 100644 --- a/website/package.json +++ b/website/package.json @@ -25,7 +25,7 @@ "clsx": "^2.1.0", "markdown-it": "^14.0.0", "meilisearch-docsearch": "^0.6.0", - "pinyin-pro": "3.18.6", + "pinyin-pro": "3.19.0", "prism-react-renderer": "^2.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 1dda6f60e..362a72148 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -33,8 +33,8 @@ dependencies: specifier: ^0.6.0 version: 0.6.0 pinyin-pro: - specifier: 3.18.6 - version: 3.18.6 + specifier: 3.19.0 + version: 3.19.0 prism-react-renderer: specifier: ^2.3.1 version: 2.3.1(react@18.2.0) @@ -7929,8 +7929,8 @@ packages: engines: {node: '>=8.6'} dev: false - /pinyin-pro@3.18.6: - resolution: {integrity: sha512-+1/xFQ65km8ltN4VunvOvZRYL1V/rl4yzgmLtQVlXsmO6MOQU0ieF4WNs60/lXpEVusvYYmy6oU9bZGGQWeSXg==} + /pinyin-pro@3.19.0: + resolution: {integrity: sha512-SDR7SHOVlaSDLEqbYnbuSKTPe9891KVWj3qjndPa9ZgdtuJgIgqcwpiQcfphYzonGV1qwG44B1rWTRaTjNCzcQ==} dev: false /pkg-dir@7.0.0: From 836aa5b7a95688b4daefa23ff2111f5c5ac47440 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 10:15:27 +0800 Subject: [PATCH 70/76] chore(deps-dev): bump @types/eslint from 8.56.1 to 8.56.2 (#14228) * chore(deps-dev): bump @types/eslint from 8.56.1 to 8.56.2 Bumps [@types/eslint](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/eslint) from 8.56.1 to 8.56.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/eslint) --- updated-dependencies: - dependency-name: "@types/eslint" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index b03b490b0..a6ffd913a 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "@stylistic/eslint-plugin-js": "1.5.3", "@types/aes-js": "3.1.4", "@types/crypto-js": "4.2.1", - "@types/eslint": "8.56.1", + "@types/eslint": "8.56.2", "@types/eslint-config-prettier": "6.11.3", "@types/etag": "1.8.3", "@types/fs-extra": "11.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f84113bce..388885cb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -218,8 +218,8 @@ devDependencies: specifier: 4.2.1 version: 4.2.1 '@types/eslint': - specifier: 8.56.1 - version: 8.56.1 + specifier: 8.56.2 + version: 8.56.2 '@types/eslint-config-prettier': specifier: 6.11.3 version: 6.11.3 @@ -312,7 +312,7 @@ devDependencies: version: 16.6.2(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.3 - version: 5.1.3(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) + version: 5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) eslint-plugin-yml: specifier: 1.11.0 version: 1.11.0(eslint@8.56.0) @@ -1482,8 +1482,8 @@ packages: resolution: {integrity: sha512-3wXCiM8croUnhg9LdtZUJQwNcQYGWxxdOWDjPe1ykCqJFPVpzAKfs/2dgSoCtAvdPeaponcWPI7mPcGGp9dkKQ==} dev: true - /@types/eslint@8.56.1: - resolution: {integrity: sha512-18PLWRzhy9glDQp3+wOgfLYRWlhgX0azxgJ63rdpoUHyrC9z0f5CkFburjQx4uD7ZCruw85ZtMt6K+L+R8fLJQ==} + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 @@ -3367,7 +3367,7 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.1)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): + /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3381,7 +3381,7 @@ packages: eslint-config-prettier: optional: true dependencies: - '@types/eslint': 8.56.1 + '@types/eslint': 8.56.2 eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) prettier: 3.1.1 From c66e8f627738a9e5481af4f6a2db8d47b5d3f5c2 Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 12 Jan 2024 22:14:11 +0800 Subject: [PATCH 71/76] docs: fix maintainer --- lib/v2/tiktok/maintainer.js | 2 +- website/docs/routes/game.mdx | 2 +- website/docs/routes/shopping.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/v2/tiktok/maintainer.js b/lib/v2/tiktok/maintainer.js index 59dcb464e..9abb399b9 100644 --- a/lib/v2/tiktok/maintainer.js +++ b/lib/v2/tiktok/maintainer.js @@ -1,3 +1,3 @@ module.exports = { - '/user/:user': ['TonyRL'], + '/user/:user/:iframe?': ['TonyRL'], }; diff --git a/website/docs/routes/game.mdx b/website/docs/routes/game.mdx index a550b6e29..d57f5b4e9 100644 --- a/website/docs/routes/game.mdx +++ b/website/docs/routes/game.mdx @@ -238,7 +238,7 @@ ### 公告 {#hoyolab-gong-gao} - + 语言 language | Language | Code | diff --git a/website/docs/routes/shopping.mdx b/website/docs/routes/shopping.mdx index 767cdd6bc..6361582ba 100644 --- a/website/docs/routes/shopping.mdx +++ b/website/docs/routes/shopping.mdx @@ -546,7 +546,7 @@ For instance, in `https://www.zagg.com/en_us/new-arrivals?brand=164&cat=3038%2C3 ### 演出搜索 {#xiu-dong-wang-yan-chu-sou-suo} - + ### 音乐人 - 演出更新 {#xiu-dong-wang-yin-yue-ren-yan-chu-geng-xin} From 82622e71c533ed2bcda96b71e02b202571f24c2c Mon Sep 17 00:00:00 2001 From: falling Date: Fri, 12 Jan 2024 22:37:18 +0800 Subject: [PATCH 72/76] =?UTF-8?q?feat(route):=20add=20BT=E4=B9=8B=E5=AE=B6?= =?UTF-8?q?1LOU=E7=AB=99=20(#14219)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * route: BT之家1LOU * 1. using new routers. 2. If path is empty, visit correct main page of website. 3. roll back deleted doc by mistake. * Update lib/v2/1lou/radar.js * Update website/docs/routes/multimedia.mdx * Update website/docs/routes/multimedia.mdx --------- --- lib/v2/1lou/index.js | 53 ++++++++++++++++++++++++++++++ lib/v2/1lou/maintainer.js | 3 ++ lib/v2/1lou/radar.js | 13 ++++++++ lib/v2/1lou/router.js | 3 ++ website/docs/routes/multimedia.mdx | 18 ++++++++++ 5 files changed, 90 insertions(+) create mode 100644 lib/v2/1lou/index.js create mode 100644 lib/v2/1lou/maintainer.js create mode 100644 lib/v2/1lou/radar.js create mode 100644 lib/v2/1lou/router.js diff --git a/lib/v2/1lou/index.js b/lib/v2/1lou/index.js new file mode 100644 index 000000000..37a6a0b5b --- /dev/null +++ b/lib/v2/1lou/index.js @@ -0,0 +1,53 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const path = ctx.params.path ?? ''; + const rootUrl = `https://www.1lou.me`; + const currentUrl = `${rootUrl}/${path}`; + const response = await got({ + method: 'get', + url: currentUrl, + }); + const $ = cheerio.load(response.data); + + let items = $('li.media.thread.tap:not(.hidden-sm)') + .toArray() + .map((item) => { + const title = $(item).find('.subject.break-all').children('a').first(); + const author = $(item).find('.username.text-grey.mr-1').text(); + const pubDate = $(item).find('.date.text-grey').text(); + return { + title: title.text(), + link: `${rootUrl}/${title.attr('href')}`, + author, + pubDate: timezone(parseDate(pubDate), +8), + }; + }); + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const detailResponse = await got({ + method: 'get', + url: item.link, + }); + const content = cheerio.load(detailResponse.data); + item.description = content('.message.break-all').html(); + const torrents = content('.attachlist').find('a'); + if (torrents.length > 0) { + item.enclosure_type = 'application/x-bittorrent'; + item.enclosure_url = `${rootUrl}/${torrents.first().attr('href')}`; + } + + return item; + }) + ) + ); + ctx.state.data = { + title: '1Lou', + link: currentUrl, + item: items, + }; +}; diff --git a/lib/v2/1lou/maintainer.js b/lib/v2/1lou/maintainer.js new file mode 100644 index 000000000..bdd3fde89 --- /dev/null +++ b/lib/v2/1lou/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:path?': ['falling'], +}; diff --git a/lib/v2/1lou/radar.js b/lib/v2/1lou/radar.js new file mode 100644 index 000000000..9f54bbb51 --- /dev/null +++ b/lib/v2/1lou/radar.js @@ -0,0 +1,13 @@ +module.exports = { + '1lou.me': { + _name: 'BT之家 1LOU站', + '.': [ + { + title: '搜索', + docs: 'https://docs.rsshub.app/routes/multimedia#bt-zhi-jia-1lou-zhan', + source: ['/:path'], + target: '/1lou/:path', + }, + ], + }, +}; diff --git a/lib/v2/1lou/router.js b/lib/v2/1lou/router.js new file mode 100644 index 000000000..4317c1e82 --- /dev/null +++ b/lib/v2/1lou/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/:path?', require('./index')); +}; diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index 9f26a31db..5af97e803 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -1598,3 +1598,21 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ | ---- | ---- | ---- | | | kr | dl | + +## BT之家 1LOU站 {#bt-zhi-jia-1lou-zhan} + +### 搜索 {#bt-zhi-ji-1Lou-sou-suo} + + +:::tip + 将1lou.me/后的内容作为参数传入到path即可 + + www.1lou.me/search-繁花.htm --> /1lou/search-繁花.htm + + www.1lou.me/forum-1.htm --> /1lou/forum-1.htm + + www.1lou.me/ --> /1lou/ + ::: + + + From 34cc84be07273d503373170d5c9043366ebaf655 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:38:56 +0000 Subject: [PATCH 73/76] style: auto format --- website/docs/routes/multimedia.mdx | 34 ++++++++++++++---------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index 5af97e803..b8a6ae8c1 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -354,6 +354,22 @@ Full transcript support for better user experience. 可空,默认为 base ::: +## BT 之家 1LOU 站 {#bt-zhi-jia-1lou-zhan} + +### 搜索 {#bt-zhi-jia-1lou-zhan-sou-suo} + + + :::tip + 将 1lou.me/ 后的内容作为参数传入到 path 即可 + + [www.1lou.me/search - 繁花.htm](http://www.1lou.me/search-繁花.htm) --> /1lou/search - 繁花.htm + + [www.1lou.me/forum-1.htm](http://www.1lou.me/forum-1.htm) --> /1lou/forum-1.htm + + [www.1lou.me/](http://www.1lou.me/) --> /1lou/ + ::: + + ## CNTV {#cntv} ### 栏目 {#cntv-lan-mu} @@ -1598,21 +1614,3 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ | ---- | ---- | ---- | | | kr | dl | - -## BT之家 1LOU站 {#bt-zhi-jia-1lou-zhan} - -### 搜索 {#bt-zhi-ji-1Lou-sou-suo} - - -:::tip - 将1lou.me/后的内容作为参数传入到path即可 - - www.1lou.me/search-繁花.htm --> /1lou/search-繁花.htm - - www.1lou.me/forum-1.htm --> /1lou/forum-1.htm - - www.1lou.me/ --> /1lou/ - ::: - - - From 28d166d9e8e59339034ca623f133dceb709ed269 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 02:04:17 +0000 Subject: [PATCH 74/76] chore(deps-dev): bump prettier from 3.1.1 to 3.2.1 (#14230) * chore(deps-dev): bump prettier from 3.1.1 to 3.2.1 Bumps [prettier](https://github.com/prettier/prettier) from 3.1.1 to 3.2.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.1.1...3.2.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: fix pnpm install --------- 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 a6ffd913a..19d37401b 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,7 @@ "mockdate": "3.0.5", "nock": "13.4.0", "nodemon": "3.0.2", - "prettier": "3.1.1", + "prettier": "3.2.1", "remark": "14.0.3", "remark-custom-heading-id": "1.0.1", "remark-directive": "3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 388885cb8..17ed871b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -312,7 +312,7 @@ devDependencies: version: 16.6.2(eslint@8.56.0) eslint-plugin-prettier: specifier: 5.1.3 - version: 5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) + version: 5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.1) eslint-plugin-yml: specifier: 1.11.0 version: 1.11.0(eslint@8.56.0) @@ -341,8 +341,8 @@ devDependencies: specifier: 3.0.2 version: 3.0.2 prettier: - specifier: 3.1.1 - version: 3.1.1 + specifier: 3.2.1 + version: 3.2.1 remark: specifier: 14.0.3 version: 14.0.3 @@ -369,7 +369,7 @@ devDependencies: version: 9.0.0 remark-preset-prettier: specifier: 0.5.1 - version: 0.5.1(prettier@3.1.1) + version: 0.5.1(prettier@3.2.1) request-promise-native: specifier: 1.0.9 version: 1.0.9(request@2.88.2) @@ -3367,7 +3367,7 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): + /eslint-plugin-prettier@5.1.3(@types/eslint@8.56.2)(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.1): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3384,7 +3384,7 @@ packages: '@types/eslint': 8.56.2 eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) - prettier: 3.1.1 + prettier: 3.2.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.6 dev: true @@ -7365,8 +7365,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.1: + resolution: {integrity: sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg==} engines: {node: '>=14'} hasBin: true dev: true @@ -7805,13 +7805,13 @@ packages: - supports-color dev: true - /remark-preset-prettier@0.5.1(prettier@3.1.1): + /remark-preset-prettier@0.5.1(prettier@3.2.1): resolution: {integrity: sha512-cJx49HCHwA/3EWjIDiRTWPBBpGSkJlXOpcjdqcT6rGFFE+gjCrGSbNdgBQiLbBqXippZFD0OrI4bOWsWhulKrw==} engines: {node: '>=12'} peerDependencies: prettier: '>=1.0.0' dependencies: - prettier: 3.1.1 + prettier: 3.2.1 dev: true /remark-stringify@10.0.3: From 697a4790474b99268f99866dac4ce7a631b4cacc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 02:05:50 +0000 Subject: [PATCH 75/76] style: auto format --- website/docs/routes/multimedia.mdx | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index b8a6ae8c1..2d389d764 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -303,6 +303,22 @@ Full transcript support for better user experience. +## BT 之家 1LOU 站 {#bt-zhi-jia-1lou-zhan} + +### 搜索 {#bt-zhi-jia-1lou-zhan-sou-suo} + + + :::tip + 将 1lou.me/ 后的内容作为参数传入到 path 即可 + + [www.1lou.me/search - 繁花.htm](http://www.1lou.me/search-繁花.htm) --> /1lou/search - 繁花.htm + + [www.1lou.me/forum-1.htm](http://www.1lou.me/forum-1.htm) --> /1lou/forum-1.htm + + [www.1lou.me/](http://www.1lou.me/) --> /1lou/ + ::: + + ## BT 之家 {#bt-zhi-jia} ### 分类 {#bt-zhi-jia-fen-lei} @@ -354,22 +370,6 @@ Full transcript support for better user experience. 可空,默认为 base ::: -## BT 之家 1LOU 站 {#bt-zhi-jia-1lou-zhan} - -### 搜索 {#bt-zhi-jia-1lou-zhan-sou-suo} - - - :::tip - 将 1lou.me/ 后的内容作为参数传入到 path 即可 - - [www.1lou.me/search - 繁花.htm](http://www.1lou.me/search-繁花.htm) --> /1lou/search - 繁花.htm - - [www.1lou.me/forum-1.htm](http://www.1lou.me/forum-1.htm) --> /1lou/forum-1.htm - - [www.1lou.me/](http://www.1lou.me/) --> /1lou/ - ::: - - ## CNTV {#cntv} ### 栏目 {#cntv-lan-mu} From 0e70524248a5d2f063ca24d4e38f844830daac21 Mon Sep 17 00:00:00 2001 From: JimenezLi <75196426+JimenezLi@users.noreply.github.com> Date: Sat, 13 Jan 2024 10:35:56 +0800 Subject: [PATCH 76/76] feat(proxy): add PAC script support (#14218) * feat(proxy): add PAC script support * fix pnpm fail * fix coverage * fix coverage final * update docs --- lib/config.js | 2 + lib/utils/pac-proxy.js | 75 +++++++++++ lib/utils/request-wrapper.js | 8 +- package.json | 1 + pnpm-lock.yaml | 3 + test/utils/pac-proxy.js | 82 +++++++++++++ test/utils/request-wrapper.js | 116 ++++++++++++++++++ website/docs/install/config.md | 16 ++- .../current/install/config.md | 16 ++- 9 files changed, 315 insertions(+), 4 deletions(-) create mode 100644 lib/utils/pac-proxy.js create mode 100644 test/utils/pac-proxy.js diff --git a/lib/config.js b/lib/config.js index a786fd58d..81f9b2c6c 100644 --- a/lib/config.js +++ b/lib/config.js @@ -76,6 +76,8 @@ const calculateValue = () => { }, proxyStrategy: envs.PROXY_STRATEGY || 'all', // all / on_retry reverseProxyUrl: envs.REVERSE_PROXY_URL, + pacUri: envs.PAC_URI, + pacScript: envs.PAC_SCRIPT, // auth authentication: { name: envs.HTTP_BASIC_AUTH_NAME || 'usernam3', diff --git a/lib/utils/pac-proxy.js b/lib/utils/pac-proxy.js new file mode 100644 index 000000000..ca5926773 --- /dev/null +++ b/lib/utils/pac-proxy.js @@ -0,0 +1,75 @@ +const config = require('@/config').value; +const logger = require('./logger'); + +const possibleProtocol = ['http', 'https', 'ftp', 'file', 'data']; + +const pacProxy = (pacUri, pacScript, proxyObj) => { + let pacUrlHandler = null; + + // Validate PAC_URI / PAC_SCRIPT + if (pacScript) { + if (typeof pacScript === 'string') { + pacUri = 'data:text/javascript;charset=utf-8,' + encodeURIComponent(pacScript); + } else { + logger.error('Invalid PAC_SCRIPT, use PAC_URI instead'); + } + } + if (pacUri && typeof pacUri === 'string') { + try { + pacUrlHandler = new URL(pacUri); + } catch (e) { + pacUri = null; + pacUrlHandler = null; + logger.error(`Parse PAC_URI error: ${e.stack}`); + } + } else { + pacUri = null; + } + + // Check if PAC_URI has the right protocol + if (pacUri && !possibleProtocol.includes(pacUrlHandler?.protocol?.replace(':', ''))) { + logger.error(`Unsupported PAC protocol: ${pacUrlHandler?.protocol?.replace(':', '')}, expect one of ${possibleProtocol.join(', ')}`); + pacUri = null; + pacUrlHandler = null; + } + + // Validate proxyObj + if (pacUrlHandler) { + proxyObj.host = pacUrlHandler.hostname; + proxyObj.port = parseInt(pacUrlHandler.port) || undefined; + proxyObj.protocol = pacUrlHandler.protocol.replace(':', ''); + } else { + proxyObj.protocol = proxyObj.host = proxyObj.port = proxyObj.auth = undefined; + } + + // Validate PROXY_AUTH + if (proxyObj.auth && pacUrlHandler) { + let promptProxyUri = false; + if (pacUrlHandler.username || pacUrlHandler.password) { + logger.warn('PAC_URI contains username and/or password, ignoring PROXY_AUTH'); + proxyObj.auth = undefined; + } else if (!['http:', 'https:'].includes(pacUrlHandler.protocol)) { + logger.warn(`PROXY_AUTH is only supported by HTTP(S) proxies, but got ${pacUrlHandler.protocol}, ignoring`); + proxyObj.auth = undefined; + promptProxyUri = true; + } else { + logger.info('PROXY_AUTH is set and will be used for requests from Node.js. However, requests from puppeteer will not use it'); + promptProxyUri = true; + } + if (promptProxyUri) { + logger.info('To get rid of this, set PAC_URI like protocol://username:password@host:port and clear PROXY_{AUTH,PROTOCOL,HOST,PORT}'); + } + } + + // Compatible with unify-proxy + return { + proxyUri: pacUri, + proxyObj, + proxyUrlHandler: pacUrlHandler, + }; +}; + +module.exports = { + pacProxy, + ...pacProxy(config.pacUri, config.pacScript, config.proxy), +}; diff --git a/lib/utils/request-wrapper.js b/lib/utils/request-wrapper.js index 6120df3a4..c50ac0d78 100644 --- a/lib/utils/request-wrapper.js +++ b/lib/utils/request-wrapper.js @@ -1,11 +1,15 @@ const config = require('@/config').value; -const { proxyUri, proxyObj, proxyUrlHandler } = require('./unify-proxy'); +const proxyIsPAC = config.pacUri || config.pacScript; +const { proxyUri, proxyObj, proxyUrlHandler } = proxyIsPAC ? require('./pac-proxy') : require('./unify-proxy'); const logger = require('./logger'); const http = require('http'); const https = require('https'); let agent = null; -if (proxyUri) { +if (proxyIsPAC) { + const { PacProxyAgent } = require('pac-proxy-agent'); + agent = new PacProxyAgent(`pac+${proxyUri}`); +} else if (proxyUri) { if (proxyUri.startsWith('http')) { const { HttpsProxyAgent } = require('https-proxy-agent'); agent = new HttpsProxyAgent(proxyUri); diff --git a/package.json b/package.json index 19d37401b..ac07d5adf 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "module-alias": "2.2.3", "notion-to-md": "3.1.1", "oauth-1.0a": "2.2.6", + "pac-proxy-agent": "7.0.1", "plist": "3.1.0", "proxy-chain": "2.4.0", "puppeteer": "21.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17ed871b7..56128a6e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,6 +140,9 @@ dependencies: oauth-1.0a: specifier: 2.2.6 version: 2.2.6 + pac-proxy-agent: + specifier: 7.0.1 + version: 7.0.1 plist: specifier: 3.1.0 version: 3.1.0 diff --git a/test/utils/pac-proxy.js b/test/utils/pac-proxy.js new file mode 100644 index 000000000..d98d0607e --- /dev/null +++ b/test/utils/pac-proxy.js @@ -0,0 +1,82 @@ +const { pacProxy } = require('../../lib/utils/pac-proxy'); + +const emptyProxyObj = { + protocol: undefined, + host: undefined, + port: undefined, + auth: undefined, + url_regex: '.*', +}; + +const effectiveExpect = ({ proxyUri, proxyObj }, expectUri, expectObj) => { + expect(proxyUri).toBe(expectUri); + expect(proxyObj).toEqual(expectObj); +}; + +describe('pac-proxy', () => { + const nullExpect = (pac) => effectiveExpect(pac, null, emptyProxyObj); + it('pac empty', () => { + nullExpect(pacProxy(null, null, emptyProxyObj)); + }); + it('pac-uri invalid', () => { + nullExpect(pacProxy('http://inv ild.test', null, emptyProxyObj)); + }); + it('pac-uri invalid protocol', () => { + nullExpect(pacProxy('socks://rsshub.proxy', null, emptyProxyObj)); + }); + + const httpUri = 'http://rsshub.proxy/pac.pac'; + it('pac-uri http', () => { + effectiveExpect(pacProxy(httpUri, null, emptyProxyObj), httpUri, emptyProxyObj); + }); + + const httpsUri = 'https://rsshub.proxy/pac.pac'; + it('pac-uri https', () => { + effectiveExpect(pacProxy(httpsUri, null, emptyProxyObj), httpsUri, emptyProxyObj); + }); + + const ftpUri = 'ftp://rsshub.proxy:2333'; + it('pac-uri ftp', () => { + effectiveExpect(pacProxy(ftpUri, null, emptyProxyObj), ftpUri, emptyProxyObj); + }); + + const fileUri = 'file:///path/to/pac.pac'; + it('pac-uri file', () => { + effectiveExpect(pacProxy(fileUri, null, emptyProxyObj), fileUri, emptyProxyObj); + }); + + const dataPacScript = "function FindProxyForURL(url, host){return 'DIRECT';}"; + const dataUri = 'data:text/javascript;charset=utf-8,' + encodeURIComponent(dataPacScript); + it('pac-script data', () => { + effectiveExpect(pacProxy(null, dataPacScript, emptyProxyObj), dataUri, emptyProxyObj); + }); + it('pac-script data invalid type', () => { + effectiveExpect(pacProxy(httpsUri, 1, emptyProxyObj), httpsUri, emptyProxyObj); + }); + + const httpsObj = { ...emptyProxyObj, protocol: 'https', host: 'rsshub.proxy', port: 2333 }; + const httpsAuthUri = 'https://user:pass@rsshub.proxy:2333'; + it('pac-uri https auth', () => { + effectiveExpect(pacProxy(httpsAuthUri, null, emptyProxyObj), httpsAuthUri, httpsObj); + }); + + const httpsAuthObj = { ...httpsObj, auth: 'testtest' }; + it('pac proxy-obj https auth', () => { + effectiveExpect(pacProxy(httpsUri, null, httpsAuthObj), httpsUri, httpsAuthObj); + }); + + const ftpObj = { ...httpsObj, protocol: 'ftp' }; + const ftpAuthUri = 'ftp://user:pass@rsshub.proxy:2333'; + it('pac-uri ftp auth', () => { + effectiveExpect(pacProxy(ftpAuthUri, null, emptyProxyObj), ftpAuthUri, ftpObj); + }); + + const ftpAuthObj = { ...ftpObj, auth: 'testtest' }; + it('pac-uri ftp auth (invalid)', () => { + effectiveExpect(pacProxy(ftpUri, null, ftpAuthObj), ftpUri, ftpObj); + }); + + it('pac-uri user@pass override proxy-obj auth', () => { + effectiveExpect(pacProxy(httpsAuthUri, null, httpsAuthObj), httpsAuthUri, httpsObj); + }); +}); diff --git a/test/utils/request-wrapper.js b/test/utils/request-wrapper.js index c9b5ae166..75e4abebd 100644 --- a/test/utils/request-wrapper.js +++ b/test/utils/request-wrapper.js @@ -5,6 +5,11 @@ require('../../lib/utils/request-wrapper'); let check = () => {}; const simpleResponse = ''; +beforeEach(() => { + delete process.env.PAC_URI; + delete process.env.PAC_SCRIPT; +}); + afterEach(() => { delete process.env.PROXY_URI; delete process.env.PROXY_PROTOCOL; @@ -215,6 +220,117 @@ describe('got', () => { await parser.parseURL(url); }); + it('pac-uri http', async () => { + process.env.PAC_URI = 'http://rsshub.proxy:2333'; + + jest.resetModules(); + require('../../lib/utils/request-wrapper'); + + check = (request) => { + expect(request.agent.constructor.name).toBe('PacProxyAgent'); + expect(request.agent.uri.protocol).toBe('http:'); + expect(request.agent.uri.host).toBe('rsshub.proxy:2333'); + expect(request.agent.uri.hostname).toBe('rsshub.proxy'); + expect(request.agent.uri.port).toBe('2333'); + }; + + nock(/rsshub\.test/) + .get('/proxy') + .times(2) + .reply(200, simpleResponse); + + await got.get('http://rsshub.test/proxy'); + await parser.parseURL('http://rsshub.test/proxy'); + }); + + it('pac-uri https', async () => { + process.env.PAC_URI = 'https://rsshub.proxy:2333'; + + jest.resetModules(); + require('../../lib/utils/request-wrapper'); + + check = (request) => { + expect(request.agent.constructor.name).toBe('PacProxyAgent'); + expect(request.agent.uri.protocol).toBe('https:'); + expect(request.agent.uri.host).toBe('rsshub.proxy:2333'); + expect(request.agent.uri.hostname).toBe('rsshub.proxy'); + expect(request.agent.uri.port).toBe('2333'); + }; + + nock(/rsshub\.test/) + .get('/proxy') + .times(2) + .reply(200, simpleResponse); + + await got.get('http://rsshub.test/proxy'); + await parser.parseURL('http://rsshub.test/proxy'); + }); + + it('pac-uri ftp', async () => { + process.env.PAC_URI = 'ftp://rsshub.proxy:2333'; + + jest.resetModules(); + require('../../lib/utils/request-wrapper'); + + check = (request) => { + expect(request.agent.constructor.name).toBe('PacProxyAgent'); + expect(request.agent.uri.protocol).toBe('ftp:'); + expect(request.agent.uri.host).toBe('rsshub.proxy:2333'); + expect(request.agent.uri.hostname).toBe('rsshub.proxy'); + expect(request.agent.uri.port).toBe('2333'); + }; + + nock(/rsshub\.test/) + .get('/proxy') + .times(2) + .reply(200, simpleResponse); + + await got.get('http://rsshub.test/proxy'); + await parser.parseURL('http://rsshub.test/proxy'); + }); + + it('pac-uri file', async () => { + process.env.PAC_URI = 'file:///D:/rsshub/proxy'; + + jest.resetModules(); + require('../../lib/utils/request-wrapper'); + + check = (request) => { + expect(request.agent.constructor.name).toBe('PacProxyAgent'); + expect(request.agent.uri.protocol).toBe('file:'); + expect(request.agent.uri.pathname).toBe('/D:/rsshub/proxy'); + }; + + nock(/rsshub\.test/) + .get('/proxy') + .times(2) + .reply(200, simpleResponse); + + await got.get('http://rsshub.test/proxy'); + await parser.parseURL('http://rsshub.test/proxy'); + }); + + it('pac-script data', async () => { + process.env.PAC_SCRIPT = "function FindProxyForURL(url,host){return 'DIRECT';}"; + + jest.resetModules(); + require('../../lib/utils/request-wrapper'); + + check = (request) => { + expect(request.agent.constructor.name).toBe('PacProxyAgent'); + expect(request.agent.uri.protocol).toBe('data:'); + expect(request.agent.uri.pathname).toBe("text/javascript;charset=utf-8,function%20FindProxyForURL(url%2Chost)%7Breturn%20'DIRECT'%3B%7D"); + }; + + nock(/rsshub\.test/) + .get('/proxy') + .times(2) + .reply(200, simpleResponse); + + await got.get('http://rsshub.test/proxy'); + await parser.parseURL('http://rsshub.test/proxy'); + }); + it('auth', async () => { process.env.PROXY_AUTH = 'testtest'; process.env.PROXY_PROTOCOL = 'http'; // only http(s) proxies extract auth from Headers diff --git a/website/docs/install/config.md b/website/docs/install/config.md index 20d524a2d..85bc93d06 100644 --- a/website/docs/install/config.md +++ b/website/docs/install/config.md @@ -40,7 +40,7 @@ RSSHub supports two caching methods: memory and redis Partial routes have a strict anti-crawler policy, and can be configured to use proxy. -Proxy can be configured through **Proxy URI**, **Proxy options**, or **Reverse proxy**. +Proxy can be configured through **Proxy URI**, **Proxy options**, **PAC script**, or **Reverse proxy**. ### Proxy URI @@ -96,6 +96,20 @@ async function handleRequest(request) { } ``` +### PAC script + +:::warning + +This proxy method overwrites `PROXY_URI`, `PROXY_PROTOCOL`, `PROXY_HOST` and `PROXY_PORT`. + +::: + +About PAC script, please refer to [Proxy Auto-Configuration (PAC) file](https://developer.mozilla.org/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file). + +`PAC_URI`: PAC script URL, supports http, https, ftp, file, data. See [pac-proxy-agent](https://www.npmjs.com/package/pac-proxy-agent) NPM package page. + +`PAC_SCRIPT`: Hard-coded JavaScript code string of PAC script. Overwrites `PAC_URI`. + ### Proxy options `PROXY_PROTOCOL`: Using proxy, supports socks, http, https, etc. See [socks-proxy-agent](https://www.npmjs.com/package/socks-proxy-agent) NPM package page and [source](https://github.com/TooTallNate/proxy-agents/blob/63adbcefdb4783cc67c0eb90200886b4064e8639/packages/socks-proxy-agent/src/index.ts#L81) for what these protocols mean. See also [cURL OOTW: SOCKS5](https://daniel.haxx.se/blog/2020/05/26/curl-ootw-socks5/) for reference. diff --git a/website/i18n/zh/docusaurus-plugin-content-docs/current/install/config.md b/website/i18n/zh/docusaurus-plugin-content-docs/current/install/config.md index 531b2d22b..0145b4105 100644 --- a/website/i18n/zh/docusaurus-plugin-content-docs/current/install/config.md +++ b/website/i18n/zh/docusaurus-plugin-content-docs/current/install/config.md @@ -40,7 +40,7 @@ RSSHub 支持 `memory` 和 `redis` 两种缓存方式 部分路由反爬严格,可以配置使用代理抓取。 -可通过**代理 URI **或**代理选项**或**反向代理**三种方式来配置代理。 +可通过**代理 URI** 或**代理选项**或**代理自动配置文件 (PAC)** 或**反向代理**等方式来配置代理。 ### 代理 URI @@ -72,6 +72,20 @@ RSSHub 支持 `memory` 和 `redis` 两种缓存方式 `PROXY_URL_REGEX`: 启用代理的 URL 正则表达式,默认全部开启 `.*` +### 代理自动配置文件 (PAC) + +:::warning + +该方法会覆盖 `PROXY_URI`, `PROXY_PROTOCOL`, `PROXY_HOST` 以及 `PROXY_PORT`。 + +::: + +关于代理自动配置文件 (PAC),请查看[代理自动配置文件(PAC)文件](https://developer.mozilla.org/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file)。 + +`PAC_URI`: PAC 文件 URI,支持 http, https, ftp, file, data。具体以 [pac-proxy-agent](https://www.npmjs.com/package/pac-proxy-agent) NPM 包的支持为准。 + +`PAC_SCRIPT`: 硬编码的 PAC 脚本字符串。覆盖 `PAC_URI`。 + ### 反向代理 :::warning