diff --git a/common/contest.ts b/common/contest.ts index 17399d4c..6c272a79 100644 --- a/common/contest.ts +++ b/common/contest.ts @@ -1,11 +1,24 @@ import { GROUP_CHAT_SLUG } from 'common/group' -export const CONTEST_DATA = { - 'cause-exploration-prize': { - link: 'https://www.causeexplorationprizes.com/', - description: - 'Open Philanthropy’s contest to find ideas for the best ways to use their resources, with focus on new areas to support, health development, and worldview investigations.', - }, +type Contest = { + link: string + description: string + submissionLink: string + fileName: string + closeTime: string } -export const CONTEST_SLUGS = Object.keys(CONTEST_DATA) +export let contest_data: { [name: string]: Contest } = {} + +contest_data['cause-exploration-prize'] = { + link: 'https://www.causeexplorationprizes.com/', + description: + 'Open Philanthropy’s contest to find ideas for the best ways to use their resources, with focus on new areas to support, health development, and worldview investigations.', + submissionLink: + 'https://forum.effectivealtruism.org/topics/cause-exploration-prizes', + //name of file that stores json of submissions under lib/util/contests + fileName: 'causeExploration', + closeTime: '2022-09-01', +} + +export const CONTEST_SLUGS = Object.keys(contest_data) diff --git a/functions/package.json b/functions/package.json index 1f59174a..dae6cc98 100644 --- a/functions/package.json +++ b/functions/package.json @@ -40,6 +40,7 @@ "lodash": "4.17.21", "mailgun-js": "0.22.0", "module-alias": "2.2.2", + "puppeteer": "16.0.0", "stripe": "8.194.0", "zod": "3.17.2" }, diff --git a/functions/src/scripts/scrape-ea.ts b/functions/src/scripts/scrape-ea.ts deleted file mode 100644 index 4aada6e9..00000000 --- a/functions/src/scripts/scrape-ea.ts +++ /dev/null @@ -1,125 +0,0 @@ -// Run with `npx ts-node src/scripts/scrape-ea.ts` - -import * as cheerio from 'cheerio' -import * as fs from 'fs' - -type Submission = { - title: string - author: string - // minuteRead: number - // postedAt: string - // amount: string - link?: string -} - -function elToSubmission($: cheerio.Root, el: cheerio.Element): Submission { - const $el = $(el) - const title = $el.find('a>span>span').text().trim() - const author = $el.find('.PostsUserAndCoauthors-lengthLimited').text().trim() - const link = $el.find('a').attr('href')?.trim() - // const postedAt = $el.find('PostsItemDate-postedAt').text().trim() - // const date = $el.find('.grant-card__date').text().trim() - // const amount = $el.find('.grant-card__amount').text().trim() - // const areasOfInterest = $el - // .find('.area-of-interest__title') - // // Remove all leading and trailing whitespace - // .map((_, el) => $(el).text().trim()) - // .get() - // .join('|') - // const link = $el.find('a.grant-card__link').attr('href')?.trim() - - return { - title, - author, - link, - } as Submission -} - -async function scrapeFtx() { - const resp = await fetch( - 'https://forum.effectivealtruism.org/topics/cause-exploration-prizes' - ) - const text = await resp.text() - const $ = cheerio.load(text) - const strip = (text: string) => text.replace(/'/g, '') - const toNum = (text: string) => Number(text.replace(/[^0-9.-]+/g, '')) - - // Parse Grant objects from each
using cheerio - const csvLines = [ - // Add a header row - // 'title\tdescription\tdate\tamount\tareasOfInterest\tlink', - ...$('div.PostsItem2-root') - .map((_, el) => elToSubmission($, el)) - .get() - .map( - (submission) => - // Join all attributes with tabs - `{ title: '${submission.title}', - author: '${submission.author}', - link: '${submission.link}', - } - ` - ), - ] - console.log(csvLines.join('\n')) - fs.writeFileSync( - '../web/lib/util/ftx-grants.ts', - 'export const grants = [\n' + csvLines.join('\n') + '\n]' - ) -} - -if (require.main === module) { - scrapeFtx().then(() => process.exit()) -} - -/* -Example html grant card, for reference: -
-
- March 2022 -
-

- Manifold Markets -

-
-

​​This regrant will support Manifold Markets in building a play-money prediction market platform. The platform is also experimenting with impact certificates and charity prediction markets.

-
-
- $1,000,000 -
- - manifold.markets - -
-*/ diff --git a/functions/tsconfig.json b/functions/tsconfig.json index 9496b9cb..71ce7ac3 100644 --- a/functions/tsconfig.json +++ b/functions/tsconfig.json @@ -7,7 +7,8 @@ "outDir": "lib", "sourceMap": true, "strict": true, - "target": "es2017" + "target": "es2017", + "resolveJsonModule": true }, "references": [ { diff --git a/web/components/submission-search.tsx b/web/components/submission-search.tsx index d7c101c3..4d5dcdf8 100644 --- a/web/components/submission-search.tsx +++ b/web/components/submission-search.tsx @@ -23,6 +23,17 @@ import { DEFAULT_CATEGORY_GROUPS } from 'common/categories' import { Col } from './layout/col' import SubmissionSearchFirestore from 'web/pages/submission-search-firestore' import { SubmissionsGrid } from './submission/submission-list' +import { contest_data } from 'common/contest' + +// All contest scraping data imports +import { default as causeExploration } from 'web/lib/util/contests/causeExploration.json' +import { getGroupBySlug } from 'web/lib/firebase/groups' +import { getContractFromId } from 'web/lib/firebase/contracts' +import { contractTextDetails } from './contract/contract-details' +import { createMarket } from 'web/lib/firebase/api' +import { removeUndefinedProps } from 'common/util/object' +import dayjs from 'dayjs' +import { useRouter } from 'next/router' const searchClient = algoliasearch( 'GJQPAYENIF', @@ -52,11 +63,11 @@ export function SubmissionSearch(props: { defaultFilter?: filter shouldLoadFromStorage?: boolean } - additionalFilter?: { + additionalFilter: { creatorId?: string tag?: string excludeContractIds?: string[] - groupSlug?: string + contestSlug: string } highlightOptions?: ContractHighlightOptions onContractClick?: (contract: Contract) => void @@ -80,25 +91,7 @@ export function SubmissionSearch(props: { } = props const user = useUser() - const memberGroups = (useMemberGroups(user?.id) ?? []).filter( - (group) => !NEW_USER_GROUP_SLUGS.includes(group.slug) - ) - const memberGroupSlugs = - memberGroups.length > 0 - ? memberGroups.map((g) => g.slug) - : DEFAULT_CATEGORY_GROUPS.map((g) => g.slug) - - const memberPillGroups = sortBy( - memberGroups.filter((group) => group.contractIds.length > 0), - (group) => group.contractIds.length - ).reverse() - - const defaultPillGroups = DEFAULT_CATEGORY_GROUPS as Group[] - - const pillGroups = - memberPillGroups.length > 0 ? memberPillGroups : defaultPillGroups - - const follows = useFollows(user?.id) + const router = useRouter() const { shouldLoadFromStorage, defaultSort } = querySortOptions ?? {} const { query, setQuery, sort, setSort } = useQueryAndSortParams({ @@ -109,25 +102,13 @@ export function SubmissionSearch(props: { const [filter, setFilter] = useState( querySortOptions?.defaultFilter ?? 'open' ) - const pillsEnabled = !additionalFilter - - const [pillFilter, setPillFilter] = useState(undefined) - - const selectPill = (pill: string | undefined) => () => { - setPillFilter(pill) - setPage(0) - track('select search category', { category: pill ?? 'all' }) - } const additionalFilters = [ - additionalFilter?.creatorId - ? `creatorId:${additionalFilter.creatorId}` - : '', - additionalFilter?.tag ? `lowercaseTags:${additionalFilter.tag}` : '', - additionalFilter?.groupSlug - ? `groupLinks.slug:${additionalFilter.groupSlug}` + additionalFilter?.contestSlug + ? `groupLinks.slug:${additionalFilter.contestSlug}` : '', ] + let facetFilters = query ? additionalFilters : [ @@ -135,26 +116,6 @@ export function SubmissionSearch(props: { filter === 'open' ? 'isResolved:false' : '', filter === 'closed' ? 'isResolved:false' : '', filter === 'resolved' ? 'isResolved:true' : '', - pillFilter && pillFilter !== 'personal' && pillFilter !== 'your-bets' - ? `groupLinks.slug:${pillFilter}` - : '', - pillFilter === 'personal' - ? // Show contracts in groups that the user is a member of - memberGroupSlugs - .map((slug) => `groupLinks.slug:${slug}`) - // Show contracts created by users the user follows - .concat(follows?.map((followId) => `creatorId:${followId}`) ?? []) - // Show contracts bet on by users the user follows - .concat( - follows?.map((followId) => `uniqueBettorIds:${followId}`) ?? [] - ) - : '', - // Subtract contracts you bet on from For you. - pillFilter === 'personal' && user ? `uniqueBettorIds:-${user.id}` : '', - pillFilter === 'your-bets' && user - ? // Show contracts bet on by the user - `uniqueBettorIds:${user.id}` - : '', ].filter((f) => f) // Hack to make Algolia work. facetFilters = ['', ...facetFilters] @@ -250,6 +211,45 @@ export function SubmissionSearch(props: { track('select sort', { sort: newSort }) } + const contestSlug = additionalFilter?.contestSlug + + // Getting all submissions in a group and seeing if there's any new ones from the last scraping + // if so, creates new submission + + async function syncSubmissions() { + let scrapedTitles = causeExploration.map((entry) => entry.title) + if (contestSlug) { + let group = await getGroupBySlug(contestSlug).catch((err) => { + return err + }) + + let questions: string[] = await Promise.all( + group.contractIds.map(async (contractId: string) => { + return (await getContractFromId(contractId))?.question + }) + ) + + scrapedTitles.map(async (title) => { + if (!questions.includes(title)) { + // INGA/TODO: I don't know how to create a market, we should also be creating these markets under some like manifold account so that users aren't creating markets on their own when the backend updates. Pls help + // await createMarket( + // removeUndefinedProps({ + // title, + // outcomeType: 'BINARY', + // initialProb: 50, + // groupId: group.id, + // closeTime: dayjs( + // contest_data[contestSlug].closeTime + // ).valueOf(), + // }) + // ) + } + }) + } + } + + syncSubmissions() + if (IS_PRIVATE_MANIFOLD || process.env.NEXT_PUBLIC_FIREBASE_EMULATE) { return ( - - - {pillsEnabled && ( - - - All - - - {user ? 'For you' : 'Featured'} - - - {user && ( - - Your bets - - )} - - {pillGroups.map(({ name, slug }) => { - return ( - - {name} - - ) - })} - - )} - - - - {filter === 'personal' && - (follows ?? []).length === 0 && - memberGroupSlugs.length === 0 ? ( - <>You're not following anyone, nor in any of your own groups yet. - ) : ( - - )} + + ) } diff --git a/web/components/submission/submission-card.tsx b/web/components/submission/submission-card.tsx index 3e57712b..07d0e747 100644 --- a/web/components/submission/submission-card.tsx +++ b/web/components/submission/submission-card.tsx @@ -2,7 +2,11 @@ import clsx from 'clsx' import Link from 'next/link' import { Row } from '../layout/row' import { formatLargeNumber, formatPercent } from 'common/util/format' -import { contractPath, getBinaryProbPercent } from 'web/lib/firebase/contracts' +import { + contractPath, + getBinaryProbPercent, + submissionPath, +} from 'web/lib/firebase/contracts' import { Col } from '../layout/col' import { BinaryContract, @@ -36,6 +40,15 @@ import { track } from '@amplitude/analytics-browser' import { trackCallback } from 'web/lib/service/analytics' import { formatNumericProbability } from 'common/pseudo-numeric' import { Title } from '../title' +import { contest_data } from 'common/contest' +import { default as causeExploration } from 'web/lib/util/contests/causeExploration.json' + +//this is super gross, need to figure out how to not hardcode this +function getSubmissionData(contestSlug: string) { + if (contestSlug === 'cause-exploration-prize') { + return causeExploration + } +} export function SubmissionCard(props: { contract: Contract @@ -45,6 +58,7 @@ export function SubmissionCard(props: { onClick?: () => void hideQuickBet?: boolean hideGroupLink?: boolean + contestSlug: string }) { const { showHotVolume, @@ -53,6 +67,7 @@ export function SubmissionCard(props: { onClick, hideQuickBet, hideGroupLink, + contestSlug, } = props const contract = useContractWithPreload(props.contract) ?? props.contract const { question, outcomeType } = contract @@ -69,115 +84,70 @@ export function SubmissionCard(props: { (outcomeType === 'BINARY' || outcomeType === 'PSEUDO_NUMERIC') && !hideQuickBet + const submissionData = getSubmissionData(contract.slug) + console.log(submissionData) + return ( -
- + {/* - - - - {/* */} -

- {question} -

- - {(outcomeType === 'FREE_RESPONSE' || - outcomeType === 'MULTIPLE_CHOICE') && - (resolution ? ( - - ) : ( - - ))} - - - - {showQuickBet ? ( - - ) : ( - - {outcomeType === 'BINARY' && ( - - )} - - {outcomeType === 'PSEUDO_NUMERIC' && ( - - )} - - {outcomeType === 'NUMERIC' && ( - - )} - - {(outcomeType === 'FREE_RESPONSE' || - outcomeType === 'MULTIPLE_CHOICE') && ( - - )} - - + > */} + +
+

+ {question} +

+ + {submissionData?.filter((entry) => entry.title === contract.question)} -
+ + + chance of winning a prize +
+ {getBinaryProbPercent(contract)} +
+ +
+ ) } @@ -252,14 +222,6 @@ export function FreeResponseResolutionOrChance(props: {
Resolved
- {(resolution === 'CANCEL' || resolution === 'MKT') && ( - - )} ) : ( topAnswer && ( diff --git a/web/components/submission/submission-list.tsx b/web/components/submission/submission-list.tsx index 10deff15..98a639c5 100644 --- a/web/components/submission/submission-list.tsx +++ b/web/components/submission/submission-list.tsx @@ -28,6 +28,7 @@ export function SubmissionsGrid(props: { hideGroupLink?: boolean } highlightOptions?: ContractHighlightOptions + contestSlug: string }) { const { contracts, @@ -38,7 +39,9 @@ export function SubmissionsGrid(props: { overrideGridClassName, cardHideOptions, highlightOptions, + contestSlug, } = props + const { hideQuickBet, hideGroupLink } = cardHideOptions || {} const { contractIds, highlightClassName } = highlightOptions || {} @@ -86,6 +89,7 @@ export function SubmissionsGrid(props: { ? highlightClassName : undefined } + contestSlug={contestSlug} /> ))} @@ -93,20 +97,3 @@ export function SubmissionsGrid(props: { ) } - -export function CreatorContractsList(props: { creator: User }) { - const { creator } = props - - return ( - - ) -} diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts index 9e5de871..a0659545 100644 --- a/web/lib/firebase/contracts.ts +++ b/web/lib/firebase/contracts.ts @@ -31,6 +31,10 @@ export const contracts = coll('contracts') export type { Contract } +export function submissionPath(submission: Contract, contestSlug: string) { + return `/contest/${contestSlug}/${submission.slug}` +} + export function contractPath(contract: Contract) { return `/${contract.creatorUsername}/${contract.slug}` } diff --git a/web/lib/util/ftx-grants.ts b/web/lib/util/ftx-grants.ts deleted file mode 100644 index ac561be7..00000000 --- a/web/lib/util/ftx-grants.ts +++ /dev/null @@ -1,77 +0,0 @@ -export const grants = [ -{ title: 'New cause area: Violence against women and girls', - author: 'Akhil', - link: '/posts/majcwf7i8pW8eMJ3v/new-cause-area-violence-against-women-and-girls', - } - -{ title: 'Open Philanthropy's Cause Exploration Prizes: $120k for written work on global health and wellbeing', - author: 'ChrisSmith, Aaron Gertler', - link: '/posts/iqcph4DbcP4PZGyDB/open-philanthropy-s-cause-exploration-prizes-usd120k-for', - } - -{ title: 'The Case for Making Professional Degrees Undergraduate Degrees', - author: 'ColdButtonIssues', - link: '/posts/fEMpAcNycbXpp6Ext/the-case-for-making-professional-degrees-undergraduate', - } - -{ title: 'New cause area: training health workers to prevent newborn deaths', - author: 'Marshall', - link: '/posts/B7wohgDDdwPoQAatt/new-cause-area-training-health-workers-to-prevent-newborn', - } - -{ title: 'Global Health & Development - Beyond the Streetlight', - author: 'Richard Sedlmayr', - link: '/posts/DXKWHAkihdb6nkKyG/global-health-and-development-beyond-the-streetlight-1', - } - -{ title: 'Cause Exploration Prizes submission: bivalve aquaculture', - author: 'Brian Lui', - link: '/posts/7keuWWMoYY6dMnqys/cause-exploration-prizes-submission-bivalve-aquaculture', - } - -{ title: 'Potential new cause area: Obesity', - author: 'Akhil', - link: '/posts/jhsXxPnKbwzLwrKFq/potential-new-cause-area-obesity', - } - -{ title: 'Energy Access in Sub-Saharan Africa: Open Philanthropy Cause Exploration Prize Submission', - author: 'Tomer_Goloboy', - link: '/posts/ZPjMemurtzeumwcdw/energy-access-in-sub-saharan-africa-open-philanthropy-cause', - } - -{ title: 'Sleep: Open Philanthropy Cause Exploration Prize', - author: 'SuhanKacholia', - link: '/posts/qnDBN3nAXgwyTnrAC/sleep-open-philanthropy-cause-exploration-prize', - } - -{ title: 'Cause Exploration Prizes: Could New Technology Help Solve the Glasses Problem?', - author: 'Open Philanthropy', - link: '/posts/a3vbQCgxTeYNvQBfc/cause-exploration-prizes-could-new-technology-help-solve-the', - } - -{ title: 'Cause Exploration Prizes: Expanding access to infertility services in Low- and Middle-Income Countries (LMICs)', - author: 'Soleine Scotney', - link: '/posts/WAnJw5bhuQwhJiLTm/cause-exploration-prizes-expanding-access-to-infertility', - } - -{ title: 'New Cause Area: Demographic Collapse', - author: 'Malcolm Collins, hath, Simone H Collins', - link: '/posts/vFfoqL74kmZbydKjp/new-cause-area-demographic-collapse', - } - -{ title: 'Cause area: climate adaptation in low-income countries', - author: 'karthik-t', - link: '/posts/nE827LwrRk5ep3Xao/cause-area-climate-adaptation-in-low-income-countries', - } - -{ title: 'Open Climate Data as a possible cause area, Open Philanthropy', - author: 'Ben Yeoh', - link: '/posts/s9HPpvMHgS5QYEM4C/open-climate-data-as-a-possible-cause-area-open-philanthropy', - } - -{ title: 'One Million Missing Children', - author: 'ColdButtonIssues', - link: '/posts/H5LDwwmdBYBDNXTq4/one-million-missing-children', - } - -] \ No newline at end of file diff --git a/web/pages/[username]/[contractSlug].tsx b/web/pages/[username]/[contractSlug].tsx index 58e7c2e8..c1c8ef32 100644 --- a/web/pages/[username]/[contractSlug].tsx +++ b/web/pages/[username]/[contractSlug].tsx @@ -217,15 +217,6 @@ export function ContractPageContent( /> )} - {(outcomeType === 'FREE_RESPONSE' || - outcomeType === 'MULTIPLE_CHOICE') && ( - <> - - - - - )} - {isNumeric && allowTrade && ( )} diff --git a/web/pages/contest/[...slugs]/index.tsx b/web/pages/contest/[...slugs]/index.tsx index 460b0c46..5d405f39 100644 --- a/web/pages/contest/[...slugs]/index.tsx +++ b/web/pages/contest/[...slugs]/index.tsx @@ -207,14 +207,14 @@ export default function ContestPage(props: { ) - const questionsTab = ( + const submissionsTab = ( ) @@ -230,7 +230,7 @@ export default function ContestPage(props: { ]), { title: 'Submissions', - content: questionsTab, + content: submissionsTab, href: contestPath(contest.slug, 'submissions'), }, { diff --git a/web/pages/contests.tsx b/web/pages/contests.tsx index 9adfe999..b3b50a20 100644 --- a/web/pages/contests.tsx +++ b/web/pages/contests.tsx @@ -19,7 +19,7 @@ import { JoinOrLeaveGroupButton } from 'web/components/groups/groups-button' import { UserLink } from 'web/components/user-page' import { searchInAny } from 'common/util/parse' import { SEO } from 'web/components/SEO' -import { CONTEST_SLUGS, CONTEST_DATA } from 'common/contest' +import { CONTEST_SLUGS, contest_data } from 'common/contest' import { contestPath } from 'web/lib/firebase/contests' export async function getStaticProps() { diff --git a/yarn.lock b/yarn.lock index 9334b737..cebc18ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3156,6 +3156,13 @@ dependencies: "@types/node" "*" +"@types/cheerio@^0.22.31": + version "0.22.31" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.31.tgz#b8538100653d6bb1b08a1e46dec75b4f2a5d5eb6" + integrity sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw== + dependencies: + "@types/node" "*" + "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" @@ -3450,6 +3457,13 @@ dependencies: "@types/node" "*" +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + "@typescript-eslint/eslint-plugin@5.25.0": version "5.25.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz#e8ce050990e4d36cc200f2de71ca0d3eb5e77a31" @@ -4145,7 +4159,7 @@ base16@^1.0.0: resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== -base64-js@^1.3.0: +base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4175,6 +4189,15 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.7.1: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -4288,6 +4311,11 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4 node-releases "^2.0.3" picocolors "^1.0.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" @@ -4298,6 +4326,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -4421,6 +4457,19 @@ cheerio-select@^2.1.0: domhandler "^5.0.3" domutils "^3.0.1" +cheerio@1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + cheerio@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" @@ -4472,6 +4521,11 @@ chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -4843,7 +4897,7 @@ cross-env@^7.0.3: dependencies: cross-spawn "^7.0.1" -cross-fetch@^3.1.5: +cross-fetch@3.1.5, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -5158,7 +5212,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, 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== @@ -5314,6 +5368,11 @@ detective@^5.2.1: defined "^1.0.0" minimist "^1.2.6" +devtools-protocol@0.0.1019158: + version "0.0.1019158" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz#4b08d06108a784a2134313149626ba55f030a86f" + integrity sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ== + dicer@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.1.tgz#abf28921e3475bc5e801e74e0159fd94f927ba97" @@ -6033,6 +6092,17 @@ extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6115,6 +6185,13 @@ fbjs@^3.0.0, fbjs@^3.0.1: setimmediate "^1.0.5" ua-parser-js "^0.7.30" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + feed@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" @@ -6365,6 +6442,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -7078,6 +7160,14 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" @@ -7086,14 +7176,6 @@ https-proxy-agent@^3.0.0: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -7116,6 +7198,11 @@ idb@3.0.2: resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -7189,7 +7276,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8339,6 +8426,11 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" @@ -8989,6 +9081,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -9014,7 +9111,7 @@ pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pkg-dir@^4.1.0: +pkg-dir@4.2.0, pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -9430,6 +9527,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +progress@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-polyfill@8.1.3: version "8.1.3" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" @@ -9625,7 +9727,7 @@ proxy-agent@^3.0.3: proxy-from-env "^1.0.0" socks-proxy-agent "^4.0.1" -proxy-from-env@^1.0.0: +proxy-from-env@1.1.0, proxy-from-env@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -9674,6 +9776,24 @@ pupa@^2.1.1: dependencies: escape-goat "^2.0.0" +puppeteer@16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-16.0.0.tgz#9efb6cdb57e3e51cf060a33f6289e88200dd4672" + integrity sha512-FgSe21IHNHkqv1SiJiob4ANsxVujcINa4p3MaDEMyoZsocbgSgwYE0c9lnF8eoinw4id3vx4DOXwhFdOOwVlDg== + dependencies: + cross-fetch "3.1.5" + debug "4.3.4" + devtools-protocol "0.0.1019158" + extract-zip "2.0.1" + https-proxy-agent "5.0.1" + pkg-dir "4.2.0" + progress "2.0.3" + proxy-from-env "1.1.0" + rimraf "3.0.2" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.8.1" + pure-color@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" @@ -10023,7 +10143,7 @@ readable-stream@2, readable-stream@^2.0.1, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -11114,6 +11234,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar-fs@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + teeny-request@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.2.0.tgz#41347ece068f08d741e7b86df38a4498208b2633" @@ -11151,6 +11292,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + thunkify@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" @@ -11374,6 +11520,14 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbzip2-stream@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" @@ -11986,6 +12140,11 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" + integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== + ws@>=7.4.6: version "8.6.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" @@ -12066,6 +12225,14 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"