all the things

This commit is contained in:
ingawei 2022-08-08 12:32:10 -07:00
parent 6382759e27
commit 7db3497bbe
13 changed files with 358 additions and 483 deletions

View File

@ -1,11 +1,24 @@
import { GROUP_CHAT_SLUG } from 'common/group' import { GROUP_CHAT_SLUG } from 'common/group'
export const CONTEST_DATA = { type Contest = {
'cause-exploration-prize': { link: string
description: string
submissionLink: string
fileName: string
closeTime: string
}
export let contest_data: { [name: string]: Contest } = {}
contest_data['cause-exploration-prize'] = {
link: 'https://www.causeexplorationprizes.com/', link: 'https://www.causeexplorationprizes.com/',
description: description:
'Open Philanthropys contest to find ideas for the best ways to use their resources, with focus on new areas to support, health development, and worldview investigations.', 'Open Philanthropys 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) export const CONTEST_SLUGS = Object.keys(contest_data)

View File

@ -40,6 +40,7 @@
"lodash": "4.17.21", "lodash": "4.17.21",
"mailgun-js": "0.22.0", "mailgun-js": "0.22.0",
"module-alias": "2.2.2", "module-alias": "2.2.2",
"puppeteer": "16.0.0",
"stripe": "8.194.0", "stripe": "8.194.0",
"zod": "3.17.2" "zod": "3.17.2"
}, },

View File

@ -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 <div class="grant-card"> 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:
<div class="grant-card" style="order: -1">
<div class="grant-card__date">
March 2022
</div>
<h2 class="grant-card__title">
Manifold Markets
</h2>
<div class="grant-card__description">
<p>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.</p>
</div>
<div class="grant-card__amount">
$1,000,000
</div>
<a href="https://manifold.markets/" class="grant-card__link">
manifold.markets </a>
<div class="grant-card__areas-of-interest">
<a href="https://ftx.tghp.co.uk/area-of-interest/#institution-epistemic-institutions" class="area-of-interest">
<div class="area-of-interest__icon">
<!--?xml version="1.0" encoding="utf-8"?-->
<!-- Generator: Adobe Illustrator 25.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{fill:#EF3C27;}
</style>
<g>
<path class="st0" d="M491.8,307.6c5.9-6.6,9.6-15.4,9.6-24.9c0-16.9-11.3-31.2-26.7-35.8V85.4h5.2c5.9,0,10.7-4.8,10.8-10.7v-64
C490.7,4.8,485.9,0,480,0H32.1c-5.9,0-10.7,4.8-10.7,10.7v64c0,5.9,4.8,10.7,10.7,10.7h64v30.6c-0.1,0.5-0.1,0.9-0.1,1.4
c0,0.5,0,1,0.1,1.4v94.5c0,5,3.5,9.4,8.4,10.5l149.2,32c0.8,0.1,1.5,0.2,2.3,0.2s1.5-0.1,2.4-0.2l149.3-32
c4.9-1.1,8.4-5.4,8.4-10.5V85.4h37.2v161.5c-15.4,4.6-26.7,18.9-26.7,35.8c0,9.6,3.6,18.3,9.6,24.9c-12.2,8.7-20.2,23-20.2,39.1
v90.6c0,5.9,4.8,10.7,10.7,10.7h74.6c5.9,0,10.7-4.8,10.8-10.7v-90.6C512,330.6,504,316.3,491.8,307.6z M42.8,21.3h426.5V64h-63.9
H106.8h-64V21.3z M256,234.4l-138.6-29.7v-76.7h277.2v76.7L256,234.4z M394.6,106.7H117.4V85.4h277.2V106.7z M448,282.7
c0-8.8,7.2-16,16-16c8.8,0,15.9,7.2,16,16c0,8.8-7.2,16-16,16C455.2,298.7,448,291.5,448,282.7z M490.7,426.6h-53.4v-79.9
c0-14.7,12-26.7,26.7-26.7c14.7,0,26.7,12,26.7,26.7V426.6z"></path>
<path class="st0" d="M351.9,447.9h-21.3c-5.9,0-10.7,4.8-10.7,10.7s4.8,10.7,10.7,10.7h21.3c5.9,0,10.7,4.8,10.7,10.7
c0,5.9-4.8,10.7-10.7,10.7h-74.6l-13-52.3c-0.5-1.9-1.4-3.5-2.8-4.9L72.9,244.9c-16.7-16.7-43.7-16.7-60.3,0
C4.6,253,0.1,263.6,0.1,275.1s4.5,22.1,12.5,30.2L201,493.7c1.4,1.4,3.2,2.4,5,2.8l59.6,14.8c1,0.3,2.1,0.5,3.3,0.5h83.1
c17.6,0,32-14.4,32-32C383.9,462.2,369.6,447.9,351.9,447.9z M65.4,327.8l30.1-30.1l15.1,15.1l-30.1,30.1L65.4,327.8z M21.4,275
c0-5.7,2.2-11,6.2-15c8.3-8.3,21.9-8.3,30.2,0l22.7,22.7l-30.1,30.1L27.6,290C23.6,285.9,21.4,280.6,21.4,275z M214.1,476.5
L95.6,357.9l30.1-30.1l118.5,118.5l10,40.2L214.1,476.5z"></path>
</g>
</svg>
</div>
<div class="area-of-interest__title">
Epistemic Institutions
</div>
</a>
</div>
</div>
*/

View File

@ -7,7 +7,8 @@
"outDir": "lib", "outDir": "lib",
"sourceMap": true, "sourceMap": true,
"strict": true, "strict": true,
"target": "es2017" "target": "es2017",
"resolveJsonModule": true
}, },
"references": [ "references": [
{ {

View File

@ -23,6 +23,17 @@ import { DEFAULT_CATEGORY_GROUPS } from 'common/categories'
import { Col } from './layout/col' import { Col } from './layout/col'
import SubmissionSearchFirestore from 'web/pages/submission-search-firestore' import SubmissionSearchFirestore from 'web/pages/submission-search-firestore'
import { SubmissionsGrid } from './submission/submission-list' 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( const searchClient = algoliasearch(
'GJQPAYENIF', 'GJQPAYENIF',
@ -52,11 +63,11 @@ export function SubmissionSearch(props: {
defaultFilter?: filter defaultFilter?: filter
shouldLoadFromStorage?: boolean shouldLoadFromStorage?: boolean
} }
additionalFilter?: { additionalFilter: {
creatorId?: string creatorId?: string
tag?: string tag?: string
excludeContractIds?: string[] excludeContractIds?: string[]
groupSlug?: string contestSlug: string
} }
highlightOptions?: ContractHighlightOptions highlightOptions?: ContractHighlightOptions
onContractClick?: (contract: Contract) => void onContractClick?: (contract: Contract) => void
@ -80,25 +91,7 @@ export function SubmissionSearch(props: {
} = props } = props
const user = useUser() const user = useUser()
const memberGroups = (useMemberGroups(user?.id) ?? []).filter( const router = useRouter()
(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 { shouldLoadFromStorage, defaultSort } = querySortOptions ?? {} const { shouldLoadFromStorage, defaultSort } = querySortOptions ?? {}
const { query, setQuery, sort, setSort } = useQueryAndSortParams({ const { query, setQuery, sort, setSort } = useQueryAndSortParams({
@ -109,25 +102,13 @@ export function SubmissionSearch(props: {
const [filter, setFilter] = useState<filter>( const [filter, setFilter] = useState<filter>(
querySortOptions?.defaultFilter ?? 'open' querySortOptions?.defaultFilter ?? 'open'
) )
const pillsEnabled = !additionalFilter
const [pillFilter, setPillFilter] = useState<string | undefined>(undefined)
const selectPill = (pill: string | undefined) => () => {
setPillFilter(pill)
setPage(0)
track('select search category', { category: pill ?? 'all' })
}
const additionalFilters = [ const additionalFilters = [
additionalFilter?.creatorId additionalFilter?.contestSlug
? `creatorId:${additionalFilter.creatorId}` ? `groupLinks.slug:${additionalFilter.contestSlug}`
: '',
additionalFilter?.tag ? `lowercaseTags:${additionalFilter.tag}` : '',
additionalFilter?.groupSlug
? `groupLinks.slug:${additionalFilter.groupSlug}`
: '', : '',
] ]
let facetFilters = query let facetFilters = query
? additionalFilters ? additionalFilters
: [ : [
@ -135,26 +116,6 @@ export function SubmissionSearch(props: {
filter === 'open' ? 'isResolved:false' : '', filter === 'open' ? 'isResolved:false' : '',
filter === 'closed' ? 'isResolved:false' : '', filter === 'closed' ? 'isResolved:false' : '',
filter === 'resolved' ? 'isResolved:true' : '', 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) ].filter((f) => f)
// Hack to make Algolia work. // Hack to make Algolia work.
facetFilters = ['', ...facetFilters] facetFilters = ['', ...facetFilters]
@ -250,6 +211,45 @@ export function SubmissionSearch(props: {
track('select sort', { sort: newSort }) 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) { if (IS_PRIVATE_MANIFOLD || process.env.NEXT_PUBLIC_FIREBASE_EMULATE) {
return ( return (
<SubmissionSearchFirestore <SubmissionSearchFirestore
@ -296,56 +296,7 @@ export function SubmissionSearch(props: {
)} )}
</Row> </Row>
<Spacer h={3} /> <Spacer h={4} />
{pillsEnabled && (
<Row className="scrollbar-hide items-start gap-2 overflow-x-auto">
<PillButton
key={'all'}
selected={pillFilter === undefined}
onSelect={selectPill(undefined)}
>
All
</PillButton>
<PillButton
key={'personal'}
selected={pillFilter === 'personal'}
onSelect={selectPill('personal')}
>
{user ? 'For you' : 'Featured'}
</PillButton>
{user && (
<PillButton
key={'your-bets'}
selected={pillFilter === 'your-bets'}
onSelect={selectPill('your-bets')}
>
Your bets
</PillButton>
)}
{pillGroups.map(({ name, slug }) => {
return (
<PillButton
key={slug}
selected={pillFilter === slug}
onSelect={selectPill(slug)}
>
{name}
</PillButton>
)
})}
</Row>
)}
<Spacer h={3} />
{filter === 'personal' &&
(follows ?? []).length === 0 &&
memberGroupSlugs.length === 0 ? (
<>You're not following anyone, nor in any of your own groups yet.</>
) : (
<SubmissionsGrid <SubmissionsGrid
contracts={contracts} contracts={contracts}
loadMore={loadMore} loadMore={loadMore}
@ -355,8 +306,8 @@ export function SubmissionSearch(props: {
overrideGridClassName={overrideGridClassName} overrideGridClassName={overrideGridClassName}
highlightOptions={highlightOptions} highlightOptions={highlightOptions}
cardHideOptions={cardHideOptions} cardHideOptions={cardHideOptions}
contestSlug={contestSlug}
/> />
)}
</Col> </Col>
) )
} }

View File

@ -2,7 +2,11 @@ import clsx from 'clsx'
import Link from 'next/link' import Link from 'next/link'
import { Row } from '../layout/row' import { Row } from '../layout/row'
import { formatLargeNumber, formatPercent } from 'common/util/format' 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 { Col } from '../layout/col'
import { import {
BinaryContract, BinaryContract,
@ -36,6 +40,15 @@ import { track } from '@amplitude/analytics-browser'
import { trackCallback } from 'web/lib/service/analytics' import { trackCallback } from 'web/lib/service/analytics'
import { formatNumericProbability } from 'common/pseudo-numeric' import { formatNumericProbability } from 'common/pseudo-numeric'
import { Title } from '../title' 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: { export function SubmissionCard(props: {
contract: Contract contract: Contract
@ -45,6 +58,7 @@ export function SubmissionCard(props: {
onClick?: () => void onClick?: () => void
hideQuickBet?: boolean hideQuickBet?: boolean
hideGroupLink?: boolean hideGroupLink?: boolean
contestSlug: string
}) { }) {
const { const {
showHotVolume, showHotVolume,
@ -53,6 +67,7 @@ export function SubmissionCard(props: {
onClick, onClick,
hideQuickBet, hideQuickBet,
hideGroupLink, hideGroupLink,
contestSlug,
} = props } = props
const contract = useContractWithPreload(props.contract) ?? props.contract const contract = useContractWithPreload(props.contract) ?? props.contract
const { question, outcomeType } = contract const { question, outcomeType } = contract
@ -69,16 +84,18 @@ export function SubmissionCard(props: {
(outcomeType === 'BINARY' || outcomeType === 'PSEUDO_NUMERIC') && (outcomeType === 'BINARY' || outcomeType === 'PSEUDO_NUMERIC') &&
!hideQuickBet !hideQuickBet
const submissionData = getSubmissionData(contract.slug)
console.log(submissionData)
return ( return (
<div> <Col className="rounded-lg shadow-md hover:shadow-xl">
<Col {/* <Col
className={clsx( className={clsx(
'relative gap-3 rounded-lg bg-white py-4 pl-6 pr-5 shadow-md hover:cursor-pointer hover:bg-gray-100', 'relative gap-3 py-4 pl-6 pr-5 shadow-md hover:cursor-pointer',
className className
)} )}
> > */}
<Row> <Col className="relative flex-1 gap-3 bg-white py-4 pl-6 pr-5">
<Col className="relative flex-1 gap-3 pr-1">
<div <div
className={clsx( className={clsx(
'peer absolute -left-6 -top-4 -bottom-4 right-0 z-10' 'peer absolute -left-6 -top-4 -bottom-4 right-0 z-10'
@ -87,97 +104,50 @@ export function SubmissionCard(props: {
{onClick ? ( {onClick ? (
<a <a
className="absolute top-0 left-0 right-0 bottom-0" className="absolute top-0 left-0 right-0 bottom-0"
href={contractPath(contract)} href={submissionPath(contract, contestSlug)}
onClick={(e) => { onClick={(e) => {
// Let the browser handle the link click (opens in new tab). // Let the browser handle the link click (opens in new tab).
if (e.ctrlKey || e.metaKey) return if (e.ctrlKey || e.metaKey) return
e.preventDefault() e.preventDefault()
track('click market card', { track('click market card', {
slug: contract.slug, contestSlug: contestSlug,
contractId: contract.id, submissionSlug: contract.slug,
}) })
onClick() onClick()
}} }}
/> />
) : ( ) : (
<Link href={contractPath(contract)}> <Link href={submissionPath(contract, contestSlug)}>
<a <a
onClick={trackCallback('click market card', { onClick={trackCallback('click market card', {
slug: contract.slug, contestSlug: contestSlug,
contractId: contract.id, submissionSlug: contract.slug,
})} })}
className="absolute top-0 left-0 right-0 bottom-0" className="absolute top-0 left-0 right-0 bottom-0"
/> />
</Link> </Link>
)} )}
</div> </div>
{/* <AvatarDetails contract={contract} /> */}
<p <p
className="break-words font-semibold text-indigo-700 peer-hover:underline peer-hover:decoration-indigo-400 peer-hover:decoration-2" className="break-words font-semibold text-indigo-700 peer-hover:underline peer-hover:decoration-indigo-400 peer-hover:decoration-2"
style={{ /* For iOS safari */ wordBreak: 'break-word' }} style={{ /* For iOS safari */ wordBreak: 'break-word' }}
> >
{question} {question}
</p> </p>
<Row className="text-greyscale-5 text-sm">
{(outcomeType === 'FREE_RESPONSE' || {submissionData?.filter((entry) => entry.title === contract.question)}
outcomeType === 'MULTIPLE_CHOICE') &&
(resolution ? (
<FreeResponseOutcomeLabel
contract={contract}
resolution={resolution}
truncate={'long'}
/>
) : (
<FreeResponseTopAnswer contract={contract} truncate="long" />
))}
<MiscDetails
contract={contract}
showHotVolume={showHotVolume}
showTime={showTime}
hideGroupLink={hideGroupLink}
/>
</Col>
{showQuickBet ? (
<QuickBet contract={contract} user={user} />
) : (
<Col className="m-auto pl-2">
{outcomeType === 'BINARY' && (
<BinaryResolutionOrChance
className="items-center"
contract={contract}
/>
)}
{outcomeType === 'PSEUDO_NUMERIC' && (
<PseudoNumericResolutionOrExpectation
className="items-center"
contract={contract}
/>
)}
{outcomeType === 'NUMERIC' && (
<NumericResolutionOrExpectation
className="items-center"
contract={contract}
/>
)}
{(outcomeType === 'FREE_RESPONSE' ||
outcomeType === 'MULTIPLE_CHOICE') && (
<FreeResponseResolutionOrChance
className="self-end text-gray-600"
contract={contract}
truncate="long"
/>
)}
<ProbBar contract={contract} />
</Col>
)}
</Row> </Row>
</Col> </Col>
<Row className="bg-greyscale-1 text-greyscale-5 rounded-b-lg py-4 pl-6 pr-5 text-xs">
<Col>
chance of winning a prize
<div className="text-greyscale-7 text-lg font-semibold">
{getBinaryProbPercent(contract)}
</div> </div>
</Col>
</Row>
</Col>
) )
} }
@ -252,14 +222,6 @@ export function FreeResponseResolutionOrChance(props: {
<div className={clsx('text-base text-gray-500 sm:hidden')}> <div className={clsx('text-base text-gray-500 sm:hidden')}>
Resolved Resolved
</div> </div>
{(resolution === 'CANCEL' || resolution === 'MKT') && (
<FreeResponseOutcomeLabel
contract={contract}
resolution={resolution}
truncate={truncate}
answerClassName="text-3xl uppercase text-blue-500"
/>
)}
</> </>
) : ( ) : (
topAnswer && ( topAnswer && (

View File

@ -28,6 +28,7 @@ export function SubmissionsGrid(props: {
hideGroupLink?: boolean hideGroupLink?: boolean
} }
highlightOptions?: ContractHighlightOptions highlightOptions?: ContractHighlightOptions
contestSlug: string
}) { }) {
const { const {
contracts, contracts,
@ -38,7 +39,9 @@ export function SubmissionsGrid(props: {
overrideGridClassName, overrideGridClassName,
cardHideOptions, cardHideOptions,
highlightOptions, highlightOptions,
contestSlug,
} = props } = props
const { hideQuickBet, hideGroupLink } = cardHideOptions || {} const { hideQuickBet, hideGroupLink } = cardHideOptions || {}
const { contractIds, highlightClassName } = highlightOptions || {} const { contractIds, highlightClassName } = highlightOptions || {}
@ -86,6 +89,7 @@ export function SubmissionsGrid(props: {
? highlightClassName ? highlightClassName
: undefined : undefined
} }
contestSlug={contestSlug}
/> />
))} ))}
</ul> </ul>
@ -93,20 +97,3 @@ export function SubmissionsGrid(props: {
</Col> </Col>
) )
} }
export function CreatorContractsList(props: { creator: User }) {
const { creator } = props
return (
<SubmissionSearch
querySortOptions={{
defaultSort: 'newest',
defaultFilter: 'all',
shouldLoadFromStorage: false,
}}
additionalFilter={{
creatorId: creator.id,
}}
/>
)
}

View File

@ -31,6 +31,10 @@ export const contracts = coll<Contract>('contracts')
export type { Contract } export type { Contract }
export function submissionPath(submission: Contract, contestSlug: string) {
return `/contest/${contestSlug}/${submission.slug}`
}
export function contractPath(contract: Contract) { export function contractPath(contract: Contract) {
return `/${contract.creatorUsername}/${contract.slug}` return `/${contract.creatorUsername}/${contract.slug}`
} }

View File

@ -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',
}
]

View File

@ -217,15 +217,6 @@ export function ContractPageContent(
/> />
)} )}
{(outcomeType === 'FREE_RESPONSE' ||
outcomeType === 'MULTIPLE_CHOICE') && (
<>
<Spacer h={4} />
<AnswersPanel contract={contract} />
<Spacer h={4} />
</>
)}
{isNumeric && allowTrade && ( {isNumeric && allowTrade && (
<NumericBetPanel className="xl:hidden" contract={contract} /> <NumericBetPanel className="xl:hidden" contract={contract} />
)} )}

View File

@ -207,14 +207,14 @@ export default function ContestPage(props: {
</Col> </Col>
) )
const questionsTab = ( const submissionsTab = (
<SubmissionSearch <SubmissionSearch
querySortOptions={{ querySortOptions={{
shouldLoadFromStorage: true, shouldLoadFromStorage: true,
defaultSort: getSavedSort() ?? 'newest', defaultSort: getSavedSort() ?? 'newest',
defaultFilter: 'open', defaultFilter: 'open',
}} }}
additionalFilter={{ groupSlug: contest.slug }} additionalFilter={{ contestSlug: contest.slug }}
/> />
) )
@ -230,7 +230,7 @@ export default function ContestPage(props: {
]), ]),
{ {
title: 'Submissions', title: 'Submissions',
content: questionsTab, content: submissionsTab,
href: contestPath(contest.slug, 'submissions'), href: contestPath(contest.slug, 'submissions'),
}, },
{ {

View File

@ -19,7 +19,7 @@ import { JoinOrLeaveGroupButton } from 'web/components/groups/groups-button'
import { UserLink } from 'web/components/user-page' import { UserLink } from 'web/components/user-page'
import { searchInAny } from 'common/util/parse' import { searchInAny } from 'common/util/parse'
import { SEO } from 'web/components/SEO' 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' import { contestPath } from 'web/lib/firebase/contests'
export async function getStaticProps() { export async function getStaticProps() {

197
yarn.lock
View File

@ -3156,6 +3156,13 @@
dependencies: dependencies:
"@types/node" "*" "@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": "@types/connect-history-api-fallback@^1.3.5":
version "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" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
@ -3450,6 +3457,13 @@
dependencies: dependencies:
"@types/node" "*" "@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": "@typescript-eslint/eslint-plugin@5.25.0":
version "5.25.0" version "5.25.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz#e8ce050990e4d36cc200f2de71ca0d3eb5e77a31" 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" resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70"
integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==
base64-js@^1.3.0: base64-js@^1.3.0, base64-js@^1.3.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 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" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 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: bluebird@^3.7.1:
version "3.7.2" version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 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" node-releases "^2.0.3"
picocolors "^1.0.0" 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: buffer-equal-constant-time@1.0.1:
version "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" 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" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 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: bytes@3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" 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" domhandler "^5.0.3"
domutils "^3.0.1" 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: cheerio@^0.22.0:
version "0.22.0" version "0.22.0"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" 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: optionalDependencies:
fsevents "~2.3.2" 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: chrome-trace-event@^1.0.2:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 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: dependencies:
cross-spawn "^7.0.1" cross-spawn "^7.0.1"
cross-fetch@^3.1.5: cross-fetch@3.1.5, cross-fetch@^3.1.5:
version "3.1.5" version "3.1.5"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
@ -5158,7 +5212,7 @@ debug@3.1.0:
dependencies: dependencies:
ms "2.0.0" 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" version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@ -5314,6 +5368,11 @@ detective@^5.2.1:
defined "^1.0.0" defined "^1.0.0"
minimist "^1.2.6" 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: dicer@^0.3.0:
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.1.tgz#abf28921e3475bc5e801e74e0159fd94f927ba97" 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" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 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: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3" version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 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" setimmediate "^1.0.5"
ua-parser-js "^0.7.30" 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: feed@^4.2.2:
version "4.2.2" version "4.2.2"
resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" 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" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 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: fs-extra@^10.0.1:
version "10.1.0" version "10.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 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" follow-redirects "^1.0.0"
requires-port "^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: https-proxy-agent@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" 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" agent-base "^4.3.0"
debug "^3.1.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: human-signals@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 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" resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== 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: ignore-by-default@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 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" once "^1.3.0"
wrappy "1" 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" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 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" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 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: mkdirp@0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" 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" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 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: performance-now@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 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" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 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" version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 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" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 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: promise-polyfill@8.1.3:
version "8.1.3" version "8.1.3"
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" 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" proxy-from-env "^1.0.0"
socks-proxy-agent "^4.0.1" 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" version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
@ -9674,6 +9776,24 @@ pupa@^2.1.1:
dependencies: dependencies:
escape-goat "^2.0.0" 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: pure-color@^1.2.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" 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" string_decoder "~1.1.1"
util-deprecate "~1.0.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" version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 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" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 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: teeny-request@^7.1.3:
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.2.0.tgz#41347ece068f08d741e7b86df38a4498208b2633" 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" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 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: thunkify@^2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" 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" has-symbols "^1.0.3"
which-boxed-primitive "^1.0.2" 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: undefsafe@^2.0.5:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 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" signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5" 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: ws@>=7.4.6:
version "8.6.0" version "8.6.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23"
@ -12066,6 +12225,14 @@ yargs@^16.2.0:
y18n "^5.0.5" y18n "^5.0.5"
yargs-parser "^20.2.2" 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: yn@3.1.1:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"