diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png deleted file mode 100755 index 9939bb3..0000000 Binary files a/android-chrome-192x192.png and /dev/null differ diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png deleted file mode 100755 index 6d0d8bc..0000000 Binary files a/android-chrome-512x512.png and /dev/null differ diff --git a/apple-touch-icon.png b/apple-touch-icon.png deleted file mode 100755 index a919eca..0000000 Binary files a/apple-touch-icon.png and /dev/null differ diff --git a/favicon-16x16.png b/favicon-16x16.png deleted file mode 100755 index 5d7f185..0000000 Binary files a/favicon-16x16.png and /dev/null differ diff --git a/favicon-32x32.png b/favicon-32x32.png deleted file mode 100755 index 6bfeb91..0000000 Binary files a/favicon-32x32.png and /dev/null differ diff --git a/favicon.ico b/favicon.ico deleted file mode 100755 index 3869609..0000000 Binary files a/favicon.ico and /dev/null differ diff --git a/fonts/EgyptianEF-BoldExtended.woff b/fonts/EgyptianEF-BoldExtended.woff new file mode 100644 index 0000000..0dfcb6c Binary files /dev/null and b/fonts/EgyptianEF-BoldExtended.woff differ diff --git a/fonts/EgyptianEF-BoldExtended.woff2 b/fonts/EgyptianEF-BoldExtended.woff2 new file mode 100644 index 0000000..6728f30 Binary files /dev/null and b/fonts/EgyptianEF-BoldExtended.woff2 differ diff --git a/fonts/HelveticaNeue-Medium.woff b/fonts/HelveticaNeue-Medium.woff new file mode 100644 index 0000000..710dd14 Binary files /dev/null and b/fonts/HelveticaNeue-Medium.woff differ diff --git a/fonts/HelveticaNeue-Medium.woff2 b/fonts/HelveticaNeue-Medium.woff2 new file mode 100644 index 0000000..cc9cc05 Binary files /dev/null and b/fonts/HelveticaNeue-Medium.woff2 differ diff --git a/fonts/SpecialElite-Regular.woff b/fonts/SpecialElite-Regular.woff new file mode 100644 index 0000000..42d6881 Binary files /dev/null and b/fonts/SpecialElite-Regular.woff differ diff --git a/fonts/SpecialElite-Regular.woff2 b/fonts/SpecialElite-Regular.woff2 new file mode 100644 index 0000000..13418f7 Binary files /dev/null and b/fonts/SpecialElite-Regular.woff2 differ diff --git a/icon-192x192.png b/icon-192x192.png deleted file mode 100644 index f976752..0000000 Binary files a/icon-192x192.png and /dev/null differ diff --git a/icon-256x256.png b/icon-256x256.png deleted file mode 100644 index 73419fd..0000000 Binary files a/icon-256x256.png and /dev/null differ diff --git a/icon-384x384.png b/icon-384x384.png deleted file mode 100644 index 60673e2..0000000 Binary files a/icon-384x384.png and /dev/null differ diff --git a/icon-512x512.png b/icon-512x512.png deleted file mode 100644 index e95926c..0000000 Binary files a/icon-512x512.png and /dev/null differ diff --git a/images/border.webp b/images/border.webp new file mode 100644 index 0000000..32c3246 Binary files /dev/null and b/images/border.webp differ diff --git a/images/ecobux_1042.webp b/images/ecobux_1042.webp new file mode 100644 index 0000000..b36fac0 Binary files /dev/null and b/images/ecobux_1042.webp differ diff --git a/images/ecobux_1100.webp b/images/ecobux_1100.webp new file mode 100644 index 0000000..738be10 Binary files /dev/null and b/images/ecobux_1100.webp differ diff --git a/images/ecobux_1151.webp b/images/ecobux_1151.webp new file mode 100644 index 0000000..505c5e5 Binary files /dev/null and b/images/ecobux_1151.webp differ diff --git a/images/ecobux_1201.webp b/images/ecobux_1201.webp new file mode 100644 index 0000000..b38e9f1 Binary files /dev/null and b/images/ecobux_1201.webp differ diff --git a/images/ecobux_1249.webp b/images/ecobux_1249.webp new file mode 100644 index 0000000..e0e281c Binary files /dev/null and b/images/ecobux_1249.webp differ diff --git a/images/ecobux_1298.webp b/images/ecobux_1298.webp new file mode 100644 index 0000000..2188ef5 Binary files /dev/null and b/images/ecobux_1298.webp differ diff --git a/images/ecobux_1349.webp b/images/ecobux_1349.webp new file mode 100644 index 0000000..a15a8b2 Binary files /dev/null and b/images/ecobux_1349.webp differ diff --git a/images/ecobux_1382.webp b/images/ecobux_1382.webp new file mode 100644 index 0000000..2808ff6 Binary files /dev/null and b/images/ecobux_1382.webp differ diff --git a/images/ecobux_1400.webp b/images/ecobux_1400.webp new file mode 100644 index 0000000..bc43557 Binary files /dev/null and b/images/ecobux_1400.webp differ diff --git a/images/ecobux_200.webp b/images/ecobux_200.webp new file mode 100644 index 0000000..551617c Binary files /dev/null and b/images/ecobux_200.webp differ diff --git a/images/ecobux_341.webp b/images/ecobux_341.webp new file mode 100644 index 0000000..4f4277e Binary files /dev/null and b/images/ecobux_341.webp differ diff --git a/images/ecobux_448.webp b/images/ecobux_448.webp new file mode 100644 index 0000000..d2c3cb8 Binary files /dev/null and b/images/ecobux_448.webp differ diff --git a/images/ecobux_537.webp b/images/ecobux_537.webp new file mode 100644 index 0000000..f17b97c Binary files /dev/null and b/images/ecobux_537.webp differ diff --git a/images/ecobux_616.webp b/images/ecobux_616.webp new file mode 100644 index 0000000..1d08722 Binary files /dev/null and b/images/ecobux_616.webp differ diff --git a/images/ecobux_689.webp b/images/ecobux_689.webp new file mode 100644 index 0000000..ff27ccd Binary files /dev/null and b/images/ecobux_689.webp differ diff --git a/images/ecobux_761.webp b/images/ecobux_761.webp new file mode 100644 index 0000000..830075b Binary files /dev/null and b/images/ecobux_761.webp differ diff --git a/images/ecobux_822.webp b/images/ecobux_822.webp new file mode 100644 index 0000000..4e47827 Binary files /dev/null and b/images/ecobux_822.webp differ diff --git a/images/ecobux_889.webp b/images/ecobux_889.webp new file mode 100644 index 0000000..fd0d24f Binary files /dev/null and b/images/ecobux_889.webp differ diff --git a/images/ecobux_943.webp b/images/ecobux_943.webp new file mode 100644 index 0000000..dfabad9 Binary files /dev/null and b/images/ecobux_943.webp differ diff --git a/images/ecobux_997.webp b/images/ecobux_997.webp new file mode 100644 index 0000000..46c5153 Binary files /dev/null and b/images/ecobux_997.webp differ diff --git a/images/ecobux_gf09pg_c_scale,w_1042.png b/images/ecobux_gf09pg_c_scale,w_1042.png deleted file mode 100644 index e99ad40..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1042.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1100.png b/images/ecobux_gf09pg_c_scale,w_1100.png deleted file mode 100644 index e4da3d4..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1100.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1151.png b/images/ecobux_gf09pg_c_scale,w_1151.png deleted file mode 100644 index f1d5628..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1151.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1201.png b/images/ecobux_gf09pg_c_scale,w_1201.png deleted file mode 100644 index 95ecacd..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1201.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1249.png b/images/ecobux_gf09pg_c_scale,w_1249.png deleted file mode 100644 index 4de9e40..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1249.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1298.png b/images/ecobux_gf09pg_c_scale,w_1298.png deleted file mode 100644 index 79d8ca8..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1298.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1349.png b/images/ecobux_gf09pg_c_scale,w_1349.png deleted file mode 100644 index 8e39853..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1349.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1382.png b/images/ecobux_gf09pg_c_scale,w_1382.png deleted file mode 100644 index 4b99feb..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1382.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_1400.png b/images/ecobux_gf09pg_c_scale,w_1400.png deleted file mode 100644 index 157851a..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_1400.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_200.png b/images/ecobux_gf09pg_c_scale,w_200.png deleted file mode 100644 index e9b62fc..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_200.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_341.png b/images/ecobux_gf09pg_c_scale,w_341.png deleted file mode 100644 index e54083c..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_341.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_448.png b/images/ecobux_gf09pg_c_scale,w_448.png deleted file mode 100644 index 32e5bc4..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_448.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_537.png b/images/ecobux_gf09pg_c_scale,w_537.png deleted file mode 100644 index 8d36015..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_537.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_616.png b/images/ecobux_gf09pg_c_scale,w_616.png deleted file mode 100644 index ca651d1..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_616.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_689.png b/images/ecobux_gf09pg_c_scale,w_689.png deleted file mode 100644 index c5ef610..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_689.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_761.png b/images/ecobux_gf09pg_c_scale,w_761.png deleted file mode 100644 index 848e6a5..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_761.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_822.png b/images/ecobux_gf09pg_c_scale,w_822.png deleted file mode 100644 index d387e10..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_822.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_889.png b/images/ecobux_gf09pg_c_scale,w_889.png deleted file mode 100644 index 71af789..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_889.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_943.png b/images/ecobux_gf09pg_c_scale,w_943.png deleted file mode 100644 index a7a9d17..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_943.png and /dev/null differ diff --git a/images/ecobux_gf09pg_c_scale,w_997.png b/images/ecobux_gf09pg_c_scale,w_997.png deleted file mode 100644 index 15d3456..0000000 Binary files a/images/ecobux_gf09pg_c_scale,w_997.png and /dev/null differ diff --git a/images/film-border.webp b/images/film-border.webp new file mode 100644 index 0000000..da5b7f8 Binary files /dev/null and b/images/film-border.webp differ diff --git a/images/film_melt.webm b/images/film_melt.webm new file mode 100644 index 0000000..df9025e Binary files /dev/null and b/images/film_melt.webm differ diff --git a/images/newspaper.webp b/images/newspaper.webp new file mode 100644 index 0000000..f5bd906 Binary files /dev/null and b/images/newspaper.webp differ diff --git a/images/profile_1275.webp b/images/profile_1275.webp new file mode 100644 index 0000000..3aa6855 Binary files /dev/null and b/images/profile_1275.webp differ diff --git a/images/profile_1400.webp b/images/profile_1400.webp new file mode 100644 index 0000000..df2a035 Binary files /dev/null and b/images/profile_1400.webp differ diff --git a/images/profile_200.webp b/images/profile_200.webp new file mode 100644 index 0000000..6cee739 Binary files /dev/null and b/images/profile_200.webp differ diff --git a/images/profile_849.webp b/images/profile_849.webp new file mode 100644 index 0000000..5f1bbfc Binary files /dev/null and b/images/profile_849.webp differ diff --git a/images/redact.webp b/images/redact.webp new file mode 100644 index 0000000..8d45481 Binary files /dev/null and b/images/redact.webp differ diff --git a/images/trivio_1077.webp b/images/trivio_1077.webp new file mode 100644 index 0000000..72fcf36 Binary files /dev/null and b/images/trivio_1077.webp differ diff --git a/images/trivio_1170.webp b/images/trivio_1170.webp new file mode 100644 index 0000000..3d6a33d Binary files /dev/null and b/images/trivio_1170.webp differ diff --git a/images/trivio_1290.webp b/images/trivio_1290.webp new file mode 100644 index 0000000..7273e2a Binary files /dev/null and b/images/trivio_1290.webp differ diff --git a/images/trivio_1400.webp b/images/trivio_1400.webp new file mode 100644 index 0000000..5081e4a Binary files /dev/null and b/images/trivio_1400.webp differ diff --git a/images/trivio_200.webp b/images/trivio_200.webp new file mode 100644 index 0000000..2b8ee3a Binary files /dev/null and b/images/trivio_200.webp differ diff --git a/images/trivio_472.webp b/images/trivio_472.webp new file mode 100644 index 0000000..5294431 Binary files /dev/null and b/images/trivio_472.webp differ diff --git a/images/trivio_668.webp b/images/trivio_668.webp new file mode 100644 index 0000000..b8ee5cf Binary files /dev/null and b/images/trivio_668.webp differ diff --git a/images/trivio_821.webp b/images/trivio_821.webp new file mode 100644 index 0000000..36313a2 Binary files /dev/null and b/images/trivio_821.webp differ diff --git a/images/trivio_958.webp b/images/trivio_958.webp new file mode 100644 index 0000000..88dcb68 Binary files /dev/null and b/images/trivio_958.webp differ diff --git a/images/trivio_kipvfo_c_scale,w_1077.png b/images/trivio_kipvfo_c_scale,w_1077.png deleted file mode 100644 index aa7e459..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_1077.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_1170.png b/images/trivio_kipvfo_c_scale,w_1170.png deleted file mode 100644 index d892605..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_1170.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_1290.png b/images/trivio_kipvfo_c_scale,w_1290.png deleted file mode 100644 index 8712c8b..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_1290.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_1400.png b/images/trivio_kipvfo_c_scale,w_1400.png deleted file mode 100644 index cc30741..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_1400.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_200.png b/images/trivio_kipvfo_c_scale,w_200.png deleted file mode 100644 index d965230..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_200.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_472.png b/images/trivio_kipvfo_c_scale,w_472.png deleted file mode 100644 index 199e143..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_472.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_668.png b/images/trivio_kipvfo_c_scale,w_668.png deleted file mode 100644 index f618cc2..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_668.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_821.png b/images/trivio_kipvfo_c_scale,w_821.png deleted file mode 100644 index a416c17..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_821.png and /dev/null differ diff --git a/images/trivio_kipvfo_c_scale,w_958.png b/images/trivio_kipvfo_c_scale,w_958.png deleted file mode 100644 index 66f91a4..0000000 Binary files a/images/trivio_kipvfo_c_scale,w_958.png and /dev/null differ diff --git a/index.css b/index.css index 4cc3e00..3562bc3 100644 --- a/index.css +++ b/index.css @@ -1,455 +1,603 @@ -::selection { - color: var(--s); - background: var(--p); -} -.pop { - color: var(--t); - font-size: 1.2em; - font-weight: 700; -} -#name { - opacity: 1 !important; - padding: 0 !important; - width: fit-content; - margin: 0 auto; +@font-face { + font-family: EgyptianEF; + src: + url("fonts/EgyptianEF-BoldExtended.woff2") format("woff2"), + url("fonts/EgyptianEF-BoldExtended.woff") format("woff"); + font-weight: bold; + font-style: normal; + font-display: swap; } -.carousel-text, -ul.social { - display: block !important; + +@font-face { + font-family: "Special Elite"; + src: + url("fonts/SpecialElite-Regular.woff2") format("woff2"), + url("fonts/SpecialElite-Regular.woff") format("woff"); + font-weight: normal; + font-style: normal; + font-display: swap; } -@media only screen and (min-width: 448px) { - li.social { - padding-left: 1vw !important; - padding-right: 1vw !important; + +@keyframes draw { + from { + stroke-dashoffset: var(--path-length); } -} -a { - position: relative; - color: var(--p); - text-decoration: none; + to { + stroke-dashoffset: 0; + } } -a:hover { - color: var(--p); -} +@keyframes slide-down { + 0% { + transform: translateY(0); + } -a::before { - content: ""; - position: absolute; - width: 100%; - height: 2px; - bottom: 0; - left: 0; - background-color: var(--t); - visibility: hidden; - transform: scaleX(0); - transition: all 0.3s ease-in-out 0s; + 100% { + transform: translateY(300vh); + } } -a.no-underline::before { - height: 0px; - transform: initial; + +@keyframes slide-up { + 0% { + transform: translateY(0); + } + + 100% { + transform: translateY(-300vh); + } } -a:hover::before { - visibility: visible; - transform: scaleX(1); +@keyframes slide-left { + 0% { + transform: translateX(0); + } + + 100% { + transform: translateX(-100vw); + } } -a.no-underline:hover::before { - visibility: hidden; - transform: initial; + +@keyframes undo-slide-left { + 0% { + transform: translateX(-100vw); + } + + 100% { + transform: translateX(0); + } } -.carousel-text > a { - color: #696969; +/* Handle resize */ +@keyframes slide-right { + 0% { + transform: translateX(0); + } + + 100% { + transform: translateX(100vw); + } } -.carousel-text > a:hover { - color: var(--p); + +@keyframes undo-slide-right { + 0% { + transform: translateX(100vw); + } + + 100% { + transform: translateX(0); + } } -/* Typewriter effect */ -h1 { - font-family: "Cutive Mono", monospace; - overflow: hidden; - margin: 0; - letter-spacing: 0.1rem; - white-space: nowrap; - margin-right: 0.15rem; - height: 2rem; - transition: transform 0.5s; +.vignette { + position: fixed; + inset: 0; + pointer-events: none; + background: radial-gradient(ellipse at center, rgb(0 0 0 / 0%) 0%, rgb(0 0 0 / 30%) 100%); + z-index: 100; } -.type h1 { - margin: 0; - border-right: 0.15rem solid var(--p); - animation: - typing 2s steps(17, jump-none), - blink-cursor.95s step-end 10; +path { + stroke-dasharray: var(--path-length); } -.sticky { - position: fixed; - top: 0; - left: 0; - width: 100%; - align-items: center; - z-index: 1; - padding-bottom: 0.5rem; - background-color: var(--s); + +#landing-text { + font-size: 2rem; + text-anchor: middle; + alignment-baseline: middle; } -.sticky h1 { - transform: scale(0.4); +.about { + position: relative; + width: 70vw; + height: 100vh; + margin: 0 auto; + overflow: hidden; + background-color: var(--r); } -.sticky ~ * { - padding-top: 1.8rem; +.about h1 { + font-family: EgyptianEF, serif; + font-size: 5.1rem; + font-weight: bold; + font-kerning: 0.1rem; + line-height: 1; + text-align: center; } -.carousel { - font-size: 1rem; - align-items: center; +.about-split { + display: flex; + justify-content: center; + align-items: start; + height: 30vh; + max-width: 64rem; width: 100%; + margin: 0 auto; + flex-wrap: wrap; } -.carousel-text { - opacity: 0; - max-width: 93vw; - margin: 1vh auto; - background-color: var(--s); - animation-name: rotate-last; - animation-duration: 2s; - animation-delay: 2.1s; - animation-fill-mode: forwards; - will-change: transform, opacity; +.about-description { + font-family: "Special Elite", typewriter, monospace; + font-size: 2.5rem; + font-weight: 500; + line-height: 1.5; + text-align: right; + margin: 0; + padding: 0 0.5rem; + max-width: 50%; + width: fit-content; + display: flex; + flex-direction: column; + align-items: end; + height: 100%; + justify-content: space-between; } -/* Fade icons in */ -ul.social { +.about-description p { + margin: 0; padding: 0; - opacity: 0; - animation: fadeIn ease 2s; - animation-delay: 2.5s; - animation-fill-mode: forwards; + max-width: 18ch; } -li.social { - height: 80.36px; - width: 64px; + +.about-image { position: relative; - display: inline-block; + width: 50%; + height: 30vh; + margin: 0; padding: 0; - padding-left: 5vw; - padding-right: 5vw; - font-size: 64px; -} -svg { - fill: none; - stroke: var(--p); - stroke-linecap: round; - stroke-linejoin: round; - stroke-width: 1.5; - height: 32px; - width: 32px; -} -.social svg { - height: 64px; - width: 64px; -} -footer svg { - stroke: var(--s); - height: 44px; - width: 44px; -} -.aboutMe { - display: flex; - align-items: center; - height: 70vh; - width: 70vw; - max-width: 1312px; - margin: auto; - font-family: "Quicksand"; - font-size: 1.1rem; - line-height: 150%; -} -.aboutMe > h2 { - font-family: "Raleway", serif; -} -.aboutMe a { - font-family: "Raleway", serif; -} -img { - -webkit-user-drag: none; - -khtml-user-drag: none; - -moz-user-drag: none; - -o-user-drag: none; - user-drag: none; - border-radius: 0.3rem; -} - -.works { - font-family: "Raleway", serif; - transition: transform 0.5s; - transition-duration: 0.5s; - transition: all 2s; - backface-visibility: hidden; - -webkit-font-smoothing: subpixel-antialiased; - width: 93vw; - max-width: 1312px; - margin: -2vh auto; -} -.worksItem:nth-of-type(odd) { - text-align: right; } -.worksContent > h4 { - font-size: 2.5rem; - margin: 0; + +.about img { + position: absolute; + top: 0; + left: 0; + max-width: 100%; + max-height: 100%; } -.worksContent > p { - font-size: 1rem; + +a, +.redacted { + display: inline-block; + font-family: "Special Elite", typewriter, monospace; + background-image: url("images/redact.webp"); + background-repeat: no-repeat; + text-decoration: none; + color: var(--p); + background-size: 100% 100%; + background-position: center; + transition: color 0.2s ease-in-out; } -.worksHeader { - font-size: 2rem; - margin-left: auto; - margin-right: auto; - width: 70%; + +a:hover, +.redacted:hover { + color: var(--l); } -.worksContent { - width: 100%; + +a::selection, +.redacted::selection { + background-color: var(--p); + color: var(--l); } -.worksImage { - width: 100%; + +#about-border-image { + z-index: 2; } -.worksImage img { - width: 100%; - height: 100%; + +.about-content { + height: 100vh; + display: flex; + flex-direction: column; + justify-content: stretch; } -.worksLink { - display: inline-block; - font-size: 2rem; - padding: 0; - margin: 1vh 0; + +.about-image::before { + content: ""; + position: absolute; + top: 0; + left: 0; width: 100%; + height: 100%; + background-color: var(--r); + opacity: 0.5; + transition: opacity 0.3s ease; + pointer-events: none; + z-index: 1; } -.worksLink > li { - display: inline-block; + +.about-image:hover::before { + opacity: 0; } -.worksLink > li + li { - padding-left: 1%; + +.about-form { + display: grid; + flex: 1; + justify-content: center; + align-items: stretch; + width: 64rem; + margin: 0 auto; + grid-template-columns: 1fr 1fr 1fr; + grid-auto-rows: 1fr; + grid-gap: 0; + max-width: 50rem; + margin-top: 2rem; } -.worksTech { - list-style: none; - padding: 0; + +.about-item { + font-family: "Special Elite", typewriter, monospace; + font-weight: 300; + line-height: 1.5; + text-align: left; + max-width: 64rem; margin: 0; - width: 100%; - font-family: "Cutive Mono", monospace; -} -.worksTech > li { - display: inline-block; + padding: 0 0.5rem; + border: 1px solid var(--p); } -.worksTech > li + li { - padding-left: 2%; -} -.hidden { - opacity: 0; -} -.worksInView { - animation: rotate-last 3s; + +.about-item.span-two { + grid-column: span 2; } -.subWorks { - max-width: 1312px; - margin: auto; + +.about-label { + font-size: 0.75rem; + font-weight: bold; + display: block; + margin: 0 0 0.5rem; + padding: 0; } -.subWorksHeader { - font-family: "Raleway", serif; - font-size: 2rem; - margin-left: auto; - margin-right: auto; - width: 70%; - transition: transform 0.5s; - transition-duration: 0.5s; - backface-visibility: hidden; - -webkit-font-smoothing: subpixel-antialiased; -} -.subWorksList { - list-style: none; + +.about-value { + font-size: 1rem; + font-weight: light; + display: block; + margin: 0 0 1rem; padding: 0; - text-align: center; } -.subWorksItem { - display: inline-block; - padding: 2rem 1.75rem; - margin: 1rem; - border-radius: 0.5rem; - font-family: "Quicksand", sans-serif; + +.projects { + overflow: hidden; +} + +.projects-container { + position: relative; + width: 100vw; + height: 100vh; + overflow: hidden; } -.subWorksItem > h4 { - font-size: 3rem; - margin: 1rem 0; + +.projects-ribbon { + margin: 0; + height: 70vh; + background-image: url("images/newspaper.webp"); + background-color: var(--r); + top: 50%; + transform: translateY(20%); } -.subWorksItemHeader { - text-align: left; + +.projects-ribbon h1 { + font-family: EgyptianEF, serif; font-size: 5rem; -} -.subWorksFooter { - font-size: 4rem; - font-family: "Quicksand", sans-serif; + font-weight: bold; + line-height: 1; text-align: center; } -footer { - padding-top: 7vh; - font-family: "Quicksand", sans-serif; - font-size: 0.9em; - display: block; - background-color: var(--p); - color: var(--s); + +.projects-ribbon-border { + position: absolute; + width: 100%; + height: 50vh; + pointer-events: none; } -footer ::selection { - color: var(--p); - background: var(--s); + +.projects-ribbon-border img { + width: 100%; + height: 80%; } -.footerContent { - max-width: 1312px; - margin: auto; + +.projects-list { + display: flex; + justify-content: center; + align-items: center; + height: 55vh; + width: 64rem; + margin: 0 auto; + flex-wrap: wrap; } -.logo { + +.projects-item { + font-family: "Special Elite", typewriter, monospace; text-align: center; - font-size: xxx-large; margin: 0; - color: var(--s); - padding-bottom: 4vh; + padding: 0 0.5rem; + max-width: 50%; } -.footerLink { - padding-left: 15%; - padding-right: 15%; - padding-bottom: 3%; -} -footer a { - color: var(--s); -} -footer a:hover { - color: var(--s); + +.projects-item a { + background-image: none; } -footer a::before { - background-color: var(--s); + +.projects-item img { + max-width: 100%; + max-height: 35vh; } -.footerLink > ul { + +.projects-item ul { + list-style: none; padding: 0; + margin: 0; + width: 100%; } -li.footerSocial { - position: relative; + +.projects-item ul li { display: inline-block; + margin: 0; padding: 0; + text-align: left; +} + +.projects-item ul > li + li { padding-left: 2%; - padding-right: 2%; - font-size: x-large; } -.footerSocial > a { - color: var(--s); + +section.contact { + position: relative; + background-color: var(--s); + color: var(--p); + height: 100vh; } -.footerSocial > a:hover { - color: var(--s); + +.video-curtain { + position: absolute; + top: 0; + left: 0; + z-index: 10; /* Adjust as needed */ + pointer-events: none; } -.footerSocial > a::before { - background-color: var(--s); + +.video-curtain video { + display: none; } -.footerLegal { - font-family: "Cutive Mono", monospace; + +.contact-container { + left: 50%; + max-width: 75vw; + position: absolute; text-align: center; - padding-bottom: 3vh; - font-size: x-small; + top: 50%; + transform: translate(-50%, -50%); + width: 100%; + z-index: 5; +} + +.contact-link { + font-family: "Special Elite", typewriter, monospace; + font-size: 2rem; + font-weight: 500; + background-image: none; + text-decoration: underline; } -.separator { - z-index: -1; - height: 15vh; - margin: auto; +.contact-container h1 { + font-family: EgyptianEF, serif; + font-size: 5rem; + font-weight: bold; + font-kerning: 0.1rem; + line-height: 1; text-align: center; } -@keyframes typing { - 0% { - width: 0%; +footer { + position: absolute; + bottom: 0; + width: 100%; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + align-items: baseline; +} + +footer .footer-social { + display: flex; + list-style: none; + margin: 0; + padding: 0; +} + +footer a { + background-image: none; + color: var(--p); + font-family: "Special Elite", typewriter, monospace; + text-decoration: underline; +} + +@media (prefers-reduced-motion: no-preference) { + .landing.in-view path { + animation: draw 2.75s forwards; + stroke-dashoffset: var(--path-length); } - 30% { - width: 35%; + + .transition.in-view path { + animation: draw 0.4s forwards; + stroke-dashoffset: var(--path-length); } - 50% { - width: 35%; + + .about-curtain { + position: absolute; + z-index: 3; + height: 100%; + top: 0; + background-color: var(--p); } - 100% { + + .about-curtain-top { + left: calc(50% - var(--path-width) / 2); + width: var(--path-width); + } + + .about-curtain-left, + .about-curtain-right { + width: calc(50% - var(--path-width) / 2); + } + + .about-curtain-left { + left: 0; + } + + .about-curtain-right { + right: 0; + } + + .about.in-view .about-curtain-top { + animation: slide-down 0.5s forwards; + animation-delay: 0.2s; + } + + .about.in-view .about-curtain-left { + animation: slide-left 1.5s forwards; + animation-delay: 0.7s; + } + + .about.in-view .about-curtain-right { + animation: slide-right 1.5s forwards; + animation-delay: 0.7s; + } + + .about.in-view.projects-in-view .about-curtain-right { + animation: undo-slide-right 0.5s; + } + + .about.in-view.projects-in-view .about-curtain-left { + animation: undo-slide-left 0.5s; + } + + .projects { + position: relative; + } + + .projects-curtain { + position: absolute; + z-index: 3; + height: 100%; + top: 0; + background-color: var(--p); + } + + .projects-curtain-middle { + top: calc(50% - var(--path-width) / 2); + height: var(--path-width); width: 100%; } -} -@keyframes blink-cursor { - from, - to { - border-color: transparent; + .projects-curtain-top, + .projects-curtain-bottom { + width: 100%; + height: calc(50% - var(--path-width) / 2); } - 50% { - border-color: var(--p); + + .projects-curtain-top { + top: 0; } -} -@keyframes rotate-last { - 0% { - opacity: 0; - transform: translate3d(0, 50px, 0); + .projects-curtain-bottom { + top: 50%; } - 50%, - 100% { - opacity: 1; - transform: translate3d(0, 0, 0); + .projects.in-view .projects-curtain-top { + animation: slide-up 1.5s forwards; + animation-delay: 0.7s; } -} -@keyframes fadeIn { - 0% { - opacity: 0; + .projects.in-view .projects-curtain-middle { + animation: slide-right 0.7s forwards; + animation-delay: 0s; } - 100% { - opacity: 1; + + .projects.in-view .projects-curtain-bottom { + animation: slide-down 1.5s forwards; + animation-delay: 0.7s; + } + + .video-curtain video { + display: block; + width: 100vw; + height: 100vh; + object-fit: fill; + background: transparent; } } -@media only screen and (min-width: 720px) { - .subWorksItem { - width: 33vw; - max-width: 565px; - height: 470px; - display: inline-flex; - flex-direction: column; + +@media (width <= 600px) { + a, + .redacted { + background-image: none; } - .subWorksItem p { - flex: 1 1 auto; + + #landing-text { + font-size: 1rem; } -} -@media only screen and (min-width: 1000px) { - .worksItem { - display: inline-flex; - padding-bottom: 3vh; + + .about { + height: fit-content; + width: 98vw; } - .worksItem:nth-of-type(odd) { - text-align: left; + + .about h1 { + font-size: 2rem; } - .worksContent { - align-items: center; - display: flex; - padding: 1em; + + .about-split { + width: 100%; + height: fit-content; } -} -@media only screen and (min-width: 767px) { - .container { - font-size: 3rem; - width: 725.5px; + .about-description { + font-size: 1rem; + max-width: 100%; } - .carousel-content { + + .about-form { + width: 100%; + max-width: 100%; + grid-template-columns: 1fr; + } + + .projects { + height: fit-content; + } + + .projects-ribbon h1 { font-size: 2rem; } - h1 { - height: 5.3rem; + + .projects-list { + width: 100%; + height: fit-content; + } + + .contact-container { + max-width: 100vw; } - .sticky ~ * { - padding-top: 80px; + + .contact-container h1 { + font-size: 2rem; } } diff --git a/index.html b/index.html index 1f2cbf6..3f3f477 100644 --- a/index.html +++ b/index.html @@ -1,36 +1,53 @@ - + - - - Lucas Oberwager - - - - - - - + + Lucas Oberwager | Back-End Developer + + + + + + + + + + + + + + - + + + + + - + + - - - - -
-
-
- - -
-
-

Featured_Projects

-
+
+
+
+
+
+
+

Projects

+ +
+
+ + Ecobux landing page image + +

A charity organization dedicated to helping charities from around the world accrue payments through crowdfunding.

-
-
-
- -
- -
-
-

About(me)

-
-

- Hey! I'm Lucas, a back-end developer currently studying Computer Science @ Northeastern. -

-

- I started coding when I was 11, and have built many - Projects since then. -

-

- In my free time, I enjoy playing Lacrosse and reading books. I am currently reading - Longitude: The True Story of a Lone Genius Who Solved the Greatest Scientific - Problem of His Time. -

-

I was last seen working on Watt3r/wotd.

-
+
+
+
+ +
+
+

Well! What are we waiting for!

+
+
-
-
- -
- + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/index.js b/index.js index 72ebce3..9711794 100644 --- a/index.js +++ b/index.js @@ -1,109 +1,271 @@ -const header = document.getElementById("header"); -let sticky = header.offsetTop; -let worksTimeout; -let typeTimeout; -function titleCase(s) { - return s.replace(/\w\S*/g, function (t) { - return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase(); +const REM = parseFloat(getComputedStyle(document.documentElement).fontSize); +/** + * Adjusts the SVG paths to fit the screen. + */ +function adjustPath() { + adjustLandingPath(); + adjustLandingTransitionPath(); +} + +/** + * Adjusts the SVG landing paths to fit the screen. + */ +function adjustLandingPath() { + const svg = document.getElementById("landing-svg"); + const path = document.getElementById("landing-red-path"); + const maskPath = document.getElementById("landing-mask-path"); + const text = document.getElementById("landing-text"); + const textBox = document.getElementById("landing-text-box"); + const width = svg.clientWidth; + const height = svg.clientHeight; + + // Calculate the path start and end points based on the SVG dimensions + const startX = width; + const startY = height * 0.35; + const bendX = width * 0.15; + const endX = width * 0.9; + const endY = height * 1.05; + + const pathData = `M${startX},${startY} L${bendX},${startY} L${endX},${endY}`; + + // Update the path and mask-path 'd' attribute + path.setAttribute("d", pathData); + maskPath.setAttribute("d", pathData); + + svg.style.setProperty("--path-length", path.getTotalLength()); + + // Center the text vertically and place it at 50% of the width + text.setAttribute("x", width / 2); + text.setAttribute("y", startY); + + textBox.setAttribute("width", text.getBBox().width * 1.15); + textBox.setAttribute("height", REM * parseFloat(maskPath.getAttribute("stroke-width")) + 2); + textBox.setAttribute("x", width / 2 - textBox.getBBox().width / 2); + textBox.setAttribute("y", startY - textBox.getBBox().height / 2); +} + +/** + * Adjusts the SVG transition paths to fit the screen. + */ +function adjustLandingTransitionPath() { + const landingSvg = document.getElementById("landing-svg"); + const svg = document.getElementById("transition-svg"); + const path = document.getElementById("transition-red-path"); + const width = svg.clientWidth; + const height = svg.clientHeight; + + const root = document.documentElement; + + const landingSvgHeight = landingSvg.clientHeight; + + // Calculate the path start and end points based on the SVG dimensions + const startX = width * 0.86; + const startY = -height * 0.1; + const bendX = width * 0.75; + const bendY = height * 0.75; + const endX = width * 0.5; + const endY = height * 0.15; + + const pathData = `M${startX},${startY} L${bendX},${bendY} L${endX},${endY} L${endX},${height}`; + + const strokeAngle = Math.abs(Math.atan2(landingSvgHeight * 0.7, bendX)); + const stroke2Angle = Math.abs(Math.atan2(startY - bendY, startX - bendX)); + + const strokeWidth = 3 / Math.sin(strokeAngle); + const strokeWidth2 = strokeWidth * Math.sin(stroke2Angle); + + path.setAttribute("stroke-width", strokeWidth2 + "rem"); + path.setAttribute("d", pathData); + svg.style.setProperty("--path-length", path.getTotalLength()); + + // Make the about section the same width as the path + root.style.setProperty("--path-width", `${strokeWidth2}rem`); +} + +// Listen for page load and resize events +const fontObserver = new FontFaceObserver("EgyptianEF"); + +fontObserver + .load() + .then(function () { + adjustPath(); + }) + .catch(function (e) { + console.error("EgyptianEF font failed to load", e); }); +window.addEventListener("resize", adjustPath); + +const links = document.querySelectorAll("a"); + +links.forEach((link) => { + // Randomize the size of the background + const scale = 1 + Math.random() * 0.5; + link.style.backgroundSize = `${scale * 100}% ${scale * 100}%`; + + // Randomize the position of the background + const posX = Math.random() * 100; + const posY = Math.random() * 100; + link.style.backgroundPosition = `${posX}% ${posY}%`; +}); + +const video = document.getElementById("transition-video"); + +const videoObserver = new IntersectionObserver( + (entries, observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + video.play(); + } else { + video.pause(); + video.currentTime = 0; + } + }); + }, + { + threshold: 0.5, // Adjust this value based on how much of the video must be visible to trigger + }, +); + +// Start observing the video element +videoObserver.observe(video); + +// Listen for scroll events +const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + const aboutSection = document.querySelector(".about"); + + if (entry.isIntersecting) { + entry.target.classList.add("in-view"); + if (entry.target.classList.contains("projects")) { + aboutSection.classList.add("projects-in-view"); + } + } else { + if (entry.target.classList.contains("projects")) { + aboutSection.classList.remove("projects-in-view"); + } + } + }); + }, + { threshold: [0.1] }, +); + +observer.observe(document.querySelector(".landing")); +observer.observe(document.querySelector(".transition")); +observer.observe(document.querySelector(".about")); +observer.observe(document.querySelector(".projects")); + +/** + * Converts a string to title case, where the first character of each word is uppercase and the rest are lowercase. + * + * @param {string} s - The string to convert to title case. + * @return {string} - The string transformed to title case. + */ +function titleCase(s) { + return s + .toLowerCase() + .split(" ") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" "); } +/** + * Calculates the time elapsed since a given date and returns it in words. + * It returns the largest time unit (years, months, days, hours, minutes, seconds) that has a nonzero interval. + * + * @param {Date} date - The past date from which to calculate the time since. + * @return {string} - A human-readable string representing the time interval since the given date. + * For example, "5 years", "3 months", "2 days", "1 hour", "30 minutes", or "15 seconds". + */ function timeSince(date) { - const seconds = Math.floor((new Date() - date) / 1000); - - const timeUnits = [ - { name: 'year', seconds: 31536000 }, - { name: 'month', seconds: 2592000 }, - { name: 'day', seconds: 86400 }, - { name: 'hour', seconds: 3600 }, - { name: 'minute', seconds: 60 }, - { name: 'second', seconds: 1 } - ]; - - for (const unit of timeUnits) { - const interval = Math.floor(seconds / unit.seconds); - if (interval >= 1) { - return `${interval} ${unit.name}${interval > 1 ? 's' : ''}`; - } + const seconds = Math.floor((new Date() - date) / 1000); + + const timeUnits = [ + { name: "year", seconds: 31536000 }, + { name: "month", seconds: 2592000 }, + { name: "day", seconds: 86400 }, + { name: "hour", seconds: 3600 }, + { name: "minute", seconds: 60 }, + { name: "second", seconds: 1 }, + ]; + + for (const unit of timeUnits) { + const interval = Math.floor(seconds / unit.seconds); + if (interval >= 1) { + return `${interval} ${unit.name}${interval > 1 ? "s" : ""}`; } + } +} + +/** + * Fetches data from a specified URL using the Fetch API. + * @param {string} url - The URL to fetch data from. + * @return {Promise} - A promise that resolves to the JSON response. + * @throws {Error} - Throws an error if the HTTP request fails. + */ +async function fetchData(url) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.json(); } -scrollEvent = () => { - // Check if Lucas Oberwager should be stuck to top - if (window.pageYOffset >= sticky) { - header.classList.add("sticky"); - header.children[0].classList.remove("type"); - document.getElementsByClassName("works")[0].classList.remove("hideWorks"); - clearTimeout(worksTimeout); - clearTimeout(typeTimeout); - } else { - header.classList.remove("sticky"); + +/** + * Loads the currently reading books from Open Library and displays them. + */ +async function loadCurrentlyReading() { + try { + const data = await fetchData( + "https://openlibrary.org/people/lucasobe/books/currently-reading.json", + ); + document.getElementById("cur-book").innerHTML = data.reading_log_entries + .map( + (e) => + `${titleCase( + e.work.title, + )} by ${titleCase(e.work.author_names[0])}`, + ) + .join(" and "); + } catch (error) { + console.error("Failed to load currently reading books:", error); } +} - // Check if work link is in view - for (let i = 0; i < elements.length; i++) { - const element = elements[i]; - const positionFromTop = elements[i].getBoundingClientRect().top; +/** + * Loads the last updated repo from GitHub and displays it. + */ +async function loadLastUpdatedRepo() { + try { + const events = await fetchData("https://api.github.com/users/Watt3r/events?per_page=1"); + const repoName = events[0].repo.name; + const repoDetails = await fetchData(`https://api.github.com/repos/${repoName}`); + const homepage = repoDetails.homepage ? repoDetails.homepage : `https://github.com/${repoName}`; + document.getElementById("cur-repo").innerHTML = + `${repoName}, ${timeSince(new Date(events[0].created_at))} ago`; + } catch (error) { + console.error("Failed to load last updated repo:", error); + } +} - if (positionFromTop - windowHeight <= 0) { - element.classList.add("worksInView"); - element.classList.remove("hidden"); - } - if (positionFromTop - windowHeight > windowHeight / 6) { - element.classList.remove("worksInView"); - element.classList.add("hidden"); - } +/** + * Loads the most recent track from Last.fm and displays it. + */ +async function loadRecentTrack() { + try { + const data = await fetchData( + "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=lucasobe&api_key=1de06f62b7d8a0300bec8ed5b05598e8&format=json&limit=1", + ); + const track = data.recenttracks.track[0]; + document.getElementById("cur-song").innerHTML = + `${track.name} by ${track.artist["#text"]}`; + } catch (error) { + console.error("Failed to load recent track:", error); } -}; +} -window.onload = function () { - // Animate works links in - elements = document.querySelectorAll(".hidden"); - windowHeight = window.innerHeight; - scrollEvent(); - window.addEventListener("scroll", scrollEvent); - window.addEventListener("resize", function () { - windowHeight = window.innerHeight; - const container = document.getElementById("header").parentElement; - sticky = container.offsetTop; - scrollEvent(); - }); - typeTimeout = setTimeout(function () { - document.getElementsByClassName("type")[0].classList.remove("type"); - }, 9300); - // Update currently reading book - const xhr = new XMLHttpRequest(); - xhr.open("GET", "https://openlibrary.org/people/lucasobe/books/currently-reading.json", true); - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 400) { - const data = JSON.parse(xhr.responseText); - document.getElementById("curBook").innerHTML = data.reading_log_entries - .map(function (e) { - return `${titleCase( - e.work.title, - )} by ${titleCase(e.work.author_names[0])}`; - }) - .join(" and "); - } - }; - xhr.send(); - // Update last updated repo - const xhr2 = new XMLHttpRequest(); - xhr2.open("GET", "https://api.github.com/users/Watt3r/events?per_page=1", true); - xhr2.onload = function () { - if (xhr2.status >= 200 && xhr2.status < 400) { - const data = JSON.parse(xhr2.responseText); - document.getElementById("curRepo").innerHTML = `${data[0].repo.name}, ${timeSince(new Date(data[0].created_at))} ago`; - const xhr3 = new XMLHttpRequest(); - xhr3.open("GET", `https://api.github.com/repos/${data[0].repo.name}`, true); - xhr3.onload = function () { - const data2 = JSON.parse(xhr3.responseText); - if (data2.homepage) { - document.getElementById("curRepo").firstChild.setAttribute("href", data2.homepage); - } - }; - xhr3.send(); - } - }; - xhr2.send(); +// Call each function independently +window.onload = async () => { + loadCurrentlyReading(); + loadLastUpdatedRepo(); + loadRecentTrack(); }; diff --git a/manifest.json b/manifest.json deleted file mode 100644 index f90810e..0000000 --- a/manifest.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "theme_color": "#2b2b2b", - "background_color": "#f7f7f7", - "display": "fullscreen", - "scope": "/", - "start_url": "https://lucas.tools/", - "name": "Lucas Oberwager", - "short_name": "LO.", - "icons": [ - { - "src": "/icon-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icon-256x256.png", - "sizes": "256x256", - "type": "image/png" - }, - { - "src": "/icon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "/maskable_icon_x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "any maskable" - } - ] -} diff --git a/maskable_icon_x512.png b/maskable_icon_x512.png deleted file mode 100644 index 41fe484..0000000 Binary files a/maskable_icon_x512.png and /dev/null differ diff --git a/package.json b/package.json index 83d86fd..dc6a071 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "repository": "git@github.com:Watt3r/lucas.tools.git", "author": "Watt3r ", "license": "GPL-3.0-or-later", - "dependencies": { - "eslint": "^7.22.0", + "devDependencies": { + "eslint": "^8.56.0", "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^6.11.0", - "prettier": "^2.2.1" + "eslint-config-prettier": "^9.1.0", + "prettier": "^3.1.1" }, "scripts": { "prettier": "prettier --write ." diff --git a/video/1.mp4 b/video/1.mp4 new file mode 100644 index 0000000..4ce460e Binary files /dev/null and b/video/1.mp4 differ diff --git a/video/1.webm b/video/1.webm new file mode 100644 index 0000000..3524d32 Binary files /dev/null and b/video/1.webm differ diff --git a/yarn.lock b/yarn.lock index 819801c..3e0bbee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,67 +7,94 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - "@babel/highlight" "^7.10.4" + eslint-visitor-keys "^3.3.0" -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@babel/highlight@^7.10.4": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -acorn-jsx@^5.3.1: +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -77,51 +104,22 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== balanced-match@^1.0.0: version "1.0.2" @@ -141,15 +139,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -158,13 +147,6 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -172,11 +154,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -196,7 +173,7 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -debug@^4.0.1, debug@^4.1.1: +debug@^4.1.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -215,24 +192,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enquirer@^2.3.5: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -243,99 +202,78 @@ eslint-config-google@^0.14.0: resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.14.0.tgz#4f5f8759ba6e11b424294a219dbfa18c508bcc1a" integrity sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw== -eslint-config-prettier@^6.11.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + estraverse "^5.2.0" -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.22.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -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== + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esquery@^1.4.0: +esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -349,11 +287,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -379,6 +312,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fastq@^1.6.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" + integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== + dependencies: + reusify "^1.0.4" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -386,16 +326,24 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.7: +flatted@^3.2.9: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== @@ -405,22 +353,12 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: - is-glob "^4.0.1" + is-glob "^4.0.3" glob@^7.1.3: version "7.2.3" @@ -434,29 +372,29 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^13.6.0, globals@^13.9.0: - version "13.22.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" - integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -487,35 +425,29 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + argparse "^2.0.1" json-buffer@3.0.1: version "3.0.1" @@ -527,20 +459,15 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -552,24 +479,19 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.5, minimatch@^3.1.1, 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== @@ -593,7 +515,7 @@ once@^1.3.0: dependencies: wrappy "1" -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== @@ -605,6 +527,20 @@ optionator@^0.9.1: prelude-ls "^1.2.1" type-check "^0.4.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -612,6 +548,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +path-exists@^4.0.0: + version "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" @@ -627,36 +568,31 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^2.2.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prettier@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" + integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -664,12 +600,12 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -semver@^7.2.1: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - lru-cache "^6.0.0" + queue-microtask "^1.2.2" shebang-command@^2.0.0: version "2.0.0" @@ -683,48 +619,18 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -732,17 +638,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -table@^6.0.9: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -767,11 +662,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -784,7 +674,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==