Merge branch 'main' into patch-11

This commit is contained in:
Arav Narula 2023-08-30 16:01:34 -04:00 committed by GitHub
commit 220c63f4e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 252 additions and 361 deletions

View file

@ -2,10 +2,33 @@ import { useEffect, useRef, useState } from 'react'
import { Box, Flex, Input, Text } from 'theme-ui'
import FlexCol from '../../flex-col'
import AutofillColourFix from './autofill-colour-fix'
import { geocode } from '../../../lib/bank/apply/address-validation'
import { geocode, search } from '../../../lib/bank/apply/address-validation'
import Icon from '../../icon'
const approvedCountries = ['US', 'CA', 'MX']
const approvedCountries = [
"AT",
"FI",
"FR",
"DE",
"GR",
"ES",
"IT",
"SE",
"TR",
"GB",
"NO",
"UA",
"BR",
"CO",
"US",
"CA",
"MX",
"JP",
"PH",
"MY",
"SG",
];
export default function AutoComplete({ name, isPersonalAddressInput }) {
const input = useRef()
@ -13,25 +36,10 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
const [predictions, setPredictions] = useState(null)
const [countryCode, setCountryCode] = useState(null)
const performGeocode = async address => {
if (isPersonalAddressInput) return
geocode(address)
.then(res => {
const country = res?.results[0]?.country
const countryCode = res?.results[0]?.countryCode
setCountryCode(countryCode)
sessionStorage.setItem('bank-signup-eventCountry', country)
sessionStorage.setItem('bank-signup-eventCountryCode', countryCode)
})
.catch(err => console.error(err))
}
const optionClicked = async prediction => {
input.current.value = prediction.description
performGeocode(prediction.description)
setPredictions(null)
input.current.value = prediction.name
await onInput(prediction.name)
setPredictions(null)
}
const clickOutside = e => {
if (input.current && !input.current.contains(e.target)) {
@ -39,41 +47,42 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
}
}
const onInput = async value => {
setPredictions(value ? (await search(value)).results : null);
if (isPersonalAddressInput) return
geocode(value)
.then(res => {
const country = res?.results[0]?.country
const countryCode = res?.results[0]?.countryCode
setCountryCode(countryCode)
sessionStorage.setItem('bank-signup-eventCountry', country)
sessionStorage.setItem('bank-signup-eventCountryCode', countryCode)
})
.catch(err => console.error(err));
}
const onInputWrapper = async e => {
if (e.target.value) await onInput(e.target.value)
}
//TODO: Close suggestions view when focus is lost via tabbing.
//TODO: Navigate suggestions with arrow keys.
useEffect(() => {
const inputEl = input.current
if (!window.google || !inputEl) return
const service = new window.google.maps.places.AutocompleteService()
const onInput = async e => {
if (!e.target.value) {
setPredictions(null)
} else {
service.getPlacePredictions(
{ input: e.target.value },
(predictions, status) => {
setPredictions(predictions)
if (status !== window.google.maps.places.PlacesServiceStatus.OK) {
//DEBUG
setPredictions([])
}
}
)
}
}
if (!inputEl) return
document.addEventListener('click', clickOutside)
inputEl.addEventListener('input', onInput)
inputEl.addEventListener('focus', onInput)
inputEl.addEventListener('input', onInputWrapper)
inputEl.addEventListener('focus', onInputWrapper)
return () => {
document.removeEventListener('click', clickOutside)
inputEl.removeEventListener('input', onInput)
inputEl.removeEventListener('focus', onInput)
inputEl.removeEventListener('input', onInputWrapper)
inputEl.removeEventListener('focus', onInputWrapper)
}
}, [])
@ -87,7 +96,6 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
placeholder="Shelburne, VT"
autoComplete="off"
sx={{ ...AutofillColourFix }}
onInput={async e => performGeocode(e.target.value)}
/>
<Box>
{/* {String(countryCode)} */}
@ -107,7 +115,7 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
}}
>
Currently, we only have first-class support for organizations in
the United States, Canada, and Mexico.
select countries.
<br />
If you're somewhere else, you can still use bank!
<br />
@ -117,7 +125,7 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
)}
</Box>
</FlexCol>
{predictions && (
{predictions && predictions.length > 0 && (
<Box
sx={{
background: '#47454f',
@ -147,9 +155,9 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
fontSize: 'inherit',
textAlign: 'inherit'
}}
key={prediction.id}
key={idx}
>
{prediction.description}
{prediction.name}
</Text>
{idx < predictions.length - 1 && (

View file

@ -24,6 +24,6 @@ const formContainer = forwardRef(({ children }, ref) => {
)
})
//stackoverflow.com/a/67993106/10652680
https: formContainer.displayName = 'formContainer'
// https://stackoverflow.com/a/67993106/10652680
formContainer.displayName = 'formContainer'
export default formContainer

View file

@ -161,6 +161,19 @@ export default function PersonalInfoForm({
</div>
) : null}
</Field>
<Field
name="accommodations"
label="Accessability needs"
description="Please specify any accommodations or accessability needs you have so we can support you during onboarding and while using Hack Club Bank"
requiredFields={requiredFields}
>
<Input
name="accommodations"
id="accommodations"
placeholder="I need a screen reader"
sx={{ ...AutofillColourFix }}
/>
</Field>
</>
)
}

View file

@ -31,7 +31,7 @@ async function getOrRefreshToken() {
//TODO: Limit the number of retries
export async function search(query) {
if (!query.trim()) return
if (!query || !query.trim()) return
const token = await getOrRefreshToken()
@ -57,7 +57,7 @@ export async function search(query) {
}
export async function geocode(query) {
if (!query.trim()) return
if (!query || !query.trim()) return
const token = await getOrRefreshToken()

View file

@ -21,7 +21,7 @@
"@hackclub/theme": "^0.3.3",
"@mdx-js/loader": "^1.6.22",
"@next/mdx": "^13.4.10",
"@octokit/auth-app": "^4.0.9",
"@octokit/auth-app": "^6.0.0",
"@octokit/core": "^5.0.0",
"@octokit/rest": "^20.0.1",
"add": "^2.0.6",
@ -31,7 +31,7 @@
"axios": "^1.4.0",
"cookies-next": "^2.1.2",
"country-list-js": "^3.1.7",
"cursor-effects": "^1.0.11",
"cursor-effects": "^1.0.12",
"devtools-detect": "^4.0.1",
"form-data": "^4.0.0",
"fuzzysort": "^2.0.4",
@ -43,7 +43,7 @@
"next": "^12.3.1",
"next-transpile-modules": "^10.0.1",
"react": "^17.0.2",
"react-before-after-slider-component": "^1.1.6",
"react-before-after-slider-component": "^1.1.8",
"react-dom": "^17.0.2",
"react-konami-code": "^2.3.0",
"react-marquee-slider": "^1.1.5",
@ -57,14 +57,14 @@
"react-tooltip": "^4.5.1",
"react-tsparticles": "^2.12.1",
"react-use-websocket": "^4.3.1",
"react-wrap-balancer": "^1.0.0",
"react-wrap-balancer": "^1.1.0",
"recharts": "2.1.12",
"styled-components": "^6.0.7",
"swr": "^2.2.1",
"theme-ui": "^0.14",
"tinytime": "^0.2.6",
"turndown": "^7.1.2",
"vanilla-tilt": "^1.8.0",
"vanilla-tilt": "^1.8.1",
"yarn": "^1.22.19"
},
"devDependencies": {

View file

@ -50,7 +50,8 @@ export default async function handler(req, res) {
data.transparent === 'true' ? 'Yes, please!' : 'No, thanks.',
'HCB account URL': `https://bank.hackclub.com/${r.slug}`,
'Contact Option': data.contactOption,
'Slack Username': data.slackUsername
'Slack Username': data.slackUsername,
'Accommodations': data.accommodations,
})
res.writeHead(302, { Location: '/bank/apply/success' }).end()
})

View file

@ -10,15 +10,16 @@ export async function Slack() {
formData.append('date_range', '30d')
let slackData = await fetch(
'https://hackclub.slack.com/api/team.stats.timeSeries',
"https://hackclub.slack.com/api/team.stats.timeSeries",
{
method: 'POST',
body: formData,
method: "POST",
body: `--orpheus\r\nContent-Disposition: form-data; name="token"\r\n\r\n${process.env.SLACK_API_TOKEN}\r\n--orpheus\r\nContent-Disposition: form-data; name="date_range"\r\n\r\n30d\r\n--orpheus\r\nContent-Disposition: form-data;`,
headers: {
Cookie: process.env.SLACK_API_COOKIE
}
"content-type": "multipart/form-data; boundary=orpheus",
cookie: process.env.SLACK_API_COOKIE,
},
}
).then(r => r.json())
).then((r) => r.json());
if (!slackData || !slackData.stats) {
console.warn(`No slack data: ${JSON.stringify(slackData)}`)

View file

@ -25,7 +25,7 @@ const valiadateAddress = async step => {
const result = await geocode(userAddress)
const addrComp = type => result.results[0].structuredAddress[type] ?? ''
const addrComp = type => result.results[0]?.structuredAddress[type] ?? ''
sessionStorage.setItem(
'bank-signup-addressLine1',
@ -39,11 +39,11 @@ const valiadateAddress = async step => {
sessionStorage.setItem('bank-signup-addressZip', addrComp('postCode'))
sessionStorage.setItem(
'bank-signup-addressCountry',
result.results[0].country ?? ''
result.results[0]?.country ?? ''
)
sessionStorage.setItem(
'bank-signup-addressCountryCode',
result.results[0].countryCode ?? ''
result.results[0]?.countryCode ?? ''
)
}
}
@ -80,11 +80,6 @@ export default function Apply() {
return (
<>
<script
async
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyApxZZ8-Eh_6RgHUu8-BAOpx3xhfF2yK9U&libraries=places&mapInit=foo"
></script>
<Meta as={Head} title="Apply for Hack Club Bank" />
<ForceTheme theme="dark" />

View file

@ -152,9 +152,7 @@ const recapPixels = [
0xffffffff, 0xffffffff
]
const slackLink = `/slack/?reason=${encodeURIComponent(
'I joined for OnBoard!'
)}`
const slackLink = '/slack/?event=onboard'
const stickerButtonText = 'Click 4 Stickers'
const stickerButtonFont = 'Oleo Script'
@ -233,7 +231,7 @@ const ShipPage = () => {
spotlightRef.current.style.background = `radial-gradient(
circle at ${event.pageX}px ${event.pageY}px,
rgba(0, 0, 0, 0) 10px,
rgba(0, 0, 0, 0.85) 80px
rgba(0, 0, 0, 0.8) 80px
)`
}
window.addEventListener('mousemove', handler)
@ -397,7 +395,7 @@ const ShipPage = () => {
sx={{
bg: '#000000',
backgroundImage: `
linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.75)),
linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)),
url('https://cloud-dst3a9oz5-hack-club-bot.vercel.app/0image.png')
`,
color: '#ffffff',
@ -461,18 +459,32 @@ const ShipPage = () => {
</Balancer>
</Heading>
<Box sx={{ mt: 16 }}>
<Flex sx={{ mt: 16, gap: 10 }}>
<Button
variant="ctaLg"
as="a"
href="#apply"
href="https://hack.af/pcb-jam"
target="_blank"
sx={{
background: t => t.util.gx('#60cc38', '#113b11')
}}
>
How do I apply?
Learn PCB Design Now!
</Button>
</Box>
<Button
variant="outlineLg"
as="a"
href="https://github.com/hackclub/OnBoard/blob/main/README.md"
target="_blank"
sx={{
borderColor: '#113b11',
color: '#60cc38'
}}
>
Get a Grant
</Button>
</Flex>
</Flex>
<Box sx={{ flex: 1, maxWidth: 230 }}>
@ -496,7 +508,7 @@ const ShipPage = () => {
textAlign: 'center'
}}
>
<Balancer ratio={0.6}>
<Balancer ratio={0.8}>
Join 1,000 others to create your own circuit board.
</Balancer>
</Heading>
@ -531,12 +543,26 @@ const ShipPage = () => {
</Flex>
</Box>
<Flex as="section" sx={{ px: 4, pt: 6, pb: 4, bg: dimBg, color: '#ffffff', justifyContent: 'center' }}>
<Flex sx={{ flexDirection: 'column', gap: 4, width: '100%', maxWidth: 'copyPlus' }}>
<Heading as="h2" sx={{ fontSize: 42, fontWeight: 500, borderTop: '4px solid', borderTopColor: 'red', pt: 4 }}>
<Balancer ratio={0.3}>Never made a circuit board before? No problem.</Balancer>
</Heading>
<Text sx={{ fontSize: 3 }}>
Learn how to design your own circuit boards from scratch with our <strong>official tutorials</strong> and jams, like Maggies <Link href="https://hack.af/pcb-jam" target="_blank">intro to PCB design jam</Link>. Ask in the{' '}
<Link href={slackLink} target="_blank">Hack Club Slack</Link>{' '}
if you have any questions!
</Text>
</Flex>
</Flex>
<Flex
as="section"
sx={{
overflowX: 'hidden',
px: 4,
py: 5,
pb: 6,
bg: dimBg,
color: '#ffffff',
justifyContent: 'center'
@ -598,26 +624,25 @@ const ShipPage = () => {
}}
>
<a
href="https://github.com/maggie-j-liu/orpheus-keychain"
href="https://github.com/hackclub/OnBoard/tree/main/projects/E-Fidget%20Lite"
target="_blank"
>
<Flex as="article">
<Text as="p" sx={{ pr: 80 }}>
Make a <strong>keychain</strong> that has a{' '}
<strong>light up dino</strong> on it.
<Text as="p" sx={{ pr: 115 }}>
A <strong>fidget spinner</strong> without any moving parts.
</Text>
<Text as="p" sx={{ pr: 100, color: 'gray' }}>
See Maggie's designs&nbsp;
See Micha's work&nbsp;
<span className="arrow">&rarr;</span>
</Text>
<Image
src="https://cloud-ahzzebs4i-hack-club-bot.vercel.app/0frame_1.png"
alt="A circuit board of a dino wizard with a light up wand, the same image from the top of the page."
src="https://cloud-r2xrlpq9q-hack-club-bot.vercel.app/0spinner.png"
alt="A red circular circuit board with a graphic of white fidget spinner on it."
sx={{
maxWidth: 120,
position: 'absolute',
top: 10,
right: 15
top: 40,
right: 10
}}
/>
</Flex>
@ -629,8 +654,7 @@ const ShipPage = () => {
>
<Flex as="article">
<Text as="p" sx={{ pr: 100 }}>
Design a <strong>movement sensor</strong> add-on to an open
source <strong>game console</strong>.
A <strong>movement sensor</strong> add-on to an open source <strong>game console</strong>.
</Text>
<Text as="p" sx={{ pr: 140, color: 'gray' }}>
Read the source&nbsp;<span className="arrow">&rarr;</span>
@ -641,7 +665,7 @@ const ShipPage = () => {
sx={{
maxWidth: 280,
position: 'absolute',
bottom: -50,
bottom: -40,
right: -75
}}
/>
@ -654,7 +678,7 @@ const ShipPage = () => {
>
<Flex as="article">
<Text as="p" sx={{ pr: [100, 100, 100, 0] }}>
Make a <strong>USB-C hub</strong> for the best{' '}
Hugo's <strong>USB-C hub</strong> for the best{' '}
<strong>hackathon swag</strong> ever.
</Text>
<Text as="p" sx={{ color: 'gray', pr: 150 }}>
@ -676,22 +700,23 @@ const ShipPage = () => {
</Flex>
</a>
<a href="https://github.com/maggie-j-liu/macropad" target="_blank">
<a href="https://github.com/hackclub/OnBoard/tree/main/projects/Karmanyaah_Longhorn_LEDs" target="_blank">
<Flex as="article">
<Text as="p" sx={{ pr: 170 }}>
Come up with your own custom <strong>keyboard layout</strong>.
<Text as="p" sx={{ pr: 140 }}>
Karmanyaah's <strong>digital level</strong> in the shape of a longhorn.
</Text>
<Text as="p" sx={{ pr: 140, color: 'gray' }}>
Check it out&nbsp;<span className="arrow">&rarr;</span>
See the designs&nbsp;<span className="arrow">&rarr;</span>
</Text>
<Image
src="https://cloud-8yyfro2sg-hack-club-bot.vercel.app/0keyboard.png"
alt="A 3-key custom keyboard with colored glowing translucent keys."
src="https://cloud-myjum5y6g-hack-club-bot.vercel.app/0longhorn2.png"
alt="A longhorn-shaped PCB with glowing horns."
sx={{
position: 'absolute',
bottom: 0,
right: -20,
maxWidth: 230
top: 40,
right: -30,
maxWidth: 230,
transform: 'rotate(20deg)'
}}
/>
</Flex>
@ -699,42 +724,16 @@ const ShipPage = () => {
</Grid>
<Button
variant="outlineLg"
variant="lg"
as="a"
href="https://github.com/hackclub/OnBoard/blob/main/README.md"
href="https://hack.af/pcb-jam"
target="_blank"
>
Join the Party
Learn PCB Design Now!
</Button>
</Flex>
</Flex>
{/* <Flex as="section" sx={{ px: 4, pt: 4, pb: 5, bg: dimBg, color: '#ffffff', justifyContent: 'center' }}>
<Flex sx={{ flexDirection: 'column', gap: 4, width: '100%', maxWidth: 'copyPlus' }}>
<Heading as="h2" sx={{ fontSize: 42, fontWeight: 500 }}>
<Balancer ratio={0.3}>Never made a circuit board before? No problem.</Balancer>
</Heading>
<Text sx={{ fontSize: 3 }}>
Learn from tutorials like Maggies intro to PCB design video below. Ask in the{' '}
<Link href={slackLink} target="_blank">Hack Club Slack</Link>{' '}
if you have any questions!
</Text>
<iframe
style={{
width: '100%',
maxWidth: 600,
alignSelf: 'center',
aspectRatio: '16 / 9'
}}
src="https://www.youtube.com/embed/PnK4gzO6S3Q"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
/>
</Flex>
</Flex> */}
<Flex
as="section"
id="apply"
@ -905,8 +904,8 @@ const ShipPage = () => {
Collaborate, get help, and support others as you take the leap.
</Text>
<Box sx={{ mt: 1 }}>
<Button variant="lg" as="a" href={slackLink} target="_blank">
Join the Slack
<Button variant="outlineLg" as="a" href={slackLink} target="_blank">
Join Slack
</Button>
</Box>
</Flex>
@ -952,7 +951,7 @@ const ShipPage = () => {
<Grid
ref={lightsScrollTrigger}
gap="4px"
gap={["2px", "3px", "4px"]}
columns={recapWidth}
sx={{ width: '100%', maxWidth: 800 }}
>
@ -1000,7 +999,17 @@ const ShipPage = () => {
href="https://github.com/hackclub/OnBoard#requirements"
target="_blank"
>
Read the Rules
Get a Grant
</Button>
</Flex>
<Flex as="article" sx={{
transform: 'scale(1.1)'
}}>
<Text as="h3">Learn to PCB</Text>
<Text as="p">Read our Hacker Card tutorial to learn how to make a simple circuit board from start to end.</Text>
<Button as="a" href="https://hack.af/pcb-jam" target="_blank">
Start the Tutorial
</Button>
</Flex>
@ -1014,45 +1023,7 @@ const ShipPage = () => {
Join Slack
</Button>
</Flex>
<Flex as="article">
<Text as="h3">Free Stickers</Text>
<Text as="p">
Like stickers? Request below and we'll ship you an envelope full
of stickers for free.
</Text>
<Button
variant="outline"
as="a"
href="https://airtable.com/shrOOU2ZZFYtffUVz"
target="_blank"
>
Request Stickers
</Button>
</Flex>
{/* <Flex as="article">
<Text as="h3">Learn to PCB</Text>
<Text as="p">Watch Maggies intro video to learn how to make a simple circuit board from start to end.</Text>
<Button variant="outline" as="a" href="https://airtable.com/shrOOU2ZZFYtffUVz" target="_blank">
Watch Tutorial
</Button>
</Flex> */}
</Grid>
<Flex
sx={{
gap: 3,
alignItems: 'center',
textAlign: 'center',
mt: '-16px'
}}
>
<Text sx={{ fontSize: 3 }}>Get started now:</Text>
<Button variant="ctaLg" as="a" href={slackLink} target="_blank">
Join the Slack
</Button>
</Flex>
</Flex>
</Flex>
@ -1069,13 +1040,13 @@ const ShipPage = () => {
}}
/>
{/* <Flex
<Flex
as="a"
href="javascript:void(0)"
href="https://airtable.com/shrOOU2ZZFYtffUVz"
target="_blank"
sx={{
bg: '#ff0000',
color: '#ffffff',
color: 'rgba(255, 255, 255, 0.7)',
textDecoration: 'none',
size: 160,
flexDirection: 'column',
@ -1085,17 +1056,29 @@ const ShipPage = () => {
position: 'absolute',
top: -80,
right: '14vw',
fontSize: 3,
lineHeight: 1.3,
fontSize: '24px',
lineHeight: 1.2,
fontWeight: 'bold',
fontFamily: `'${stickerButtonFont}', cursive`,
transform: 'rotate(-25deg)',
borderRadius: '50%',
boxShadow: '0px 4px 44px rgba(0, 0, 0, 0.55), 0px 0px 10px rgba(0, 0, 0, 0.75), inset 0px 0px 60px rgba(255, 255, 255, 0.40)'
// Terrible buttons styles, doesn't even look good, but didn't want to waste more time:
backgroundImage: 'radial-gradient(75.96% 56.13% at 50.00% 50.00%, #FF6464 0%, #EF2222 32.29%, #B00 100%)',
boxShadow: '0px -14px 14px 0px #670000 inset, 14px 0px 14px 0px rgba(255, 255, 255, 0.25) inset, 0px 14px 14px 0px rgba(255, 255, 255, 0.25) inset, -14px 0px 14px 0px #670000 inset',
filter: 'drop-shadow(3px 3px 8px rgba(0, 0, 0, 0.50))',
textShadow: '0px 0px 2px rgba(255, 255, 255, 0.45)',
WebkitTapHighlightColor: 'transparent',
'transition': 'box-shadow 80ms linear, filter 80ms linear, font-size 80ms linear',
':active': {
backgroundImage: 'radial-gradient(75.96% 56.13% at 50.00% 50.00%, #FF4747 0%, #E52121 32.29%, #B00 100%, #A30101 100%)',
boxShadow: '0px -14px 14px 0px #440303 inset, 14px 0px 14px 0px #860000 inset, 0px 14px 14px 0px #860000 inset, -14px 0px 14px 0px #440303 inset',
filter: 'drop-shadow(0px 0px 8px rgba(0, 0, 0, 0.50))',
fontSize: '22px'
}
}}
>
{stickerButtonText.split(' ').map((line, i) => <div key={i}>{line}</div>)}
</Flex> */}
</Flex>
</Box>
<Footer dark />

244
yarn.lock
View file

@ -1790,54 +1790,53 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@octokit/auth-app@^4.0.9":
version "4.0.9"
resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.9.tgz"
integrity sha512-VFpKIXhHO+kVJtane5cEvdYPtjDKCOI0uKsRrsZfJP+uEu7rcPbQCLCcRKgyT+mUIzGr1IIOmwP/lFqSip1dXA==
"@octokit/auth-app@^6.0.0":
version "6.0.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-6.0.0.tgz#f7d31d40f78973cb801c0661db2cc3719de7328b"
integrity sha512-OKct7Rukf3g9DjpzcpdacQsdmd6oPrJ7fZND22JkjzhDvfhttUOnmh+qPS4kHhaNNyTxqSThnfrUWvkqNLd1nw==
dependencies:
"@octokit/auth-oauth-app" "^5.0.0"
"@octokit/auth-oauth-user" "^2.0.0"
"@octokit/request" "^6.0.0"
"@octokit/request-error" "^3.0.0"
"@octokit/types" "^9.0.0"
"@types/lru-cache" "^5.1.0"
"@octokit/auth-oauth-app" "^7.0.0"
"@octokit/auth-oauth-user" "^4.0.0"
"@octokit/request" "^8.0.2"
"@octokit/request-error" "^5.0.0"
"@octokit/types" "^11.0.0"
deprecation "^2.3.1"
lru-cache "^6.0.0"
lru-cache "^10.0.0"
universal-github-app-jwt "^1.1.1"
universal-user-agent "^6.0.0"
"@octokit/auth-oauth-app@^5.0.0":
version "5.0.1"
resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.1.tgz"
integrity sha512-SGQKQGWe60kucMLCzbwc4MIohB78YawbYgGegosapDg2GxwuEVCujJccArzgn3wO+pB4aflUjFWPjkECVR2fEQ==
"@octokit/auth-oauth-app@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-7.0.0.tgz#864f58152b060132098356265eb4fb07ca1fae76"
integrity sha512-8JvJEXGoEqrbzLwt3SwIUvkDd+1wrM8up0KawvDIElB8rbxPbvWppGO0SLKAWSJ0q8ILcVq+mWck6pDcZ3a9KA==
dependencies:
"@octokit/auth-oauth-device" "^4.0.0"
"@octokit/auth-oauth-user" "^2.0.0"
"@octokit/request" "^5.6.3"
"@octokit/types" "^6.0.3"
"@octokit/auth-oauth-device" "^6.0.0"
"@octokit/auth-oauth-user" "^4.0.0"
"@octokit/request" "^8.0.2"
"@octokit/types" "^11.0.0"
"@types/btoa-lite" "^1.0.0"
btoa-lite "^1.0.0"
universal-user-agent "^6.0.0"
"@octokit/auth-oauth-device@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.0.tgz"
integrity sha512-2bXBuF5DOnYD19wDafZNrnrNvLg7xNvDNAf3ELHlO/7/7x3BBhKna4dCvpJ4pfI6OYMja08Tt0D4XJ4sxK+YBA==
"@octokit/auth-oauth-device@^6.0.0":
version "6.0.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-device/-/auth-oauth-device-6.0.0.tgz#728143108345e07e06fd5bfec8891e838c3dce96"
integrity sha512-Zgf/LKhwWk54rJaTGYVYtbKgUty+ouil6VQeRd+pCw7Gd0ECoSWaZuHK6uDGC/HtnWHjpSWFhzxPauDoHcNRtg==
dependencies:
"@octokit/oauth-methods" "^2.0.0"
"@octokit/request" "^6.0.0"
"@octokit/types" "^6.10.0"
"@octokit/oauth-methods" "^4.0.0"
"@octokit/request" "^8.0.0"
"@octokit/types" "^11.0.0"
universal-user-agent "^6.0.0"
"@octokit/auth-oauth-user@^2.0.0":
version "2.0.2"
resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.0.2.tgz"
integrity sha512-fr9+jPjkWG7cvpyUVnpJJH5F+wNCswRy9rTTwHUAXdy6z/kZj9uenPmUYdE6mja3wSTJUAt2yRqkfaaltzQlFA==
"@octokit/auth-oauth-user@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-user/-/auth-oauth-user-4.0.0.tgz#2499f25cf64ce2911ba3f2f12de176bfbc1a3805"
integrity sha512-VOm5aIkVGHaOhIvsF/4YmSjoYDzzrKbbYkdSEO0KqHK7I8SlO3ZndSikQ1fBlNPUEH0ve2BOTxLrVvI1qBf9/Q==
dependencies:
"@octokit/auth-oauth-device" "^4.0.0"
"@octokit/oauth-methods" "^2.0.0"
"@octokit/request" "^6.0.0"
"@octokit/types" "^6.12.2"
"@octokit/auth-oauth-device" "^6.0.0"
"@octokit/oauth-methods" "^4.0.0"
"@octokit/request" "^8.0.2"
"@octokit/types" "^11.0.0"
btoa-lite "^1.0.0"
universal-user-agent "^6.0.0"
@ -1859,24 +1858,6 @@
before-after-hook "^2.2.0"
universal-user-agent "^6.0.0"
"@octokit/endpoint@^6.0.1":
version "6.0.12"
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz"
integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==
dependencies:
"@octokit/types" "^6.0.3"
is-plain-object "^5.0.0"
universal-user-agent "^6.0.0"
"@octokit/endpoint@^7.0.0":
version "7.0.0"
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz"
integrity sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==
dependencies:
"@octokit/types" "^6.0.3"
is-plain-object "^5.0.0"
universal-user-agent "^6.0.0"
"@octokit/endpoint@^9.0.0":
version "9.0.0"
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz"
@ -1895,32 +1876,22 @@
"@octokit/types" "^11.0.0"
universal-user-agent "^6.0.0"
"@octokit/oauth-authorization-url@^5.0.0":
version "5.0.0"
resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz"
integrity sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==
"@octokit/oauth-authorization-url@^6.0.2":
version "6.0.2"
resolved "https://registry.yarnpkg.com/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz#cc82ca29cc5e339c9921672f39f2b3f5c8eb6ef2"
integrity sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==
"@octokit/oauth-methods@^2.0.0":
version "2.0.2"
resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.2.tgz"
integrity sha512-AHF5bWGhgnZwH8fn4sgPLyVouRqMOafMSM2zX1de+aLZGZaS9rANK9RXH2d5fGvXjGEw3XR+ruNPZ0gwhM4QwA==
"@octokit/oauth-methods@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-4.0.0.tgz#6e0c190e8ee95afe770a4a9a4321eb159a58c794"
integrity sha512-dqy7BZLfLbi3/8X8xPKUKZclMEK9vN3fK5WF3ortRvtplQTszFvdAGbTo71gGLO+4ZxspNiLjnqdd64Chklf7w==
dependencies:
"@octokit/oauth-authorization-url" "^5.0.0"
"@octokit/request" "^6.0.0"
"@octokit/request-error" "^3.0.0"
"@octokit/types" "^6.12.2"
"@octokit/oauth-authorization-url" "^6.0.2"
"@octokit/request" "^8.0.2"
"@octokit/request-error" "^5.0.0"
"@octokit/types" "^11.0.0"
btoa-lite "^1.0.0"
"@octokit/openapi-types@^12.10.0":
version "12.10.1"
resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.10.1.tgz"
integrity sha512-P+SukKanjFY0ZhsK6wSVnQmxTP2eVPPE8OPSNuxaMYtgVzwJZgfGdwlYjf4RlRU4vLEw4ts2fsE2icG4nZ5ddQ==
"@octokit/openapi-types@^16.0.0":
version "16.0.0"
resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz"
integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==
"@octokit/openapi-types@^18.0.0":
version "18.0.0"
resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz"
@ -1945,24 +1916,6 @@
dependencies:
"@octokit/types" "^11.0.0"
"@octokit/request-error@^2.1.0":
version "2.1.0"
resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz"
integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
dependencies:
"@octokit/types" "^6.0.3"
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request-error@^3.0.0":
version "3.0.0"
resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz"
integrity sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==
dependencies:
"@octokit/types" "^6.0.3"
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request-error@^5.0.0":
version "5.0.0"
resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz"
@ -1972,31 +1925,7 @@
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request@^5.6.3":
version "5.6.3"
resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz"
integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==
dependencies:
"@octokit/endpoint" "^6.0.1"
"@octokit/request-error" "^2.1.0"
"@octokit/types" "^6.16.1"
is-plain-object "^5.0.0"
node-fetch "^2.6.7"
universal-user-agent "^6.0.0"
"@octokit/request@^6.0.0":
version "6.2.0"
resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz"
integrity sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==
dependencies:
"@octokit/endpoint" "^7.0.0"
"@octokit/request-error" "^3.0.0"
"@octokit/types" "^6.16.1"
is-plain-object "^5.0.0"
node-fetch "^2.6.7"
universal-user-agent "^6.0.0"
"@octokit/request@^8.0.1", "@octokit/request@^8.0.2":
"@octokit/request@^8.0.0", "@octokit/request@^8.0.1", "@octokit/request@^8.0.2":
version "8.1.1"
resolved "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz"
integrity sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==
@ -2024,20 +1953,6 @@
dependencies:
"@octokit/openapi-types" "^18.0.0"
"@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.16.1":
version "6.40.0"
resolved "https://registry.npmjs.org/@octokit/types/-/types-6.40.0.tgz"
integrity sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw==
dependencies:
"@octokit/openapi-types" "^12.10.0"
"@octokit/types@^9.0.0":
version "9.0.0"
resolved "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz"
integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==
dependencies:
"@octokit/openapi-types" "^16.0.0"
"@pkgr/utils@^2.3.1":
version "2.3.1"
resolved "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz"
@ -2251,11 +2166,6 @@
dependencies:
"@types/node" "*"
"@types/lru-cache@^5.1.0":
version "5.1.1"
resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz"
integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==
"@types/mdast@^3.0.0":
version "3.0.3"
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz"
@ -2969,10 +2879,10 @@ csstype@^3.1.2:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
cursor-effects@^1.0.11:
version "1.0.11"
resolved "https://registry.npmjs.org/cursor-effects/-/cursor-effects-1.0.11.tgz"
integrity sha512-P+nV/8Bfxk6RQvsg2uq7wW+WncJLBx8bmqT80QU1nlW15qSb5fpaCLfZ9nl2BZSRyz+u+sxKhAESPNoAkAfJmw==
cursor-effects@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/cursor-effects/-/cursor-effects-1.0.12.tgz#d5feb442403f9b91a034fd0d8ca47e19f1123a1a"
integrity sha512-HDaKd+GJjveac1g52krmFiJJg0HwnxCeKgktGaPpbv6/7z8/krYgmTpDZW9GZ01S5783R6cPhEHAgHWQEm211w==
d3-array@2, d3-array@^2.3.0:
version "2.12.1"
@ -4548,6 +4458,11 @@ loose-envify@^1.1.0, loose-envify@^1.4.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
lru-cache@^10.0.0:
version "10.0.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a"
integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@ -4730,13 +4645,6 @@ next@^12.3.1:
"@next/swc-win32-ia32-msvc" "12.3.1"
"@next/swc-win32-x64-msvc" "12.3.1"
node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
node-releases@^2.0.13:
version "2.0.13"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
@ -5100,10 +5008,10 @@ raw-body@2.3.2:
iconv-lite "0.4.19"
unpipe "1.0.0"
react-before-after-slider-component@^1.1.6:
version "1.1.6"
resolved "https://registry.npmjs.org/react-before-after-slider-component/-/react-before-after-slider-component-1.1.6.tgz"
integrity sha512-T6MgeomX17ibpxdDcS4GyncUb8IiZPQr9yTt9+ay1m4J5P8AGwgqOnR28Y3bMdcnjg8kIo8bvffLG5vuIWQIcw==
react-before-after-slider-component@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/react-before-after-slider-component/-/react-before-after-slider-component-1.1.8.tgz#3df14381703aaa43428cdac05f271b8b492d25ca"
integrity sha512-KcY231f68+7bF0Zkfat55jvgNSSCB5TkBtm1HhLeb336jtQ0hYKkdq6VwrleNrfeVdUD2v+E7DzgNJYc6dsY3Q==
react-dom@^17.0.2:
version "17.0.2"
@ -5229,10 +5137,10 @@ react-use-websocket@^4.3.1:
resolved "https://registry.npmjs.org/react-use-websocket/-/react-use-websocket-4.3.1.tgz"
integrity sha512-zHPLWrgcqydJaak2O5V9hiz4q2dwkwqNQqpgFVmSuPxLZdsZlnDs8DVHy3WtHH+A6ms/8aHIyX7+7ulOcrnR0Q==
react-wrap-balancer@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/react-wrap-balancer/-/react-wrap-balancer-1.0.0.tgz"
integrity sha512-yjDH+I8WGyDfh95gKhX/6ckfSBAltwQkxiYxtLPlyIRQNUVSjvz1uHR6Hpy+zHyOkJQw6GEC5RPglA41QXvzyw==
react-wrap-balancer@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/react-wrap-balancer/-/react-wrap-balancer-1.1.0.tgz#3d246573413b936b799f29a1549cd217b948234c"
integrity sha512-EhF3jOZm5Fjx+Cx41e423qOv2c2aOvXAtym2OHqrGeMUnwERIyNsRBgnfT3plB170JmuYvts8K2KSPEIerKr5A==
react@^17.0.2:
version "17.0.2"
@ -5864,11 +5772,6 @@ tough-cookie@~2.4.3:
psl "^1.1.24"
punycode "^1.4.1"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
trim-trailing-lines@^1.0.0:
version "1.1.4"
resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz"
@ -6116,10 +6019,10 @@ uuid@^7.0.3:
resolved "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz"
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
vanilla-tilt@^1.8.0:
version "1.8.0"
resolved "https://registry.npmjs.org/vanilla-tilt/-/vanilla-tilt-1.8.0.tgz"
integrity sha512-wVCHyyfRuiRdKhDTNxKPb60lkagmywDSqLgFETEr71Sm646AvGxuf/14Kx9A8FaISyYvMoKQHk6FTqt+YLGhEw==
vanilla-tilt@^1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/vanilla-tilt/-/vanilla-tilt-1.8.1.tgz#09cb4dc89509a55a44bb221917bb8ecdc2e39113"
integrity sha512-hPB1XUsnh+SIeVSW2beb5RnuFxz4ZNgxjGD78o52F49gS4xaoLeEMh9qrQnJrnEn/vjjBI7IlxrrXmz4tGV0Kw==
verror@1.10.0:
version "1.10.0"
@ -6158,19 +6061,6 @@ web-namespaces@^1.0.0:
resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz"
integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"