fix type errors

This commit is contained in:
amirhouieh 2023-05-12 18:12:49 +02:00
parent c1f44b6f08
commit 455c17b83d
21 changed files with 175 additions and 35 deletions

View File

@ -1,9 +1,11 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
images: {
domains: ['images.cdn.unbody.io'],
},
reactStrictMode: true,
images: {
domains: ['images.cdn.unbody.io'],
// loader: 'imgix',
// path: 'https://images.cdn.unbody.io',
}
}
module.exports = nextConfig

View File

@ -39,9 +39,11 @@
"next": "13.3.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-imgix": "^9.7.0",
"typescript": "5.0.4"
},
"devDependencies": {
"@types/react-imgix": "^9.5.0",
"husky": "^8.0.3",
"lint-staged": "^13.2.1",
"prettier": "^2.8.7"

View File

@ -10,14 +10,11 @@ const ArticleFooter = ({ data }: { data: ArticlePostData }) => {
const { article, relatedArticles, articlesFromSameAuthors } = data
const footnotes = useMemo(() => {
return (
article.blocks
// @ts-ignore
.flatMap((b) =>
b.__typename === UnbodyGraphQl.UnbodyDocumentTypeNames.TextBlock
? b.footnotes
: [],
)
return article.blocks.flatMap((b) =>
// @ts-ignore
b.__typename === UnbodyGraphQl.UnbodyDocumentTypeNames.TextBlock
? b.footnotes
: [],
)
}, [article])

View File

@ -22,8 +22,6 @@ const ImageBlock = ({ doc }: Props) => {
</ImageContainer>
<ContentBlockHeader
type={PostClassType.ARTICLE}
// TODO: type error with GoogleCalendarEvent
// which one do we use for date between createdAt and modifiedAt?
date={doc?.document[0].modifiedAt}
/>
<ContentBlockBody

View File

@ -3,7 +3,6 @@ import styled from '@emotion/styled'
export const Grid = styled.div`
display: grid;
grid-template-columns: repeat(16, 1fr);
padding: 16px;
gap: 16px;
// TODO: The mobile design works when commenting this out

View File

@ -7,9 +7,8 @@ const Main = ({ children }: PropsWithChildren) => {
}
const Container = styled.main`
display: flex;
justify-content: center;
max-width: 1440px;
//display: flex;
//justify-content: center;
margin-block: ${uiConfigs.postSectionMargin}px;
margin-left: auto;
margin-right: auto;

View File

@ -4,6 +4,7 @@ import { LogosIcon } from '../Icons/LogosIcon'
import { SunIcon } from '../Icons/SunIcon'
import { MoonIcon } from '../Icons/MoonIcon'
import { useRouter } from 'next/router'
import { uiConfigs } from '@/configs/ui.configs'
interface NavbarProps {
isDark: boolean
@ -37,7 +38,8 @@ const Container = styled.nav`
border-bottom: 1px solid rgb(var(--lsd-theme-primary));
position: fixed;
top: 0;
width: calc(100% - 16px);
width: calc(100% + 16px);
max-width: ${uiConfigs.maxContainerWidth + 16}px;
background: rgb(var(--lsd-surface-primary));
z-index: 100;

View File

@ -8,11 +8,21 @@ type Props = {
posts: PostDataProps[]
}
const getGridItemWidth = (index: number) => {
// Each cycle consists of 6 indices: 4 for "w-4" and 2 for "w-8"
const cycleLength = 6
// Determine which part of the cycle this index falls into
const positionInCycle = index % cycleLength
// If the index is in the first 4 positions, return "w-4"
// Otherwise, return "w-8"
return positionInCycle < 4 ? 'w-4' : 'w-8'
}
export const PostsList = (props: Props) => {
const [posts, setPosts] = useState<PostDataProps[]>(props.posts)
//TODO pagination
return (
<Grid>
{posts.map((post, index) => (

View File

@ -0,0 +1,22 @@
import React from 'react'
import Image from 'next/image'
import { UnbodyImageBlock } from '@/lib/unbody/unbody.types'
import Imgix from 'react-imgix'
type Props = {
data: UnbodyImageBlock
}
export const ResponsiveImage = ({ data }: Props) => {
return (
<div
style={{
position: 'relative',
width: '100%',
paddingTop: `${(data.height / data.width) * 100}%`,
}}
>
<Imgix src={data.url} />
</div>
)
}

View File

@ -125,7 +125,14 @@ export default function Searchbar(props: SearchbarProps) {
: copyConfigs.search.searchbarPlaceholders.article()
return (
<SearchbarContainer onUnfocus={() => setActive(false)}>
<SearchbarContainer
onUnfocus={() => {
setActive(false)
if (router.query.query && router.query.query.length > 0) {
setQuery(router.query.query as string)
}
}}
>
<SearchBox>
<TextField
className={styles.searchBox}

View File

@ -20,7 +20,6 @@ export function SearchbarContainer({ children, onUnfocus = nope }: Props) {
onUnfocus()
}
if (isScrolling && onUnfocus) {
console.log('scrolling', isScrolling)
onUnfocus()
}
}, [isOutside, stickyRef, isScrolling, onUnfocus])
@ -41,11 +40,11 @@ export function SearchbarContainer({ children, onUnfocus = nope }: Props) {
const SearchBarWrapper = styled.div<Props>`
display: block;
width: 100%;
width: calc(100% - 16px);
background: rgb(var(--lsd-surface-primary));
border-bottom: 1px solid rgb(var(--lsd-border-primary));
border-top: 1px solid rgb(var(--lsd-border-primary));
transition: all 0.2s ease-in-out;
transition: top 0.2s ease-in-out;
position: relative;
overflow: hidden;

View File

@ -9,7 +9,7 @@ type Props = PropsWithChildren<{
export const Section = ({ title, matches, children, ...props }: Props) => {
return (
<section {...props}>
<section style={{ width: '100%' }} {...props}>
<Container>
<Typography genericFontFamily="sans-serif" variant="body2">
{title}
@ -32,5 +32,6 @@ const Container = styled.div`
display: flex;
align-items: center;
gap: 8px;
padding: 0 16px;
//padding: 0 16px;
width: 100%;
`

View File

@ -1,4 +1,5 @@
export const uiConfigs = {
navbarRenderedHeight: 45,
postSectionMargin: 78,
maxContainerWidth: 1400,
}

View File

@ -6,7 +6,7 @@ import { createContext, useContext, useState } from 'react'
import { useSearchBarContext } from './searchbar.context'
type ArticleContext = SearchHook<UnbodyTextBlock | UnbodyImageBlock> & {
onSearch: (query: string, filters: string[], title: string) => void
onSearch: (query: string, filters: string[]) => void
onReset: () => void
}

View File

@ -211,7 +211,7 @@ export namespace UnbodyGraphQl {
summary: string
title: string
updatedAt: string
modifiedAt: string
attachments: Array<ImageBlock>
}

View File

@ -48,6 +48,11 @@ export default function App({ Component, pageProps }: AppLayoutProps) {
width: 100%;
height: 100%;
}
#__next {
max-width: 1440px;
margin-left: auto;
margin-right: auto;
}
:root {
--lpe-nav-rendered-height: ${uiConfigs.navbarRenderedHeight}px;
}

View File

@ -1,3 +1,4 @@
import { uiConfigs } from '@/configs/ui.configs'
import { Html, Head, Main, NextScript } from 'next/document'
export default function Document() {

View File

@ -14,7 +14,6 @@ type ArticleProps = {
const ArticlePage = ({ data, errors }: ArticleProps) => {
if (errors) return <div>{errors}</div>
return (
<>
<SEO title={data.article.title} description={data.article.summary} />

View File

@ -16,6 +16,7 @@ import { ReactNode, useEffect, useRef, useState } from 'react'
import { SearchLayout } from '@/layouts/SearchLayout'
import { RelatedArticles } from '@/components/RelatedArticles'
import { RelatedContent } from '@/components/RelatedContent'
import { useSearchBarContext } from '@/context/searchbar.context'
interface SearchPageProps {
articles: SearchResultItem<UnbodyGoogleDoc>[]

View File

@ -33,7 +33,7 @@ export const getBodyBlocks = ({
const isTitle = classNames.includes('title')
const isSubtitle = classNames.includes('subtitle')
const isCoverImage =
b.order === 5 &&
b.order === 4 &&
b.__typename === UnbodyGraphQl.UnbodyDocumentTypeNames.ImageBlock
const isAuthor =
b.__typename === UnbodyGraphQl.UnbodyDocumentTypeNames.TextBlock &&
@ -69,7 +69,7 @@ export const getArticleCover = (
return (
((blocks || []).find(
(b) =>
b.order === 5 &&
b.order === 4 &&
b.__typename === UnbodyGraphQl.UnbodyDocumentTypeNames.ImageBlock,
) as UnbodyImageBlock) || null
)

101
yarn.lock
View File

@ -55,6 +55,13 @@
dependencies:
regenerator-runtime "^0.13.11"
"@babel/runtime@^7.2.0":
version "7.21.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
dependencies:
regenerator-runtime "^0.13.11"
"@babel/types@^7.21.4":
version "7.21.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4"
@ -232,6 +239,15 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@imgix/js-core@^3.1.3":
version "3.8.0"
resolved "https://registry.yarnpkg.com/@imgix/js-core/-/js-core-3.8.0.tgz#630bc4fba8cb968d8c0e8298a2be71e39d75b8b8"
integrity sha512-kvLmsODQq7W17UuhDIffimlKN+AUTgtQCgD8kpPN0gglvaqR1VZKXl4gB5eAUXgrwNgi5hRDl5XYAMFRPIUztw==
dependencies:
js-base64 "~3.7.0"
md5 "^2.2.1"
ufo "^1.0.0"
"@next/env@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.3.0.tgz#cc2e49f03060a4684ce7ec7fd617a21bc5b9edba"
@ -392,6 +408,13 @@
dependencies:
"@types/react" "*"
"@types/react-imgix@^9.5.0":
version "9.5.0"
resolved "https://registry.yarnpkg.com/@types/react-imgix/-/react-imgix-9.5.0.tgz#5a3f17ffb6b5d7db9efe74bc9b077312091043c2"
integrity sha512-QNtxzFd9PEr5dyWcs1TWW4kRfGTvUAJ4Lb/OfAX9ZHVCFAimXSFgTVJU4zDAoMEH3lz+lqHP8FszqTn9X7HNYQ==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@18.0.35":
version "18.0.35"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.35.tgz#192061cb1044fe01f2d3a94272cd35dd50502741"
@ -722,6 +745,11 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
charenc@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
@ -845,6 +873,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
crypt@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
css-background-parser@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b"
@ -1476,6 +1509,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@
has "^1.0.3"
has-symbols "^1.0.3"
get-node-dimensions@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/get-node-dimensions/-/get-node-dimensions-1.2.1.tgz#fb7b4bb57060fb4247dd51c9d690dfbec56b0823"
integrity sha512-2MSPMu7S1iOTL+BOa6K1S62hB2zUAYNF/lV0gSVlOaacd087lc6nR1H1r0e3B1CerTo+RceOmi1iJW+vp21xcQ==
get-stream@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@ -1772,6 +1810,11 @@ is-boolean-object@^1.1.0:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
is-buffer@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@ -1932,6 +1975,11 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
js-base64@~3.7.0:
version "3.7.5"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca"
integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==
js-cookie@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
@ -2082,7 +2130,7 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"
loose-envify@^1.1.0, loose-envify@^1.4.0:
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@ -2096,6 +2144,15 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
md5@^2.2.1:
version "2.3.0"
resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
dependencies:
charenc "0.0.2"
crypt "0.0.2"
is-buffer "~1.1.6"
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
@ -2458,7 +2515,7 @@ prettier@^2.8.7:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450"
integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==
prop-types@^15.8.1:
prop-types@^15.6.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -2490,11 +2547,32 @@ react-dom@18.2.0, react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.0"
react-imgix@^9.7.0:
version "9.7.0"
resolved "https://registry.yarnpkg.com/react-imgix/-/react-imgix-9.7.0.tgz#944f63693daf6524d07898aaf7d1cbbe59e5edca"
integrity sha512-unov/PlBrwJ9ahlNwB3Eu3KksfFBMZZEsBdwmdwHzck8jbIRVwsMSR0DQ/2RZvQWxxRUGJymODrmKsZHmSOnwQ==
dependencies:
"@imgix/js-core" "^3.1.3"
prop-types "^15.8.1"
react-measure "^2.3.0"
shallowequal "^1.1.0"
warning "^4.0.1"
react-is@^16.13.1, react-is@^16.7.0:
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-measure@^2.3.0:
version "2.5.2"
resolved "https://registry.yarnpkg.com/react-measure/-/react-measure-2.5.2.tgz#4ffc410e8b9cb836d9455a9ff18fc1f0fca67f89"
integrity sha512-M+rpbTLWJ3FD6FXvYV6YEGvQ5tMayQ3fGrZhRPHrE9bVlBYfDCLuDcgNttYfk8IqfOI03jz6cbpqMRTUclQnaA==
dependencies:
"@babel/runtime" "^7.2.0"
get-node-dimensions "^1.2.1"
prop-types "^15.6.2"
resize-observer-polyfill "^1.5.0"
react-universal-interface@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b"
@ -2541,7 +2619,7 @@ regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
resize-observer-polyfill@^1.5.1:
resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
@ -2677,6 +2755,11 @@ set-harmonic-interval@^1.0.1:
resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249"
integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==
shallowequal@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@ -3060,6 +3143,11 @@ typescript@5.0.4:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
ufo@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.1.2.tgz#d0d9e0fa09dece0c31ffd57bd363f030a35cfe76"
integrity sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
@ -3090,6 +3178,13 @@ use-sync-external-store@^1.2.0:
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
warning@^4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
dependencies:
loose-envify "^1.0.0"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"