diff --git a/assets/radar-rules.js b/assets/radar-rules.js index 29bed7cfc3..de11a8ee8f 100755 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -1410,30 +1410,27 @@ title: '水声学院 - 新闻动态', docs: 'https://docs.rsshub.app/university.html#ha-er-bin-gong-cheng-da-xue', source: '/*', - target: '/heu/shuisheng/xwdt', + target: '/heu/uae/xwdt', }, { title: '研究生院 - 通知公告', docs: 'https://docs.rsshub.app/university.html#ha-er-bin-gong-cheng-da-xue', source: '/*', - target: '/heu/shuisheng/tzgg', + target: '/heu/uae/tzgg', }, ], - }, - 'gongxue.cn': { - _name: '工学网', - '.': [ + news: [ { - title: '要闻', + title: '工学新闻 - 要闻', docs: 'https://docs.rsshub.app/university.html#ha-er-bin-gong-cheng-da-xue', source: '/*', - target: '/heu/gongxue/yw', + target: '/heu/news/yw', }, { - title: '时讯', + title: '工学新闻 - 时讯', docs: 'https://docs.rsshub.app/university.html#ha-er-bin-gong-cheng-da-xue', source: '/*', - target: '/heu/gongxue/sx', + target: '/heu/news/sx', }, ], }, diff --git a/docs/en/programming.md b/docs/en/programming.md index 4b3d273fa1..941848fe4b 100644 --- a/docs/en/programming.md +++ b/docs/en/programming.md @@ -4,6 +4,12 @@ pageClass: routes # Programming +## cve.mitre.org + +### Search Result + + + + +### 开发者工具更新日志 + + + +### 云开发更新日志 + + + +| 小程序基础库更新日志(云开发部分) | IDE 云开发 & 云控制台更新日志 | wx-server-sdk 更新日志 | +| ---------------------------------- | ----------------------------- | ---------------------- | +| cloud-sdk | ide | server-sdk | + + ## 印记中文周刊 diff --git a/docs/shopping.md b/docs/shopping.md index ed2dca1ee9..21e4c86077 100644 --- a/docs/shopping.md +++ b/docs/shopping.md @@ -83,9 +83,9 @@ For instance, in https://www.leboncoin.fr/recherche/?**category=10&locations=Par ### 最新商品 -| 全部 | 闪购 | 秒发 | 跨境 | 尾货专场 | -| -------- | ------- | --- | ------- | ------ | -| home | shangou | miaofa | csborder | weihuo | +| 全部 | 闪购 | 秒发 | 跨境 | 尾货专场 | +| ---- | ------- | ------ | -------- | -------- | +| home | shangou | miaofa | csborder | weihuo | @@ -235,6 +235,16 @@ For instance, in https://www.leboncoin.fr/recherche/?**category=10&locations=Par +## 优衣库 + +### Stylingbook + + +| 女式 | 男式 | 小孩 | 婴儿 | +| ----- | ---- | ---- | ---- | +| women | men | kids | baby | + + ## 有赞 ### 商品上新 diff --git a/docs/university.md b/docs/university.md index 7a7a09424e..99467e37bf 100644 --- a/docs/university.md +++ b/docs/university.md @@ -425,7 +425,7 @@ category 列表: ### 研究生院 - + | 通知公告 | 新闻动态 | 国家公派项目 | 国际合作与交流项目 | | ------------ | -------- | ------------ | ------------------ | @@ -435,7 +435,7 @@ category 列表: ### 就业服务平台 - + | 通知公告 | | -------- | @@ -443,9 +443,9 @@ category 列表: -### 工学网 +### 工学新闻 - + | 要闻 | 时讯 | | ---- | ---- | @@ -455,7 +455,7 @@ category 列表: ### 水声工程学院通知 - + | 新闻动态 | 通知公告 | | -------- | -------- | diff --git a/lib/router.js b/lib/router.js index c7094a43c6..bec3037fda 100755 --- a/lib/router.js +++ b/lib/router.js @@ -640,8 +640,10 @@ router.get('/nchu/jwc/:type?', require('./routes/universities/nchu/jwc')); // 哈尔滨工程大学 router.get('/heu/ugs/news/:author?/:category?', require('./routes/universities/heu/ugs/news')); router.get('/heu/yjsy/:type?', require('./routes/universities/heu/yjsy')); -router.get('/heu/gongxue/:type?', require('./routes/universities/heu/gongxue')); -router.get('/heu/shuisheng/:type?', require('./routes/universities/heu/shuisheng')); +router.get('/heu/gongxue/:type?', require('./routes/universities/heu/news')); +router.get('/heu/news/:type?', require('./routes/universities/heu/news')); +router.get('/heu/shuisheng/:type?', require('./routes/universities/heu/uae')); +router.get('/heu/uae/:type?', require('./routes/universities/heu/uae')); router.get('/heu/job/:type?', require('./routes/universities/heu/job')); // 重庆大学 @@ -2284,7 +2286,10 @@ router.get('/scala/blog/:part?', require('./routes/scala-blog/scala-blog')); router.get('/minecraft/version', require('./routes/minecraft/version')); // 微信更新日志 -router.get('/weixin/miniprogram/release', require('./routes/tencent/wechat/miniprogram/release')); // 基础库更新 +router.get('/weixin/miniprogram/release', require('./routes/tencent/wechat/miniprogram/framework')); // 基础库更新日志 +router.get('/weixin/miniprogram/framework', require('./routes/tencent/wechat/miniprogram/framework')); // 基础库更新日志 +router.get('/weixin/miniprogram/devtools', require('./routes/tencent/wechat/miniprogram/devtools')); // 开发者工具更新日志 +router.get('/weixin/miniprogram/wxcloud/:caty?', require('./routes/tencent/wechat/miniprogram/wxcloud')); // 云开发更新日志 // 武汉肺炎疫情动态 router.get('/coronavirus/caixin', require('./routes/coronavirus/caixin')); @@ -2596,6 +2601,9 @@ router.get('/axis-studios/:type/:tag?', require('./routes/axis-studios/work')); // 人民邮电出版社 router.get('/ptpress/book/:type?', require('./routes/ptpress/book')); +// uniqlo styling book +router.get('/uniqlo/stylingbook/:category?', require('./routes/uniqlo/stylingbook')); + // 本地宝焦点资讯 router.get('/bendibao/news/:city', require('./routes/bendibao/news')); @@ -2605,4 +2613,7 @@ router.get('/unit-image/films/:type?', require('./routes/unit-image/films')); // digic-picture router.get('/digic-pictures/:menu/:tags?', require('./routes/digic-pictures/index')); +// cve.mitre.org +router.get('/cve/search/:keyword', require('./routes/cve/search')); + module.exports = router; diff --git a/lib/routes/2048/bbs.js b/lib/routes/2048/bbs.js index f23a9f1124..6ab64f2d8d 100644 --- a/lib/routes/2048/bbs.js +++ b/lib/routes/2048/bbs.js @@ -1,33 +1,12 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); -async function getAvailableHosts(ctx) { - const fby_url = 'https://hjd.tw/'; - const cache_key = `2048gkd-${new Date().toLocaleDateString()}`; - - const cache = await ctx.cache.get(cache_key); - if (cache) { - return JSON.parse(cache); - } - - const response = await got.get(fby_url); - const $ = cheerio.load(response.data); - const hosts = $('ul a') - .map(function () { - return $(this).attr('href'); - }) - .get() - .filter((item) => item.match(/\//g).length < 3); - - ctx.cache.set(cache_key, JSON.stringify(hosts)); - return hosts; -} - module.exports = async (ctx) => { const fid = ctx.params.fid; - const base_hosts = await getAvailableHosts(ctx); - const url = `${base_hosts[0]}/2048/thread.php?fid-${fid}-page-1.html`; + const base = 'https://hjd2048.com'; + + const url = `${base}/2048/thread.php?fid-${fid}-page-1.html`; const list_response = await got.get(url); const $ = cheerio.load(list_response.data); @@ -83,7 +62,7 @@ module.exports = async (ctx) => { const path = title.attr('href'); const key = `/2048/${path}`; - const link = `${base_hosts[0]}/2048/${path}`; + const link = `${base}/2048/${path}`; const cache = await ctx.cache.get(key); if (cache) { diff --git a/lib/routes/bilibili/dynamic.js b/lib/routes/bilibili/dynamic.js index b267b4ed62..c91da32a00 100644 --- a/lib/routes/bilibili/dynamic.js +++ b/lib/routes/bilibili/dynamic.js @@ -35,7 +35,14 @@ module.exports = async (ctx) => { if (data.pic) { imgHTML += ``; } - + if (origin && origin.item && origin.item.pictures) { + for (let i = 0; i < origin.item.pictures.length; i++) { + imgHTML += ``; + } + } + if (origin && origin.pic) { + imgHTML += ``; + } // link let link = ''; if (data.dynamic_id) { @@ -56,7 +63,7 @@ module.exports = async (ctx) => { origin && (origin.user || origin.owner) ? `

转发自: @${(origin.user && (origin.user.uname || origin.user.name)) || (origin.owner && origin.owner.name)}: ${getDes(origin.item || origin)}` : `${getOriginDes(origin)}` - }${!disableEmbed && data.aid ? `

${utils.iframe(data.aid)}
` : ''}
${imgHTML} `, + }${!disableEmbed && data.aid ? `

${utils.iframe(data.aid)}
` : ''}${!disableEmbed && origin && origin.aid ? `

${utils.iframe(origin.aid)}
` : ''}
${imgHTML} `, pubDate: new Date(item.desc.timestamp * 1000).toUTCString(), link: link, }; diff --git a/lib/routes/blogs/hedwig.js b/lib/routes/blogs/hedwig.js index 07d62fd5fa..e03086cd37 100644 --- a/lib/routes/blogs/hedwig.js +++ b/lib/routes/blogs/hedwig.js @@ -1,55 +1,38 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); +const md = require('markdown-it')({ + html: true, +}); +const dayjs = require('dayjs'); module.exports = async (ctx) => { const type = ctx.params.type; - const url = 'https://' + `${type}` + '.hedwig.pub'; + const url = `https://${type}.hedwig.pub`; const res = await got({ method: 'get', url: url, }); const $ = cheerio.load(res.data); - const title = $('div[class="StyledBox-sc-13pk1d4-0 heWGCm"]').find('h1').text(); - - const list = $('div[class="StyledBox-sc-13pk1d4-0 czKiZd"]') - .find('div[class="StyledBox-sc-13pk1d4-0 czKiZd"]') - .find('div[class="StyledBox-sc-13pk1d4-0 czKiZd"]') - .map((i, e) => { - const element = $(e); - const title = element.find('a').find('h3').text(); - const link = url + element.find('a').attr('href'); - return { - title: title, - description: '', - link: link, - }; - }) - .get(); - - const result = await Promise.all( - list.map(async (item) => { - const link = item.link; - - const cache = await ctx.cache.get(link); - if (cache) { - return Promise.resolve(JSON.parse(cache)); - } - - const itemReponse = await got.get(link); - const itemElement = cheerio.load(itemReponse.data); - // Remove duplicate title - itemElement('.StyledBox-sc-13pk1d4-0 .bpdfin').find('h1[class="StyledHeading-sc-1rdh4aw-0 kIYNxP"]').remove(); - item.description = itemElement('.StyledBox-sc-13pk1d4-0 .bpdfin').html(); - - ctx.cache.set(link, JSON.stringify(item)); - return Promise.resolve(item); - }) - ); + const content = JSON.parse($('#__NEXT_DATA__')[0].children[0].data); + const title = $('title').text(); + const list = content.props.pageProps.issuesByNewsletter.map((item) => { + let description = ''; + item.blocks.forEach((block) => { + description += md.render(block.markdown.text); + }); + return { + title: item.subject, + description: description, + pubDate: dayjs(`${item.publishAt} +0800`, "YYYY-MM-DD'T'HH:mm:ss.SSS'Z'").toString(), + link: `https://${type}.hedwig.pub/i/${item.urlFriendlyName}`, + }; + }); ctx.state.data = { - title: 'Ⓙ Hedwig - ' + title, - link: 'https://' + `${type}` + '.hedwig.pub', - item: result, + title: `Ⓙ Hedwig - ${title}`, + description: content.props.pageProps.newsletter.about, + link: `https://${type}.hedwig.pub`, + item: list, }; }; diff --git a/lib/routes/bof/home.js b/lib/routes/bof/home.js index 7122be9f30..dd36c2accb 100644 --- a/lib/routes/bof/home.js +++ b/lib/routes/bof/home.js @@ -21,11 +21,13 @@ module.exports = async (ctx) => { }); const items = response.data.data.articles.edges.map((item) => { + const url = new URL(item.node.url); + url.host = 'cn.businessoffashion.com'; const single = { title: item.node.title, description: `${item.node.summary}
${item.node.content}`, pubDate: new Date(item.node.published.value).toUTCString(), - link: item.node.url, + link: url.href, author: item.node.authors[0].displayName, }; diff --git a/lib/routes/cneb/guoneinews.js b/lib/routes/cneb/guoneinews.js index 8c11c6a0d1..c255ea6919 100644 --- a/lib/routes/cneb/guoneinews.js +++ b/lib/routes/cneb/guoneinews.js @@ -6,12 +6,12 @@ module.exports = async (ctx) => { method: 'get', url: 'http://www.cneb.gov.cn/guoneinews/guoneidata/', }) - ).data.rollData; + ).data.rollData.slice(0, 50); const items = list.map((item) => { const single = { title: item.title, - description: item.description.replace(//g, ''), + description: item.description, pubDate: new Date(item.dateTime + ' UTC+08:00').toString(), link: item.url, }; diff --git a/lib/routes/cve/search.js b/lib/routes/cve/search.js new file mode 100644 index 0000000000..4f486e572f --- /dev/null +++ b/lib/routes/cve/search.js @@ -0,0 +1,26 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx, next) => { + const { keyword } = ctx.params; + const link = `https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=${keyword}`; + const body = await got(link).text(); + const $ = cheerio.load(body); + const rows = $('#TableWithRules').find('tbody').first().find('tr').get().slice(0, 10); + const item = rows.map((row) => { + const [cveName, description] = $(row).find('td').get().map($); + return { + title: cveName.text(), + link: 'https://cve.mitre.org' + cveName.find('a').first().attr('href'), + description: description.text(), + guid: this.link, + }; + }); + ctx.state.data = { + title: `CVE search result ${keyword}`, + link, + description: this.title, + item, + }; + await next(); +}; diff --git a/lib/routes/index.js b/lib/routes/index.js index cef9fa9fca..3688cbb719 100644 --- a/lib/routes/index.js +++ b/lib/routes/index.js @@ -7,7 +7,7 @@ let gitHash; try { gitHash = require('git-rev-sync').short(); } catch (e) { - gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || 'unknown'; + gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || (process.env.VERCEL_GITHUB_COMMIT_SHA && process.env.VERCEL_GITHUB_COMMIT_SHA.slice(0, 7)) || 'unknown'; } module.exports = async (ctx) => { diff --git a/lib/routes/tencent/wechat/ce.js b/lib/routes/tencent/wechat/ce.js index c1b26f4c9c..b4d225bf55 100644 --- a/lib/routes/tencent/wechat/ce.js +++ b/lib/routes/tencent/wechat/ce.js @@ -12,10 +12,18 @@ module.exports = async (ctx) => { const response = await got.get(item.link); const $ = cheerio.load(response.data); + const post = $('.post'); + + post.find('img').each((_, img) => { + const dataSrc = $(img).attr('data-src'); + if (dataSrc) { + $(img).attr('src', dataSrc); + } + }); const single = { title: item.title, - description: $('.post').html(), + description: post.html(), pubDate: item.pubDate, link: item.link, }; diff --git a/lib/routes/tencent/wechat/csm.js b/lib/routes/tencent/wechat/csm.js index f32627bc48..b12bcac036 100644 --- a/lib/routes/tencent/wechat/csm.js +++ b/lib/routes/tencent/wechat/csm.js @@ -30,7 +30,12 @@ module.exports = async (ctx) => { article('#js_content img').each((index, elem) => { const $elem = article(elem); - $elem.attr('referrerpolicy', 'no-referrer'); + + const imgSrc = $elem.attr('data-original'); + if (imgSrc) { + const realSrc = imgSrc.replace(/^https:\/\/img.chuansongme.com\//, 'https://mmbiz.qpic.cn/'); + $elem.attr('src', realSrc); + } }); const single = { diff --git a/lib/routes/tencent/wechat/miniprogram/devtools.js b/lib/routes/tencent/wechat/miniprogram/devtools.js new file mode 100644 index 0000000000..78eedadfb7 --- /dev/null +++ b/lib/routes/tencent/wechat/miniprogram/devtools.js @@ -0,0 +1,38 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const link = `https://developers.weixin.qq.com/miniprogram/dev/devtools/uplog.html`; + const response = await got({ + method: 'get', + url: link, + }); + const data = response.data; + const $ = cheerio.load(data); + const name = $('#docContent .content h1') + .text() + .replace(/[\s|#]/g, ''); + + ctx.state.data = { + title: `${name}`, + link: link, + item: $('#docContent .content h3') + .map((_, item) => { + item = $(item); + const title = item + .text() + .replace(/[\s|#]/g, '') + .replace(/更新说明/g, ''); + return { + title: title, + description: + (item.text().indexOf('更新说明') !== -1 ? '

更新说明

' : '') + + item.next().html(), + pubDate: new Date(title + ' GMT+8').toUTCString(), + link: link + item.find('a.header-anchor').attr('href'), + }; + }) + .get(), + description: `${name}`, + }; +}; diff --git a/lib/routes/tencent/wechat/miniprogram/framework.js b/lib/routes/tencent/wechat/miniprogram/framework.js new file mode 100644 index 0000000000..55c09fad18 --- /dev/null +++ b/lib/routes/tencent/wechat/miniprogram/framework.js @@ -0,0 +1,33 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const link = `https://developers.weixin.qq.com/miniprogram/dev/framework/release/`; + const response = await got({ + method: 'get', + url: link, + }); + const data = response.data; + const $ = cheerio.load(data); + const name = $('#docContent .content h1') + .text() + .replace(/[\s|#]/g, ''); + + ctx.state.data = { + title: `${name}`, + link: link, + item: $('#docContent .content h3') + .map((_, item) => { + item = $(item); + const title = item.text().replace(/[\s|#]/g, ''); + return { + title: title, + description: item.next().html(), + pubDate: new Date(new RegExp(/\d{4}-\d{2}-\d{2}/).exec(title) + ' GMT+8').toUTCString(), + link: link + item.find('a.header-anchor').attr('href'), + }; + }) + .get(), + description: `${name}`, + }; +}; diff --git a/lib/routes/tencent/wechat/miniprogram/release.js b/lib/routes/tencent/wechat/miniprogram/release.js deleted file mode 100644 index b04ec73932..0000000000 --- a/lib/routes/tencent/wechat/miniprogram/release.js +++ /dev/null @@ -1,33 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const link = 'https://developers.weixin.qq.com/miniprogram/dev/framework/release/'; - const response = await got({ - method: 'get', - url: link, - }); - const data = response.data; - const $ = cheerio.load(data); - const name = $('#docContent .content h1') - .text() - .replace(/[\s|#]/g, ''); - const titles = $('#docContent .content h3').map((i, ele) => - $(ele) - .text() - .replace(/[\s|#]/g, '') - ); - const list = $('#docContent > .content ol') - .map((i, ele) => ({ - title: titles[i], - description: $(ele).html(), - })) - .get(); - - ctx.state.data = { - title: `${name}最新动态`, - link: link, - item: list, - description: '基础库更新日志RSS', - }; -}; diff --git a/lib/routes/tencent/wechat/miniprogram/wxcloud.js b/lib/routes/tencent/wechat/miniprogram/wxcloud.js new file mode 100644 index 0000000000..2aefce369b --- /dev/null +++ b/lib/routes/tencent/wechat/miniprogram/wxcloud.js @@ -0,0 +1,47 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const link = `https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference/changelog` + (ctx.params.caty ? '-' + ctx.params.caty : '') + `.html`; + const response = await got({ + method: 'get', + url: link, + }); + const data = response.data; + const $ = cheerio.load(data); + const name = $('#docContent .content h2').text(); + + ctx.state.data = { + title: `${name}`, + link: link, + item: ctx.params.caty + ? $('#docContent .content h3') + .map((_, item) => { + item = $(item); + const title = item.text().replace(/[\s|#]/g, ''); + return { + title: title, + description: item.next().html(), + pubDate: new Date(new RegExp(/\d{4}.\d{2}.\d{2}/).exec(title) + ' GMT+8').toUTCString(), + link: link + item.find('a.header-anchor').attr('href'), + }; + }) + .get() + : $('#docContent .custom') + .map((_, item) => { + $('#docContent .custom h2').remove(); + const title = $('#docContent .custom h3') + .first() + .text() + .replace(/[\s|#]/g, ''); + return { + title: title, + description: $(item).html(), + pubDate: new Date(new RegExp(/\d{4}.\d{2}.\d{2}/).exec(title) + ' GMT+8').toUTCString(), + link: link, + }; + }) + .get(), + description: `${name}`, + }; +}; diff --git a/lib/routes/uniqlo/stylingbook.js b/lib/routes/uniqlo/stylingbook.js new file mode 100644 index 0000000000..c3b03c62a5 --- /dev/null +++ b/lib/routes/uniqlo/stylingbook.js @@ -0,0 +1,24 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const category = ctx.params.category ? ctx.params.category : 'women'; + const url = `https://style.uniqlo.com/api/v2/styleSearch.json?dptId=${category}&lang=en&limit=50&locale=my&offset=0`; + + const response = await got({ + method: 'get', + url: url, + }); + + const data = response.data.result.styles; + + ctx.state.data = { + title: `Uniqlo styling book`, + link: `https://www.uniqlo.com/my/stylingbook/pc/${category}`, + description: `Uniqlo styling book`, + item: data.map((item) => ({ + title: item.styleId, + description: ``, + link: `https://www.uniqlo.com/my/stylingbook/pc/style/` + item.styleId, + })), + }; +}; diff --git a/lib/routes/universities/heu/gongxue.js b/lib/routes/universities/heu/news.js similarity index 54% rename from lib/routes/universities/heu/gongxue.js rename to lib/routes/universities/heu/news.js index 0f77a0c0f8..d4aac3807f 100644 --- a/lib/routes/universities/heu/gongxue.js +++ b/lib/routes/universities/heu/news.js @@ -1,18 +1,17 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); const url = require('url'); -const iconv = require('iconv-lite'); -const baseUrl = 'http://gongxue.cn'; +const baseUrl = 'http://news.hrbeu.edu.cn'; const typeMap = { yw: { name: '要闻', - url: '/news/ShowClass.asp?ClassID=4383', + url: '/xw/yw.htm', }, sx: { name: '时讯', - url: '/news/ShowClass.asp?ClassID=4315', + url: '/xw/sx.htm', }, }; @@ -25,47 +24,39 @@ module.exports = async (ctx) => { headers: { Referer: baseUrl, }, - responseType: 'buffer', }); - const responseHtml = iconv.decode(response.data, 'gbk'); - const $ = cheerio.load(responseHtml); + const $ = cheerio.load(response.data); - const urlList = $('.wenzhangzhengwen tr:nth-child(-n+20)') + const urlList = $('.list-left-ul .txt-elise') .slice(0, 10) .map((i, e) => $('a', e).attr('href')) .get(); - const titleList = $('.wenzhangzhengwen tr:nth-child(-n+20)') + const titleList = $('.list-left-ul .txt-elise') .slice(0, 10) - .map((i, e) => $('a', e).text()) + .map((i, e) => $('a', e).attr('title')) .get(); - const dateList = $('.wenzhangzhengwen tr:nth-child(-n+20)') + const dateList = $('.list-left-ul .txt-elise') .slice(0, 10) - .map((i, e) => $('td[align="right"]', e).text()) + .map((i, e) => $('span', e).text()) .get(); const out = await Promise.all( urlList.map(async (itemUrl, index) => { - const itemYear = itemUrl.substring(6, 10); itemUrl = url.resolve(baseUrl, itemUrl); - if (itemUrl.indexOf('.html') !== -1) { + if (itemUrl.indexOf('.htm') !== -1) { const cache = await ctx.cache.get(itemUrl); if (cache) { return Promise.resolve(JSON.parse(cache)); } - const response = await got({ - method: 'get', - url: itemUrl, - responseType: 'buffer', - }); - const responseHtmlItem = iconv.decode(response.data, 'gbk'); - const $ = cheerio.load(responseHtmlItem); + const response = await got.get(itemUrl); + const $ = cheerio.load(response.data); const single = { title: titleList[index], link: itemUrl, - description: $('.wenzhangzhengwen').html(), - pubDate: itemYear + '-' + dateList[index], + description: $('.v_news_content').html(), + pubDate: dateList[index], }; ctx.cache.set(itemUrl, JSON.stringify(single)); return Promise.resolve(single); @@ -73,7 +64,7 @@ module.exports = async (ctx) => { const single = { title: titleList[index], link: itemUrl, - description: '此链接为文件,请点击下载', + description: '此链接为跳转,点击标题查看', pubDate: dateList[index], }; return Promise.resolve(single); @@ -82,7 +73,7 @@ module.exports = async (ctx) => { ); ctx.state.data = { - title: '工学网-' + typeMap[type].name, + title: '工学新闻-' + typeMap[type].name, link: link, item: out, }; diff --git a/lib/routes/universities/heu/shuisheng.js b/lib/routes/universities/heu/uae.js similarity index 100% rename from lib/routes/universities/heu/shuisheng.js rename to lib/routes/universities/heu/uae.js diff --git a/lib/routes/xiaohongshu/board.js b/lib/routes/xiaohongshu/board.js index 903594ef28..6fadc56f2f 100644 --- a/lib/routes/xiaohongshu/board.js +++ b/lib/routes/xiaohongshu/board.js @@ -1,13 +1,11 @@ const { getContent } = require('@/routes/xiaohongshu/util'); -const JSON5 = require('json5'); - module.exports = async (ctx) => { const url = `https://www.xiaohongshu.com/board/${ctx.params.board_id}`; const content = await getContent(url); const regex = /_SSR_STATE__\S*=([\s\S]+)<\/script>/gm; const match = regex.exec(content); - const main = JSON5.parse(match[1]).Main; + const main = JSON.parse(match[1]).Main; const albumInfo = main.albumInfo; const title = `${albumInfo.name}`; diff --git a/lib/routes/xiaohongshu/user.js b/lib/routes/xiaohongshu/user.js index 047020ec24..af658dfeab 100644 --- a/lib/routes/xiaohongshu/user.js +++ b/lib/routes/xiaohongshu/user.js @@ -1,7 +1,6 @@ const { getContent } = require('@/routes/xiaohongshu/util'); const cheerio = require('cheerio'); -const JSON5 = require('json5'); module.exports = async (ctx) => { const userId = ctx.params.user_id; @@ -10,10 +9,10 @@ module.exports = async (ctx) => { const content = await getContent(url); const $ = cheerio.load(content); - const description = $('head title'); + const description = $('head title').html(); const regex = /_SSR_STATE__\S*=([\s\S]+)<\/script>/gm; const match = regex.exec(content); - const main = JSON5.parse(match[1]).Main; + const main = JSON.parse(match[1]).Main; const userDetail = main.userDetail; if (category === 'notes') { const list = main.notesDetail; diff --git a/package.json b/package.json index 8c5ba9538f..9b6246f23a 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "6.8.0", "eslint-config-prettier": "6.11.0", "eslint-plugin-prettier": "3.1.3", - "jest": "25.4.0", + "jest": "25.5.0", "mockdate": "2.0.5", "nock": "13.0.0-beta.3", "nodejieba": "2.4.1", diff --git a/yarn.lock b/yarn.lock index da1fe5c50d..31d2fe6b5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -329,6 +329,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -399,6 +404,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.8.6": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" @@ -935,6 +945,15 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" +"@babel/template@^7.3.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + "@babel/template@^7.7.4", "@babel/template@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" @@ -998,6 +1017,15 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@babel/types@^7.3.3", "@babel/types@^7.8.6": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" + integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1061,44 +1089,44 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.4.0.tgz#e2760b532701137801ba824dcff6bc822c961bac" - integrity sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A== +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" - jest-message-util "^25.4.0" - jest-util "^25.4.0" + jest-message-util "^25.5.0" + jest-util "^25.5.0" slash "^3.0.0" -"@jest/core@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.4.0.tgz#cc1fe078df69b8f0fbb023bb0bcee23ef3b89411" - integrity sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw== +"@jest/core@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.0.tgz#e71ddcac282e965081688cac5e9f100b237a7b32" + integrity sha512-YQPhBtPQa8QJCMpseg1b/DqJE0iG16uhUQOAOdRX2dbIzgZeobNQn4Cmigr1va6IC3RTnGPTUF7QmWOzsiJtbQ== dependencies: - "@jest/console" "^25.4.0" - "@jest/reporters" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/reporters" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.4.0" - jest-config "^25.4.0" - jest-haste-map "^25.4.0" - jest-message-util "^25.4.0" + graceful-fs "^4.2.4" + jest-changed-files "^25.5.0" + jest-config "^25.5.0" + jest-haste-map "^25.5.0" + jest-message-util "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-resolve-dependencies "^25.4.0" - jest-runner "^25.4.0" - jest-runtime "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" - jest-watcher "^25.4.0" + jest-resolve "^25.5.0" + jest-resolve-dependencies "^25.5.0" + jest-runner "^25.5.0" + jest-runtime "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" + jest-watcher "^25.5.0" micromatch "^4.0.2" p-each-series "^2.1.0" realpath-native "^2.0.0" @@ -1106,49 +1134,59 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.4.0.tgz#45071f525f0d8c5a51ed2b04fd42b55a8f0c7cb3" - integrity sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q== +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== dependencies: - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" -"@jest/fake-timers@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.4.0.tgz#3a9a4289ba836abd084953dca406389a57e00fbd" - integrity sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg== +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== dependencies: - "@jest/types" "^25.4.0" - jest-message-util "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" lolex "^5.0.0" -"@jest/reporters@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.4.0.tgz#836093433b32ce4e866298af2d6fcf6ed351b0b0" - integrity sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg== +"@jest/globals@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.0.tgz#2e36037e0e96d34870f99a024d4dc1485bcbd775" + integrity sha512-yC+WlD1ytYPZvTSbmSeZM+BNbkFXtkTBBjtmoFDYxjznwugl2Qv2KW7csxL7nTxJOxyjkffy6ngLZ6YMqAe7MA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + +"@jest/reporters@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.0.tgz#749e035119ec22c76af9bb587108a27c15dfe40d" + integrity sha512-CnrfHhrxGgMI2Va/w0e406CRmf+P1ZBAahgM4aaETWy8IQ5n3aGEDNE+tuh7vexIFCfZ1QFsVMYzvcVT4o9XOQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" + graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^4.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.4.0" - jest-resolve "^25.4.0" - jest-util "^25.4.0" - jest-worker "^25.4.0" + jest-haste-map "^25.5.0" + jest-resolve "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" slash "^3.0.0" source-map "^0.6.0" string-length "^3.1.0" @@ -1157,50 +1195,51 @@ optionalDependencies: node-notifier "^6.0.0" -"@jest/source-map@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" - integrity sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ== +"@jest/source-map@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" + integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.3" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.4.0.tgz#6f2ec2c8da9981ef013ad8651c1c6f0cb20c6324" - integrity sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA== +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== dependencies: - "@jest/console" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz#2b96f9d37f18dc3336b28e3c8070f97f9f55f43b" - integrity sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg== +"@jest/test-sequencer@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.0.tgz#edc249d26f73804172dbf30a140d04b494a9dc38" + integrity sha512-c9Go3EK4+5erD2HKibIyt8JqImV23iGTWfaqMKdtD3aish8CDcXlq1X+L/CMFPOORJDV63quN4obR6iHpARapg== dependencies: - "@jest/test-result" "^25.4.0" - jest-haste-map "^25.4.0" - jest-runner "^25.4.0" - jest-runtime "^25.4.0" + "@jest/test-result" "^25.5.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.0" + jest-runner "^25.5.0" + jest-runtime "^25.5.0" -"@jest/transform@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" - integrity sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g== +"@jest/transform@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.0.tgz#a0f3719a1e158be442a99988d3134d577cb1c1be" + integrity sha512-yqxpmosig2JWKHVbyEl8I7btXCinLIL8b3ENJYMvl9TqzZ9KulnV2t08wp4Wbv/pFKYqTd5NWyEzi4xCpcQ3mg== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" babel-plugin-istanbul "^6.0.0" chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.4.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.0" jest-regex-util "^25.2.6" - jest-util "^25.4.0" + jest-util "^25.5.0" micromatch "^4.0.2" pirates "^4.0.1" realpath-native "^2.0.0" @@ -1208,10 +1247,10 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" - integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" @@ -2520,17 +2559,18 @@ babel-extract-comments@^1.0.0: dependencies: babylon "^6.18.0" -babel-jest@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" - integrity sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog== +babel-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.0.tgz#a310e74f76585cf24d526ed477e56ee83bce86c4" + integrity sha512-8AfVNU7MEMsa+MjbY/CmwrGuQdplZ/+GkeWJDpRPm4C4wJZf937Pd9KgWU3NbnWEcYvIiqR15wy0U6C028kTWw== dependencies: - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.4.0" + babel-preset-jest "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" slash "^3.0.0" babel-loader@^8.0.4: @@ -2561,11 +2601,13 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" - integrity sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w== +babel-plugin-jest-hoist@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" + integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" "@types/babel__traverse" "^7.0.6" babel-plugin-syntax-object-rest-spread@^6.8.0: @@ -2597,12 +2639,12 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-jest@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" - integrity sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ== +babel-preset-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" + integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== dependencies: - babel-plugin-jest-hoist "^25.4.0" + babel-plugin-jest-hoist "^25.5.0" babel-preset-current-node-syntax "^0.1.2" babel-runtime@^6.26.0: @@ -4972,16 +5014,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" - integrity sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ== +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" ansi-styles "^4.0.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" jest-regex-util "^25.2.6" express@^4.17.1: @@ -5733,10 +5775,10 @@ graceful-fs@4.1.15, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== gray-matter@^4.0.1: version "4.0.2" @@ -6777,67 +6819,69 @@ javascript-stringify@^2.0.1: resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5" integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== -jest-changed-files@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.4.0.tgz#e573db32c2fd47d2b90357ea2eda0622c5c5cbd6" - integrity sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA== +jest-changed-files@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" + integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.4.0.tgz#5dac8be0fece6ce39f0d671395a61d1357322bab" - integrity sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ== +jest-cli@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.0.tgz#91d96af92804ffedd5c159a7adb01321ee778049" + integrity sha512-zcUtEL1wD7BO7ehhwb7KodGS//B5dqgEIrmO3zY4xOjMnS7MMs06yzndvlDqzJqMylIkeOr1A3ToGYWFbBNSmQ== dependencies: - "@jest/core" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/core" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" + graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-config "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" prompts "^2.0.1" realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.4.0.tgz#56e5df3679a96ff132114b44fb147389c8c0a774" - integrity sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA== +jest-config@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.0.tgz#6cc56bb8a72a1c1f36ed2d78668e810c844d7af5" + integrity sha512-ucmAX+AdcQAQCOnXOsefYygtFCdfkU7/pUdO+etV0JSgvO6WWnu/bWQLbff3SMw/gZLGl/t3S5Ts7Ct7Pejlwg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.4.0" - "@jest/types" "^25.4.0" - babel-jest "^25.4.0" + "@jest/test-sequencer" "^25.5.0" + "@jest/types" "^25.5.0" + babel-jest "^25.5.0" chalk "^3.0.0" deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.4.0" - jest-environment-node "^25.4.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^25.5.0" + jest-environment-node "^25.5.0" jest-get-type "^25.2.6" - jest-jasmine2 "^25.4.0" + jest-jasmine2 "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-resolve "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" micromatch "^4.0.2" - pretty-format "^25.4.0" + pretty-format "^25.5.0" realpath-native "^2.0.0" -jest-diff@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" - integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== +jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== dependencies: chalk "^3.0.0" diff-sequences "^25.2.6" jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" jest-docblock@^25.3.0: version "25.3.0" @@ -6846,39 +6890,39 @@ jest-docblock@^25.3.0: dependencies: detect-newline "^3.0.0" -jest-each@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.4.0.tgz#ad4e46164764e8e77058f169a0076a7f86f6b7d4" - integrity sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ== +jest-each@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" + integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" jest-get-type "^25.2.6" - jest-util "^25.4.0" - pretty-format "^25.4.0" + jest-util "^25.5.0" + pretty-format "^25.5.0" -jest-environment-jsdom@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz#bbfc7f85bb6ade99089062a830c79cb454565cf0" - integrity sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ== +jest-environment-jsdom@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" + integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== dependencies: - "@jest/environment" "^25.4.0" - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" jsdom "^15.2.1" -jest-environment-node@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.4.0.tgz#188aef01ae6418e001c03fdd1c299961e1439082" - integrity sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A== +jest-environment-node@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" + integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== dependencies: - "@jest/environment" "^25.4.0" - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" semver "^6.3.0" jest-get-type@^25.2.6: @@ -6886,18 +6930,18 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" - integrity sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ== +jest-haste-map@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.0.tgz#5cb0fb5a2887f1dcfe578aade20979afd500179d" + integrity sha512-GTyTQ7tvWRUNUZKDl6DBUDJdrhXClcJ7Y0NdoRBJbOmN1KbrZIjSEmcoTgaOLOL+VwvLWhgphMR7HJ9Ywtp76Q== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.6" - jest-util "^25.4.0" - jest-worker "^25.4.0" + graceful-fs "^4.2.4" + jest-serializer "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" @@ -6905,66 +6949,67 @@ jest-haste-map@^25.4.0: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz#3d3d19514022e2326e836c2b66d68b4cb63c5861" - integrity sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ== +jest-jasmine2@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.0.tgz#55f5a0a264a200bc8b9fa21a5e909dbc2befd084" + integrity sha512-e66pVthiFQairNJddx7xoENQV9q3H8pNFj4SlCRb2/hi/ztVeO7RY3h41jpL/OZ5R4ewar36quJebL16jNoliQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.4.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/environment" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" co "^4.6.0" - expect "^25.4.0" + expect "^25.5.0" is-generator-fn "^2.0.0" - jest-each "^25.4.0" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" - jest-runtime "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - pretty-format "^25.4.0" + jest-each "^25.5.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-runtime "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + pretty-format "^25.5.0" throat "^5.0.0" -jest-leak-detector@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz#cf94a160c78e53d810e7b2f40b5fd7ee263375b3" - integrity sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ== +jest-leak-detector@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" + integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== dependencies: jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-matcher-utils@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" - integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== dependencies: chalk "^3.0.0" - jest-diff "^25.4.0" + jest-diff "^25.5.0" jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-message-util@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.4.0.tgz#2899e8bc43f5317acf8dfdfe89ea237d354fcdab" - integrity sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ== +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" "@types/stack-utils" "^1.0.1" chalk "^3.0.0" + graceful-fs "^4.2.4" micromatch "^4.0.2" slash "^3.0.0" stack-utils "^1.0.1" -jest-mock@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.4.0.tgz#ded7d64b5328d81d78d2138c825d3a45e30ec8ca" - integrity sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg== +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -6976,160 +7021,166 @@ jest-regex-util@^25.2.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz#783937544cfc40afcc7c569aa54748c4b3f83f5a" - integrity sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A== +jest-resolve-dependencies@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.0.tgz#d5e6ea2984aea22121f85a8cf5bcbdea35ae1d96" + integrity sha512-TXTYxNSfB9EBl1/bPUyC4gPCy+WI/DhTtePfWckvS9qworAhq9HJI1OBSoHFP5X2WeO/mx4rCfU3atWo+OH7IQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" jest-regex-util "^25.2.6" - jest-snapshot "^25.4.0" + jest-snapshot "^25.5.0" -jest-resolve@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.4.0.tgz#6f4540ce0d419c4c720e791e871da32ba4da7a60" - integrity sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA== +jest-resolve@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.0.tgz#0099a09857a68565429b17c973cfa4227f765015" + integrity sha512-quY4fdl64UwIGZhrbWgHCORC4xPgrM+UUzucYW0Oy1PjIUHgazVTji+XtW1iQRbsrJEpfs974L2oXX3QHaYBaA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" browser-resolve "^1.11.3" chalk "^3.0.0" + graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.1" read-pkg-up "^7.0.1" realpath-native "^2.0.0" - resolve "^1.15.1" + resolve "^1.17.0" slash "^3.0.0" -jest-runner@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.4.0.tgz#6ca4a3d52e692bbc081228fa68f750012f1f29e5" - integrity sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA== +jest-runner@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.0.tgz#a32546675cbcf4e32086138f6c56c8423add6234" + integrity sha512-BJRbtZGe9V19Cv3ARFrpAfMHoHObUYLXNBKS4LTYBd85OJEp8DyFpxCG5g3AobrtmuMIvIbcNg4MvWlTtN3ODQ== dependencies: - "@jest/console" "^25.4.0" - "@jest/environment" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.4.0" + graceful-fs "^4.2.4" + jest-config "^25.5.0" jest-docblock "^25.3.0" - jest-haste-map "^25.4.0" - jest-jasmine2 "^25.4.0" - jest-leak-detector "^25.4.0" - jest-message-util "^25.4.0" - jest-resolve "^25.4.0" - jest-runtime "^25.4.0" - jest-util "^25.4.0" - jest-worker "^25.4.0" + jest-haste-map "^25.5.0" + jest-jasmine2 "^25.5.0" + jest-leak-detector "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.0" + jest-runtime "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.4.0.tgz#1e5227a9e2159d26ae27dcd426ca6bc041983439" - integrity sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA== +jest-runtime@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.0.tgz#d1df2c601710974001f7095ab25c865ce5882cbc" + integrity sha512-s7TqawKRjaNaE82PjXxDYVhjrMQqjTiiY63N1jFcYtX2xtg05xsgCBk0ls6NMR3fy3AtvbPIQjD3FpssH01l6A== dependencies: - "@jest/console" "^25.4.0" - "@jest/environment" "^25.4.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/globals" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" "@types/yargs" "^15.0.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.4.0" - jest-haste-map "^25.4.0" - jest-message-util "^25.4.0" - jest-mock "^25.4.0" + graceful-fs "^4.2.4" + jest-config "^25.5.0" + jest-haste-map "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-resolve "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" realpath-native "^2.0.0" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.3.1" -jest-serializer@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" - integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== +jest-serializer@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" + integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== + dependencies: + graceful-fs "^4.2.4" -jest-snapshot@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.4.0.tgz#e0b26375e2101413fd2ccb4278a5711b1922545c" - integrity sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg== +jest-snapshot@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.0.tgz#0344dc1b8a949aeffefa45075508bb6277ee07d1" + integrity sha512-DveG7ZRn6HEmpDxpZXXR/U5x/aKG5N88tdaB+CH0d5jpb9tuvLMZn8rGZeBiLPS0RCO5VIlu8HL/WtY6wMk0QA== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" "@types/prettier" "^1.19.0" chalk "^3.0.0" - expect "^25.4.0" - jest-diff "^25.4.0" + expect "^25.5.0" + graceful-fs "^4.2.4" + jest-diff "^25.5.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" - jest-resolve "^25.4.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.0" make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^25.4.0" + pretty-format "^25.5.0" semver "^6.3.0" -jest-util@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" - integrity sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA== +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" make-dir "^3.0.0" -jest-validate@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.4.0.tgz#2e177a93b716a137110eaf2768f3d9095abd3f38" - integrity sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g== +jest-validate@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" + integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" camelcase "^5.3.1" chalk "^3.0.0" jest-get-type "^25.2.6" leven "^3.1.0" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-watcher@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.4.0.tgz#63ec0cd5c83bb9c9d1ac95be7558dd61c995ff05" - integrity sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw== +jest-watcher@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" + integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== dependencies: - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" - jest-util "^25.4.0" + jest-util "^25.5.0" string-length "^3.1.0" -jest-worker@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" - integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw== +jest-worker@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" - integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== +jest@25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.0.tgz#60c1436335448edeae0eb008e152225d3c1d3617" + integrity sha512-wHCEcs3cyQmQfn2qNYoC/g51TGOE50F6dSsGNqgkkUHYDND29Cqe88FHDNXF04P7odYhkABxJ4Fe8kbig8R/8g== dependencies: - "@jest/core" "^25.4.0" + "@jest/core" "^25.5.0" import-local "^3.0.2" - jest-cli "^25.4.0" + jest-cli "^25.5.0" jquery@^3.4.1: version "3.4.1" @@ -9625,12 +9676,12 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -pretty-format@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" - integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== +pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^16.12.0" @@ -10291,10 +10342,10 @@ resolve@^1.10.0: dependencies: path-parse "^1.0.6" -resolve@^1.15.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6"