This commit is contained in:
Jorge Vargas 2025-03-31 17:40:03 -06:00
parent 9588799587
commit c33a621cbb
10 changed files with 575 additions and 13 deletions

View file

@ -20,14 +20,16 @@
"@types/react-dom": "^18.3.1",
"astro": "^5.3.0",
"astro-icon": "^1.1.1",
"better-auth": "^1.1.11",
"axios": "^1.8.1",
"better-auth": "^1.1.11",
"clsx": "^2.1.1",
"nodemailer": "^6.10.0",
"prisma": "^6.4.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-hot-toast": "^2.4.1",
"react-multi-select": "^0.1.0",
"react-multi-select-component": "^4.3.4",
"react-svg-spinners": "^0.3.1",
"sharp": "^0.33.5",
"slugify": "^1.6.6",

View file

@ -0,0 +1,91 @@
import clsx from 'clsx'
import { useEffect, useState } from 'react'
import { MultiSelect, type Option } from 'react-multi-select-component'
interface Props {
url: string
nameColumn: string
className?: string
valueColumn?: string
defaultSelected?: any[]
name: string
}
function toMapValue(data: any[], nameColumn: string, valueColumn: string) {
return data.map((item: { [nameColumn]: string; [valueColumn]: string }) => ({
label: item[nameColumn],
value: item[valueColumn]
}))
}
export default function AsyncMultiSelect(props: Props) {
const { url: defaultUrl, nameColumn, valueColumn = 'id', className, defaultSelected = [], name } = props
const [url, setUrl] = useState(defaultUrl)
const [loading, setLoading] = useState(false)
const [selected, setSelected] = useState<Option[]>(toMapValue(defaultSelected, nameColumn, valueColumn))
const [options, setOptions] = useState<Option[]>([])
useEffect(() => {
async function fetchData() {
try {
setLoading(true)
const res = await fetch(url)
if (!res.ok) return
const data = await res.json()
const dataOptions = toMapValue(data, nameColumn, valueColumn)
setOptions(dataOptions)
} catch (err) {
console.error(err)
setOptions([])
} finally {
setLoading(false)
}
}
fetchData()
}, [url])
function filterOptions(options: Option[], search: string) {
if (search.length === 0) setUrl(defaultUrl)
else setUrl(`${defaultUrl}?q=${search}`)
return options
}
function valueRenderer(selected: Option[], options: Option[]) {
return selected.map((s) => <span className='text-black'>{s.label}</span>)
}
const itemRenderer = ({
checked,
option,
onClick,
disabled
}: {
checked: boolean
option: Option
onClick: () => void
disabled: boolean
}) => (
<div className={`item-renderer ${disabled ? 'disabled' : ''}`}>
<input type='checkbox' onChange={onClick} checked={checked} tabIndex={-1} disabled={disabled} />
<span className='text-black'>{option.label}</span>
</div>
)
return (
<MultiSelect
labelledBy={name}
isLoading={loading}
options={options}
value={selected}
onChange={setSelected}
filterOptions={filterOptions}
className={clsx('rmsc [&>.search]:text-black', className)}
valueRenderer={valueRenderer}
ItemRenderer={itemRenderer}
/>
)
}

View file

@ -1,15 +1,67 @@
import type { ComponentProps, PropsWithChildren } from 'react'
import clsx from 'clsx'
export default function Input(props: PropsWithChildren<ComponentProps<'input'>>) {
const { name, className, children, ...attrs } = props
export function InputLabel(props: PropsWithChildren<{ dark: boolean; name: string }>) {
const { dark, name, children } = props
return (
<label htmlFor={name} className={clsx('font-medium', dark ? 'text-white' : 'text-black')}>
{children}:
</label>
)
}
interface CustomInputProps {
name: string
label: string
dark?: boolean
defaultValue?: string | number | null
}
export function Input(props: CustomInputProps & Omit<ComponentProps<'input'>, 'defaultValue'>) {
const { name, className, dark = false, defaultValue, label, ...attrs } = props
return (
<div className='flex flex-col'>
<label htmlFor={name} className='font-medium text-black'>
{children}:
</label>
<input {...attrs} name={name} className={clsx('bg-zinc-200 rounded-md p-2 mt-2 mb-3 text-black', className)} />
<InputLabel dark={dark} name={name}>
{label}
</InputLabel>
<input
{...attrs}
defaultValue={defaultValue ?? undefined}
name={name}
className={clsx('bg-zinc-200 rounded-md p-2 mt-2 mb-3 text-black', className)}
/>
</div>
)
}
export function InputArea(props: CustomInputProps & Omit<ComponentProps<'textarea'>, 'defaultValue'>) {
const { name, className, dark = false, defaultValue, label, ...attrs } = props
return (
<div className='flex flex-col'>
<InputLabel dark={dark} name={name}>
{label}
</InputLabel>
<textarea
{...attrs}
defaultValue={defaultValue ?? undefined}
name={name}
className={clsx('bg-zinc-200 rounded-md p-2 mt-2 mb-3 text-black', className)}
/>
</div>
)
}
export function InputSelect(props: CustomInputProps & ComponentProps<'select'>) {
const { name, className, dark = false, defaultValue, label, ...attrs } = props
return (
<div className='flex flex-col'>
<InputLabel dark={dark} name={name}>
{label}
</InputLabel>
<select name='status' className='bg-zinc-200 rounded-md p-2 mt-2 h-full mb-3 text-black' {...attrs} />
</div>
)
}

View file

@ -0,0 +1,92 @@
---
import { AlbumStatus } from '@prisma/client'
import AsyncMultiSelect from 'components/form/AsyncMultiSelect'
import { Input, InputArea, InputLabel, InputSelect } from 'components/form/Input'
import Base from 'layouts/base.astro'
import prismaClient from 'utils/prisma-client'
const { user, permissions } = Astro.locals
if (!user || !permissions.includes('UPDATE')) return Astro.redirect('/404')
const albumId = parseInt(Astro.params.id as string)
const album = await prismaClient.albums.findUnique({ where: { id: albumId } })
if (!album) {
return Astro.redirect('/404')
}
---
<!--
discs: { createMany: { data: body.discs } },
relatedAlbums: { create: body.related.map((id) => ({ relatedAlbum: { connect: { id } } })) } -->
<Base>
<div class='flex flex-col w-full'>
<div class='w-full min-h-100vh mx-auto max-w-[1140px]'>
<div class='mt-4 p-4 bg-dark rounded-md mx-2'>
<div class='grid grid-cols-4 gap-4'>
<Input dark defaultValue={album.title} name='title' label='Title' />
<Input dark defaultValue={album.subTitle} name='subTitle' label='Subtitle' />
<Input
dark
defaultValue={album.releaseDate?.toISOString().slice(0, 10)}
name='releaseDate'
type='date'
label='Release Date'
/>
<Input dark defaultValue={album.label} name='label' label='Label' />
<Input dark defaultValue={album.vgmdb} name='vgmdb' label='VGMDB' />
<Input dark defaultValue={album.description} name='description' label='Description' />
<InputSelect dark name='status' label='Status'>
<option value={AlbumStatus.HIDDEN} selected={album.status === AlbumStatus.HIDDEN}>Hidden</option>
<option value={AlbumStatus.SHOW} selected={album.status === AlbumStatus.SHOW}>Show</option>
</InputSelect>
<div class='flex flex-col'>
<InputLabel dark name='animations'>Animations</InputLabel>
<AsyncMultiSelect
client:only='react'
name='animations'
url='/api/anim/find'
nameColumn='title'
className='rounded-md py-2 h-full'
/>
</div>
<InputArea dark defaultValue={album.description} name='artists' label='Artists' />
<InputSelect dark name='categories' label='Categories'>
<option value='Game' selected={album.status === AlbumStatus.HIDDEN}>Game</option>
<option value='Animation' selected={album.status === AlbumStatus.SHOW}>Animation</option>
</InputSelect>
<InputSelect dark name='classifications' label='Classifications'>
<option value='Arrangement'>Arrangement</option>
<option value='Drama'>Drama</option>
<option value='GameRip'>GameRip</option>
<option value='Live Event'>Live Event</option>
<option value='Original Soundtrack'>Original Soundtrack</option>
<option value='Vocal'>Vocal</option>
</InputSelect>
<div class='flex flex-col'>
<InputLabel dark name='games'>Games</InputLabel>
<AsyncMultiSelect
client:only='react'
name='games'
url='/api/game/find'
valueColumn='slug'
nameColumn='title'
className='rounded-md py-2 h-full'
/>
</div>
<div class='flex flex-col'>
<InputLabel dark name='platforms'>Platforms</InputLabel>
<AsyncMultiSelect
client:only='react'
name='platforms'
url='/api/platform/find'
nameColumn='name'
className='rounded-md py-2 h-full'
/>
</div>
</div>
</div>
</div>
</div>
</Base>

View file

@ -0,0 +1,21 @@
import type { APIRoute } from 'astro'
import prismaClient from 'utils/prisma-client'
export const GET: APIRoute = async (context) => {
const { url } = context
const titleParam = url.searchParams.get('q')
const anims = await prismaClient.animation.findMany({
where: titleParam ? { title: { contains: titleParam } } : undefined,
select: { id: true, title: true },
take: 10,
orderBy: { createdAt: 'desc' }
})
return new Response(JSON.stringify(anims), {
status: 200,
headers: {
'Content-Type': 'application/json'
}
})
}

View file

@ -0,0 +1,21 @@
import type { APIRoute } from 'astro'
import prismaClient from 'utils/prisma-client'
export const GET: APIRoute = async (context) => {
const { url } = context
const titleParam = url.searchParams.get('q')
const anims = await prismaClient.game.findMany({
where: titleParam ? { name: { contains: titleParam } } : undefined,
select: { slug: true, name: true },
take: 10,
orderBy: { createdAt: 'desc' }
})
return new Response(JSON.stringify(anims), {
status: 200,
headers: {
'Content-Type': 'application/json'
}
})
}

View file

@ -0,0 +1,21 @@
import type { APIRoute } from 'astro'
import prismaClient from 'utils/prisma-client'
export const GET: APIRoute = async (context) => {
const { url } = context
const titleParam = url.searchParams.get('q')
const anims = await prismaClient.platform.findMany({
where: titleParam ? { name: { contains: titleParam } } : undefined,
select: { id: true, name: true },
take: 10,
orderBy: { createdAt: 'desc' }
})
return new Response(JSON.stringify(anims), {
status: 200,
headers: {
'Content-Type': 'application/json'
}
})
}

View file

@ -42,4 +42,8 @@
color: var(--color-hover-link);
text-decoration-line: underline;
}
.rmsc .dropdown-heading-value span {
color: black;
}
}

268
yarn.lock
View file

@ -1986,6 +1986,11 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^5.2.1:
version "5.7.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
acorn@^8.14.0:
version "8.14.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
@ -2009,6 +2014,11 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==
ansi-align@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
@ -2158,6 +2168,11 @@ ast-types-flow@^0.0.8:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6"
integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==
ast-types@0.9.6:
version "0.9.6"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
integrity sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==
astro-eslint-parser@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/astro-eslint-parser/-/astro-eslint-parser-1.2.1.tgz#01c331ff1c9b3a23ea203a8dfd429c26d8f9eec8"
@ -2324,6 +2339,11 @@ base-64@^1.0.0:
resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a"
integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==
base62@^1.1.0:
version "1.2.8"
resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.8.tgz#1264cb0fb848d875792877479dbe8bae6bae3428"
integrity sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==
before-after-hook@^2.2.0:
version "2.2.3"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
@ -2636,6 +2656,11 @@ commander@11.1.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906"
integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
commander@^2.5.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
@ -2646,6 +2671,21 @@ common-ancestor-path@^1.0.1:
resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
commoner@^0.10.1:
version "0.10.8"
resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5"
integrity sha512-3/qHkNMM6o/KGXHITA14y78PcfmXh4+AOCJpSoF73h4VY1JpdGv3CHMS5+JW6SwLhfJt4RhNmLAa7+RRX/62EQ==
dependencies:
commander "^2.5.0"
detective "^4.3.1"
glob "^5.0.15"
graceful-fs "^4.1.2"
iconv-lite "^0.4.5"
mkdirp "^0.5.0"
private "^0.1.6"
q "^1.1.2"
recast "^0.11.17"
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -2847,6 +2887,11 @@ define-properties@^1.1.3, define-properties@^1.2.1:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
defined@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf"
integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==
defu@^6.1.4:
version "6.1.4"
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479"
@ -2892,6 +2937,14 @@ detect-libc@^2.0.3:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
detective@^4.3.1:
version "4.7.1"
resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==
dependencies:
acorn "^5.2.1"
defined "^1.0.0"
deterministic-object-hash@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz#b251ddc801443905f0e9fef08816a46bc9fe3807"
@ -3047,6 +3100,14 @@ entities@^6.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.0.tgz#09c9e29cb79b0a6459a9b9db9efb418ac5bb8e51"
integrity sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==
envify@^3.0.0:
version "3.4.1"
resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8"
integrity sha512-XLiBFsLtNF0MOZl+vWU59yPb3C2JtrQY2CNJn22KH75zPlHWY5ChcAQuf4knJeWT/lLkrx3sqvhP/J349bt4Bw==
dependencies:
jstransform "^11.0.3"
through "~2.3.4"
es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9:
version "1.23.9"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606"
@ -3438,11 +3499,21 @@ espree@^10.0.0, espree@^10.0.1, espree@^10.3.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.2.0"
esprima-fb@^15001.1.0-dev-harmony-fb:
version "15001.1.0-dev-harmony-fb"
resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901"
integrity sha512-59dDGQo2b3M/JfKIws0/z8dcXH2mnVHkfSPRhCYS91JNGfGNwr7GsSF6qzWZuOGvw5Ii0w9TtylrX07MGmlOoQ==
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==
esquery@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
@ -3755,6 +3826,17 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
glob@^5.0.15:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==
dependencies:
inflight "^1.0.4"
inherits "2"
minimatch "2 || 3"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@ -3788,7 +3870,7 @@ gopd@^1.0.1, gopd@^1.2.0:
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
graceful-fs@^4.1.5, graceful-fs@^4.2.4:
graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.2.4:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@ -3862,6 +3944,11 @@ hasown@^2.0.2:
dependencies:
function-bind "^1.1.2"
hasown@~1.x.x:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-1.0.1.tgz#b64ff1570673ba06cc5d0183c0a4f0b5b1bd6459"
integrity sha512-My8IVgPaNw1TPrcOtLxG5N2BQJUr2YYI8a3ei3Njx4QIZ+WzEkvLQ4jySrcy6YNfq1JwHpyimb4p2Rw5IuE/SA==
hast-util-from-html@^2.0.0, hast-util-from-html@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz#485c74785358beb80c4ba6346299311ac4c49c82"
@ -4022,6 +4109,13 @@ iconv-lite@0.6.3, iconv-lite@^0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
iconv-lite@^0.4.5:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
ignore@5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
@ -4055,7 +4149,15 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
inherits@2.0.4, inherits@^2.0.1:
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.1:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -4385,6 +4487,17 @@ jsonwebtoken@^9.0.2:
ms "^2.1.1"
semver "^7.5.4"
jstransform@^11.0.3:
version "11.0.3"
resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223"
integrity sha512-LGm87w0A8E92RrcXt94PnNHkFqHmgDy3mKHvNZOG7QepKCTCH/VB6S+IEN+bT4uLN3gVpOT0vvOOVd96osG71g==
dependencies:
base62 "^1.1.0"
commoner "^0.10.1"
esprima-fb "^15001.1.0-dev-harmony-fb"
object-assign "^2.0.0"
source-map "^0.4.2"
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
version "3.3.5"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a"
@ -5122,7 +5235,7 @@ mime-types@^2.1.12, mime-types@^2.1.35:
dependencies:
mime-db "1.52.0"
minimatch@^3.1.2:
"minimatch@2 || 3", minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@ -5136,6 +5249,11 @@ minimatch@^9.0.4, minimatch@^9.0.5:
dependencies:
brace-expansion "^2.0.1"
minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
minipass@^3.0.0:
version "3.3.6"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
@ -5161,6 +5279,13 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@^0.5.0:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
@ -5226,6 +5351,11 @@ neotraverse@^0.6.18:
resolved "https://registry.yarnpkg.com/neotraverse/-/neotraverse-0.6.18.tgz#abcb33dda2e8e713cf6321b29405e822230cdb30"
integrity sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==
newify@^1.1.9:
version "1.1.9"
resolved "https://registry.yarnpkg.com/newify/-/newify-1.1.9.tgz#3f599bd1d44a4c38851a1bd25bbb6f7c4d72d8ff"
integrity sha512-kSq656w2zWHOsUtqYOMyMLUYOFAFWj5kPIQfjOedppsteTF/NsZ76SmIrBqMl8J7KVu5DuXNYknAj2LOeR6nOw==
nlcst-to-string@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz#05511e8461ebfb415952eb0b7e9a1a7d40471bd4"
@ -5263,6 +5393,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize.css@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-3.0.3.tgz#acc00262e235a2caa91363a2e5e3bfa4f8ad05c6"
integrity sha512-7OavvKXqPta8bgGhWzcUOnZ9KCkANYzbq4ytNKgNeFRTaz3KAm1eGUQ/vyAeVjlDXjolsbYREctuzyQytCDiBA==
nth-check@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
@ -5270,6 +5405,11 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
object-assign@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g==
object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@ -5363,7 +5503,7 @@ on-finished@^2.4.1:
dependencies:
ee-first "1.1.1"
once@^1.3.1, once@^1.4.0:
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
@ -5509,6 +5649,11 @@ path-exists@^4.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@ -5657,6 +5802,11 @@ prismjs@^1.29.0:
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
private@^0.1.6, private@~0.1.5:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
prompts@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@ -5714,6 +5864,11 @@ pvutils@^1.1.3:
resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3"
integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@ -5737,6 +5892,15 @@ react-dom@^18.3.1:
loose-envify "^1.1.0"
scheduler "^0.23.2"
react-field-component-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/react-field-component-utils/-/react-field-component-utils-1.0.1.tgz#1514e11fe098ca7f71db5f92bf83a4e00235545f"
integrity sha512-JjTDv2AIkavtSD9nUxMciwVF+fJ1M61pz4FLe9VHJ1CX8mvLPgNo2aGmM5t7dOGm9HFdvsK/Vvcjo5PQ6EXnjA==
dependencies:
object-assign "^2.0.0"
region "^2.1.1"
select-parent "^1.0.0"
react-hot-toast@^2.4.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.5.2.tgz#b55328966a26add56513e2dc1682e2cb4753c244"
@ -5745,21 +5909,74 @@ react-hot-toast@^2.4.1:
csstype "^3.1.3"
goober "^2.1.16"
react-input-field@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/react-input-field/-/react-input-field-1.2.4.tgz#8b507e8b464f39489edc5892ed96ef62b6672996"
integrity sha512-xhchZEKhyMTvJl1MqXS/SD24AohTUAtHfL78XzruxH4g9T7JKiiCLqQHiBB/nkFk3aB7OJa9K6Z0EoPI+y1Vyg==
dependencies:
normalize.css "^3.0.2"
object-assign "^2.0.0"
react-style-normalizer "^1.2.8"
react-is@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-listview@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/react-listview/-/react-listview-0.1.0.tgz#16e3353c65ba899f70cc4fb4a4b6635f3fdee98e"
integrity sha512-l5v6ycS6+tHUkKH89NG/lxzUH0qwZnVR5fku7HM1BcI711lZB/9wsRgd+3kTjQkj1vgzQLQYGOWbhISuM/NV3A==
react-multi-select-component@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/react-multi-select-component/-/react-multi-select-component-4.3.4.tgz#4f4b354bfa1f0353fa9c3bccf8178c87c9780450"
integrity sha512-Ui/bzCbROF4WfKq3OKWyQJHmy/bd1mW7CQM+L83TfiltuVvHElhKEyPM3JzO9urIcWplBUKv+kyxqmEnd9jPcA==
react-multi-select@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/react-multi-select/-/react-multi-select-0.1.0.tgz#6382d5475ee53d0f28bdeab969790f44052e9d81"
integrity sha512-0RzVC2aWQtzwZ/c0vg8Qd6hEGOBPQWfv15Q2UKhQg7gWY8kv7pnnNF7UZR8Lvap0DCiEMdL1aJoDTpF8H24b6g==
dependencies:
normalize.css "^3.0.2"
object-assign "^2.0.0"
react-field-component-utils "^1.0.1"
react-listview "^0.1.0"
react-style-normalizer "^1.1.3"
react-tag-editor "^0.1.0"
react-refresh@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
react-style-normalizer@^1.1.3, react-style-normalizer@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/react-style-normalizer/-/react-style-normalizer-1.2.8.tgz#7e84b3d25cea6225545c5af68963b225885344a2"
integrity sha512-smaq27S/Gfj08wsNvLuuA03SKr6K44BVZFyqQEBFyqlQ9MSUi6ydRoBfNcZQeIUNkjRxi1W97sNNs54zFqGC2Q==
react-svg-spinners@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/react-svg-spinners/-/react-svg-spinners-0.3.1.tgz#1f639fd0529ac77dbea3a8379ca388a52d2ef88a"
integrity sha512-rjHsCQqWMab55aykR40ySX/BnVWdAe3EcfxvkRpHP868y3bpqLD2XclLHwSvjX3C7QARzU1NRKPkTjgjriOb9g==
react-tag-editor@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/react-tag-editor/-/react-tag-editor-0.1.0.tgz#659302039aeacff2ac8ac39b709ab426d80a0ad9"
integrity sha512-Mf+cWmx7ABaKwGa/Z7Gl1xJm2MYHGmpi6m5t/Rc2kwDUf2OprUAcQKYukMyVVHdW2XQOxC5EFvI5rzn7ExSI8w==
dependencies:
object-assign "^2.0.0"
react "^0.12.2"
react-input-field "^1.1.6"
react-style-normalizer "^1.1.3"
react@^0.12.2:
version "0.12.2"
resolved "https://registry.yarnpkg.com/react/-/react-0.12.2.tgz#1c4f0b08818146eeab4f0ab39257e0aa52027e00"
integrity sha512-YVNx3+ljaus8P1AcDuntrJuQTQ2pCwWikbo5rDvMjtHYU6GihXcJWJOtZYufVE3sfr7wZPnbl/EePFvTxu/Wuw==
dependencies:
envify "^3.0.0"
react@^18.3.1:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
@ -5774,6 +5991,16 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
recast@^0.11.17:
version "0.11.23"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
integrity sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==
dependencies:
ast-types "0.9.6"
esprima "~3.1.0"
private "~0.1.5"
source-map "~0.5.0"
reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
version "1.0.10"
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
@ -5825,6 +6052,15 @@ regexp.prototype.flags@^1.5.3:
gopd "^1.2.0"
set-function-name "^2.0.2"
region@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/region/-/region-2.1.2.tgz#cfd95868afbc49e4c7a053b677bc5a0985c29afa"
integrity sha512-e34CShd2J76g0YZVZiCBqyJox8wcM3dMRpeuBEN4bJAL4kev6cWAhlJPnb3HwozS90goRd1nuwY5P3Qy+6aAaA==
dependencies:
hasown "~1.x.x"
newify "^1.1.9"
object-assign "^2.0.0"
rehype-parse@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-9.0.1.tgz#9993bda129acc64c417a9d3654a7be38b2a94c20"
@ -6065,7 +6301,7 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
es-errors "^1.3.0"
is-regex "^1.2.1"
"safer-buffer@>= 2.1.2 < 3.0.0":
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@ -6077,6 +6313,11 @@ scheduler@^0.23.2:
dependencies:
loose-envify "^1.1.0"
select-parent@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/select-parent/-/select-parent-1.0.1.tgz#d7d662bd104032f091400563a3c66d24c758cff6"
integrity sha512-dUD9YkDVbTCqJiauRWlgdbfD+puJVS2Pgwmtt0bM0NWnMtezhfwt3xqGlmFhndyTkjap3BXmSuxtWt0uI/SrFQ==
semver@^6.3.1:
version "6.3.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
@ -6293,6 +6534,18 @@ source-map-js@^1.0.1, source-map-js@^1.2.0, source-map-js@^1.2.1:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
source-map@^0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
integrity sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==
dependencies:
amdefine ">=0.0.4"
source-map@~0.5.0:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
space-separated-tokens@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f"
@ -6508,6 +6761,11 @@ throttle-debounce@^5.0.0:
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz#ec5549d84e053f043c9fd0f2a6dd892ff84456b1"
integrity sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==
through@~2.3.4:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
tinyexec@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2"