');
- });
- let mainPic = mainPicArea.html();
- mainPic = mainPic ? mainPic.trim() : '';
-
- // add article body
- let articleBody = $('div.article-body').html();
- articleBody = articleBody ? articleBody.trim().replace(/(完)(?=<\/p>\s*$)/m, '') : '';
-
- // render description
- item.description = art(path.join(__dirname, 'templates/article.art'), {
- mainPic,
- articleBody,
- });
-
- const ldJson = $('script[type="application/ld+json"]').html();
- const pubDate_match = ldJson && ldJson.match(/"datePublished":"([\d\s-:]*?)"/);
- const updated_match = ldJson && ldJson.match(/"dateModified":"([\d\s-:]*?)"/);
- if (pubDate_match) {
- item.pubDate = timezone(parseDate(pubDate_match[1]), 9);
- }
- if (updated_match) {
- item.updated = timezone(parseDate(updated_match[1]), 9);
- }
-
- item.category = $('p.credit > a')
- .map((_, a) => $(a).text())
- .get();
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title,
- description,
- link: currentUrl,
- item: items,
- image,
- };
-};
diff --git a/lib/v2/kyodonews/maintainer.js b/lib/v2/kyodonews/maintainer.js
deleted file mode 100644
index 0ac170398f25f4..00000000000000
--- a/lib/v2/kyodonews/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/:language?/:keyword?': ['Rongronggg9'],
-};
diff --git a/lib/v2/kyodonews/radar.js b/lib/v2/kyodonews/radar.js
deleted file mode 100644
index a9b5460e6320c6..00000000000000
--- a/lib/v2/kyodonews/radar.js
+++ /dev/null
@@ -1,33 +0,0 @@
-module.exports = {
- 'kyodonews.net': {
- _name: '共同网',
- china: [
- {
- title: '最新报道',
- docs: 'https://docs.rsshub.app/traditional-media.html#gong-tong-wang-zui-xin-bao-dao',
- source: '/',
- target: '/kyodonews/china',
- },
- {
- title: '关键词',
- docs: 'https://docs.rsshub.app/traditional-media.html#gong-tong-wang-zui-xin-bao-dao',
- source: '/news/:keyword',
- target: '/kyodonews/china/:keyword?',
- },
- ],
- tchina: [
- {
- title: '最新報道',
- docs: 'https://docs.rsshub.app/traditional-media.html#gong-tong-wang-zui-xin-bao-dao',
- source: '/',
- target: '/kyodonews/tchina',
- },
- {
- title: '關鍵詞',
- docs: 'https://docs.rsshub.app/traditional-media.html#gong-tong-wang-zui-xin-bao-dao',
- source: '/news/:keyword',
- target: '/kyodonews/tchina/:keyword?',
- },
- ],
- },
-};
diff --git a/lib/v2/kyodonews/router.js b/lib/v2/kyodonews/router.js
deleted file mode 100644
index c4f4963474d0b9..00000000000000
--- a/lib/v2/kyodonews/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/:language?/:keyword?', require('./index'));
-};
diff --git a/lib/v2/kyodonews/templates/article.art b/lib/v2/kyodonews/templates/article.art
deleted file mode 100644
index ac741750228f11..00000000000000
--- a/lib/v2/kyodonews/templates/article.art
+++ /dev/null
@@ -1,4 +0,0 @@
-{{ if mainPic }}
-{{@ mainPic }}
-{{ /if }}
-{{@ articleBody }}
diff --git a/lib/v2/mcachicago/exhibitions.js b/lib/v2/mcachicago/exhibitions.js
deleted file mode 100644
index 9fe1e4b41ea71b..00000000000000
--- a/lib/v2/mcachicago/exhibitions.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const buildData = require('@/utils/common-config');
-
-module.exports = async (ctx) => {
- const link = 'https://mcachicago.org/exhibitions';
-
- ctx.state.data = await buildData({
- link,
- url: link,
- title: 'MCA Chicago - Exhibitions',
- item: {
- item: '#exhibitions .card',
- title: `$('.title').text()`,
- link: `$('a').attr('href')`,
- // description: `$('a').html()`,
- },
- });
-};
diff --git a/lib/v2/mcachicago/maintainer.js b/lib/v2/mcachicago/maintainer.js
deleted file mode 100644
index 2b582f7fce773b..00000000000000
--- a/lib/v2/mcachicago/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/exhibitions': ['chazeon'],
-};
diff --git a/lib/v2/mcachicago/radar.js b/lib/v2/mcachicago/radar.js
deleted file mode 100644
index 8d24a4852f5e2e..00000000000000
--- a/lib/v2/mcachicago/radar.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = {
- 'mcachicago.org': {
- _name: 'MCA Chicago',
- '.': [
- {
- title: 'Exhibitions',
- docs: 'https://docs.rsshub.app/en/travel.html#museum-of-contemporary-art-chicago',
- },
- ],
- },
-};
diff --git a/lib/v2/mcachicago/router.js b/lib/v2/mcachicago/router.js
deleted file mode 100644
index d98b7c8845a250..00000000000000
--- a/lib/v2/mcachicago/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/exhibitions', require('./exhibitions'));
-};
diff --git a/lib/v2/metmuseum/exhibitions.js b/lib/v2/metmuseum/exhibitions.js
deleted file mode 100644
index 6297491490a0f5..00000000000000
--- a/lib/v2/metmuseum/exhibitions.js
+++ /dev/null
@@ -1,31 +0,0 @@
-const got = require('@/utils/got');
-const { parseDate } = require('@/utils/parse-date');
-
-function generateExhibitionItem(result) {
- return {
- title: result.title,
- link: `https://www.metmuseum.org${result.url}`,
- description: result.description,
- pubDate: parseDate(result.startDate),
- guid: result.id,
- };
-}
-
-module.exports = async (ctx) => {
- const searchType = ctx.params.state ?? 'current';
-
- const url = `https://www.metmuseum.org/ghidorah/ExhibitionListing/Search?searchType=${searchType}`;
-
- const response = await got({
- url,
- method: 'GET',
- });
-
- const data = response.data.data;
-
- ctx.state.data = {
- title: 'The Metropolitan Museum of Art - Exhibitions',
- link: 'https://www.metmuseum.org/exhibitions',
- item: data.results.map(generateExhibitionItem),
- };
-};
diff --git a/lib/v2/metmuseum/maintainer.js b/lib/v2/metmuseum/maintainer.js
deleted file mode 100644
index 2b582f7fce773b..00000000000000
--- a/lib/v2/metmuseum/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/exhibitions': ['chazeon'],
-};
diff --git a/lib/v2/metmuseum/radar.js b/lib/v2/metmuseum/radar.js
deleted file mode 100644
index c7154582d81ab3..00000000000000
--- a/lib/v2/metmuseum/radar.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = {
- 'metmuseum.org': {
- _name: 'The Metropolitan Museum of Art',
- www: [
- {
- title: 'Exhibitions',
- docs: 'https://docs.rsshub.app/en/travel.html#the-metropolitan-museum-of-art',
- },
- ],
- },
-};
diff --git a/lib/v2/metmuseum/router.js b/lib/v2/metmuseum/router.js
deleted file mode 100644
index 3b6bc4063e9c62..00000000000000
--- a/lib/v2/metmuseum/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/exhibitions/:state?', require('./exhibitions'));
-};
diff --git a/lib/v2/mihoyo/bbs.js b/lib/v2/mihoyo/bbs.js
deleted file mode 100644
index eabd10463cc655..00000000000000
--- a/lib/v2/mihoyo/bbs.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const got = require('@/utils/got');
-const { art } = require('@/utils/render');
-const path = require('path');
-const { parseDate } = require('@/utils/parse-date');
-// 游戏id
-const GITS_MAP = {
- 1: '崩坏三',
- 2: '原神',
- 3: '崩坏二',
- 4: '未定事件簿',
- 6: '崩坏:星穹铁道',
-};
-
-// 公告类型
-const TYPE_MAP = {
- 1: '公告',
- 2: '活动',
- 3: '资讯',
-};
-
-const renderDescription = (description, images) => art(path.join(__dirname, 'templates/description.art'), { description, images });
-
-module.exports = async (ctx) => {
- const { gids, type = '2', page_size = '20', last_id = '' } = ctx.params;
- const query = new URLSearchParams({
- gids,
- type,
- page_size,
- last_id,
- }).toString();
- const url = `https://bbs-api.mihoyo.com/post/wapi/getNewsList?${query}`;
- const response = await got({
- method: 'get',
- url,
- });
- const list = response?.data?.data?.list;
- if (!list) {
- throw new Error('未获取到数据!');
- }
- const title = `米游社 - ${GITS_MAP[gids] || ''} - ${TYPE_MAP[type] || ''}`;
- const items = list.map((e) => {
- const author = e.user.nickname;
- const title = e.post.subject;
- const link = `https://bbs.mihoyo.com/ys/article/${e.post.post_id}`;
- const description = renderDescription(e.post.content, e.post.images);
- const pubDate = parseDate(e.post.created_at * 1000);
- return {
- author,
- title,
- link,
- description,
- pubDate,
- };
- });
- const data = {
- title,
- link: url,
- item: items,
- };
-
- ctx.state.data = data;
-};
diff --git a/lib/v2/mihoyo/maintainer.js b/lib/v2/mihoyo/maintainer.js
deleted file mode 100644
index a18b6786d8d296..00000000000000
--- a/lib/v2/mihoyo/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/bbs/official/:gids/:type?/:page_size?/:last_id?': ['CaoMeiYouRen'],
-};
diff --git a/lib/v2/mihoyo/radar.js b/lib/v2/mihoyo/radar.js
deleted file mode 100644
index f34d15a2fbd996..00000000000000
--- a/lib/v2/mihoyo/radar.js
+++ /dev/null
@@ -1,31 +0,0 @@
-module.exports = {
- 'mihoyo.com': {
- _name: '米游社v2',
- bbs: [
- {
- title: '米游社 - 官方公告',
- docs: 'https://docs.rsshub.app/game.html#mi-ha-you-mi-you-she-guan-fang-gong-gao',
- // source: ['/ys/home/28', '/bh3/home/6', '/bh2/home/31', '/wd/home/33', '/sr/home/53'],
- source: ['/:game/home/28', '/:game/home/6', '/:game/home/31', '/:game/home/33', '/:game/home/53'],
- target: (params, url) => {
- const GITS_MAP = {
- bh3: 1, // '崩坏三',
- ys: 2, // '原神',
- bh2: 3, // '崩坏二',
- wd: 4, // '未定事件簿',
- sr: 6, // '崩坏:星穹铁道',
- };
- const { game } = params;
- const gids = GITS_MAP[game];
- if (!gids) {
- return '';
- }
- const { type = '2' } = new URL(url).searchParams;
- const page_size = '20';
- const last_id = '';
- return `/mihoyo/bbs/official/${gids}/${type}/${page_size}/${last_id}`;
- },
- },
- ],
- },
-};
diff --git a/lib/v2/mihoyo/router.js b/lib/v2/mihoyo/router.js
deleted file mode 100644
index b0bd1b78363b93..00000000000000
--- a/lib/v2/mihoyo/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/bbs/official/:gids/:type?/:page_size?/:last_id?', require('./bbs'));
-};
diff --git a/lib/v2/mihoyo/templates/description.art b/lib/v2/mihoyo/templates/description.art
deleted file mode 100644
index c195aad3b68084..00000000000000
--- a/lib/v2/mihoyo/templates/description.art
+++ /dev/null
@@ -1,6 +0,0 @@
-{{ description }}
-{{if images}}
- {{each images}}
-
- {{/each}}
-{{/if}}
diff --git a/lib/v2/mpaypass/maintainer.js b/lib/v2/mpaypass/maintainer.js
deleted file mode 100644
index fb515afb6f004b..00000000000000
--- a/lib/v2/mpaypass/maintainer.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- '/main/:type?': ['zhuan-zhu'],
- '/news': ['LogicJake', 'genghis-yang'],
-};
diff --git a/lib/v2/mpaypass/news.js b/lib/v2/mpaypass/news.js
deleted file mode 100644
index 5dbb471c88f1b2..00000000000000
--- a/lib/v2/mpaypass/news.js
+++ /dev/null
@@ -1,39 +0,0 @@
-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 link = 'http://m.mpaypass.com.cn';
- const listData = await got(link);
- const $list = cheerio.load(listData.data);
- ctx.state.data = {
- title: '新闻 - 移动支付网',
- link,
- language: 'zh-CN',
- item: await Promise.all(
- $list('.Newslist-li')
- .map((_, el) => {
- const $el = $list(el);
- const $a = $el.find('.Newslist-title a');
- const href = $a.attr('href');
- const title = $a.text();
- const date = $el.find('.Newslist-time span').text();
-
- return ctx.cache.tryGet(href, async () => {
- const contentData = await got.get(href);
- const $content = cheerio.load(contentData.data);
- const description = $content('.newslist-body').html();
-
- return {
- title,
- description,
- link: href,
- pubDate: timezone(parseDate(date), +8),
- };
- });
- })
- .get()
- ),
- };
-};
diff --git a/lib/v2/mpaypass/radar.js b/lib/v2/mpaypass/radar.js
deleted file mode 100644
index 65b31f511367d9..00000000000000
--- a/lib/v2/mpaypass/radar.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = {
- 'mpaypass.com.cn': {
- _name: '移动支付网',
- '.': [
- {
- title: '新闻',
- docs: 'https://docs.rsshub.app/new-media.html#yi-dong-zhi-fu-wang',
- source: '/',
- target: '/mpaypass/news',
- },
- {
- title: '分类',
- docs: 'https://docs.rsshub.app/new-media.html#yi-dong-zhi-fu-wang',
- source: ['/:type', '/'],
- target: (params) => `/mpaypass/main/${params.type.replace('.html', '')}`,
- },
- ],
- },
-};
diff --git a/lib/v2/mpaypass/router.js b/lib/v2/mpaypass/router.js
deleted file mode 100644
index 3d20601e67fb92..00000000000000
--- a/lib/v2/mpaypass/router.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = (router) => {
- router.get('/main/:type?', require('./main'));
- router.get('/news', require('./news'));
-};
diff --git a/lib/v2/mtime/maintainer.js b/lib/v2/mtime/maintainer.js
deleted file mode 100644
index ae0ebe64216aa0..00000000000000
--- a/lib/v2/mtime/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/mtime/news': ['TsSmartTT'],
-};
diff --git a/lib/v2/mtime/news.js b/lib/v2/mtime/news.js
deleted file mode 100644
index e939db6b8827fb..00000000000000
--- a/lib/v2/mtime/news.js
+++ /dev/null
@@ -1,48 +0,0 @@
-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 link = 'http://news.mtime.com/';
- const response = await got({
- method: 'get',
- url: link,
- });
- const $ = cheerio.load(response.data);
- const list = $('ul.left-cont.fix li')
- .map((_, item) => {
- item = $(item);
- return {
- title: item.find('h4 a').text(),
- link: item.find('h4 a').attr('href'),
- };
- })
- .get();
-
- const items = await Promise.all(
- list.map((item) =>
- ctx.cache.tryGet(item.link, async () => {
- const detailResponse = await got({
- method: 'get',
- url: item.link,
- });
- const content = cheerio.load(detailResponse.data);
-
- content('.DRE-subject-wrapper').remove();
-
- item.author = content('.editor').text().replace('编辑:', '');
- item.description = content('.body').first().html();
- item.pubDate = timezone(parseDate(content('.userCreateTime').text()), 8);
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: 'Mtime时光网 - 资讯',
- link,
- item: items,
- };
-};
diff --git a/lib/v2/mtime/radar.js b/lib/v2/mtime/radar.js
deleted file mode 100644
index 113c4feff5fefc..00000000000000
--- a/lib/v2/mtime/radar.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = {
- 'mtime.com': {
- _name: '时光网',
- news: [
- {
- title: '资讯',
- docs: 'https://docs.rsshub.app/multimedia.html#shi-guang-wang',
- source: '/',
- target: '/mtime/news',
- },
- ],
- },
-};
diff --git a/lib/v2/mtime/router.js b/lib/v2/mtime/router.js
deleted file mode 100644
index 69a5972f6a8112..00000000000000
--- a/lib/v2/mtime/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/news', require('./news'));
-};
diff --git a/lib/v2/natgeo/dailyphoto.js b/lib/v2/natgeo/dailyphoto.js
deleted file mode 100644
index a63d19bbdd19b9..00000000000000
--- a/lib/v2/natgeo/dailyphoto.js
+++ /dev/null
@@ -1,32 +0,0 @@
-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 config = require('@/config').value;
-
-module.exports = async (ctx) => {
- const rootUrl = 'https://www.nationalgeographic.com';
- const apiUrl = `${rootUrl}/photo-of-the-day`;
- const response = await ctx.cache.tryGet(apiUrl, async () => (await got(apiUrl)).data, config.cache.contentExpire, false);
- const $ = cheerio.load(response);
-
- const natgeo = JSON.parse($.html().match(/window\['__natgeo__'\]=(.*);/)[1]);
- const media = natgeo.page.content.mediaspotlight.frms[0].mods[0].edgs[1].media;
-
- const items = media.map((item) => ({
- title: item.meta.title,
- description: art(path.join(__dirname, 'templates/dailyPhoto.art'), {
- img: item.img,
- }),
- link: rootUrl + item.locator,
- pubDate: parseDate(item.caption.preHeading),
- author: item.img.crdt,
- }));
-
- ctx.state.data = {
- title: 'Nat Geo Photo of the Day',
- link: apiUrl,
- item: items,
- };
-};
diff --git a/lib/v2/natgeo/dailyselection.js b/lib/v2/natgeo/dailyselection.js
deleted file mode 100644
index 843c92f13fd9ec..00000000000000
--- a/lib/v2/natgeo/dailyselection.js
+++ /dev/null
@@ -1,41 +0,0 @@
-const got = require('@/utils/got');
-const timezone = require('@/utils/timezone');
-const { parseDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const host = 'http://dili.bdatu.com/jiekou/mains/p1.html';
- const data = await got(host);
-
- let sort = 0;
- let addtime = '';
-
- for (let i = 0; i < data.data.album.length; i++) {
- if (parseInt(data.data.album[i].ds) === 1) {
- sort = data.data.album[i].sort;
- addtime = data.data.album[i].addtime;
- break;
- }
- }
- const api = 'http://dili.bdatu.com/jiekou/albums/a' + sort + '.html';
- const response = await got(api);
- const items = response.data.picture;
- const out = new Array();
-
- items.map((item) => {
- const info = {
- title: item.title,
- link: item.url,
- description: `
` + item.content,
- pubDate: timezone(parseDate(addtime), +0),
- guid: item.id,
- };
- out.push(info);
- return info;
- });
-
- ctx.state.data = {
- title: 'Photo of the Daily Selection',
- link: api,
- item: out,
- };
-};
diff --git a/lib/v2/natgeo/maintainer.js b/lib/v2/natgeo/maintainer.js
deleted file mode 100644
index a8d19f4cf41b54..00000000000000
--- a/lib/v2/natgeo/maintainer.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- '/dailyselection': ['OrangeEd1t'],
- '/dailyphoto': ['LogicJake', 'OrangeEd1t', 'TonyRL'],
- '/:cat/:type?': ['fengkx'],
-};
diff --git a/lib/v2/natgeo/radar.js b/lib/v2/natgeo/radar.js
deleted file mode 100644
index efe95bcdc7d6a2..00000000000000
--- a/lib/v2/natgeo/radar.js
+++ /dev/null
@@ -1,24 +0,0 @@
-module.exports = {
- 'nationalgeographic.com': {
- _name: '国家地理',
- '.': [
- {
- title: '每日一图',
- docs: 'https://docs-rsshub.pages.dev/picture.html#guo-jia-di-li',
- source: ['/photo-of-the-day/*', '/'],
- target: '/natgeo/dailyphoto',
- },
- ],
- },
- 'natgeomedia.com': {
- _name: '国家地理',
- '.': [
- {
- title: '分类',
- docs: 'https://docs.rsshub.app/travel.html#guo-jia-di-li',
- source: ['/:cat/:type', '/'],
- target: '/natgeo/:cat/:type',
- },
- ],
- },
-};
diff --git a/lib/v2/natgeo/router.js b/lib/v2/natgeo/router.js
deleted file mode 100644
index d85de81184d0a0..00000000000000
--- a/lib/v2/natgeo/router.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = (router) => {
- router.get('/dailyphoto', require('./dailyphoto'));
- router.get('/dailyselection', require('./dailyselection'));
- router.get('/:cat/:type?', require('./natgeo'));
-};
diff --git a/lib/v2/natgeo/templates/dailyPhoto.art b/lib/v2/natgeo/templates/dailyPhoto.art
deleted file mode 100644
index 004525a04fd460..00000000000000
--- a/lib/v2/natgeo/templates/dailyPhoto.art
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
{{@ img.ttl }}
-
{{@ img.dsc }}
-
{{@ img.crdt }}
diff --git a/lib/v2/newmuseum/exhibitions.js b/lib/v2/newmuseum/exhibitions.js
deleted file mode 100644
index 7798526cc883c0..00000000000000
--- a/lib/v2/newmuseum/exhibitions.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const buildData = require('@/utils/common-config');
-
-module.exports = async (ctx) => {
- let link;
- const state = ctx.query.state;
-
- switch (state) {
- case undefined:
- case 'current':
- link = 'https://www.newmuseum.org/exhibitions/';
- break;
- default:
- link = `https://www.newmuseum.org/exhibitions/${state}`;
- }
-
- ctx.state.data = await buildData({
- link,
- url: link,
- title: 'New Museum - Exhibitions',
- item: {
- item: '.exh',
- title: `$('.exh .title').text()`,
- link: `$('.exh > a').attr('href')`,
- description: `$('.exh .body-reveal').text()`,
- },
- });
-};
diff --git a/lib/v2/newmuseum/maintainer.js b/lib/v2/newmuseum/maintainer.js
deleted file mode 100644
index 2b582f7fce773b..00000000000000
--- a/lib/v2/newmuseum/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/exhibitions': ['chazeon'],
-};
diff --git a/lib/v2/newmuseum/radar.js b/lib/v2/newmuseum/radar.js
deleted file mode 100644
index 483b923139b570..00000000000000
--- a/lib/v2/newmuseum/radar.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = {
- 'newmuseum.org': {
- _name: 'New Museum',
- www: [
- {
- title: 'Exhibitions',
- docs: 'https://docs.rsshub.app/en/travel.html#new-museum',
- },
- ],
- },
-};
diff --git a/lib/v2/newmuseum/router.js b/lib/v2/newmuseum/router.js
deleted file mode 100644
index d98b7c8845a250..00000000000000
--- a/lib/v2/newmuseum/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/exhibitions', require('./exhibitions'));
-};
diff --git a/lib/v2/npm/maintainer.js b/lib/v2/npm/maintainer.js
deleted file mode 100644
index c1ee34952e2625..00000000000000
--- a/lib/v2/npm/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/package/:name': ['Fatpandac'],
-};
diff --git a/lib/v2/npm/package.js b/lib/v2/npm/package.js
deleted file mode 100644
index 698f45fd559354..00000000000000
--- a/lib/v2/npm/package.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const got = require('@/utils/got');
-const { art } = require('@/utils/render');
-const path = require('path');
-
-module.exports = async (ctx) => {
- const name = ctx.params.name;
- const packageDownloadLastMonthAPI = `https://api.npmjs.org/downloads/point/last-month/${name}`; // 按月统计
- const packageDownloadLastWeekAPI = `https://api.npmjs.org/downloads/point/last-week/${name}`; // 按周统计
- const packageDownloadLastDayAPI = `https://api.npmjs.org/downloads/point/last-day/${name}`; // 按天统计
- const packageVersionAPI = `https://registry.npmjs.org/${name}`; // 包基本信息
-
- const downloadCountLastMonthRes = await got(packageDownloadLastMonthAPI).json();
- const downloadCountLastWeekRes = await got(packageDownloadLastWeekAPI).json();
- const downloadCountLastDayRes = await got(packageDownloadLastDayAPI).json();
- const packageVersionRes = await got(packageVersionAPI).json();
-
- const packageVersion = packageVersionRes.time;
- const packageVersionList = [];
- for (const key in packageVersion) {
- packageVersionList.push({
- version: key,
- time: packageVersion[key],
- });
- }
- packageVersionList.reverse();
-
- ctx.state.data = {
- title: `${name} - npm`,
- link: `https://www.npmjs.com/package/${name}`,
- description: `${name} - npm`,
- item: [
- {
- title: `${name} - npm`,
- description: art(path.join(__dirname, 'templates/package.art'), {
- packageDownloadCountLastMonth: downloadCountLastMonthRes.downloads,
- packageDownloadCountLastWeek: downloadCountLastWeekRes.downloads,
- packageDownloadCountLastDay: downloadCountLastDayRes.downloads,
- packageVersion: packageVersionList,
- }),
- link: `https://www.npmjs.com/package/${name}`,
- guid: `https://www.npmjs.com/package/${name}${packageVersion.modified}`,
- },
- ],
- };
-};
diff --git a/lib/v2/npm/radar.js b/lib/v2/npm/radar.js
deleted file mode 100644
index b02f83dbdcadf1..00000000000000
--- a/lib/v2/npm/radar.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = {
- 'npmjs.com': {
- _name: 'npm',
- '.': [
- {
- title: '包',
- docs: 'https://docs.rsshub.app/program-update.html#npm',
- source: ['/package/:name'],
- target: '/npm/package/:name',
- },
- ],
- },
-};
diff --git a/lib/v2/npm/router.js b/lib/v2/npm/router.js
deleted file mode 100644
index 89fd149fb5003d..00000000000000
--- a/lib/v2/npm/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/package/:name', require('./package'));
-};
diff --git a/lib/v2/npm/templates/package.art b/lib/v2/npm/templates/package.art
deleted file mode 100644
index db7b75a365e739..00000000000000
--- a/lib/v2/npm/templates/package.art
+++ /dev/null
@@ -1,10 +0,0 @@
-
Download
-
Last Day: {{packageDownloadCountLastDay}}
-
Last week: {{packageDownloadCountLastWeek}}
-
Last month: {{packageDownloadCountLastMonth}}
-
-
Version
-{{ each packageVersion}}
-
{{$value.version}}: {{$value.time}}
-{{/each}}
-
diff --git a/lib/v2/picuki/profile.js b/lib/v2/picuki/profile.js
index a117876611f3ab..89a5a812a895b1 100644
--- a/lib/v2/picuki/profile.js
+++ b/lib/v2/picuki/profile.js
@@ -3,7 +3,6 @@ const cheerio = require('cheerio');
const chrono = require('chrono-node');
const { art } = require('@/utils/render');
const path = require('path');
-const config = require('@/config').value;
module.exports = async (ctx) => {
const id = ctx.params.id;
@@ -12,16 +11,8 @@ module.exports = async (ctx) => {
const profileUrl = `https://www.picuki.com/profile/${id}`;
- const data = await ctx.cache.tryGet(
- profileUrl,
- async () => {
- const _r = await got(profileUrl);
- return _r.data;
- },
- config.cache.routeExpire,
- false
- );
- const $ = cheerio.load(data);
+ const response = await got.get(profileUrl);
+ const $ = cheerio.load(response.data);
const profileName = $('.profile-name-bottom').text();
const profileImg = $('.profile-avatar > img').attr('src');
@@ -31,7 +22,7 @@ module.exports = async (ctx) => {
async function getMedia(url) {
const getPost = async () => {
- const response = await got(url, {
+ const response = await got.get(url, {
headers: {
Referer: profileUrl,
},
diff --git a/lib/v2/pubmed/maintainer.js b/lib/v2/pubmed/maintainer.js
deleted file mode 100644
index 521275e35a5434..00000000000000
--- a/lib/v2/pubmed/maintainer.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- '/trending/:filters?': ['nczitzk'],
-};
diff --git a/lib/v2/pubmed/radar.js b/lib/v2/pubmed/radar.js
deleted file mode 100644
index 9140945c18188c..00000000000000
--- a/lib/v2/pubmed/radar.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = {
- 'pubmed.ncbi.nlm.nih.gov': {
- _name: 'PubMed',
- '.': [
- {
- title: 'Trending articles',
- docs: 'https://docs.rsshub.app/journal.html#pubmed-trending-articles',
- source: ['/trending', '/'],
- target: (params, url) => `/pubmed/trending/${new URL(url).searchParams.getAll('filter').join(',')}`,
- },
- ],
- },
-};
diff --git a/lib/v2/pubmed/router.js b/lib/v2/pubmed/router.js
deleted file mode 100644
index 5db58ad1e58f6c..00000000000000
--- a/lib/v2/pubmed/router.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function (router) {
- router.get('/trending/:filters?', require('./trending'));
-};
diff --git a/lib/v2/pubmed/templates/description.art b/lib/v2/pubmed/templates/description.art
deleted file mode 100644
index c4b8e232b99721..00000000000000
--- a/lib/v2/pubmed/templates/description.art
+++ /dev/null
@@ -1,7 +0,0 @@
-{{ if authors }}
-{{@ authors }}
-{{ /if}}
-
-{{ if abs }}
-{{@ abs }}
-{{ /if}}
\ No newline at end of file
diff --git a/lib/v2/pubmed/trending.js b/lib/v2/pubmed/trending.js
deleted file mode 100644
index 3e761efd7df99d..00000000000000
--- a/lib/v2/pubmed/trending.js
+++ /dev/null
@@ -1,58 +0,0 @@
-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 filters = ctx.params.filters;
-
- const rootUrl = 'https://pubmed.ncbi.nlm.nih.gov';
- const currentUrl = `${rootUrl}/trending${filters ? `?filter=${filters.replace(/,/g, '&filter=')}` : ''}`;
-
- const response = await got({
- method: 'get',
- url: currentUrl,
- });
-
- const $ = cheerio.load(response.data);
-
- let items = $('a[data-article-id]')
- .toArray()
- .map((item) => {
- item = $(item);
-
- return {
- title: item.text(),
- link: `${rootUrl}/${item.attr('data-article-id')}`,
- };
- });
-
- 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.doi = content('meta[name="citation_doi"]').attr('content');
- item.pubDate = parseDate(content('meta[name="citation_date"]').attr('content'));
- item.description = art(path.join(__dirname, 'templates/description.art'), {
- authors: content('.authors-list').html(),
- abs: content('#enc-abstract').html(),
- });
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: 'Trending page - PubMed',
- link: currentUrl,
- item: items,
- };
-};
diff --git a/lib/v2/quicker/maintainer.js b/lib/v2/quicker/maintainer.js
deleted file mode 100644
index d5e7b8dd533d36..00000000000000
--- a/lib/v2/quicker/maintainer.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- '/qa/:category?/:state?': ['Cesaryuan', 'nczitzk'],
- '/share/:category?': ['nczitzk'],
- '/update': ['Cesaryuan', 'nczitzk'],
- '/user/:category/:id': ['Cesaryuan', 'nczitzk'],
- '/versions': ['Cesaryuan', 'nczitzk'],
-};
diff --git a/lib/v2/quicker/qa.js b/lib/v2/quicker/qa.js
deleted file mode 100644
index 1fd2037920a8fb..00000000000000
--- a/lib/v2/quicker/qa.js
+++ /dev/null
@@ -1,65 +0,0 @@
-const got = require('@/utils/got');
-const cheerio = require('cheerio');
-const timezone = require('@/utils/timezone');
-const { parseDate, parseRelativeDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const category = ctx.params.category ?? 'all';
- const state = ctx.params.state ?? '';
-
- const rootUrl = 'https://getquicker.net';
- const currentUrl = `${rootUrl}/QA${category !== 'all' ? `?category=${category}` : ''}${state ? `?state=${state}` : ''}`;
-
- const response = await got({
- method: 'get',
- url: currentUrl,
- });
-
- const $ = cheerio.load(response.data);
-
- let items = $('a.question-title')
- .slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 25)
- .toArray()
- .map((item) => {
- item = $(item);
-
- return {
- title: item.text(),
- link: `${rootUrl}${item.attr('href')}`,
- };
- });
-
- 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);
-
- content('div[data-note="最后更新人信息"]').remove();
-
- const pubDate = content('.info-text')
- .first()
- .text()
- .replace(/创建于 /, '')
- .trim();
-
- item.description = content('.topic-body').html();
- item.author = content('.user-link').first().text();
- item.pubDate = timezone(/-/.test(pubDate) ? parseDate(pubDate) : parseRelativeDate(pubDate), +8);
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: $('title').text(),
- link: currentUrl,
- item: items,
- allowEmpty: true,
- };
-};
diff --git a/lib/v2/quicker/radar.js b/lib/v2/quicker/radar.js
deleted file mode 100644
index 6333917e396d34..00000000000000
--- a/lib/v2/quicker/radar.js
+++ /dev/null
@@ -1,31 +0,0 @@
-module.exports = {
- 'getquicker.net': {
- _name: 'Quicker',
- '.': [
- {
- title: '动作分享',
- docs: 'https://docs.rsshub.app/programming.html#quicker-dong-zuo-fen-xiang',
- source: ['/Share/:category', '/'],
- target: '/quicker/share/:category?',
- },
- {
- title: '讨论区',
- docs: 'https://docs.rsshub.app/programming.html#quicker-tao-lun-qu',
- source: ['/QA', '/'],
- target: (params, url) => `/quicker/qa/${new URL(url).searchParams.get('category') ?? ''}/${new URL(url).searchParams.get('state') ?? ''}`,
- },
- {
- title: '用户动作更新',
- docs: 'https://docs.rsshub.app/programming.html#quicker-yong-hu-dong-zuo-geng-xin',
- source: ['/QA', '/'],
- target: (params, url) => `/quicker/qa/${new URL(url).searchParams.get('category') ?? ''}/${new URL(url).searchParams.get('state') ?? ''}`,
- },
- {
- title: '版本更新',
- docs: 'https://docs.rsshub.app/programming.html#quicker-ban-ben-geng-xin',
- source: ['/Help/Versions', '/'],
- target: '/quicker/versions',
- },
- ],
- },
-};
diff --git a/lib/v2/quicker/router.js b/lib/v2/quicker/router.js
deleted file mode 100644
index 6415b5e41cca66..00000000000000
--- a/lib/v2/quicker/router.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = function (router) {
- router.get('/qa/:category?/:state?', require('./qa'));
- router.get('/share/:category?', require('./share'));
- router.get('/update', require('./versions'));
- router.get('/user/:category/:id', require('./user'));
- router.get('/versions', require('./versions'));
-};
diff --git a/lib/v2/quicker/share.js b/lib/v2/quicker/share.js
deleted file mode 100644
index d17cb5c320cbce..00000000000000
--- a/lib/v2/quicker/share.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const got = require('@/utils/got');
-const cheerio = require('cheerio');
-const timezone = require('@/utils/timezone');
-const { parseDate, parseRelativeDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const category = ctx.params.category ?? 'Recent';
-
- const rootUrl = 'https://getquicker.net';
- const currentUrl = `${rootUrl}/Share/${category}`;
-
- const response = await got({
- method: 'get',
- url: currentUrl,
- });
-
- const $ = cheerio.load(response.data);
-
- let items = $('table tbody tr')
- .slice(1, ctx.query.limit ? parseInt(ctx.query.limit) : 25)
- .toArray()
- .map((item) => {
- item = $(item).find('td a').first();
-
- return {
- title: item.text(),
- link: `${rootUrl}${item.attr('href')}`,
- };
- });
-
- 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);
-
- content('section').last().remove();
- content('#app').children().slice(0, 2).remove();
-
- const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.trim().replace(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
-
- item.author = content('.user-link').first().text();
- item.description = content('div[data-info="动作信息"]').html() ?? content('#app').html() ?? content('.row').eq(1).html();
- item.pubDate = timezone(/-/.test(pubDate) ? parseDate(pubDate) : parseRelativeDate(pubDate), +8);
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: $('title').text(),
- link: currentUrl,
- item: items,
- allowEmpty: true,
- };
-};
diff --git a/lib/v2/quicker/user.js b/lib/v2/quicker/user.js
deleted file mode 100644
index cdd64c19f90dd6..00000000000000
--- a/lib/v2/quicker/user.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const got = require('@/utils/got');
-const cheerio = require('cheerio');
-const timezone = require('@/utils/timezone');
-const { parseDate, parseRelativeDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const category = ctx.params.category;
- const id = ctx.params.id;
-
- const rootUrl = 'https://getquicker.net';
- const currentUrl = `${rootUrl}/User/${category}/${id}`;
-
- const response = await got({
- method: 'get',
- url: currentUrl,
- });
-
- const $ = cheerio.load(response.data);
-
- let items = $('table tbody tr')
- .slice(1, ctx.query.limit ? parseInt(ctx.query.limit) : 25)
- .toArray()
- .map((item) => {
- item = $(item).find('td a').first();
-
- return {
- title: item.text(),
- link: `${rootUrl}${item.attr('href')}`,
- };
- });
-
- 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);
-
- content('section').last().remove();
- content('#app').children().slice(0, 2).remove();
-
- const pubDate = content('.text-secondary a').not('.text-secondary').first().text()?.trim().replace(/\s*/g, '') || content('div.note-text').find('span').eq(3).text();
-
- item.author = content('.user-link').first().text();
- item.description = content('div[data-info="动作信息"]').html() ?? content('#app').html() ?? content('.row').eq(1).html();
- item.pubDate = timezone(/-/.test(pubDate) ? parseDate(pubDate) : parseRelativeDate(pubDate), +8);
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: $('title').text(),
- link: currentUrl,
- item: items,
- allowEmpty: true,
- };
-};
diff --git a/lib/v2/quicker/versions.js b/lib/v2/quicker/versions.js
deleted file mode 100644
index ece5f7a0e3ca3e..00000000000000
--- a/lib/v2/quicker/versions.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const got = require('@/utils/got');
-const cheerio = require('cheerio');
-const { parseDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const rootUrl = 'https://getquicker.net';
- const currentUrl = `${rootUrl}/Help/Versions`;
-
- const response = await got({
- method: 'get',
- url: currentUrl,
- });
-
- const $ = cheerio.load(response.data);
-
- const items = $('.version')
- .toArray()
- .map((item) => {
- item = $(item);
-
- const a = item.find('h2 a');
-
- return {
- title: a.text().trim(),
- link: `${rootUrl}${a.attr('href')}`,
- description: item.find('.article-content').html(),
- pubDate: parseDate(item.find('.text-secondary').first().text()),
- };
- });
-
- ctx.state.data = {
- title: $('title').text(),
- link: currentUrl,
- item: items,
- };
-};
diff --git a/lib/v2/qweather/3days.js b/lib/v2/qweather/3days.js
deleted file mode 100644
index 544cc9f3a1b567..00000000000000
--- a/lib/v2/qweather/3days.js
+++ /dev/null
@@ -1,46 +0,0 @@
-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?';
-
-module.exports = async (ctx) => {
- 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 requestUrl = rootUrl + 'key=' + config.hefeng.key + '&location=' + id;
- const responseData = await ctx.cache.tryGet(
- ctx.params.location,
- async () => {
- const response = await got(requestUrl);
- 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,
- description: art(path.join(__dirname, './util/3days.art'), {
- item,
- }),
- pubDate: responseData.updateTime,
- guid: '位置:' + ctx.params.location + '--日期:' + item.fxDate,
- link: responseData.fxLink,
- }));
-
- ctx.state.data = {
- title: ctx.params.location + '未来三天天气',
- description: ctx.params.location + '未来三天天气情况,使用和风彩云api',
- item: items,
- link: responseData.fxLink,
- };
-};
diff --git a/lib/v2/qweather/maintainer.js b/lib/v2/qweather/maintainer.js
deleted file mode 100644
index 907904212644f0..00000000000000
--- a/lib/v2/qweather/maintainer.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- '/qweather/3days/:location': ['Rein-Ou'],
- '/qweather/now/:location': ['Rein-Ou'],
-};
diff --git a/lib/v2/qweather/now.js b/lib/v2/qweather/now.js
deleted file mode 100644
index 7e179c4b48f613..00000000000000
--- a/lib/v2/qweather/now.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const got = require('@/utils/got');
-const { art } = require('@/utils/render');
-const path = require('path');
-const { parseDate } = require('@/utils/parse-date');
-const timezone = require('@/utils/timezone');
-const config = require('@/config').value;
-const rootUrl = 'https://devapi.qweather.com/v7/weather/now?';
-module.exports = async (ctx) => {
- 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 requestUrl = rootUrl + 'key=' + config.hefeng.key + '&location=' + id;
- const responseData = await ctx.cache.tryGet(
- ctx.params.location + '_now',
- async () => {
- const response = await got(requestUrl);
- return response.data;
- },
- 3600, // second
- false
- );
-
- const data = [responseData.now];
-
- const timeObj = timezone(parseDate(responseData.updateTime), +8);
-
- const time_show = timeObj.toLocaleString();
-
- ctx.state.data = {
- title: ctx.params.location + '实时天气',
- description: ctx.params.location + '实时天气状况',
- item: data.map((item) => ({
- title: '观测时间:' + time_show,
- description: art(path.join(__dirname, './util/now.art'), { item }),
- pubDate: timeObj,
- guid: '位置:' + ctx.params.location + '--时间:' + time_show,
- link: responseData.fxLink,
- })),
- link: responseData.fxLink,
- };
-};
diff --git a/lib/v2/qweather/router.js b/lib/v2/qweather/router.js
deleted file mode 100644
index 63c591437cbccb..00000000000000
--- a/lib/v2/qweather/router.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = function (router) {
- router.get('/3days/:location', require('./3days'));
- router.get('/now/:location', require('./now'));
-};
diff --git a/lib/v2/qweather/util/3days.art b/lib/v2/qweather/util/3days.art
deleted file mode 100644
index 5d97c1d928a388..00000000000000
--- a/lib/v2/qweather/util/3days.art
+++ /dev/null
@@ -1,20 +0,0 @@
-
白天:{{item.textDay}}——夜间:{{item.textNight}}
-
-
气温:{{item.tempMin}}℃~{{item.tempMax}}℃
-
-
相对湿度:{{item.humidity}}%
-
-
大气压强:{{item.pressure}}百帕
-
-
紫外线强度:{{item.uvIndex}}
-
-
白天风向:{{item.windDirDay}} 风力:{{item.windScaleDay}}级 风速:{{item.windSpeedDay}}公里/小时
-
-
夜间风向:{{item.windDirNight}} 风力:{{item.windScaleNight}}级 风速:{{item.windSpeedNight}}公里/小时
-
-
能见度:{{item.vis}}公里
-
-
日出:{{item.sunrise}} 日落: {{item.sunset}}
-
-
月相:{{item.moonPhase}} 月出:{{item.sunrise}} 月落:{{item.moonset}}
-
\ No newline at end of file
diff --git a/lib/v2/qweather/util/now.art b/lib/v2/qweather/util/now.art
deleted file mode 100644
index dfdbdf7e03a701..00000000000000
--- a/lib/v2/qweather/util/now.art
+++ /dev/null
@@ -1,16 +0,0 @@
-天气:{{item.text}}
-
-气温:{{item.temp}}℃
-
-体感温度:{{item.feelsLike}}℃
-
-风向:{{item.windDir}}
-
-风力:{{item.windScale}}级 风速:{{item.windSpeed}}km/h
-
-湿度:{{item.humidity}}% 大气压强:{{item.pressure}}hPa
-
-本小时降水量:{{item.precip}}mm
-
-能见度:{{item.vis}}km
-
\ No newline at end of file
diff --git a/lib/v2/telegram/channel.js b/lib/v2/telegram/channel.js
index 618049cad743d2..49801e5548bca3 100644
--- a/lib/v2/telegram/channel.js
+++ b/lib/v2/telegram/channel.js
@@ -82,16 +82,12 @@ module.exports = async (ctx) => {
const resourceUrl = searchQuery ? `https://t.me/s/${username}?q=${encodeURIComponent(searchQuery)}` : `https://t.me/s/${username}`;
- const data = await ctx.cache.tryGet(
- resourceUrl,
- async () => {
- const _r = await got(resourceUrl);
- return _r.data;
- },
- config.cache.routeExpire,
- false
- );
-
+ let data = await ctx.cache.get(resourceUrl, false);
+ if (!data) {
+ const response = await got.get(resourceUrl);
+ data = response.data;
+ ctx.cache.set(resourceUrl, data, config.cache.routeExpire);
+ }
const $ = cheerio.load(data);
const list = includeServiceMsg
? $('.tgme_widget_message_wrap:not(.tgme_widget_message_wrap:has(.tme_no_messages_found))') // exclude 'no posts found' messages
diff --git a/lib/v2/test/index.js b/lib/v2/test/index.js
index dc3396bcd4957e..de003ee3cc96f9 100644
--- a/lib/v2/test/index.js
+++ b/lib/v2/test/index.js
@@ -62,7 +62,7 @@ module.exports = async (ctx) => {
}
if (!noRefresh) {
noRefresh = '0';
- await ctx.cache.set('noRefreshCache', '1', undefined);
+ await ctx.cache.set('noRefreshCache', '1', undefined, false);
}
item.push({
title: 'Cache Title',
diff --git a/lib/v2/thepaper/factpaper.js b/lib/v2/thepaper/factpaper.js
deleted file mode 100644
index 23158b8a6a630d..00000000000000
--- a/lib/v2/thepaper/factpaper.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const got = require('@/utils/got');
-const timezone = require('@/utils/timezone');
-const { parseDate } = require('@/utils/parse-date');
-const { art } = require('@/utils/render');
-const path = require('path');
-
-module.exports = async (ctx) => {
- const status = parseInt(ctx.params.status ?? '1');
-
- const rootUrl = 'https://www.factpaper.cn';
- const apiRootUrl = 'https://api.factpaper.cn';
- const currentUrl = `${apiRootUrl}/fact-check/front/proveList`;
-
- const response = await got({
- method: 'post',
- url: currentUrl,
- json: {
- pageNum: 1,
- pageSize: 20,
- status,
- },
- });
-
- let items = response.data.data.list.map((item) => ({
- title: item.title,
- guid: item.proveId,
- link: `${rootUrl}/detail?id=${item.proveId}`,
- pubDate: timezone(parseDate(item.publishTime), +8),
- }));
-
- items = await Promise.all(
- items.map((item) =>
- ctx.cache.tryGet(item.link, async () => {
- const detailResponse = await got({
- method: 'post',
- url: `${apiRootUrl}/fact-check/front/proveInfo`,
- json: {
- proveId: item.guid,
- },
- });
-
- const data = detailResponse.data.data;
-
- item.author = data.userName;
- item.description = art(path.join(__dirname, 'templates/factpaper.art'), {
- content: data.content,
- checkinfo: data.checkInfoList,
- finalCheckInfo: data.finalCheckInfo,
- });
-
- return item;
- })
- )
- );
-
- ctx.state.data = {
- title: `澎湃明查 - ${status === 1 ? '有定论' : '核查中'}`,
- link: rootUrl,
- item: items,
- };
-};
diff --git a/lib/v2/thepaper/maintainer.js b/lib/v2/thepaper/maintainer.js
deleted file mode 100644
index b348757802e01c..00000000000000
--- a/lib/v2/thepaper/maintainer.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
- '/839studio/:id': ['umm233'],
- '/839studio': ['umm233'],
- '/channel/:id': ['xyqfer', 'nczitzk'],
- '/featured': ['HenryQW', 'nczitzk'],
- '/factpaper/:status?': ['nczitzk'],
- '/list/:id': ['nczitzk'],
-};
diff --git a/lib/v2/thepaper/radar.js b/lib/v2/thepaper/radar.js
deleted file mode 100644
index 42cf1c2c2b5737..00000000000000
--- a/lib/v2/thepaper/radar.js
+++ /dev/null
@@ -1,42 +0,0 @@
-module.exports = {
- 'thepaper.cn': {
- _name: '澎湃新闻',
- '.': [
- {
- title: '首页头条',
- docs: 'https://docs.rsshub.app/traditional-media.html#peng-pai-xin-wen-shou-ye-tou-tiao',
- source: ['/'],
- target: '/thepaper/featured',
- },
- {
- title: '频道',
- docs: 'https://docs.rsshub.app/traditional-media.html#peng-pai-xin-wen-pin-dao',
- source: ['/'],
- target: (params, url) => `/thepaper/channel/${new URL(url).search(/channel_(\d+)/)}`,
- },
- {
- title: '列表',
- docs: 'https://docs.rsshub.app/traditional-media.html#peng-pai-xin-wen-lie-biao',
- source: ['/'],
- target: (params, url) => `/thepaper/channel/${new URL(url).search(/list_(\d+)/)}`,
- },
- {
- title: '澎湃美数组作品集',
- docs: 'https://docs.rsshub.app/traditional-media.html#peng-pai-xin-wen-peng-pai-mei-shu-zuo-pin-ji',
- source: ['/'],
- target: '/thepaper/839studio/:id',
- },
- ],
- },
- 'factpaper.cn': {
- _name: '澎湃新闻',
- '.': [
- {
- title: '明查',
- docs: 'https://docs.rsshub.app/traditional-media.html#peng-pai-xin-wen-ming-cha',
- source: ['/'],
- target: '/thepaper/factpaper/:status',
- },
- ],
- },
-};
diff --git a/lib/v2/thepaper/router.js b/lib/v2/thepaper/router.js
deleted file mode 100644
index be6f7685d0c871..00000000000000
--- a/lib/v2/thepaper/router.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = function (router) {
- router.get('/839studio', require('./839studio/studio'));
- router.get('/839studio/:id', require('./839studio/category'));
- router.get('/channel/:id', require('./channel'));
- router.get('/featured', require('./featured'));
- router.get('/factpaper/:status?', require('./factpaper'));
- router.get('/list/:id', require('./list'));
-};
diff --git a/lib/v2/thepaper/templates/factpaper.art b/lib/v2/thepaper/templates/factpaper.art
deleted file mode 100644
index c78a15da3e754e..00000000000000
--- a/lib/v2/thepaper/templates/factpaper.art
+++ /dev/null
@@ -1,12 +0,0 @@
-发起求证
-{{@ content }}
-{{if checkinfo}}
-一起核查
-{{each checkinfo check}}
-{{@ check.content }}
-{{/each}}
-{{/if}}
-{{if finalCheckInfo}}
-有定论了
-{{@ finalCheckInfo.content }}
-{{/if}}
\ No newline at end of file
diff --git a/lib/v2/thepaper/utils.js b/lib/v2/thepaper/utils.js
deleted file mode 100644
index 29850b5827e32c..00000000000000
--- a/lib/v2/thepaper/utils.js
+++ /dev/null
@@ -1,55 +0,0 @@
-const cheerio = require('cheerio');
-const date = require('@/utils/date');
-const { parseDate } = require('@/utils/parse-date');
-const timezone = require('@/utils/timezone');
-const got = require('@/utils/got');
-
-module.exports = {
- ProcessFeed: async (query, link, ctx) => {
- const res = await got(link);
-
- const $ = cheerio.load(res.data);
- const list = $(query).slice(0, 10).get();
-
- return Promise.all(
- list.map((item) => {
- const $ = cheerio.load(item);
- const itemUrl = `https://m.thepaper.cn/${$(item).find('a').eq(0).attr('href')}`;
- return ctx.cache.tryGet(itemUrl, async () => {
- const res = await got(itemUrl);
- const content = cheerio.load(res.data);
-
- let description, pubDate;
-
- if (content('div.news_video_msg').length > 0) {
- description = content('#vdetail_sum').html();
- pubDate = timezone(
- parseDate(
- content('div.news_video_msg')
- .html()
- .replace(/ /gi, '')
- .split('
')[0]
- ),
- +8
- );
- } else if (content('#slider_wrapper_ul').length > 0) {
- description = '';
- pubDate = new Date(date($(item).find('div.list_item_extra span').eq(1).text())).toUTCString();
- } else {
- description = content('div.newsdetail_content').html();
- pubDate = timezone(parseDate(content('div.date').text().trim().split('来源:')[0].trim()), +8);
- }
-
- const single = {
- title: content('title').text(),
- link: itemUrl,
- description,
- pubDate,
- author: content('div.author').text(),
- };
- return single;
- });
- })
- );
- },
-};
diff --git a/lib/v2/zooTeam/blog.js b/lib/v2/zooTeam/blog.js
deleted file mode 100644
index bbfe71ad4b1939..00000000000000
--- a/lib/v2/zooTeam/blog.js
+++ /dev/null
@@ -1,32 +0,0 @@
-const got = require('@/utils/got');
-const timezone = require('@/utils/timezone');
-const { parseDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const response = await got({
- method: 'get',
- url: 'https://www.zoo.team/api/articles',
- });
- const data = response.data.data.articles;
- ctx.state.data = {
- // 源标题
- title: '政采云前端博客',
- // 源链接
- link: 'https://www.zoo.team',
- // 源说明
- description: '政采云前端博客',
- // 遍历此前获取的数据
- item: data.map((item) => ({
- // 文章标题
- title: item.title,
- // 文章正文
- description: `${item.desc}
`,
- // 文章发布时间
- pubDate: timezone(parseDate(item.created_at), +8),
- // 文章链接
- link: `https://zoo.team/article/${item.path}`,
- // 分类
- category: item.category,
- })),
- };
-};
diff --git a/lib/v2/zooTeam/maintainer.js b/lib/v2/zooTeam/maintainer.js
deleted file mode 100644
index 358e9170aa3a0f..00000000000000
--- a/lib/v2/zooTeam/maintainer.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- '/zooTeam/blog': ['Pulset'],
- '/zooTeam/weekly': ['Pulset'],
-};
diff --git a/lib/v2/zooTeam/radar.js b/lib/v2/zooTeam/radar.js
deleted file mode 100644
index d42ae0febe6cb2..00000000000000
--- a/lib/v2/zooTeam/radar.js
+++ /dev/null
@@ -1,21 +0,0 @@
-module.exports = {
- 'zoo.team': {
- _name: '政采云前端技术团队',
- weekly: [
- {
- title: '小报',
- docs: 'https://docs.rsshub.app/blog.html#zheng-cai-yun-qian-duan-ji-shu-tuan-dui',
- source: '/',
- target: '/zooTeam/weekly',
- },
- ],
- www: [
- {
- title: '博客',
- docs: 'https://docs.rsshub.app/blog.html#zheng-cai-yun-qian-duan-ji-shu-tuan-dui',
- source: '/',
- target: '/zooTeam/blog',
- },
- ],
- },
-};
diff --git a/lib/v2/zooTeam/router.js b/lib/v2/zooTeam/router.js
deleted file mode 100644
index 75a52c6e8f6675..00000000000000
--- a/lib/v2/zooTeam/router.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = function (router) {
- router.get('/blog', require('./blog'));
- router.get('/weekly', require('./weekly'));
-};
diff --git a/lib/v2/zooTeam/weekly.js b/lib/v2/zooTeam/weekly.js
deleted file mode 100644
index ba651aeaf74b80..00000000000000
--- a/lib/v2/zooTeam/weekly.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const got = require('@/utils/got');
-const timezone = require('@/utils/timezone');
-const { parseDate } = require('@/utils/parse-date');
-
-module.exports = async (ctx) => {
- const response = await got({
- method: 'get',
- url: 'https://weekly.zoo.team:3030/api/lastest/list',
- });
- const data = response.data.data;
- ctx.state.data = {
- // 源标题
- title: '政采云前端小报',
- // 源链接
- link: 'https://weekly.zoo.team/',
- // 源说明
- description: '政采云前端小报',
- // 有可能接口返回为空
- allowEmpty: true,
- // 遍历此前获取的数据
- item: data.map((item) => ({
- // 文章标题
- title: item.title,
- // 文章正文
- description: item.description,
- // 文章发布时间
- pubDate: timezone(parseDate(item.timestamp * 1000), +8),
- // 文章链接
- link: item.link,
- // 分类
- category: item.category,
- })),
- };
-};
diff --git a/lib/views/atom.art b/lib/views/atom.art
index b0a754795d0081..ee0addb78e2c44 100644
--- a/lib/views/atom.art
+++ b/lib/views/atom.art
@@ -37,10 +37,8 @@
{{ $e.guid || $e.id || $e.link }}
- {{ if ($e.pubDate && $e.updated) }}
- {{ $e.pubDate }}
- {{ /if }}
- {{ $e.updated || $e.pubDate }}
+ {{ $e.pubDate || $e.updated }}
+ {{ $e.updated }}
{{ if $e.author }}
diff --git a/package.json b/package.json
index dc980421cf6962..042b9f2285f1bb 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,9 @@
"@vuepress/plugin-back-to-top": "1.9.7",
"@vuepress/plugin-google-analytics": "1.9.7",
"@vuepress/plugin-pwa": "1.9.7",
- "@vuepress/shared-utils": "1.9.7",
"ci-info": "3.3.0",
"cross-env": "7.0.3",
- "eslint": "8.12.0",
+ "eslint": "8.11.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-prettier": "4.0.0",
"eslint-plugin-yml": "0.14.0",
@@ -60,7 +59,7 @@
"mockdate": "3.0.5",
"nock": "13.2.4",
"nodemon": "2.0.15",
- "prettier": "2.6.1",
+ "prettier": "2.6.0",
"prettier-check": "2.0.0",
"pretty-quick": "3.1.3",
"remark": "13.0.0",
@@ -79,7 +78,7 @@
"dependencies": {
"@koa/router": "10.1.1",
"@postlight/mercury-parser": "2.2.1",
- "@sentry/node": "6.19.3",
+ "@sentry/node": "6.19.2",
"aes-js": "3.1.2",
"art-template": "4.13.2",
"bbcodejs": "0.0.4",
@@ -95,12 +94,12 @@
"etag": "1.8.1",
"fanfou-sdk": "4.2.0",
"git-rev-sync": "3.0.2",
- "googleapis": "100.0.0",
+ "googleapis": "98.0.0",
"got": "11.8.3",
"https-proxy-agent": "5.0.0",
"iconv-lite": "0.6.3",
"instagram-private-api": "1.45.3",
- "ioredis": "5.0.3",
+ "ioredis": "4.28.5",
"ip": "*",
"ip-regex": "4.3.0",
"is-localhost-ip": "1.4.0",
@@ -111,15 +110,15 @@
"koa-basic-auth": "4.0.0",
"koa-favicon": "2.1.0",
"koa-mount": "4.0.0",
- "lru-cache": "7.7.3",
+ "lru-cache": "7.7.1",
"lz-string": "1.4.4",
"mailparser": "3.4.0",
"markdown-it": "12.3.2",
"module-alias": "2.2.2",
- "parse-torrent": "9.1.5",
+ "parse-torrent": "9.1.4",
"pidusage": "3.0.0",
"plist": "3.0.5",
- "puppeteer": "13.5.2",
+ "puppeteer": "13.5.1",
"query-string": "7.1.1",
"require-all": "3.0.0",
"rss-parser": "3.12.0",
@@ -159,8 +158,5 @@
},
"nodemonConfig": {
"ext": "art,js,mjs,json"
- },
- "engines": {
- "node": ">=14"
}
}
diff --git a/test/middleware/template.js b/test/middleware/template.js
index 89b8c90c061a6d..4b31e96fff06ba 100644
--- a/test/middleware/template.js
+++ b/test/middleware/template.js
@@ -10,8 +10,6 @@ afterAll(() => {
});
describe('template', () => {
- const expectPubDate = new Date(1546272000000 - 10 * 1000);
-
it(`.rss`, async () => {
const response1 = await request.get('/test/1.rss');
const parsed1 = await parser.parseString(response1.text);
@@ -27,7 +25,7 @@ describe('template', () => {
expect(parsed1.items[0]).toEqual(expect.any(Object));
expect(parsed1.items[0].title).toEqual(expect.any(String));
expect(parsed1.items[0].link).toEqual(expect.any(String));
- expect(parsed1.items[0].pubDate).toBe(expectPubDate.toUTCString());
+ expect(parsed1.items[0].pubDate).toEqual(expect.any(String));
expect(parsed1.items[0].author).toEqual(expect.any(String));
expect(parsed1.items[0].content).toEqual(expect.any(String));
expect(parsed1.items[0].guid).toEqual(expect.any(String));
@@ -56,7 +54,7 @@ describe('template', () => {
expect(parsed.items[0]).toEqual(expect.any(Object));
expect(parsed.items[0].title).toEqual(expect.any(String));
expect(parsed.items[0].link).toEqual(expect.any(String));
- expect(parsed.items[0].pubDate).toBe(expectPubDate.toISOString());
+ expect(parsed.items[0].pubDate).toEqual(expect.any(String));
expect(parsed.items[0].author).toEqual(expect.any(String));
expect(parsed.items[0].content).toEqual(expect.any(String));
expect(parsed.items[0].id).toEqual(expect.any(String));
diff --git a/test/utils/common-utils.js b/test/utils/common-utils.js
index e895a485653325..d0306193c55fb1 100644
--- a/test/utils/common-utils.js
+++ b/test/utils/common-utils.js
@@ -4,33 +4,4 @@ describe('common-utils', () => {
it('toTitleCase', () => {
expect(utils.toTitleCase('RSSHub IS AS aweSOme aS henry')).toBe('Rsshub Is As Awesome As Henry');
});
-
- it('convertDateToISO8601', () => {
- expect(utils.convertDateToISO8601('')).toBe('');
- expect(utils.convertDateToISO8601(null)).toBe(null);
- expect(utils.convertDateToISO8601(undefined)).toBe(undefined);
-
- const date = new Date('2019-01-01');
- const expected = date.toISOString();
- expect(utils.convertDateToISO8601(date)).toBe(expected);
- expect(utils.convertDateToISO8601(date.toISOString())).toBe(expected);
- expect(utils.convertDateToISO8601(date.toUTCString())).toBe(expected);
- expect(utils.convertDateToISO8601(date.toLocaleString())).toBe(expected);
- expect(utils.convertDateToISO8601('Tue, 01 Jan 2019 08:00:00 UTC+8')).toBe(expected);
-
- expect(utils.convertDateToISO8601('Tue, 01 Jan 2019 00:00:00')).toBe(new Date(date.getTime() + new Date().getTimezoneOffset() * 60 * 1000).toISOString());
- // need to pass a function in order to use `toThrow`
- expect(() => {
- utils.convertDateToISO8601('something invalid');
- }).toThrow(RangeError);
- });
-
- it('collapseWhitespace', () => {
- expect(utils.collapseWhitespace('')).toBe('');
- expect(utils.collapseWhitespace(null)).toBe(null);
- expect(utils.collapseWhitespace(undefined)).toBe(undefined);
- expect(utils.collapseWhitespace(' \n\n\n ')).toBe('');
- expect(utils.collapseWhitespace('a string already collapsed')).toBe('a string already collapsed');
- expect(utils.collapseWhitespace(' \n a lot of whitespaces and \n\n\n\n linebreaks \n\n ')).toBe('a lot of whitespaces and linebreaks');
- });
});
diff --git a/test/utils/parse-date.js b/test/utils/parse-date.js
deleted file mode 100644
index 87e170ffe257f9..00000000000000
--- a/test/utils/parse-date.js
+++ /dev/null
@@ -1,154 +0,0 @@
-const { parseRelativeDate } = require('@/utils/parse-date');
-const MockDate = require('mockdate');
-
-describe('parseRelativeDate', () => {
- const second = 1000;
- const minute = 60 * second;
- const hour = 60 * minute;
- const day = 24 * hour;
- const week = 7 * day;
- const month = 30 * day;
- const year = 365 * day;
-
- const weekday = (d) => +new Date(date.getFullYear(), date.getMonth(), date.getDate() + d - (date.getDay() > d ? date.getDay() : date.getDay() + 7));
-
- const date = new Date();
-
- MockDate.set(date);
-
- it('s秒钟前', () => {
- expect(+new Date(parseRelativeDate('10秒前'))).toBe(+date - 10 * second);
- });
-
- it('m分钟前', () => {
- expect(+new Date(parseRelativeDate('10分钟前'))).toBe(+date - 10 * minute);
- });
-
- it('m分鐘前', () => {
- expect(+new Date(parseRelativeDate('10分鐘前'))).toBe(+date - 10 * minute);
- });
-
- it('m分钟后', () => {
- expect(+new Date(parseRelativeDate('10分钟后'))).toBe(+date + 10 * minute);
- });
-
- it('a minute ago', () => {
- expect(+new Date(parseRelativeDate('a minute ago'))).toBe(+date - 1 * minute);
- });
-
- it('s minutes ago', () => {
- expect(+new Date(parseRelativeDate('10 minutes ago'))).toBe(+date - 10 * minute);
- });
-
- it('s mins ago', () => {
- expect(+new Date(parseRelativeDate('10 mins ago'))).toBe(+date - 10 * minute);
- });
-
- it('in s minutes', () => {
- expect(+new Date(parseRelativeDate('in 10 minutes'))).toBe(+date + 10 * minute);
- });
-
- it('in an hour', () => {
- expect(+new Date(parseRelativeDate('in an hour'))).toBe(+date + 1 * hour);
- });
-
- it('H小时前', () => {
- expect(+new Date(parseRelativeDate('10小时前'))).toBe(+date - 10 * hour);
- });
-
- it('H个小时前', () => {
- expect(+new Date(parseRelativeDate('10个小时前'))).toBe(+date - 10 * hour);
- });
-
- it('D天前', () => {
- expect(+new Date(parseRelativeDate('10天前'))).toBe(+date - 10 * day);
- });
-
- it('W周前', () => {
- expect(+new Date(parseRelativeDate('10周前'))).toBe(+date - 10 * week);
- });
-
- it('W星期前', () => {
- expect(+new Date(parseRelativeDate('10星期前'))).toBe(+date - 10 * week);
- });
-
- it('W个星期前', () => {
- expect(+new Date(parseRelativeDate('10个星期前'))).toBe(+date - 10 * week);
- });
-
- it('M月前', () => {
- expect(+new Date(parseRelativeDate('1月前'))).toBe(+date - 1 * month);
- });
-
- it('M个月前', () => {
- expect(+new Date(parseRelativeDate('1个月前'))).toBe(+date - 1 * month);
- });
-
- it('Y年前', () => {
- expect(+new Date(parseRelativeDate('1年前'))).toBe(+date - 1 * year);
- });
-
- it('Y年M个月前', () => {
- expect(+new Date(parseRelativeDate('1年1个月前'))).toBe(+date - 1 * year - 1 * month);
- });
-
- it('D天H小时前', () => {
- expect(+new Date(parseRelativeDate('1天1小时前'))).toBe(+date - 1 * day - 1 * hour);
- });
-
- it('H小时m分钟s秒钟前', () => {
- expect(+new Date(parseRelativeDate('1小时1分钟1秒钟前'))).toBe(+date - 1 * hour - 1 * minute - 1 * second);
- });
-
- it('H小时m分钟s秒钟后', () => {
- expect(+new Date(parseRelativeDate('1小时1分钟1秒钟后'))).toBe(+date + 1 * hour + 1 * minute + 1 * second);
- });
-
- it('今天', () => {
- expect(+new Date(parseRelativeDate('今天'))).toBe(+date.setHours(0, 0, 0, 0));
- });
-
- it('Today H:m', () => {
- expect(+new Date(parseRelativeDate('Today 08:00'))).toBe(+date + 8 * hour);
- });
-
- it('TDA H:m:s', () => {
- expect(+new Date(parseRelativeDate('TDA 08:00:00'))).toBe(+date + 8 * hour);
- });
-
- it('今天 H:m', () => {
- expect(+new Date(parseRelativeDate('今天 08:00'))).toBe(+date + 8 * hour);
- });
-
- it('今天H点m分', () => {
- expect(+new Date(parseRelativeDate('今天8点0分'))).toBe(+date + 8 * hour);
- });
-
- it('昨日H点m分s秒', () => {
- expect(+new Date(parseRelativeDate('昨日20时0分0秒'))).toBe(+date - 4 * hour);
- });
-
- it('前天 H:m', () => {
- expect(+new Date(parseRelativeDate('前天 20:00'))).toBe(+date - 1 * day - 4 * hour);
- });
-
- it('明天 H:m', () => {
- expect(+new Date(parseRelativeDate('明天 20:00'))).toBe(+date + 1 * day + 20 * hour);
- });
-
- it('星期几 h:m', () => {
- expect(+new Date(parseRelativeDate('星期一 8:00'))).toBe(weekday(1) + 8 * hour);
- });
-
- it('周几 h:m', () => {
- expect(+new Date(parseRelativeDate('周二 8:00'))).toBe(weekday(2) + 8 * hour);
- });
-
- it('星期天 h:m', () => {
- expect(+new Date(parseRelativeDate('星期天 8:00'))).toBe(weekday(7) + 8 * hour);
- });
-
- it('Invalid', () => {
- expect(parseRelativeDate('RSSHub')).toBe('RSSHub');
- });
-});
diff --git a/yarn.lock b/yarn.lock
index ed4c341a8613f3..5f92b2daddebb8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1041,11 +1041,6 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
-"@ioredis/commands@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.1.1.tgz#2ba4299ea624a6bfac15b35f6df90b0015691ec3"
- integrity sha512-fsR4P/ROllzf/7lXYyElUJCheWdTJVJvOTps8v9IWKFATxR61ANOlnoPqhH099xYLrJGpc2ZQ28B3rMeUt5VQg==
-
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -1441,60 +1436,60 @@
domhandler "^4.2.0"
selderee "^0.6.0"
-"@sentry/core@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.3.tgz#88268afc8c42716c455ad77bb4bed2bbf96abd83"
- integrity sha512-RcGmYdkrE3VYBMl9Hgv4GKsC8FEVUdWYsfGIcT/btwP2YpBeUaTZl+1vV9r3Ncdl125LqzP5CKSj5otVxiEg6g==
+"@sentry/core@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.19.2.tgz#dd35ba6ca41a2dd011c43f732bcdadbb52c06376"
+ integrity sha512-yu1R3ewBT4udmB4v7sc4biQZ0Z0rfB9+TzB5ZKoCftbe6kqXjFMMaFRYNUF9HicVldKAsBktgkWw3+yfqGkw/A==
dependencies:
- "@sentry/hub" "6.19.3"
- "@sentry/minimal" "6.19.3"
- "@sentry/types" "6.19.3"
- "@sentry/utils" "6.19.3"
+ "@sentry/hub" "6.19.2"
+ "@sentry/minimal" "6.19.2"
+ "@sentry/types" "6.19.2"
+ "@sentry/utils" "6.19.2"
tslib "^1.9.3"
-"@sentry/hub@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.19.3.tgz#d555c83404f19ac9b68f336b051b8e7a9d75feb0"
- integrity sha512-iYbkrxEZt6CrHP3U3r54MARVZSs3YHjAMUMOTlC16s/Amz1McwV95XtI3NJaqMhwzl7R5vbGrs3xOtLg1V1Uyw==
+"@sentry/hub@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.19.2.tgz#0e9f9c507e55d8396002f644b43ef27cc9ff1289"
+ integrity sha512-W7KCgNBgdBIMagOxy5J5KQPe+maYxSqfE8a5ncQ3R8BcZDQEKnkW/1FplNbfRLZqA/tL/ndKb7pTPqVtzsbARw==
dependencies:
- "@sentry/types" "6.19.3"
- "@sentry/utils" "6.19.3"
+ "@sentry/types" "6.19.2"
+ "@sentry/utils" "6.19.2"
tslib "^1.9.3"
-"@sentry/minimal@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.19.3.tgz#b9b7f0d7f0cd2341b243318668ac01458f9d7889"
- integrity sha512-xy/6ThHK8B2NJT98nWrx6V9eVgUbzq2N/8lv5/QqrKsICjxx22TRC8Q6zPg/o7BYcrY5vpugSEbIeErTnyxHDA==
+"@sentry/minimal@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.19.2.tgz#e748541e4adbc7e80a3b6ccaf01b631c17fc44b4"
+ integrity sha512-ClwxKm77iDHET7kpzv1JvzDx1er5DoNu+EUjst0kQzARIrXvu9xuZuE2/CnBWycQWqw8o3HoGoKz65uIhsUCzQ==
dependencies:
- "@sentry/hub" "6.19.3"
- "@sentry/types" "6.19.3"
+ "@sentry/hub" "6.19.2"
+ "@sentry/types" "6.19.2"
tslib "^1.9.3"
-"@sentry/node@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.19.3.tgz#afcf106bf72acc0e4bbacbc54744de8a938cbd1c"
- integrity sha512-eHreMMbaK4mMAQ45Ki2xJ6in02l66hL6xhltppy/h4m297JIvjaQAFpbQf5XLtO7W4KjdbSV5qnB45D1aOAzFA==
+"@sentry/node@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.19.2.tgz#cad621ad319f555826110f4d6c972a2fc95800fc"
+ integrity sha512-Z1qREpTpYHxaeWjc1zMUk8ZTAp1WbxMiI2TVNc+a14DVT19Z2xNXb06MiRfeLgNc9lVGdmzR62dPmMBjVgPJYg==
dependencies:
- "@sentry/core" "6.19.3"
- "@sentry/hub" "6.19.3"
- "@sentry/types" "6.19.3"
- "@sentry/utils" "6.19.3"
+ "@sentry/core" "6.19.2"
+ "@sentry/hub" "6.19.2"
+ "@sentry/types" "6.19.2"
+ "@sentry/utils" "6.19.2"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
-"@sentry/types@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.3.tgz#94b19da68d4d23561efb1014f72968bcea85cd0c"
- integrity sha512-jHhqxp8MIWSfOc3krorirTGKTEaSFO6XrAvi+2AZhr6gvOChwOgzgrN2ZqesJcZmgCsqWV21u3usSwYeRrjOJA==
+"@sentry/types@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.2.tgz#0219c9da21ed975951108b8541913b1966464435"
+ integrity sha512-XO5qmVBdTs+7PdCz7fAwn1afWxSnRE2KLBFg5/vOdKosPSSHsSHUURSkxiEZc2QsR+JpRB4AeQ26AkIRX38qTg==
-"@sentry/utils@6.19.3":
- version "6.19.3"
- resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.19.3.tgz#0c3a3f0b86c12e3b079e56e37a44e62a1226043d"
- integrity sha512-GdC9B/FK7qd0zItY43135bYbhuVSawE18bIrQDNuno8gTpDJ5OgShpTN9zR53AmMh16/lwKNnV3ZZjlpKcxuNw==
+"@sentry/utils@6.19.2":
+ version "6.19.2"
+ resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.19.2.tgz#995efb896c5159369509f4896c27a2d2ea9191f2"
+ integrity sha512-2DQQ2OJaxjtyxGq5FmMlqb6hptsqMs2xoBiVRMkTS/rvyTrk1oQdKZ8ePwjtgX3nJ728ni3IXIyXV+vfGp4EBw==
dependencies:
- "@sentry/types" "6.19.3"
+ "@sentry/types" "6.19.2"
tslib "^1.9.3"
"@sindresorhus/is@^0.14.0":
@@ -4581,10 +4576,10 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@4.3.3, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
@@ -4764,10 +4759,10 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-denque@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a"
- integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==
+denque@^1.1.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf"
+ integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
version "2.0.0"
@@ -5516,10 +5511,10 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-eslint@8.12.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e"
- integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==
+eslint@8.11.0:
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37"
+ integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==
dependencies:
"@eslint/eslintrc" "^1.2.1"
"@humanwhocodes/config-array" "^0.9.2"
@@ -6554,10 +6549,10 @@ googleapis-common@^5.0.2:
url-template "^2.0.8"
uuid "^8.0.0"
-googleapis@100.0.0:
- version "100.0.0"
- resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-100.0.0.tgz#baeeba7877ee7dd3250643b3803c4a9c24bcf8dd"
- integrity sha512-RToFQGY54B756IDbjdyjb1vWFmn03bYpXHB2lIf0eq2UBYsIbYOLZ0kqSomfJnpclEukwEmMF7Jn6Wsev871ew==
+googleapis@98.0.0:
+ version "98.0.0"
+ resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-98.0.0.tgz#f523a677c11acb155625dac6194fa729ab4480a3"
+ integrity sha512-gJS+JF03FXouOpHN7dqxg5wrNCBef3ExBtYdCJoX4wlURuy6pixg7SC8sNAjFIXphMZWQ1Bbcu9aKxNv2xCbuQ==
dependencies:
google-auth-library "^7.0.2"
googleapis-common "^5.0.2"
@@ -7356,17 +7351,19 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-ioredis@5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.0.3.tgz#5a742a03128a9924f98b957c8721720b4165b3ab"
- integrity sha512-hKxywVypoGGUJDyfnMufO0VNkuIaQufo2/PJ5SOYBKWgf4+gCnZEPaBPle615k08euY9/B9DKytVtwZROF7HaA==
+ioredis@4.28.5:
+ version "4.28.5"
+ resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.28.5.tgz#5c149e6a8d76a7f8fa8a504ffc85b7d5b6797f9f"
+ integrity sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==
dependencies:
- "@ioredis/commands" "^1.1.1"
cluster-key-slot "^1.1.0"
- debug "^4.3.4"
- denque "^2.0.1"
+ debug "^4.3.1"
+ denque "^1.1.0"
lodash.defaults "^4.2.0"
+ lodash.flatten "^4.4.0"
lodash.isarguments "^3.1.0"
+ p-map "^2.1.0"
+ redis-commands "1.7.0"
redis-errors "^1.2.0"
redis-parser "^3.0.0"
standard-as-callback "^2.1.0"
@@ -8880,7 +8877,7 @@ lodash.filter@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
-lodash.flatten@^4.2.0:
+lodash.flatten@^4.2.0, lodash.flatten@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
@@ -9006,10 +9003,10 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-lru-cache@7.7.3:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.7.3.tgz#98cd19eef89ce6a4a3c4502c17c833888677c252"
- integrity sha512-WY9wjJNQt9+PZilnLbuFKM+SwDull9+6IAguOrarOMoOHTcJ9GnXSO11+Gw6c7xtDkBkthR57OZMtZKYr+1CEw==
+lru-cache@7.7.1:
+ version "7.7.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.7.1.tgz#03d2846b1ad2dcc7931a9340b8711d9798fcb0c6"
+ integrity sha512-cRffBiTW8s73eH4aTXqBcTLU0xQnwGV3/imttRHGWCrbergmnK4D6JXQd8qin5z43HnDwRI+o7mVW0LEB+tpAw==
lru-cache@^4.0.1, lru-cache@^4.1.2:
version "4.1.5"
@@ -10291,7 +10288,7 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
-p-map@^2.0.0:
+p-map@^2.0.0, p-map@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
@@ -10423,17 +10420,17 @@ parse-json@^5.2.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
-parse-torrent@9.1.5:
- version "9.1.5"
- resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-9.1.5.tgz#fcae5f360d9baf617d9a2de68e74d5de4c8099fd"
- integrity sha512-K8FXRwTOaZMI0/xuv0dpng1MVHZRtMJ0jRWBJ3qZWVNTrC1MzWUxm9QwaXDz/2qPhV2XC4UIHI92IGHwseAwaA==
+parse-torrent@9.1.4:
+ version "9.1.4"
+ resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-9.1.4.tgz#1fc8a8accd76c7cd6c858061bb7b679288dc2065"
+ integrity sha512-NSlG8ewolqfcEWevUUsrpvxzVWYGaKWwPHMcXTAV2qYYo6pPugVOacQXt8uDlEYh23Ituz+A9pAZK5YaXTV8Pg==
dependencies:
bencode "^2.0.2"
blob-to-buffer "^1.2.9"
get-stdin "^8.0.0"
magnet-uri "^6.2.0"
queue-microtask "^1.2.3"
- simple-get "^4.0.1"
+ simple-get "^4.0.0"
simple-sha1 "^3.1.0"
parse5-htmlparser2-tree-adapter@^6.0.1:
@@ -11044,10 +11041,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
-prettier@2.6.1, "prettier@^1.18.2 || ^2.0.0":
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.1.tgz#d472797e0d7461605c1609808e27b80c0f9cfe17"
- integrity sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==
+prettier@2.6.0, "prettier@^1.18.2 || ^2.0.0":
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4"
+ integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A==
pretty-bytes@^5.1.0:
version "5.6.0"
@@ -11232,13 +11229,13 @@ pupa@^2.0.1, pupa@^2.1.1:
dependencies:
escape-goat "^2.0.0"
-puppeteer@13.5.2:
- version "13.5.2"
- resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.5.2.tgz#73ae84969cbf514aeee871a05ec4549d67f6abee"
- integrity sha512-DJAyXODBikZ3xPs8C35CtExEw78LZR9RyelGDAs0tX1dERv3OfW7qpQ9VPBgsfz+hG2HiMTO/Tyf7BuMVWsrxg==
+puppeteer@13.5.1:
+ version "13.5.1"
+ resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.5.1.tgz#d0f751bf36120efc2ebf74c7562a204a84e500e9"
+ integrity sha512-wWxO//vMiqxlvuzHMAJ0pRJeDHvDtM7DQpW1GKdStz2nZo2G42kOXBDgkmQ+zqjwMCFofKGesBeeKxIkX9BO+w==
dependencies:
cross-fetch "3.1.5"
- debug "4.3.4"
+ debug "4.3.3"
devtools-protocol "0.0.969999"
extract-zip "2.0.1"
https-proxy-agent "5.0.0"
@@ -11469,6 +11466,11 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
+redis-commands@1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89"
+ integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==
+
redis-errors@^1.0.0, redis-errors@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
@@ -12151,7 +12153,7 @@ simple-concat@^1.0.0:
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-simple-get@^4.0.1:
+simple-get@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==