pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

new search view

+1714 -392
+6 -1
package.json
··· 17 17 "react-dom": "^17.0.2", 18 18 "react-i18next": "^12.1.1", 19 19 "react-router-dom": "^5.2.0", 20 + "react-stickynode": "^4.1.0", 20 21 "srt-webvtt": "^2.0.0", 21 22 "unpacker": "^1.0.1" 22 23 }, ··· 47 48 "@types/react-dom": "^17.0.11", 48 49 "@types/react-router": "^5.1.18", 49 50 "@types/react-router-dom": "^5.3.3", 51 + "@types/react-stickynode": "^4.0.0", 50 52 "@typescript-eslint/eslint-plugin": "^5.13.0", 51 53 "@typescript-eslint/parser": "^5.13.0", 52 54 "@vitejs/plugin-react-swc": "^3.0.0", ··· 59 61 "eslint-plugin-jsx-a11y": "^6.5.1", 60 62 "eslint-plugin-react": "7.29.4", 61 63 "eslint-plugin-react-hooks": "4.3.0", 64 + "i": "^0.3.7", 65 + "npm": "^9.2.0", 62 66 "postcss": "^8.4.20", 63 67 "prettier": "^2.5.1", 64 68 "prettier-plugin-tailwindcss": "^0.1.7", 65 69 "tailwind-scrollbar": "^2.0.1", 66 70 "tailwindcss": "^3.2.4", 67 71 "typescript": "^4.6.4", 68 - "vite": "^4.0.1" 72 + "vite": "^4.0.1", 73 + "vite-plugin-package-version": "^1.0.2" 69 74 } 70 75 }
+3 -3
src/App.tsx src/setup/App.tsx
··· 2 2 import { MWMediaType } from "@/providers"; 3 3 import { BookmarkContextProvider } from "@/state/bookmark"; 4 4 import { WatchedContextProvider } from "@/state/watched"; 5 + 5 6 import { NotFoundPage } from "@/views/notfound/NotFoundView"; 6 - import "./index.css"; 7 - import { MediaView } from "./views/MediaView"; 8 - import { SearchView } from "./views/SearchView"; 7 + import { MediaView } from "@/views/MediaView"; 8 + import { SearchView } from "@/views/search/SearchView"; 9 9 10 10 function App() { 11 11 return (
+36 -30
src/components/SearchBar.tsx
··· 2 2 import { MWMediaType, MWQuery } from "@/providers"; 3 3 import { useTranslation } from "react-i18next"; 4 4 import { DropdownButton } from "./buttons/DropdownButton"; 5 - import { Icons } from "./Icon"; 5 + import { Icon, Icons } from "./Icon"; 6 6 import { TextInputControl } from "./text-inputs/TextInputControl"; 7 7 8 8 export interface SearchBarProps { ··· 37 37 } 38 38 39 39 return ( 40 - <div className="flex flex-col items-center gap-4 rounded-[28px] bg-denim-300 px-4 py-4 transition-colors focus-within:bg-denim-400 hover:bg-denim-400 sm:flex-row sm:py-2 sm:pl-8 sm:pr-2"> 40 + <div className="relative flex flex-col rounded-[28px] bg-denim-300 transition-colors focus-within:bg-denim-400 hover:bg-denim-400 sm:flex-row sm:items-center"> 41 + <div className="pointer-events-none absolute left-5 top-0 bottom-0 flex max-h-14 items-center"> 42 + <Icon icon={Icons.SEARCH} /> 43 + </div> 44 + 41 45 <TextInputControl 42 46 onUnFocus={props.onUnFocus} 43 47 onChange={(val) => setSearch(val)} 44 48 value={props.value.searchQuery} 45 - className="w-full flex-1 bg-transparent text-white placeholder-denim-700 focus:outline-none" 49 + className="w-full flex-1 bg-transparent px-4 py-4 pl-12 text-white placeholder-denim-700 focus:outline-none sm:py-4 sm:pr-2" 46 50 placeholder={props.placeholder} 47 51 /> 48 52 49 - <DropdownButton 50 - icon={Icons.SEARCH} 51 - open={dropdownOpen} 52 - setOpen={(val) => setDropdownOpen(val)} 53 - selectedItem={props.value.type} 54 - setSelectedItem={(val) => setType(val)} 55 - options={[ 56 - { 57 - id: MWMediaType.MOVIE, 58 - name: t('searchBar.movie'), 59 - icon: Icons.FILM, 60 - }, 61 - { 62 - id: MWMediaType.SERIES, 63 - name: t('searchBar.series'), 64 - icon: Icons.CLAPPER_BOARD, 65 - }, 66 - // { 67 - // id: MWMediaType.ANIME, 68 - // name: "Anime", 69 - // icon: Icons.DRAGON, 70 - // }, 71 - ]} 72 - onClick={() => setDropdownOpen((old) => !old)} 73 - > 74 - {props.buttonText || t('searchBar.search')} 75 - </DropdownButton> 53 + <div className="px-4 py-4 pt-0 sm:py-2 sm:px-2"> 54 + <DropdownButton 55 + icon={Icons.SEARCH} 56 + open={dropdownOpen} 57 + setOpen={(val) => setDropdownOpen(val)} 58 + selectedItem={props.value.type} 59 + setSelectedItem={(val) => setType(val)} 60 + options={[ 61 + { 62 + id: MWMediaType.MOVIE, 63 + name: t("searchBar.movie"), 64 + icon: Icons.FILM, 65 + }, 66 + { 67 + id: MWMediaType.SERIES, 68 + name: t("searchBar.series"), 69 + icon: Icons.CLAPPER_BOARD, 70 + }, 71 + // { 72 + // id: MWMediaType.ANIME, 73 + // name: "Anime", 74 + // icon: Icons.DRAGON, 75 + // }, 76 + ]} 77 + onClick={() => setDropdownOpen((old) => !old)} 78 + > 79 + {props.buttonText || t("searchBar.search")} 80 + </DropdownButton> 81 + </div> 76 82 </div> 77 83 ); 78 84 }
+41 -31
src/components/buttons/DropdownButton.tsx
··· 6 6 } from "react"; 7 7 import { Icon, Icons } from "@/components/Icon"; 8 8 9 - import { Backdrop, useBackdrop } from "@/components/layout/Backdrop"; 9 + import { 10 + Backdrop, 11 + BackdropContainer, 12 + useBackdrop, 13 + } from "@/components/layout/Backdrop"; 10 14 import { ButtonControlProps, ButtonControl } from "./ButtonControl"; 11 15 12 16 export interface OptionItem { ··· 56 60 ); 57 61 58 62 useEffect(() => { 59 - let id: NodeJS.Timeout; 63 + let id: ReturnType<typeof setTimeout>; 60 64 61 65 if (props.open) { 62 66 setDelayedSelectedId(props.selectedItem); ··· 93 97 className="relative w-full sm:w-auto" 94 98 {...highlightedProps} 95 99 > 96 - <ButtonControl 97 - {...props} 98 - className="sm:justify-left relative z-20 flex h-10 w-full items-center justify-center space-x-2 rounded-[20px] bg-bink-200 px-4 py-2 text-white hover:bg-bink-300" 99 - > 100 - <Icon icon={selectedItem.icon} /> 101 - <span className="flex-1">{selectedItem.name}</span> 102 - <Icon 103 - icon={Icons.CHEVRON_DOWN} 104 - className={`transition-transform ${props.open ? "rotate-180" : ""}`} 105 - /> 106 - </ButtonControl> 107 - <div 108 - className={`absolute top-0 z-10 w-full rounded-[20px] bg-denim-300 pt-[40px] transition-all duration-200 ${ 109 - props.open 110 - ? "block max-h-60 opacity-100" 111 - : "invisible max-h-0 opacity-0" 112 - }`} 100 + <BackdropContainer 101 + onClick={() => props.setOpen(false)} 102 + {...backdropProps} 113 103 > 114 - {props.options 115 - .filter((opt) => opt.id !== delayedSelectedId) 116 - .map((opt) => ( 117 - <Option 118 - option={opt} 119 - key={opt.id} 120 - onClick={(e) => onOptionClick(e, opt)} 121 - tabIndex={props.open ? 0 : undefined} 122 - /> 123 - ))} 124 - </div> 104 + <ButtonControl 105 + {...props} 106 + className="sm:justify-left relative z-20 flex h-10 w-full items-center justify-center space-x-2 rounded-[20px] bg-bink-400 px-4 py-2 text-white hover:bg-bink-300" 107 + > 108 + <Icon icon={selectedItem.icon} /> 109 + <span className="flex-1">{selectedItem.name}</span> 110 + <Icon 111 + icon={Icons.CHEVRON_DOWN} 112 + className={`transition-transform ${ 113 + props.open ? "rotate-180" : "" 114 + }`} 115 + /> 116 + </ButtonControl> 117 + <div 118 + className={`absolute top-0 z-10 w-full rounded-[20px] bg-denim-300 pt-[40px] transition-all duration-200 ${ 119 + props.open 120 + ? "block max-h-60 opacity-100" 121 + : "invisible max-h-0 opacity-0" 122 + }`} 123 + > 124 + {props.options 125 + .filter((opt) => opt.id !== delayedSelectedId) 126 + .map((opt) => ( 127 + <Option 128 + option={opt} 129 + key={opt.id} 130 + onClick={(e) => onOptionClick(e, opt)} 131 + tabIndex={props.open ? 0 : undefined} 132 + /> 133 + ))} 134 + </div> 135 + </BackdropContainer> 125 136 </div> 126 - <Backdrop onClick={() => props.setOpen(false)} {...backdropProps} /> 127 137 </div> 128 138 ); 129 139 });
+47 -2
src/components/layout/Backdrop.tsx
··· 1 - import { useEffect, useState } from "react"; 1 + import React, { createRef, useEffect, useState } from "react"; 2 2 import { useFade } from "@/hooks/useFade"; 3 + import { createPortal } from "react-dom"; 3 4 4 5 interface BackdropProps { 5 6 onClick?: (e: MouseEvent) => void; ··· 58 59 59 60 return ( 60 61 <div 61 - className={`fixed top-0 left-0 right-0 z-[999] h-screen bg-black bg-opacity-50 opacity-100 transition-opacity ${ 62 + className={`fixed left-0 right-0 top-0 h-screen w-screen bg-black bg-opacity-50 opacity-100 transition-opacity ${ 62 63 !isVisible ? "opacity-0" : "" 63 64 }`} 64 65 {...fadeProps} ··· 66 67 /> 67 68 ); 68 69 } 70 + 71 + export function BackdropContainer( 72 + props: { 73 + children: React.ReactNode; 74 + } & BackdropProps 75 + ) { 76 + const root = createRef<HTMLDivElement>(); 77 + const copy = createRef<HTMLDivElement>(); 78 + 79 + useEffect(() => { 80 + let frame = -1; 81 + function poll() { 82 + if (root.current && copy.current) { 83 + const rect = root.current.getBoundingClientRect(); 84 + copy.current.style.top = `${rect.top}px`; 85 + copy.current.style.left = `${rect.left}px`; 86 + copy.current.style.width = `${rect.width}px`; 87 + copy.current.style.height = `${rect.height}px`; 88 + } 89 + frame = window.requestAnimationFrame(poll); 90 + } 91 + poll(); 92 + return () => { 93 + window.cancelAnimationFrame(frame); 94 + }; 95 + // we dont want this to run only on mount, dont care about ref updates 96 + // eslint-disable-next-line react-hooks/exhaustive-deps 97 + }, [root, copy]); 98 + 99 + return ( 100 + <div ref={root}> 101 + {createPortal( 102 + <div className="absolute top-0 left-0 z-[999]"> 103 + <Backdrop active={props.active} {...props} /> 104 + <div ref={copy} className="absolute"> 105 + {props.children} 106 + </div> 107 + </div>, 108 + document.body 109 + )} 110 + <div className="invisible">{props.children}</div> 111 + </div> 112 + ); 113 + }
+1 -1
src/components/layout/ErrorBoundary.tsx
··· 3 3 import { Icons } from "@/components/Icon"; 4 4 import { Link } from "@/components/text/Link"; 5 5 import { Title } from "@/components/text/Title"; 6 - import { conf } from "@/config"; 6 + import { conf } from "@/setup/config"; 7 7 8 8 interface ErrorBoundaryState { 9 9 hasError: boolean;
+12 -4
src/components/layout/Navigation.tsx
··· 2 2 import { Link } from "react-router-dom"; 3 3 import { IconPatch } from "@/components/buttons/IconPatch"; 4 4 import { Icons } from "@/components/Icon"; 5 - import { conf } from "@/config"; 5 + import { conf } from "@/setup/config"; 6 6 import { BrandPill } from "./BrandPill"; 7 7 8 8 export interface NavigationProps { 9 9 children?: ReactNode; 10 + bg?: boolean; 10 11 } 11 12 12 13 export function Navigation(props: NavigationProps) { 13 14 return ( 14 - <div className="absolute left-0 right-0 top-0 flex min-h-[88px] items-center justify-between py-5 px-7"> 15 - <div className="flex w-full items-center justify-center sm:w-fit"> 15 + <div className="fixed left-0 right-0 top-0 z-10 flex min-h-[88px] items-center justify-between py-5 px-7"> 16 + <div 17 + className={`${ 18 + props.bg ? "opacity-100" : "opacity-0" 19 + } absolute inset-0 block bg-denim-100 transition-opacity duration-300`} 20 + > 21 + <div className="pointer-events-none absolute -bottom-24 h-24 w-full bg-gradient-to-b from-denim-100 to-transparent" /> 22 + </div> 23 + <div className="relative flex w-full items-center justify-center sm:w-fit"> 16 24 <div className="mr-auto sm:mr-6"> 17 25 <Link to="/"> 18 26 <BrandPill clickable /> ··· 23 31 <div 24 32 className={`${ 25 33 props.children ? "hidden sm:flex" : "flex" 26 - } flex-row gap-4`} 34 + } relative flex-row gap-4`} 27 35 > 28 36 <a 29 37 href={conf().DISCORD_LINK}
-10
src/components/layout/SectionHeading.tsx
··· 1 1 import { ReactNode } from "react"; 2 2 import { Icon, Icons } from "@/components/Icon"; 3 - import { ArrowLink } from "@/components/text/ArrowLink"; 4 3 5 4 interface SectionHeadingProps { 6 5 icon?: Icons; 7 6 title: string; 8 7 children?: ReactNode; 9 - linkText?: string; 10 - onClick?: () => void; 11 8 className?: string; 12 9 } 13 10 ··· 23 20 ) : null} 24 21 {props.title} 25 22 </p> 26 - {props.linkText ? ( 27 - <ArrowLink 28 - linkText={props.linkText} 29 - direction="left" 30 - onClick={props.onClick} 31 - /> 32 - ) : null} 33 23 </div> 34 24 {props.children} 35 25 </div>
+3 -1
src/components/layout/ThinContainer.tsx
··· 8 8 export function ThinContainer(props: ThinContainerProps) { 9 9 return ( 10 10 <div 11 - className={`max-w-[600px] mx-auto px-2 sm:px-0 ${props.classNames || ""}`} 11 + className={`mx-auto w-[600px] max-w-full px-2 sm:px-0 ${ 12 + props.classNames || "" 13 + }`} 12 14 > 13 15 {props.children} 14 16 </div>
+5 -1
src/components/text/Title.tsx
··· 3 3 } 4 4 5 5 export function Title(props: TitleProps) { 6 - return <h1 className="text-2xl sm:text-3xl md:text-4xl font-bold text-white">{props.children}</h1>; 6 + return ( 7 + <h1 className="mx-auto max-w-xs text-2xl font-bold text-white sm:text-3xl md:text-4xl"> 8 + {props.children} 9 + </h1> 10 + ); 7 11 }
+1 -1
src/config.ts src/setup/config.ts
··· 1 - import { APP_VERSION, GITHUB_LINK, DISCORD_LINK } from "@/constants"; 1 + import { APP_VERSION, GITHUB_LINK, DISCORD_LINK } from "./constants"; 2 2 3 3 interface Config { 4 4 APP_VERSION: string;
-3
src/constants.ts
··· 1 - export const DISCORD_LINK = "https://discord.gg/Jhqt4Xzpfb"; 2 - export const GITHUB_LINK = "https://github.com/JamesHawkinss/movie-web"; 3 - export const APP_VERSION = "2.1.0";
src/i18n.ts src/setup/i18n.ts
+2 -4
src/index.css src/setup/index.css
··· 4 4 5 5 html, 6 6 body { 7 - @apply bg-denim-100 text-denim-700 font-open-sans min-h-screen; 7 + @apply bg-denim-100 text-denim-700 font-open-sans min-h-screen overflow-x-hidden; 8 8 } 9 9 10 10 #root { 11 - display: flex; 12 - justify-content: flex-start; 13 - align-items: flex-start; 11 + padding: 0.05px; 14 12 min-height: 100vh; 15 13 width: 100%; 16 14 }
+5 -4
src/index.tsx
··· 1 1 import React, { Suspense } from "react"; 2 2 import ReactDOM from "react-dom"; 3 3 import { HashRouter } from "react-router-dom"; 4 - import "./index.css"; 5 4 import { ErrorBoundary } from "@/components/layout/ErrorBoundary"; 6 - import App from "./App"; 7 - import "./i18n"; 8 - import { conf } from "./config"; 5 + import { conf } from "@/setup/config"; 6 + 7 + import App from "@/setup/App"; 8 + import "@/setup/i18n"; 9 + import "@/setup/index.css"; 9 10 10 11 // initialize 11 12 const key =
src/mw_constants.ts src/setup/constants.ts
+1 -1
src/providers/list/flixhq/index.ts
··· 7 7 MWProviderMediaResult, 8 8 } from "@/providers/types"; 9 9 10 - import { conf } from "@/config"; 10 + import { conf } from "@/setup/config"; 11 11 12 12 export const flixhqProvider: MWMediaProvider = { 13 13 id: "flixhq",
+1 -1
src/providers/list/gdriveplayer/index.ts
··· 9 9 MWProviderMediaResult, 10 10 } from "@/providers/types"; 11 11 12 - import { conf } from "@/config"; 12 + import { conf } from "@/setup/config"; 13 13 14 14 const format = { 15 15 stringify: (cipher: any) => {
+1 -1
src/providers/list/gomostream/index.ts
··· 9 9 MWProviderMediaResult, 10 10 } from "@/providers/types"; 11 11 12 - import { conf } from "@/config"; 12 + import { conf } from "@/setup/config"; 13 13 14 14 export const gomostreamScraper: MWMediaProvider = { 15 15 id: "gomostream",
+1 -1
src/providers/list/superstream/index.ts
··· 4 4 import { customAlphabet } from "nanoid"; 5 5 import toWebVTT from "srt-webvtt"; 6 6 import CryptoJS from "crypto-js"; 7 - import { conf } from "@/config"; 7 + import { conf } from "@/setup/config"; 8 8 import { 9 9 MWMediaProvider, 10 10 MWMediaType,
+1 -1
src/providers/list/theflix/index.ts
··· 15 15 } from "@/providers/list/theflix/search"; 16 16 17 17 import { getDataFromPortableSearch } from "@/providers/list/theflix/portableToMedia"; 18 - import { conf } from "@/config"; 18 + import { conf } from "@/setup/config"; 19 19 20 20 export const theFlixScraper: MWMediaProvider = { 21 21 id: "theflix",
+1 -1
src/providers/list/theflix/portableToMedia.ts
··· 1 - import { conf } from "@/config"; 1 + import { conf } from "@/setup/config"; 2 2 import { MWMediaType, MWPortableMedia } from "@/providers/types"; 3 3 4 4 const getTheFlixUrl = (media: MWPortableMedia, params?: URLSearchParams) => {
+1 -1
src/providers/list/theflix/search.ts
··· 1 - import { conf } from "@/config"; 1 + import { conf } from "@/setup/config"; 2 2 import { MWMediaType, MWProviderMediaResult, MWQuery } from "@/providers"; 3 3 4 4 const getTheFlixUrl = (type: "tv-shows" | "movies", params: URLSearchParams) =>
+1 -1
src/providers/list/xemovie/index.ts
··· 8 8 MWMediaCaption, 9 9 } from "@/providers/types"; 10 10 11 - import { conf } from "@/config"; 11 + import { conf } from "@/setup/config"; 12 12 13 13 export const xemovieScraper: MWMediaProvider = { 14 14 id: "xemovie",
+31 -29
src/utils/cache.ts
··· 1 1 export class SimpleCache<Key, Value> { 2 2 protected readonly INTERVAL_MS = 2 * 60 * 1000; // 2 minutes 3 3 4 - protected _interval: NodeJS.Timer | null = null; 4 + protected _interval: ReturnType<typeof setTimeout> | null = null; 5 5 6 6 protected _compare: ((a: Key, b: Key) => boolean) | null = null; 7 7 8 8 protected _storage: { key: Key; value: Value; expiry: Date }[] = []; 9 9 10 10 /* 11 - ** initialize store, will start the interval 12 - */ 11 + ** initialize store, will start the interval 12 + */ 13 13 public initialize(): void { 14 14 if (this._interval) throw new Error("cache is already initialized"); 15 15 this._interval = setInterval(() => { ··· 22 22 } 23 23 24 24 /* 25 - ** destroy cache instance, its not safe to use the instance after calling this 26 - */ 25 + ** destroy cache instance, its not safe to use the instance after calling this 26 + */ 27 27 public destroy(): void { 28 - if (this._interval) 29 - clearInterval(this._interval); 28 + if (this._interval) clearInterval(this._interval); 30 29 this.clear(); 31 30 } 32 - 31 + 33 32 /* 34 - ** Set compare function, function must return true if A & B are equal 35 - */ 33 + ** Set compare function, function must return true if A & B are equal 34 + */ 36 35 public setCompare(compare: (a: Key, b: Key) => boolean): void { 37 36 this._compare = compare; 38 37 } 39 38 40 39 /* 41 - ** check if cache contains the item 42 - */ 40 + ** check if cache contains the item 41 + */ 43 42 public has(key: Key): boolean { 44 43 return !!this.get(key); 45 44 } 46 - 45 + 47 46 /* 48 - ** get item from cache 49 - */ 47 + ** get item from cache 48 + */ 50 49 public get(key: Key): Value | undefined { 51 50 if (!this._compare) throw new Error("Compare function not set"); 52 - const foundValue = this._storage.find(item => this._compare && this._compare(item.key, key)); 53 - if (!foundValue) 54 - return undefined; 51 + const foundValue = this._storage.find( 52 + (item) => this._compare && this._compare(item.key, key) 53 + ); 54 + if (!foundValue) return undefined; 55 55 return foundValue.value; 56 56 } 57 - 57 + 58 58 /* 59 - ** set item from cache, if it already exists, it will overwrite 60 - */ 59 + ** set item from cache, if it already exists, it will overwrite 60 + */ 61 61 public set(key: Key, value: Value, expirySeconds: number): void { 62 62 if (!this._compare) throw new Error("Compare function not set"); 63 - const foundValue = this._storage.find(item => this._compare && this._compare(item.key, key)); 64 - const expiry = new Date((new Date().getTime()) + (expirySeconds * 1000)); 63 + const foundValue = this._storage.find( 64 + (item) => this._compare && this._compare(item.key, key) 65 + ); 66 + const expiry = new Date(new Date().getTime() + expirySeconds * 1000); 65 67 66 68 // overwrite old value 67 69 if (foundValue) { ··· 76 78 key, 77 79 value, 78 80 expiry, 79 - }) 81 + }); 80 82 } 81 83 82 84 /* 83 - ** remove item from cache 84 - */ 85 + ** remove item from cache 86 + */ 85 87 public remove(key: Key): void { 86 88 if (!this._compare) throw new Error("Compare function not set"); 87 89 this._storage.filter((val) => { ··· 89 91 return true; 90 92 }); 91 93 } 92 - 94 + 93 95 /* 94 - ** clear entire cache storage 95 - */ 96 + ** clear entire cache storage 97 + */ 96 98 public clear(): void { 97 99 this._storage = []; 98 100 }
+10 -10
src/utils/storage.ts
··· 157 157 version, // version number 158 158 update: migrate 159 159 ? (data: any) => { 160 - // update function, and increment version 161 - const newData = migrate(data); 162 - newData["--version"] = version; // eslint-disable-line no-param-reassign 163 - return newData; 164 - } 160 + // update function, and increment version 161 + const newData = migrate(data); 162 + newData["--version"] = version; // eslint-disable-line no-param-reassign 163 + return newData; 164 + } 165 165 : undefined, 166 166 init: create 167 167 ? () => { 168 - // return an initial object 169 - const data = create(); 170 - data["--version"] = version; 171 - return data; 172 - } 168 + // return an initial object 169 + const data = create(); 170 + data["--version"] = version; 171 + return data; 172 + } 173 173 : undefined, 174 174 }; 175 175 return this;
+2 -2
src/views/MediaView.tsx
··· 120 120 {props.error ? ( 121 121 <div className="flex items-center space-x-3"> 122 122 <IconPatch icon={Icons.WARNING} className="text-red-400" /> 123 - <p>{t('media.invalidUrl')}</p> 123 + <p>{t("media.invalidUrl")}</p> 124 124 </div> 125 125 ) : ( 126 126 <LoadingSeasons /> ··· 200 200 : reactHistory.push("/") 201 201 } 202 202 direction="left" 203 - linkText={t('media.arrowText')} 203 + linkText={t("media.arrowText")} 204 204 /> 205 205 </Navigation> 206 206 <NotFoundChecks portable={mediaPortable}>
-224
src/views/SearchView.tsx
··· 1 - import { useEffect, useMemo, useState } from "react"; 2 - import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; 3 - import { SearchBarInput } from "@/components/SearchBar"; 4 - import { MWMassProviderOutput, MWQuery, SearchProviders } from "@/providers"; 5 - import { ThinContainer } from "@/components/layout/ThinContainer"; 6 - import { SectionHeading } from "@/components/layout/SectionHeading"; 7 - import { Icons } from "@/components/Icon"; 8 - import { Loading } from "@/components/layout/Loading"; 9 - import { Tagline } from "@/components/text/Tagline"; 10 - import { Title } from "@/components/text/Title"; 11 - import { useDebounce } from "@/hooks/useDebounce"; 12 - import { useLoading } from "@/hooks/useLoading"; 13 - import { IconPatch } from "@/components/buttons/IconPatch"; 14 - import { Navigation } from "@/components/layout/Navigation"; 15 - import { useSearchQuery } from "@/hooks/useSearchQuery"; 16 - import { useWatchedContext } from "@/state/watched/context"; 17 - import { 18 - getIfBookmarkedFromPortable, 19 - useBookmarkContext, 20 - } from "@/state/bookmark/context"; 21 - import { useTranslation } from "react-i18next"; 22 - 23 - function SearchLoading() { 24 - const { t } = useTranslation(); 25 - return <Loading className="my-24" text={t('search.loading') || "Fetching your favourite shows..."} />; 26 - } 27 - 28 - function SearchSuffix(props: { 29 - fails: number; 30 - total: number; 31 - resultsSize: number; 32 - }) { 33 - const { t } = useTranslation(); 34 - 35 - const allFailed: boolean = props.fails === props.total; 36 - const icon: Icons = allFailed ? Icons.WARNING : Icons.EYE_SLASH; 37 - 38 - return ( 39 - <div className="my-24 flex flex-col items-center justify-center space-y-3 text-center"> 40 - <IconPatch 41 - icon={icon} 42 - className={`text-xl ${allFailed ? "text-red-400" : "text-bink-600"}`} 43 - /> 44 - 45 - {/* standard suffix */} 46 - {!allFailed ? ( 47 - <div> 48 - {props.fails > 0 ? ( 49 - <p className="text-red-400"> 50 - {t('search.providersFailed', { fails: props.fails, total: props.total })} 51 - </p> 52 - ) : null} 53 - {props.resultsSize > 0 ? ( 54 - <p>{t('search.allResults')}</p> 55 - ) : ( 56 - <p>{t('search.noResults')}</p> 57 - )} 58 - </div> 59 - ) : null} 60 - 61 - {/* Error result */} 62 - {allFailed ? ( 63 - <div> 64 - <p>{t('search.allFailed')}</p> 65 - </div> 66 - ) : null} 67 - </div> 68 - ); 69 - } 70 - 71 - function SearchResultsView({ 72 - searchQuery, 73 - clear, 74 - }: { 75 - searchQuery: MWQuery; 76 - clear: () => void; 77 - }) { 78 - const { t } = useTranslation(); 79 - 80 - const [results, setResults] = useState<MWMassProviderOutput | undefined>(); 81 - const [runSearchQuery, loading, error, success] = useLoading( 82 - (query: MWQuery) => SearchProviders(query) 83 - ); 84 - 85 - useEffect(() => { 86 - async function runSearch(query: MWQuery) { 87 - const searchResults = await runSearchQuery(query); 88 - if (!searchResults) return; 89 - setResults(searchResults); 90 - } 91 - 92 - if (searchQuery.searchQuery !== "") runSearch(searchQuery); 93 - }, [searchQuery, runSearchQuery]); 94 - 95 - return ( 96 - <div> 97 - {/* results */} 98 - {success && results?.results.length ? ( 99 - <SectionHeading 100 - title={t('search.headingTitle') || "Search results"} 101 - icon={Icons.SEARCH} 102 - linkText={t('search.headingLink') || "Back to home"} 103 - onClick={() => clear()} 104 - > 105 - {results.results.map((v) => ( 106 - <WatchedMediaCard 107 - key={[v.mediaId, v.providerId].join("|")} 108 - media={v} 109 - /> 110 - ))} 111 - </SectionHeading> 112 - ) : null} 113 - 114 - {/* search suffix */} 115 - {success && results ? ( 116 - <SearchSuffix 117 - resultsSize={results.results.length} 118 - fails={results.stats.failed} 119 - total={results.stats.total} 120 - /> 121 - ) : null} 122 - 123 - {/* error */} 124 - {error ? <SearchSuffix resultsSize={0} fails={1} total={1} /> : null} 125 - 126 - {/* Loading icon */} 127 - {loading ? <SearchLoading /> : null} 128 - </div> 129 - ); 130 - } 131 - 132 - function ExtraItems() { 133 - const { t } = useTranslation(); 134 - 135 - const { getFilteredBookmarks } = useBookmarkContext(); 136 - const { getFilteredWatched } = useWatchedContext(); 137 - 138 - const bookmarks = getFilteredBookmarks(); 139 - 140 - const watchedItems = getFilteredWatched().filter( 141 - (v) => !getIfBookmarkedFromPortable(bookmarks, v) 142 - ); 143 - 144 - if (watchedItems.length === 0 && bookmarks.length === 0) return null; 145 - 146 - return ( 147 - <div className="mb-16 mt-32"> 148 - {bookmarks.length > 0 ? ( 149 - <SectionHeading title={t('search.bookmarks') || "Bookmarks"} icon={Icons.BOOKMARK}> 150 - {bookmarks.map((v) => ( 151 - <WatchedMediaCard 152 - key={[v.mediaId, v.providerId].join("|")} 153 - media={v} 154 - /> 155 - ))} 156 - </SectionHeading> 157 - ) : null} 158 - {watchedItems.length > 0 ? ( 159 - <SectionHeading title={t('search.continueWatching') || "Continue Watching"} icon={Icons.CLOCK}> 160 - {watchedItems.map((v) => ( 161 - <WatchedMediaCard 162 - key={[v.mediaId, v.providerId].join("|")} 163 - media={v} 164 - series 165 - /> 166 - ))} 167 - </SectionHeading> 168 - ) : null} 169 - </div> 170 - ); 171 - } 172 - 173 - export function SearchView() { 174 - const { t } = useTranslation(); 175 - 176 - const [searching, setSearching] = useState<boolean>(false); 177 - const [loading, setLoading] = useState<boolean>(false); 178 - const [search, setSearch, setSearchUnFocus] = useSearchQuery(); 179 - 180 - const debouncedSearch = useDebounce<MWQuery>(search, 2000); 181 - useEffect(() => { 182 - setSearching(search.searchQuery !== ""); 183 - setLoading(search.searchQuery !== ""); 184 - }, [search]); 185 - useEffect(() => { 186 - setLoading(false); 187 - }, [debouncedSearch]); 188 - 189 - const resultView = useMemo(() => { 190 - if (loading) return <SearchLoading />; 191 - if (searching) 192 - return ( 193 - <SearchResultsView 194 - searchQuery={debouncedSearch} 195 - clear={() => setSearch({ searchQuery: "" }, true)} 196 - /> 197 - ); 198 - return <ExtraItems />; 199 - }, [loading, searching, debouncedSearch, setSearch]); 200 - 201 - return ( 202 - <> 203 - <Navigation /> 204 - <ThinContainer> 205 - {/* input section */} 206 - <div className="mt-44 space-y-16 text-center"> 207 - <div className="space-y-4"> 208 - <Tagline>{t('search.tagline')}</Tagline> 209 - <Title>{t('search.title')}</Title> 210 - </div> 211 - <SearchBarInput 212 - onChange={setSearch} 213 - value={search} 214 - onUnFocus={setSearchUnFocus} 215 - placeholder={t('search.placeholder') || "What do you want to watch?"} 216 - /> 217 - </div> 218 - 219 - {/* results view */} 220 - {resultView} 221 - </ThinContainer> 222 - </> 223 - ); 224 - }
+9 -13
src/views/notfound/NotFoundView.tsx
··· 26 26 icon={Icons.EYE_SLASH} 27 27 className="mb-6 text-xl text-bink-600" 28 28 /> 29 - <Title>{t('notFound.media.title')}</Title> 30 - <p className="mt-5 mb-12 max-w-sm"> 31 - {t('notFound.media.description')} 32 - </p> 33 - <ArrowLink to="/" linkText={t('notFound.backArrow')} /> 29 + <Title>{t("notFound.media.title")}</Title> 30 + <p className="mt-5 mb-12 max-w-sm">{t("notFound.media.description")}</p> 31 + <ArrowLink to="/" linkText={t("notFound.backArrow")} /> 34 32 </div> 35 33 ); 36 34 } ··· 44 42 icon={Icons.EYE_SLASH} 45 43 className="mb-6 text-xl text-bink-600" 46 44 /> 47 - <Title>{t('notFound.provider.title')}</Title> 45 + <Title>{t("notFound.provider.title")}</Title> 48 46 <p className="mt-5 mb-12 max-w-sm"> 49 - {t('notFound.provider.description')} 47 + {t("notFound.provider.description")} 50 48 </p> 51 - <ArrowLink to="/" linkText={t('notFound.backArrow')} /> 49 + <ArrowLink to="/" linkText={t("notFound.backArrow")} /> 52 50 </div> 53 51 ); 54 52 } ··· 62 60 icon={Icons.EYE_SLASH} 63 61 className="mb-6 text-xl text-bink-600" 64 62 /> 65 - <Title>{t('notFound.page.title')}</Title> 66 - <p className="mt-5 mb-12 max-w-sm"> 67 - {t('notFound.page.description')} 68 - </p> 69 - <ArrowLink to="/" linkText={t('notFound.backArrow')} /> 63 + <Title>{t("notFound.page.title")}</Title> 64 + <p className="mt-5 mb-12 max-w-sm">{t("notFound.page.description")}</p> 65 + <ArrowLink to="/" linkText={t("notFound.backArrow")} /> 70 66 </NotFoundWrapper> 71 67 ); 72 68 }
+65
src/views/search/HomeView.tsx
··· 1 + import { Icons } from "@/components/Icon"; 2 + import { SectionHeading } from "@/components/layout/SectionHeading"; 3 + import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; 4 + import { 5 + getIfBookmarkedFromPortable, 6 + useBookmarkContext, 7 + } from "@/state/bookmark"; 8 + import { useWatchedContext } from "@/state/watched"; 9 + import { useTranslation } from "react-i18next"; 10 + 11 + function Bookmarks() { 12 + const { t } = useTranslation(); 13 + const { getFilteredBookmarks } = useBookmarkContext(); 14 + const bookmarks = getFilteredBookmarks(); 15 + 16 + if (bookmarks.length === 0) return null; 17 + 18 + return ( 19 + <SectionHeading 20 + title={t("search.bookmarks") || "Bookmarks"} 21 + icon={Icons.BOOKMARK} 22 + > 23 + {bookmarks.map((v) => ( 24 + <WatchedMediaCard key={[v.mediaId, v.providerId].join("|")} media={v} /> 25 + ))} 26 + </SectionHeading> 27 + ); 28 + } 29 + 30 + function Watched() { 31 + const { t } = useTranslation(); 32 + const { getFilteredBookmarks } = useBookmarkContext(); 33 + const { getFilteredWatched } = useWatchedContext(); 34 + 35 + const bookmarks = getFilteredBookmarks(); 36 + const watchedItems = getFilteredWatched().filter( 37 + (v) => !getIfBookmarkedFromPortable(bookmarks, v) 38 + ); 39 + 40 + if (watchedItems.length === 0) return null; 41 + 42 + return ( 43 + <SectionHeading 44 + title={t("search.continueWatching") || "Continue Watching"} 45 + icon={Icons.CLOCK} 46 + > 47 + {watchedItems.map((v) => ( 48 + <WatchedMediaCard 49 + key={[v.mediaId, v.providerId].join("|")} 50 + media={v} 51 + series 52 + /> 53 + ))} 54 + </SectionHeading> 55 + ); 56 + } 57 + 58 + export function HomeView() { 59 + return ( 60 + <div className="mb-16 mt-32"> 61 + <Bookmarks /> 62 + <Watched /> 63 + </div> 64 + ); 65 + }
+12
src/views/search/SearchLoadingView.tsx
··· 1 + import { Loading } from "@/components/layout/Loading"; 2 + import { useTranslation } from "react-i18next"; 3 + 4 + export function SearchLoadingView() { 5 + const { t } = useTranslation(); 6 + return ( 7 + <Loading 8 + className="my-24" 9 + text={t("search.loading") || "Fetching your favourite shows..."} 10 + /> 11 + ); 12 + }
+32
src/views/search/SearchResultsPartial.tsx
··· 1 + import { useDebounce } from "@/hooks/useDebounce"; 2 + import { MWQuery } from "@/providers"; 3 + import { useEffect, useMemo, useState } from "react"; 4 + import { HomeView } from "./HomeView"; 5 + import { SearchLoadingView } from "./SearchLoadingView"; 6 + import { SearchResultsView } from "./SearchResultsView"; 7 + 8 + interface SearchResultsPartialProps { 9 + search: MWQuery; 10 + } 11 + 12 + export function SearchResultsPartial({ search }: SearchResultsPartialProps) { 13 + const [searching, setSearching] = useState<boolean>(false); 14 + const [loading, setLoading] = useState<boolean>(false); 15 + 16 + const debouncedSearch = useDebounce<MWQuery>(search, 2000); 17 + useEffect(() => { 18 + setSearching(search.searchQuery !== ""); 19 + setLoading(search.searchQuery !== ""); 20 + }, [search]); 21 + useEffect(() => { 22 + setLoading(false); 23 + }, [debouncedSearch]); 24 + 25 + const resultView = useMemo(() => { 26 + if (loading) return <SearchLoadingView />; 27 + if (searching) return <SearchResultsView searchQuery={debouncedSearch} />; 28 + return <HomeView />; 29 + }, [loading, searching, debouncedSearch]); 30 + 31 + return resultView; 32 + }
+102
src/views/search/SearchResultsView.tsx
··· 1 + import { IconPatch } from "@/components/buttons/IconPatch"; 2 + import { Icons } from "@/components/Icon"; 3 + import { SectionHeading } from "@/components/layout/SectionHeading"; 4 + import { WatchedMediaCard } from "@/components/media/WatchedMediaCard"; 5 + import { useLoading } from "@/hooks/useLoading"; 6 + import { MWMassProviderOutput, MWQuery, SearchProviders } from "@/providers"; 7 + import { useEffect, useState } from "react"; 8 + import { useTranslation } from "react-i18next"; 9 + import { SearchLoadingView } from "./SearchLoadingView"; 10 + 11 + function SearchSuffix(props: { 12 + fails: number; 13 + total: number; 14 + resultsSize: number; 15 + }) { 16 + const { t } = useTranslation(); 17 + 18 + const allFailed: boolean = props.fails === props.total; 19 + const icon: Icons = allFailed ? Icons.WARNING : Icons.EYE_SLASH; 20 + 21 + return ( 22 + <div className="my-24 flex flex-col items-center justify-center space-y-3 text-center"> 23 + <IconPatch 24 + icon={icon} 25 + className={`text-xl ${allFailed ? "text-red-400" : "text-bink-600"}`} 26 + /> 27 + 28 + {/* standard suffix */} 29 + {!allFailed ? ( 30 + <div> 31 + {props.fails > 0 ? ( 32 + <p className="text-red-400"> 33 + {t("search.providersFailed", { 34 + fails: props.fails, 35 + total: props.total, 36 + })} 37 + </p> 38 + ) : null} 39 + {props.resultsSize > 0 ? ( 40 + <p>{t("search.allResults")}</p> 41 + ) : ( 42 + <p>{t("search.noResults")}</p> 43 + )} 44 + </div> 45 + ) : null} 46 + 47 + {/* Error result */} 48 + {allFailed ? ( 49 + <div> 50 + <p>{t("search.allFailed")}</p> 51 + </div> 52 + ) : null} 53 + </div> 54 + ); 55 + } 56 + 57 + export function SearchResultsView({ searchQuery }: { searchQuery: MWQuery }) { 58 + const { t } = useTranslation(); 59 + 60 + const [results, setResults] = useState<MWMassProviderOutput | undefined>(); 61 + const [runSearchQuery, loading, error] = useLoading((query: MWQuery) => 62 + SearchProviders(query) 63 + ); 64 + 65 + useEffect(() => { 66 + async function runSearch(query: MWQuery) { 67 + const searchResults = await runSearchQuery(query); 68 + if (!searchResults) return; 69 + setResults(searchResults); 70 + } 71 + 72 + if (searchQuery.searchQuery !== "") runSearch(searchQuery); 73 + }, [searchQuery, runSearchQuery]); 74 + 75 + if (loading) return <SearchLoadingView />; 76 + if (error) return <SearchSuffix resultsSize={0} fails={1} total={1} />; 77 + if (!results) return null; 78 + 79 + return ( 80 + <div> 81 + {results?.results.length > 0 ? ( 82 + <SectionHeading 83 + title={t("search.headingTitle") || "Search results"} 84 + icon={Icons.SEARCH} 85 + > 86 + {results.results.map((v) => ( 87 + <WatchedMediaCard 88 + key={[v.mediaId, v.providerId].join("|")} 89 + media={v} 90 + /> 91 + ))} 92 + </SectionHeading> 93 + ) : null} 94 + 95 + <SearchSuffix 96 + resultsSize={results.results.length} 97 + fails={results.stats.failed} 98 + total={results.stats.total} 99 + /> 100 + </div> 101 + ); 102 + }
+54
src/views/search/SearchView.tsx
··· 1 + import { useCallback, useState } from "react"; 2 + import { Navigation } from "@/components/layout/Navigation"; 3 + import { ThinContainer } from "@/components/layout/ThinContainer"; 4 + import { SearchBarInput } from "@/components/SearchBar"; 5 + import Sticky from "react-stickynode"; 6 + import { Title } from "@/components/text/Title"; 7 + import { useSearchQuery } from "@/hooks/useSearchQuery"; 8 + import { useTranslation } from "react-i18next"; 9 + 10 + import { SearchResultsPartial } from "./SearchResultsPartial"; 11 + 12 + export function SearchView() { 13 + const { t } = useTranslation(); 14 + const [search, setSearch, setSearchUnFocus] = useSearchQuery(); 15 + const [showBg, setShowBg] = useState(false); 16 + 17 + const stickStateChanged = useCallback( 18 + ({ status }: Sticky.Status) => setShowBg(status === Sticky.STATUS_FIXED), 19 + [setShowBg] 20 + ); 21 + 22 + return ( 23 + <> 24 + <div className="relative z-10"> 25 + <Navigation bg={showBg} /> 26 + <ThinContainer> 27 + <div className="mt-44 space-y-16 text-center"> 28 + <div className="absolute left-0 bottom-0 right-0 flex h-0 justify-center"> 29 + <div className="absolute bottom-4 h-[100vh] w-[300vh] rounded-[100%] bg-[#211D30]" /> 30 + </div> 31 + <div className="relative z-20"> 32 + <div className="mb-16"> 33 + <Title>{t("search.title")}</Title> 34 + </div> 35 + <Sticky enabled top={16} onStateChange={stickStateChanged}> 36 + <SearchBarInput 37 + onChange={setSearch} 38 + value={search} 39 + onUnFocus={setSearchUnFocus} 40 + placeholder={ 41 + t("search.placeholder") || "What do you want to watch?" 42 + } 43 + /> 44 + </Sticky> 45 + </div> 46 + </div> 47 + </ThinContainer> 48 + </div> 49 + <ThinContainer> 50 + <SearchResultsPartial search={search} /> 51 + </ThinContainer> 52 + </> 53 + ); 54 + }
+2 -1
vite.config.ts
··· 1 1 import { defineConfig } from "vite"; 2 2 import react from "@vitejs/plugin-react-swc"; 3 + import loadVersion from "vite-plugin-package-version"; 3 4 import path from "path"; 4 5 5 6 export default defineConfig({ 6 - plugins: [react()], 7 + plugins: [react(), loadVersion()], 7 8 resolve: { 8 9 alias: { 9 10 "@": path.resolve(__dirname, "./src"),
+1225 -9
yarn.lock
··· 17 17 dependencies: 18 18 "regenerator-runtime" "^0.13.11" 19 19 20 + "@colors/colors@1.5.0": 21 + "version" "1.5.0" 22 + 20 23 "@esbuild/linux-x64@0.16.5": 21 24 "integrity" "sha512-vsOwzKN+4NenUTyuoWLmg5dAuO8JKuLD9MXSeENA385XucuOZbblmOMwwgPlHsgVRtSjz38riqPJU2ALI/CWYQ==" 22 25 "resolved" "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.5.tgz" ··· 37 40 "minimatch" "^3.1.2" 38 41 "strip-json-comments" "^3.1.1" 39 42 43 + "@gar/promisify@^1.1.3": 44 + "version" "1.1.3" 45 + 40 46 "@headlessui/react@^1.5.0": 41 47 "integrity" "sha512-UZSxOfA0CYKO7QDT5OGlFvesvlR1SKkawwSjwQJwt7XQItpzRKdE3ZUQxHcg4LEz3C0Wler2s9psdb872ynwrQ==" 42 48 "resolved" "https://registry.npmjs.org/@headlessui/react/-/react-1.7.5.tgz" ··· 63 69 "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" 64 70 "version" "1.2.1" 65 71 72 + "@isaacs/string-locale-compare@^1.1.0": 73 + "version" "1.1.0" 74 + 66 75 "@nodelib/fs.scandir@2.1.5": 67 76 "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" 68 77 "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" ··· 84 93 "@nodelib/fs.scandir" "2.1.5" 85 94 "fastq" "^1.6.0" 86 95 96 + "@npmcli/arborist@^6.1.5": 97 + "version" "6.1.5" 98 + dependencies: 99 + "@isaacs/string-locale-compare" "^1.1.0" 100 + "@npmcli/fs" "^3.1.0" 101 + "@npmcli/installed-package-contents" "^2.0.0" 102 + "@npmcli/map-workspaces" "^3.0.0" 103 + "@npmcli/metavuln-calculator" "^5.0.0" 104 + "@npmcli/name-from-folder" "^1.0.1" 105 + "@npmcli/node-gyp" "^3.0.0" 106 + "@npmcli/package-json" "^3.0.0" 107 + "@npmcli/query" "^3.0.0" 108 + "@npmcli/run-script" "^6.0.0" 109 + "bin-links" "^4.0.1" 110 + "cacache" "^17.0.3" 111 + "common-ancestor-path" "^1.0.1" 112 + "hosted-git-info" "^6.1.1" 113 + "json-parse-even-better-errors" "^3.0.0" 114 + "json-stringify-nice" "^1.1.4" 115 + "minimatch" "^5.1.1" 116 + "nopt" "^7.0.0" 117 + "npm-install-checks" "^6.0.0" 118 + "npm-package-arg" "^10.1.0" 119 + "npm-pick-manifest" "^8.0.1" 120 + "npm-registry-fetch" "^14.0.3" 121 + "npmlog" "^7.0.1" 122 + "pacote" "^15.0.7" 123 + "parse-conflict-json" "^3.0.0" 124 + "proc-log" "^3.0.0" 125 + "promise-all-reject-late" "^1.0.0" 126 + "promise-call-limit" "^1.0.1" 127 + "read-package-json-fast" "^3.0.1" 128 + "semver" "^7.3.7" 129 + "ssri" "^10.0.1" 130 + "treeverse" "^3.0.0" 131 + "walk-up-path" "^1.0.0" 132 + 133 + "@npmcli/config@^6.1.0": 134 + "version" "6.1.0" 135 + dependencies: 136 + "@npmcli/map-workspaces" "^3.0.0" 137 + "ini" "^3.0.0" 138 + "nopt" "^7.0.0" 139 + "proc-log" "^3.0.0" 140 + "read-package-json-fast" "^3.0.0" 141 + "semver" "^7.3.5" 142 + "walk-up-path" "^1.0.0" 143 + 144 + "@npmcli/disparity-colors@^3.0.0": 145 + "version" "3.0.0" 146 + dependencies: 147 + "ansi-styles" "^4.3.0" 148 + 149 + "@npmcli/fs@^2.1.0": 150 + "version" "2.1.2" 151 + dependencies: 152 + "@gar/promisify" "^1.1.3" 153 + "semver" "^7.3.5" 154 + 155 + "@npmcli/fs@^3.1.0": 156 + "version" "3.1.0" 157 + dependencies: 158 + "semver" "^7.3.5" 159 + 160 + "@npmcli/git@^4.0.0", "@npmcli/git@^4.0.1": 161 + "version" "4.0.3" 162 + dependencies: 163 + "@npmcli/promise-spawn" "^6.0.0" 164 + "lru-cache" "^7.4.4" 165 + "mkdirp" "^1.0.4" 166 + "npm-pick-manifest" "^8.0.0" 167 + "proc-log" "^3.0.0" 168 + "promise-inflight" "^1.0.1" 169 + "promise-retry" "^2.0.1" 170 + "semver" "^7.3.5" 171 + "which" "^3.0.0" 172 + 173 + "@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": 174 + "version" "2.0.1" 175 + dependencies: 176 + "npm-bundled" "^3.0.0" 177 + "npm-normalize-package-bin" "^3.0.0" 178 + 179 + "@npmcli/map-workspaces@^3.0.0": 180 + "version" "3.0.0" 181 + dependencies: 182 + "@npmcli/name-from-folder" "^1.0.1" 183 + "glob" "^8.0.1" 184 + "minimatch" "^5.0.1" 185 + "read-package-json-fast" "^3.0.0" 186 + 187 + "@npmcli/metavuln-calculator@^5.0.0": 188 + "version" "5.0.0" 189 + dependencies: 190 + "cacache" "^17.0.0" 191 + "json-parse-even-better-errors" "^3.0.0" 192 + "pacote" "^15.0.0" 193 + "semver" "^7.3.5" 194 + 195 + "@npmcli/move-file@^2.0.0": 196 + "version" "2.0.1" 197 + dependencies: 198 + "mkdirp" "^1.0.4" 199 + "rimraf" "^3.0.2" 200 + 201 + "@npmcli/name-from-folder@^1.0.1": 202 + "version" "1.0.1" 203 + 204 + "@npmcli/node-gyp@^3.0.0": 205 + "version" "3.0.0" 206 + 207 + "@npmcli/package-json@^3.0.0": 208 + "version" "3.0.0" 209 + dependencies: 210 + "json-parse-even-better-errors" "^3.0.0" 211 + 212 + "@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": 213 + "version" "6.0.1" 214 + dependencies: 215 + "which" "^3.0.0" 216 + 217 + "@npmcli/query@^3.0.0": 218 + "version" "3.0.0" 219 + dependencies: 220 + "postcss-selector-parser" "^6.0.10" 221 + 222 + "@npmcli/run-script@^6.0.0": 223 + "version" "6.0.0" 224 + dependencies: 225 + "@npmcli/node-gyp" "^3.0.0" 226 + "@npmcli/promise-spawn" "^6.0.0" 227 + "node-gyp" "^9.0.0" 228 + "read-package-json-fast" "^3.0.0" 229 + "which" "^3.0.0" 230 + 87 231 "@swc/core-linux-x64-gnu@1.3.22": 88 232 "integrity" "sha512-FLkbiqsdXsVIFZi6iedx4rSBGX8x0vo/5aDlklSxJAAYOcQpO0QADKP5Yr65iMT1d6ABCt2d+/StpGLF7GWOcA==" 89 233 "resolved" "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.22.tgz" ··· 109 253 "@swc/core-win32-arm64-msvc" "1.3.22" 110 254 "@swc/core-win32-ia32-msvc" "1.3.22" 111 255 "@swc/core-win32-x64-msvc" "1.3.22" 256 + 257 + "@tootallnate/once@2": 258 + "version" "2.0.0" 112 259 113 260 "@types/crypto-js@^4.1.1": 114 261 "integrity" "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==" ··· 162 309 "version" "5.1.19" 163 310 dependencies: 164 311 "@types/history" "^4.7.11" 312 + "@types/react" "*" 313 + 314 + "@types/react-stickynode@^4.0.0": 315 + "integrity" "sha512-PKkmOzF6WCNuyIKrvhidGeUPLfe8htPwfEljKnQBF4bA5v74ADvXtwkjavOH8i6aCSw9J14AyDDl1Ul0VNQJUg==" 316 + "resolved" "https://registry.npmjs.org/@types/react-stickynode/-/react-stickynode-4.0.0.tgz" 317 + "version" "4.0.0" 318 + dependencies: 165 319 "@types/react" "*" 166 320 167 321 "@types/react@*", "@types/react@^17", "@types/react@^17.0.39": ··· 273 427 dependencies: 274 428 "@swc/core" "^1.3.21" 275 429 430 + "abbrev@^1.0.0": 431 + "version" "1.1.1" 432 + 433 + "abbrev@^2.0.0": 434 + "version" "2.0.0" 435 + 436 + "abort-controller@^3.0.0": 437 + "version" "3.0.0" 438 + dependencies: 439 + "event-target-shim" "^5.0.0" 440 + 276 441 "acorn-jsx@^5.3.2": 277 442 "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" 278 443 "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" ··· 302 467 "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 303 468 "version" "7.4.1" 304 469 470 + "agent-base@^6.0.2", "agent-base@6": 471 + "version" "6.0.2" 472 + dependencies: 473 + "debug" "4" 474 + 475 + "agentkeepalive@^4.2.1": 476 + "version" "4.2.1" 477 + dependencies: 478 + "debug" "^4.1.0" 479 + "depd" "^1.1.2" 480 + "humanize-ms" "^1.2.1" 481 + 482 + "aggregate-error@^3.0.0": 483 + "version" "3.1.0" 484 + dependencies: 485 + "clean-stack" "^2.0.0" 486 + "indent-string" "^4.0.0" 487 + 305 488 "ajv@^6.10.0", "ajv@^6.12.4": 306 489 "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 307 490 "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" ··· 317 500 "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 318 501 "version" "5.0.1" 319 502 320 - "ansi-styles@^4.1.0": 503 + "ansi-styles@^4.1.0", "ansi-styles@^4.3.0": 321 504 "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" 322 505 "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 323 506 "version" "4.3.0" ··· 332 515 "normalize-path" "^3.0.0" 333 516 "picomatch" "^2.0.4" 334 517 518 + "aproba@^1.0.3 || ^2.0.0", "aproba@^2.0.0": 519 + "version" "2.0.0" 520 + 521 + "archy@~1.0.0": 522 + "version" "1.0.0" 523 + 524 + "are-we-there-yet@^3.0.0": 525 + "version" "3.0.1" 526 + dependencies: 527 + "delegates" "^1.0.0" 528 + "readable-stream" "^3.6.0" 529 + 530 + "are-we-there-yet@^4.0.0": 531 + "version" "4.0.0" 532 + dependencies: 533 + "delegates" "^1.0.0" 534 + "readable-stream" "^4.1.0" 535 + 335 536 "arg@^5.0.2": 336 537 "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" 337 538 "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" ··· 418 619 "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 419 620 "version" "1.0.2" 420 621 622 + "base64-js@^1.3.1": 623 + "version" "1.5.1" 624 + 625 + "bin-links@^4.0.1": 626 + "version" "4.0.1" 627 + dependencies: 628 + "cmd-shim" "^6.0.0" 629 + "npm-normalize-package-bin" "^3.0.0" 630 + "read-cmd-shim" "^4.0.0" 631 + "write-file-atomic" "^5.0.0" 632 + 421 633 "binary-extensions@^2.0.0": 422 634 "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 423 635 "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 636 + "version" "2.2.0" 637 + 638 + "binary-extensions@^2.2.0": 424 639 "version" "2.2.0" 425 640 426 641 "brace-expansion@^1.1.7": ··· 431 646 "balanced-match" "^1.0.0" 432 647 "concat-map" "0.0.1" 433 648 649 + "brace-expansion@^2.0.1": 650 + "version" "2.0.1" 651 + dependencies: 652 + "balanced-match" "^1.0.0" 653 + 434 654 "braces@^3.0.2", "braces@~3.0.2": 435 655 "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" 436 656 "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" ··· 448 668 "node-releases" "^2.0.6" 449 669 "update-browserslist-db" "^1.0.9" 450 670 671 + "buffer@^6.0.3": 672 + "version" "6.0.3" 673 + dependencies: 674 + "base64-js" "^1.3.1" 675 + "ieee754" "^1.2.1" 676 + 677 + "builtins@^5.0.0": 678 + "version" "5.0.1" 679 + dependencies: 680 + "semver" "^7.0.0" 681 + 682 + "cacache@^16.1.0": 683 + "version" "16.1.3" 684 + dependencies: 685 + "@npmcli/fs" "^2.1.0" 686 + "@npmcli/move-file" "^2.0.0" 687 + "chownr" "^2.0.0" 688 + "fs-minipass" "^2.1.0" 689 + "glob" "^8.0.1" 690 + "infer-owner" "^1.0.4" 691 + "lru-cache" "^7.7.1" 692 + "minipass" "^3.1.6" 693 + "minipass-collect" "^1.0.2" 694 + "minipass-flush" "^1.0.5" 695 + "minipass-pipeline" "^1.2.4" 696 + "mkdirp" "^1.0.4" 697 + "p-map" "^4.0.0" 698 + "promise-inflight" "^1.0.1" 699 + "rimraf" "^3.0.2" 700 + "ssri" "^9.0.0" 701 + "tar" "^6.1.11" 702 + "unique-filename" "^2.0.0" 703 + 704 + "cacache@^17.0.0", "cacache@^17.0.3": 705 + "version" "17.0.3" 706 + dependencies: 707 + "@npmcli/fs" "^3.1.0" 708 + "fs-minipass" "^2.1.0" 709 + "glob" "^8.0.1" 710 + "lru-cache" "^7.7.1" 711 + "minipass" "^4.0.0" 712 + "minipass-collect" "^1.0.2" 713 + "minipass-flush" "^1.0.5" 714 + "minipass-pipeline" "^1.2.4" 715 + "p-map" "^4.0.0" 716 + "promise-inflight" "^1.0.1" 717 + "ssri" "^10.0.0" 718 + "tar" "^6.1.11" 719 + "unique-filename" "^3.0.0" 720 + 451 721 "call-bind@^1.0.0", "call-bind@^1.0.2": 452 722 "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 453 723 "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" ··· 471 741 "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz" 472 742 "version" "1.0.30001439" 473 743 474 - "chalk@^4.0.0": 744 + "chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2": 475 745 "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" 476 746 "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 477 747 "version" "4.1.2" ··· 494 764 optionalDependencies: 495 765 "fsevents" "~2.3.2" 496 766 767 + "chownr@^2.0.0": 768 + "version" "2.0.0" 769 + 770 + "ci-info@^3.7.0": 771 + "version" "3.7.0" 772 + 773 + "cidr-regex@^3.1.1": 774 + "version" "3.1.1" 775 + dependencies: 776 + "ip-regex" "^4.1.0" 777 + 778 + "classnames@^2.0.0": 779 + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" 780 + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" 781 + "version" "2.3.2" 782 + 783 + "clean-stack@^2.0.0": 784 + "version" "2.2.0" 785 + 786 + "cli-columns@^4.0.0": 787 + "version" "4.0.0" 788 + dependencies: 789 + "string-width" "^4.2.3" 790 + "strip-ansi" "^6.0.1" 791 + 792 + "cli-table3@^0.6.3": 793 + "version" "0.6.3" 794 + dependencies: 795 + "string-width" "^4.2.0" 796 + optionalDependencies: 797 + "@colors/colors" "1.5.0" 798 + 497 799 "client-only@^0.0.1": 498 800 "integrity" "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 499 801 "resolved" "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" 500 802 "version" "0.0.1" 501 803 804 + "clone@^1.0.2": 805 + "version" "1.0.4" 806 + 807 + "cmd-shim@^6.0.0": 808 + "version" "6.0.0" 809 + 502 810 "color-convert@^2.0.1": 503 811 "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" 504 812 "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" ··· 511 819 "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 512 820 "version" "1.1.4" 513 821 822 + "color-support@^1.1.3": 823 + "version" "1.1.3" 824 + 825 + "columnify@^1.6.0": 826 + "version" "1.6.0" 827 + dependencies: 828 + "strip-ansi" "^6.0.1" 829 + "wcwidth" "^1.0.0" 830 + 831 + "common-ancestor-path@^1.0.1": 832 + "version" "1.0.1" 833 + 514 834 "concat-map@0.0.1": 515 835 "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 516 836 "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" ··· 521 841 "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" 522 842 "version" "1.0.11" 523 843 844 + "console-control-strings@^1.1.0": 845 + "version" "1.1.0" 846 + 524 847 "core-js-pure@^3.25.1": 525 848 "integrity" "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" 526 849 "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" 527 850 "version" "3.26.1" 528 851 852 + "core-js@^3.6.5": 853 + "integrity" "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==" 854 + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz" 855 + "version" "3.27.1" 856 + 529 857 "cross-fetch@3.1.5": 530 858 "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" 531 859 "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" ··· 576 904 dependencies: 577 905 "ms" "^2.1.1" 578 906 907 + "debug@^4.1.0", "debug@^4.3.3", "debug@4": 908 + "version" "4.3.4" 909 + dependencies: 910 + "ms" "2.1.2" 911 + 579 912 "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4": 580 913 "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 581 914 "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" ··· 588 921 "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 589 922 "version" "0.1.4" 590 923 924 + "defaults@^1.0.3": 925 + "version" "1.0.3" 926 + dependencies: 927 + "clone" "^1.0.2" 928 + 591 929 "define-properties@^1.1.3", "define-properties@^1.1.4": 592 930 "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" 593 931 "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" ··· 600 938 "integrity" "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" 601 939 "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" 602 940 "version" "1.0.1" 941 + 942 + "delegates@^1.0.0": 943 + "version" "1.0.0" 944 + 945 + "depd@^1.1.2": 946 + "version" "1.1.2" 603 947 604 948 "detective@^5.2.1": 605 949 "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==" ··· 615 959 "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" 616 960 "version" "1.2.2" 617 961 962 + "diff@^5.1.0": 963 + "version" "5.1.0" 964 + 618 965 "dir-glob@^3.0.1": 619 966 "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" 620 967 "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" ··· 646 993 "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" 647 994 "version" "1.4.284" 648 995 996 + "emoji-regex@^8.0.0": 997 + "version" "8.0.0" 998 + 649 999 "emoji-regex@^9.2.2": 650 1000 "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 651 1001 "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 652 1002 "version" "9.2.2" 1003 + 1004 + "encoding@^0.1.13": 1005 + "version" "0.1.13" 1006 + dependencies: 1007 + "iconv-lite" "^0.6.2" 1008 + 1009 + "env-paths@^2.2.0": 1010 + "version" "2.2.1" 1011 + 1012 + "err-code@^2.0.2": 1013 + "version" "2.0.3" 653 1014 654 1015 "es-abstract@^1.19.0", "es-abstract@^1.20.4": 655 1016 "integrity" "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==" ··· 965 1326 "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 966 1327 "version" "2.0.3" 967 1328 1329 + "event-target-shim@^5.0.0": 1330 + "version" "5.0.1" 1331 + 1332 + "eventemitter3@^3.0.0": 1333 + "integrity" "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 1334 + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" 1335 + "version" "3.1.2" 1336 + 1337 + "events@^3.3.0": 1338 + "version" "3.3.0" 1339 + 968 1340 "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": 969 1341 "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 970 1342 "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" ··· 991 1363 "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 992 1364 "version" "2.0.6" 993 1365 1366 + "fastest-levenshtein@^1.0.16": 1367 + "version" "1.0.16" 1368 + 994 1369 "fastq@^1.6.0": 995 1370 "integrity" "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==" 996 1371 "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz" ··· 1038 1413 "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" 1039 1414 "version" "4.2.0" 1040 1415 1416 + "fs-minipass@^2.0.0", "fs-minipass@^2.1.0": 1417 + "version" "2.1.0" 1418 + dependencies: 1419 + "minipass" "^3.0.0" 1420 + 1041 1421 "fs.realpath@^1.0.0": 1042 1422 "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1043 1423 "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" ··· 1068 1448 "resolved" "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz" 1069 1449 "version" "6.6.2" 1070 1450 1451 + "gauge@^4.0.3": 1452 + "version" "4.0.4" 1453 + dependencies: 1454 + "aproba" "^1.0.3 || ^2.0.0" 1455 + "color-support" "^1.1.3" 1456 + "console-control-strings" "^1.1.0" 1457 + "has-unicode" "^2.0.1" 1458 + "signal-exit" "^3.0.7" 1459 + "string-width" "^4.2.3" 1460 + "strip-ansi" "^6.0.1" 1461 + "wide-align" "^1.1.5" 1462 + 1463 + "gauge@^5.0.0": 1464 + "version" "5.0.0" 1465 + dependencies: 1466 + "aproba" "^1.0.3 || ^2.0.0" 1467 + "color-support" "^1.1.3" 1468 + "console-control-strings" "^1.1.0" 1469 + "has-unicode" "^2.0.1" 1470 + "signal-exit" "^3.0.7" 1471 + "string-width" "^4.2.3" 1472 + "strip-ansi" "^6.0.1" 1473 + "wide-align" "^1.1.5" 1474 + 1071 1475 "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": 1072 1476 "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" 1073 1477 "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" ··· 1118 1522 "once" "^1.3.0" 1119 1523 "path-is-absolute" "^1.0.0" 1120 1524 1525 + "glob@^7.1.4": 1526 + "version" "7.2.3" 1527 + dependencies: 1528 + "fs.realpath" "^1.0.0" 1529 + "inflight" "^1.0.4" 1530 + "inherits" "2" 1531 + "minimatch" "^3.1.1" 1532 + "once" "^1.3.0" 1533 + "path-is-absolute" "^1.0.0" 1534 + 1535 + "glob@^8.0.1": 1536 + "version" "8.0.3" 1537 + dependencies: 1538 + "fs.realpath" "^1.0.0" 1539 + "inflight" "^1.0.4" 1540 + "inherits" "2" 1541 + "minimatch" "^5.0.1" 1542 + "once" "^1.3.0" 1543 + 1121 1544 "globals@^13.15.0": 1122 1545 "integrity" "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==" 1123 1546 "resolved" "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz" ··· 1143 1566 "version" "1.0.1" 1144 1567 dependencies: 1145 1568 "get-intrinsic" "^1.1.3" 1569 + 1570 + "graceful-fs@^4.2.10", "graceful-fs@^4.2.6": 1571 + "version" "4.2.10" 1146 1572 1147 1573 "grapheme-splitter@^1.0.4": 1148 1574 "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" ··· 1178 1604 dependencies: 1179 1605 "has-symbols" "^1.0.2" 1180 1606 1607 + "has-unicode@^2.0.1": 1608 + "version" "2.0.1" 1609 + 1181 1610 "has@^1.0.3": 1182 1611 "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 1183 1612 "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" ··· 1209 1638 dependencies: 1210 1639 "react-is" "^16.7.0" 1211 1640 1641 + "hosted-git-info@^6.0.0", "hosted-git-info@^6.1.1": 1642 + "version" "6.1.1" 1643 + dependencies: 1644 + "lru-cache" "^7.5.1" 1645 + 1212 1646 "html-parse-stringify@^3.0.1": 1213 1647 "integrity" "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==" 1214 1648 "resolved" "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz" ··· 1216 1650 dependencies: 1217 1651 "void-elements" "3.1.0" 1218 1652 1653 + "http-cache-semantics@^4.1.0": 1654 + "version" "4.1.0" 1655 + 1656 + "http-proxy-agent@^5.0.0": 1657 + "version" "5.0.0" 1658 + dependencies: 1659 + "@tootallnate/once" "2" 1660 + "agent-base" "6" 1661 + "debug" "4" 1662 + 1663 + "https-proxy-agent@^5.0.0": 1664 + "version" "5.0.1" 1665 + dependencies: 1666 + "agent-base" "6" 1667 + "debug" "4" 1668 + 1669 + "humanize-ms@^1.2.1": 1670 + "version" "1.2.1" 1671 + dependencies: 1672 + "ms" "^2.0.0" 1673 + 1674 + "i@^0.3.7": 1675 + "integrity" "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" 1676 + "resolved" "https://registry.npmjs.org/i/-/i-0.3.7.tgz" 1677 + "version" "0.3.7" 1678 + 1219 1679 "i18next-browser-languagedetector@^7.0.1": 1220 1680 "integrity" "sha512-Pa5kFwaczXJAeHE56CHG2aWzFBMJNUNghf0Pm4SwSrEMps/PTKqW90EYWlIvhuYStf3Sn1K0vw+gH3+TLdkH1g==" 1221 1681 "resolved" "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.0.1.tgz" ··· 1237 1697 dependencies: 1238 1698 "@babel/runtime" "^7.20.6" 1239 1699 1700 + "iconv-lite@^0.6.2": 1701 + "version" "0.6.3" 1702 + dependencies: 1703 + "safer-buffer" ">= 2.1.2 < 3.0.0" 1704 + 1705 + "ieee754@^1.2.1": 1706 + "version" "1.2.1" 1707 + 1708 + "ignore-walk@^6.0.0": 1709 + "version" "6.0.0" 1710 + dependencies: 1711 + "minimatch" "^5.0.1" 1712 + 1240 1713 "ignore@^5.2.0": 1241 1714 "integrity" "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==" 1242 1715 "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz" ··· 1254 1727 "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1255 1728 "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 1256 1729 "version" "0.1.4" 1730 + 1731 + "indent-string@^4.0.0": 1732 + "version" "4.0.0" 1733 + 1734 + "infer-owner@^1.0.4": 1735 + "version" "1.0.4" 1257 1736 1258 1737 "inflight@^1.0.4": 1259 1738 "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" ··· 1263 1742 "once" "^1.3.0" 1264 1743 "wrappy" "1" 1265 1744 1266 - "inherits@2": 1745 + "inherits@^2.0.3", "inherits@2": 1267 1746 "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1268 1747 "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1269 1748 "version" "2.0.4" 1270 1749 1750 + "ini@^3.0.0", "ini@^3.0.1": 1751 + "version" "3.0.1" 1752 + 1753 + "init-package-json@^4.0.1": 1754 + "version" "4.0.1" 1755 + dependencies: 1756 + "npm-package-arg" "^10.0.0" 1757 + "promzard" "^0.3.0" 1758 + "read" "^1.0.7" 1759 + "read-package-json" "^6.0.0" 1760 + "semver" "^7.3.5" 1761 + "validate-npm-package-license" "^3.0.4" 1762 + "validate-npm-package-name" "^5.0.0" 1763 + 1271 1764 "internal-slot@^1.0.3": 1272 1765 "integrity" "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==" 1273 1766 "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz" ··· 1277 1770 "has" "^1.0.3" 1278 1771 "side-channel" "^1.0.4" 1279 1772 1773 + "ip-regex@^4.1.0": 1774 + "version" "4.3.0" 1775 + 1776 + "ip@^2.0.0": 1777 + "version" "2.0.0" 1778 + 1280 1779 "is-bigint@^1.0.1": 1281 1780 "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" 1282 1781 "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" ··· 1304 1803 "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" 1305 1804 "version" "1.2.7" 1306 1805 1806 + "is-cidr@^4.0.2": 1807 + "version" "4.0.2" 1808 + dependencies: 1809 + "cidr-regex" "^3.1.1" 1810 + 1307 1811 "is-core-module@^2.8.1", "is-core-module@^2.9.0": 1308 1812 "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" 1309 1813 "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" ··· 1323 1827 "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1324 1828 "version" "2.1.1" 1325 1829 1830 + "is-fullwidth-code-point@^3.0.0": 1831 + "version" "3.0.0" 1832 + 1326 1833 "is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": 1327 1834 "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 1328 1835 "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 1329 1836 "version" "4.0.3" 1330 1837 dependencies: 1331 1838 "is-extglob" "^2.1.1" 1839 + 1840 + "is-lambda@^1.0.1": 1841 + "version" "1.0.1" 1332 1842 1333 1843 "is-negative-zero@^2.0.2": 1334 1844 "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" ··· 1415 1925 dependencies: 1416 1926 "argparse" "^2.0.1" 1417 1927 1928 + "json-parse-even-better-errors@^3.0.0": 1929 + "version" "3.0.0" 1930 + 1418 1931 "json-schema-traverse@^0.4.1": 1419 1932 "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1420 1933 "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" ··· 1425 1938 "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 1426 1939 "version" "1.0.1" 1427 1940 1941 + "json-stringify-nice@^1.1.4": 1942 + "version" "1.1.4" 1943 + 1428 1944 "json5@^1.0.1": 1429 1945 "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" 1430 1946 "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" ··· 1437 1953 "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" 1438 1954 "version" "2.2.1" 1439 1955 1956 + "jsonparse@^1.3.1": 1957 + "version" "1.3.1" 1958 + 1440 1959 "jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.3.2": 1441 1960 "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" 1442 1961 "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" ··· 1444 1963 dependencies: 1445 1964 "array-includes" "^3.1.5" 1446 1965 "object.assign" "^4.1.3" 1966 + 1967 + "just-diff-apply@^5.2.0": 1968 + "version" "5.4.1" 1969 + 1970 + "just-diff@^5.0.1": 1971 + "version" "5.1.1" 1447 1972 1448 1973 "language-subtag-registry@^0.3.20": 1449 1974 "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" ··· 1465 1990 "prelude-ls" "^1.2.1" 1466 1991 "type-check" "~0.4.0" 1467 1992 1993 + "libnpmaccess@^7.0.1": 1994 + "version" "7.0.1" 1995 + dependencies: 1996 + "npm-package-arg" "^10.1.0" 1997 + "npm-registry-fetch" "^14.0.3" 1998 + 1999 + "libnpmdiff@^5.0.6": 2000 + "version" "5.0.6" 2001 + dependencies: 2002 + "@npmcli/arborist" "^6.1.5" 2003 + "@npmcli/disparity-colors" "^3.0.0" 2004 + "@npmcli/installed-package-contents" "^2.0.0" 2005 + "binary-extensions" "^2.2.0" 2006 + "diff" "^5.1.0" 2007 + "minimatch" "^5.1.1" 2008 + "npm-package-arg" "^10.1.0" 2009 + "pacote" "^15.0.7" 2010 + "tar" "^6.1.13" 2011 + 2012 + "libnpmexec@^5.0.6": 2013 + "version" "5.0.6" 2014 + dependencies: 2015 + "@npmcli/arborist" "^6.1.5" 2016 + "@npmcli/run-script" "^6.0.0" 2017 + "chalk" "^4.1.0" 2018 + "ci-info" "^3.7.0" 2019 + "npm-package-arg" "^10.1.0" 2020 + "npmlog" "^7.0.1" 2021 + "pacote" "^15.0.7" 2022 + "proc-log" "^3.0.0" 2023 + "read" "^1.0.7" 2024 + "read-package-json-fast" "^3.0.1" 2025 + "semver" "^7.3.7" 2026 + "walk-up-path" "^1.0.0" 2027 + 2028 + "libnpmfund@^4.0.6": 2029 + "version" "4.0.6" 2030 + dependencies: 2031 + "@npmcli/arborist" "^6.1.5" 2032 + 2033 + "libnpmhook@^9.0.1": 2034 + "version" "9.0.1" 2035 + dependencies: 2036 + "aproba" "^2.0.0" 2037 + "npm-registry-fetch" "^14.0.3" 2038 + 2039 + "libnpmorg@^5.0.1": 2040 + "version" "5.0.1" 2041 + dependencies: 2042 + "aproba" "^2.0.0" 2043 + "npm-registry-fetch" "^14.0.3" 2044 + 2045 + "libnpmpack@^5.0.6": 2046 + "version" "5.0.6" 2047 + dependencies: 2048 + "@npmcli/arborist" "^6.1.5" 2049 + "@npmcli/run-script" "^6.0.0" 2050 + "npm-package-arg" "^10.1.0" 2051 + "pacote" "^15.0.7" 2052 + 2053 + "libnpmpublish@^7.0.6": 2054 + "version" "7.0.6" 2055 + dependencies: 2056 + "normalize-package-data" "^5.0.0" 2057 + "npm-package-arg" "^10.1.0" 2058 + "npm-registry-fetch" "^14.0.3" 2059 + "semver" "^7.3.7" 2060 + "ssri" "^10.0.1" 2061 + 2062 + "libnpmsearch@^6.0.1": 2063 + "version" "6.0.1" 2064 + dependencies: 2065 + "npm-registry-fetch" "^14.0.3" 2066 + 2067 + "libnpmteam@^5.0.1": 2068 + "version" "5.0.1" 2069 + dependencies: 2070 + "aproba" "^2.0.0" 2071 + "npm-registry-fetch" "^14.0.3" 2072 + 2073 + "libnpmversion@^4.0.1": 2074 + "version" "4.0.1" 2075 + dependencies: 2076 + "@npmcli/git" "^4.0.1" 2077 + "@npmcli/run-script" "^6.0.0" 2078 + "json-parse-even-better-errors" "^3.0.0" 2079 + "proc-log" "^3.0.0" 2080 + "semver" "^7.3.7" 2081 + 1468 2082 "lilconfig@^2.0.5", "lilconfig@^2.0.6": 1469 2083 "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" 1470 2084 "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" ··· 1482 2096 "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" 1483 2097 "version" "4.6.2" 1484 2098 2099 + "lodash@^4.17.15": 2100 + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2101 + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 2102 + "version" "4.17.21" 2103 + 1485 2104 "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.3.1", "loose-envify@^1.4.0": 1486 2105 "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" 1487 2106 "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" ··· 1496 2115 dependencies: 1497 2116 "yallist" "^4.0.0" 1498 2117 2118 + "lru-cache@^7.4.4", "lru-cache@^7.5.1", "lru-cache@^7.7.1": 2119 + "version" "7.13.2" 2120 + 2121 + "make-fetch-happen@^10.0.3": 2122 + "version" "10.2.1" 2123 + dependencies: 2124 + "agentkeepalive" "^4.2.1" 2125 + "cacache" "^16.1.0" 2126 + "http-cache-semantics" "^4.1.0" 2127 + "http-proxy-agent" "^5.0.0" 2128 + "https-proxy-agent" "^5.0.0" 2129 + "is-lambda" "^1.0.1" 2130 + "lru-cache" "^7.7.1" 2131 + "minipass" "^3.1.6" 2132 + "minipass-collect" "^1.0.2" 2133 + "minipass-fetch" "^2.0.3" 2134 + "minipass-flush" "^1.0.5" 2135 + "minipass-pipeline" "^1.2.4" 2136 + "negotiator" "^0.6.3" 2137 + "promise-retry" "^2.0.1" 2138 + "socks-proxy-agent" "^7.0.0" 2139 + "ssri" "^9.0.0" 2140 + 2141 + "make-fetch-happen@^11.0.0", "make-fetch-happen@^11.0.2": 2142 + "version" "11.0.2" 2143 + dependencies: 2144 + "agentkeepalive" "^4.2.1" 2145 + "cacache" "^17.0.0" 2146 + "http-cache-semantics" "^4.1.0" 2147 + "http-proxy-agent" "^5.0.0" 2148 + "https-proxy-agent" "^5.0.0" 2149 + "is-lambda" "^1.0.1" 2150 + "lru-cache" "^7.7.1" 2151 + "minipass" "^4.0.0" 2152 + "minipass-collect" "^1.0.2" 2153 + "minipass-fetch" "^3.0.0" 2154 + "minipass-flush" "^1.0.5" 2155 + "minipass-pipeline" "^1.2.4" 2156 + "negotiator" "^0.6.3" 2157 + "promise-retry" "^2.0.1" 2158 + "socks-proxy-agent" "^7.0.0" 2159 + "ssri" "^10.0.0" 2160 + 1499 2161 "merge2@^1.3.0", "merge2@^1.4.1": 1500 2162 "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1501 2163 "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" ··· 1516 2178 dependencies: 1517 2179 "brace-expansion" "^1.1.7" 1518 2180 2181 + "minimatch@^5.0.1", "minimatch@^5.1.1": 2182 + "version" "5.1.1" 2183 + dependencies: 2184 + "brace-expansion" "^2.0.1" 2185 + 1519 2186 "minimist@^1.2.0", "minimist@^1.2.6": 1520 2187 "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" 1521 2188 "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" 1522 2189 "version" "1.2.7" 1523 2190 2191 + "minipass-collect@^1.0.2": 2192 + "version" "1.0.2" 2193 + dependencies: 2194 + "minipass" "^3.0.0" 2195 + 2196 + "minipass-fetch@^2.0.3": 2197 + "version" "2.1.2" 2198 + dependencies: 2199 + "minipass" "^3.1.6" 2200 + "minipass-sized" "^1.0.3" 2201 + "minizlib" "^2.1.2" 2202 + optionalDependencies: 2203 + "encoding" "^0.1.13" 2204 + 2205 + "minipass-fetch@^3.0.0": 2206 + "version" "3.0.0" 2207 + dependencies: 2208 + "minipass" "^3.1.6" 2209 + "minipass-sized" "^1.0.3" 2210 + "minizlib" "^2.1.2" 2211 + optionalDependencies: 2212 + "encoding" "^0.1.13" 2213 + 2214 + "minipass-flush@^1.0.5": 2215 + "version" "1.0.5" 2216 + dependencies: 2217 + "minipass" "^3.0.0" 2218 + 2219 + "minipass-json-stream@^1.0.1": 2220 + "version" "1.0.1" 2221 + dependencies: 2222 + "jsonparse" "^1.3.1" 2223 + "minipass" "^3.0.0" 2224 + 2225 + "minipass-pipeline@^1.2.4": 2226 + "version" "1.2.4" 2227 + dependencies: 2228 + "minipass" "^3.0.0" 2229 + 2230 + "minipass-sized@^1.0.3": 2231 + "version" "1.0.3" 2232 + dependencies: 2233 + "minipass" "^3.0.0" 2234 + 2235 + "minipass@^3.0.0": 2236 + "version" "3.3.6" 2237 + dependencies: 2238 + "yallist" "^4.0.0" 2239 + 2240 + "minipass@^3.1.1", "minipass@^3.1.6": 2241 + "version" "3.3.6" 2242 + dependencies: 2243 + "yallist" "^4.0.0" 2244 + 2245 + "minipass@^4.0.0": 2246 + "version" "4.0.0" 2247 + dependencies: 2248 + "yallist" "^4.0.0" 2249 + 2250 + "minizlib@^2.1.1", "minizlib@^2.1.2": 2251 + "version" "2.1.2" 2252 + dependencies: 2253 + "minipass" "^3.0.0" 2254 + "yallist" "^4.0.0" 2255 + 2256 + "mkdirp@^1.0.3", "mkdirp@^1.0.4": 2257 + "version" "1.0.4" 2258 + 2259 + "ms@^2.0.0", "ms@^2.1.2": 2260 + "version" "2.1.3" 2261 + 1524 2262 "ms@^2.1.1", "ms@2.1.2": 1525 2263 "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1526 2264 "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" ··· 1531 2269 "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1532 2270 "version" "2.0.0" 1533 2271 2272 + "mute-stream@~0.0.4": 2273 + "version" "0.0.8" 2274 + 1534 2275 "nanoid@^3.3.4": 1535 2276 "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1536 2277 "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" ··· 1551 2292 "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 1552 2293 "version" "1.4.0" 1553 2294 2295 + "negotiator@^0.6.3": 2296 + "version" "0.6.3" 2297 + 1554 2298 "node-fetch@2.6.7": 1555 2299 "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" 1556 2300 "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" ··· 1558 2302 dependencies: 1559 2303 "whatwg-url" "^5.0.0" 1560 2304 2305 + "node-gyp@^9.0.0", "node-gyp@^9.3.0": 2306 + "version" "9.3.0" 2307 + dependencies: 2308 + "env-paths" "^2.2.0" 2309 + "glob" "^7.1.4" 2310 + "graceful-fs" "^4.2.6" 2311 + "make-fetch-happen" "^10.0.3" 2312 + "nopt" "^6.0.0" 2313 + "npmlog" "^6.0.0" 2314 + "rimraf" "^3.0.2" 2315 + "semver" "^7.3.5" 2316 + "tar" "^6.1.2" 2317 + "which" "^2.0.2" 2318 + 1561 2319 "node-releases@^2.0.6": 1562 2320 "integrity" "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==" 1563 2321 "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz" 1564 2322 "version" "2.0.7" 1565 2323 2324 + "nopt@^6.0.0": 2325 + "version" "6.0.0" 2326 + dependencies: 2327 + "abbrev" "^1.0.0" 2328 + 2329 + "nopt@^7.0.0": 2330 + "version" "7.0.0" 2331 + dependencies: 2332 + "abbrev" "^2.0.0" 2333 + 2334 + "normalize-package-data@^5.0.0": 2335 + "version" "5.0.0" 2336 + dependencies: 2337 + "hosted-git-info" "^6.0.0" 2338 + "is-core-module" "^2.8.1" 2339 + "semver" "^7.3.5" 2340 + "validate-npm-package-license" "^3.0.4" 2341 + 1566 2342 "normalize-path@^3.0.0", "normalize-path@~3.0.0": 1567 2343 "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1568 2344 "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" ··· 1573 2349 "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" 1574 2350 "version" "0.1.2" 1575 2351 2352 + "npm-audit-report@^4.0.0": 2353 + "version" "4.0.0" 2354 + dependencies: 2355 + "chalk" "^4.0.0" 2356 + 2357 + "npm-bundled@^3.0.0": 2358 + "version" "3.0.0" 2359 + dependencies: 2360 + "npm-normalize-package-bin" "^3.0.0" 2361 + 2362 + "npm-install-checks@^6.0.0": 2363 + "version" "6.0.0" 2364 + dependencies: 2365 + "semver" "^7.1.1" 2366 + 2367 + "npm-normalize-package-bin@^3.0.0": 2368 + "version" "3.0.0" 2369 + 2370 + "npm-package-arg@^10.0.0", "npm-package-arg@^10.1.0": 2371 + "version" "10.1.0" 2372 + dependencies: 2373 + "hosted-git-info" "^6.0.0" 2374 + "proc-log" "^3.0.0" 2375 + "semver" "^7.3.5" 2376 + "validate-npm-package-name" "^5.0.0" 2377 + 2378 + "npm-packlist@^7.0.0": 2379 + "version" "7.0.4" 2380 + dependencies: 2381 + "ignore-walk" "^6.0.0" 2382 + 2383 + "npm-pick-manifest@^8.0.0", "npm-pick-manifest@^8.0.1": 2384 + "version" "8.0.1" 2385 + dependencies: 2386 + "npm-install-checks" "^6.0.0" 2387 + "npm-normalize-package-bin" "^3.0.0" 2388 + "npm-package-arg" "^10.0.0" 2389 + "semver" "^7.3.5" 2390 + 2391 + "npm-profile@^7.0.1": 2392 + "version" "7.0.1" 2393 + dependencies: 2394 + "npm-registry-fetch" "^14.0.0" 2395 + "proc-log" "^3.0.0" 2396 + 2397 + "npm-registry-fetch@^14.0.0", "npm-registry-fetch@^14.0.3": 2398 + "version" "14.0.3" 2399 + dependencies: 2400 + "make-fetch-happen" "^11.0.0" 2401 + "minipass" "^4.0.0" 2402 + "minipass-fetch" "^3.0.0" 2403 + "minipass-json-stream" "^1.0.1" 2404 + "minizlib" "^2.1.2" 2405 + "npm-package-arg" "^10.0.0" 2406 + "proc-log" "^3.0.0" 2407 + 2408 + "npm-user-validate@^1.0.1": 2409 + "version" "1.0.1" 2410 + 2411 + "npm@^9.2.0": 2412 + "integrity" "sha512-oypVdaWGHDuV79RXLvp+B9gh6gDyAmoHKrQ0/JBYTWWx5D8/+AAxFdZC84fSIiyDdyW4qfrSyYGKhekxDOaMXQ==" 2413 + "resolved" "https://registry.npmjs.org/npm/-/npm-9.2.0.tgz" 2414 + "version" "9.2.0" 2415 + dependencies: 2416 + "@isaacs/string-locale-compare" "^1.1.0" 2417 + "@npmcli/arborist" "^6.1.5" 2418 + "@npmcli/config" "^6.1.0" 2419 + "@npmcli/map-workspaces" "^3.0.0" 2420 + "@npmcli/package-json" "^3.0.0" 2421 + "@npmcli/run-script" "^6.0.0" 2422 + "abbrev" "^2.0.0" 2423 + "archy" "~1.0.0" 2424 + "cacache" "^17.0.3" 2425 + "chalk" "^4.1.2" 2426 + "ci-info" "^3.7.0" 2427 + "cli-columns" "^4.0.0" 2428 + "cli-table3" "^0.6.3" 2429 + "columnify" "^1.6.0" 2430 + "fastest-levenshtein" "^1.0.16" 2431 + "fs-minipass" "^2.1.0" 2432 + "glob" "^8.0.1" 2433 + "graceful-fs" "^4.2.10" 2434 + "hosted-git-info" "^6.1.1" 2435 + "ini" "^3.0.1" 2436 + "init-package-json" "^4.0.1" 2437 + "is-cidr" "^4.0.2" 2438 + "json-parse-even-better-errors" "^3.0.0" 2439 + "libnpmaccess" "^7.0.1" 2440 + "libnpmdiff" "^5.0.6" 2441 + "libnpmexec" "^5.0.6" 2442 + "libnpmfund" "^4.0.6" 2443 + "libnpmhook" "^9.0.1" 2444 + "libnpmorg" "^5.0.1" 2445 + "libnpmpack" "^5.0.6" 2446 + "libnpmpublish" "^7.0.6" 2447 + "libnpmsearch" "^6.0.1" 2448 + "libnpmteam" "^5.0.1" 2449 + "libnpmversion" "^4.0.1" 2450 + "make-fetch-happen" "^11.0.2" 2451 + "minimatch" "^5.1.1" 2452 + "minipass" "^4.0.0" 2453 + "minipass-pipeline" "^1.2.4" 2454 + "mkdirp" "^1.0.4" 2455 + "ms" "^2.1.2" 2456 + "node-gyp" "^9.3.0" 2457 + "nopt" "^7.0.0" 2458 + "npm-audit-report" "^4.0.0" 2459 + "npm-install-checks" "^6.0.0" 2460 + "npm-package-arg" "^10.1.0" 2461 + "npm-pick-manifest" "^8.0.1" 2462 + "npm-profile" "^7.0.1" 2463 + "npm-registry-fetch" "^14.0.3" 2464 + "npm-user-validate" "^1.0.1" 2465 + "npmlog" "^7.0.1" 2466 + "p-map" "^4.0.0" 2467 + "pacote" "^15.0.7" 2468 + "parse-conflict-json" "^3.0.0" 2469 + "proc-log" "^3.0.0" 2470 + "qrcode-terminal" "^0.12.0" 2471 + "read" "~1.0.7" 2472 + "read-package-json" "^6.0.0" 2473 + "read-package-json-fast" "^3.0.1" 2474 + "rimraf" "^3.0.2" 2475 + "semver" "^7.3.8" 2476 + "ssri" "^10.0.1" 2477 + "tar" "^6.1.13" 2478 + "text-table" "~0.2.0" 2479 + "tiny-relative-date" "^1.3.0" 2480 + "treeverse" "^3.0.0" 2481 + "validate-npm-package-name" "^5.0.0" 2482 + "which" "^3.0.0" 2483 + "write-file-atomic" "^5.0.0" 2484 + 2485 + "npmlog@^6.0.0": 2486 + "version" "6.0.2" 2487 + dependencies: 2488 + "are-we-there-yet" "^3.0.0" 2489 + "console-control-strings" "^1.1.0" 2490 + "gauge" "^4.0.3" 2491 + "set-blocking" "^2.0.0" 2492 + 2493 + "npmlog@^7.0.1": 2494 + "version" "7.0.1" 2495 + dependencies: 2496 + "are-we-there-yet" "^4.0.0" 2497 + "console-control-strings" "^1.1.0" 2498 + "gauge" "^5.0.0" 2499 + "set-blocking" "^2.0.0" 2500 + 1576 2501 "object-assign@^4.1.1": 1577 2502 "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1578 2503 "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" ··· 1671 2596 dependencies: 1672 2597 "p-limit" "^3.0.2" 1673 2598 2599 + "p-map@^4.0.0": 2600 + "version" "4.0.0" 2601 + dependencies: 2602 + "aggregate-error" "^3.0.0" 2603 + 2604 + "pacote@^15.0.0", "pacote@^15.0.7": 2605 + "version" "15.0.7" 2606 + dependencies: 2607 + "@npmcli/git" "^4.0.0" 2608 + "@npmcli/installed-package-contents" "^2.0.1" 2609 + "@npmcli/promise-spawn" "^6.0.1" 2610 + "@npmcli/run-script" "^6.0.0" 2611 + "cacache" "^17.0.0" 2612 + "fs-minipass" "^2.1.0" 2613 + "minipass" "^4.0.0" 2614 + "npm-package-arg" "^10.0.0" 2615 + "npm-packlist" "^7.0.0" 2616 + "npm-pick-manifest" "^8.0.0" 2617 + "npm-registry-fetch" "^14.0.0" 2618 + "proc-log" "^3.0.0" 2619 + "promise-retry" "^2.0.1" 2620 + "read-package-json" "^6.0.0" 2621 + "read-package-json-fast" "^3.0.0" 2622 + "ssri" "^10.0.0" 2623 + "tar" "^6.1.11" 2624 + 1674 2625 "parent-module@^1.0.0": 1675 2626 "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" 1676 2627 "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 1677 2628 "version" "1.0.1" 1678 2629 dependencies: 1679 2630 "callsites" "^3.0.0" 2631 + 2632 + "parse-conflict-json@^3.0.0": 2633 + "version" "3.0.0" 2634 + dependencies: 2635 + "json-parse-even-better-errors" "^3.0.0" 2636 + "just-diff" "^5.0.1" 2637 + "just-diff-apply" "^5.2.0" 1680 2638 1681 2639 "path-exists@^4.0.0": 1682 2640 "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" ··· 1710 2668 "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" 1711 2669 "version" "4.0.0" 1712 2670 2671 + "performance-now@^2.1.0": 2672 + "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 2673 + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" 2674 + "version" "2.1.0" 2675 + 1713 2676 "picocolors@^1.0.0": 1714 2677 "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1715 2678 "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" ··· 1793 2756 "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz" 1794 2757 "version" "2.8.1" 1795 2758 1796 - "prop-types@^15.6.2", "prop-types@^15.8.1": 2759 + "proc-log@^3.0.0": 2760 + "version" "3.0.0" 2761 + 2762 + "process@^0.11.10": 2763 + "version" "0.11.10" 2764 + 2765 + "promise-all-reject-late@^1.0.0": 2766 + "version" "1.0.1" 2767 + 2768 + "promise-call-limit@^1.0.1": 2769 + "version" "1.0.1" 2770 + 2771 + "promise-inflight@^1.0.1": 2772 + "version" "1.0.1" 2773 + 2774 + "promise-retry@^2.0.1": 2775 + "version" "2.0.1" 2776 + dependencies: 2777 + "err-code" "^2.0.2" 2778 + "retry" "^0.12.0" 2779 + 2780 + "promzard@^0.3.0": 2781 + "version" "0.3.0" 2782 + dependencies: 2783 + "read" "1" 2784 + 2785 + "prop-types@^15.6.0", "prop-types@^15.6.2", "prop-types@^15.8.1": 1797 2786 "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" 1798 2787 "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" 1799 2788 "version" "15.8.1" ··· 1807 2796 "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 1808 2797 "version" "2.1.1" 1809 2798 2799 + "qrcode-terminal@^0.12.0": 2800 + "version" "0.12.0" 2801 + 1810 2802 "queue-microtask@^1.2.2": 1811 2803 "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1812 2804 "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" ··· 1817 2809 "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" 1818 2810 "version" "5.1.1" 1819 2811 1820 - "react-dom@^16 || ^17 || ^18", "react-dom@^17.0.2": 2812 + "raf@^3.0.0": 2813 + "integrity" "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==" 2814 + "resolved" "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" 2815 + "version" "3.4.1" 2816 + dependencies: 2817 + "performance-now" "^2.1.0" 2818 + 2819 + "react-dom@^0.14.2 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16 || ^17 || ^18", "react-dom@^17.0.2": 1821 2820 "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" 1822 2821 "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" 1823 2822 "version" "17.0.2" ··· 1867 2866 "tiny-invariant" "^1.0.2" 1868 2867 "tiny-warning" "^1.0.0" 1869 2868 1870 - "react@^16 || ^17 || ^18", "react@^17.0.2", "react@>= 16.8.0", "react@>=15", "react@17.0.2": 2869 + "react-stickynode@^4.1.0": 2870 + "integrity" "sha512-zylWgfad75jLfh/gYIayDcDWIDwO4weZrsZqDpjZ/axhF06zRjdCWFBgUr33Pvv2+htKWqPSFksWTyB6aMQ1ZQ==" 2871 + "resolved" "https://registry.npmjs.org/react-stickynode/-/react-stickynode-4.1.0.tgz" 2872 + "version" "4.1.0" 2873 + dependencies: 2874 + "classnames" "^2.0.0" 2875 + "core-js" "^3.6.5" 2876 + "prop-types" "^15.6.0" 2877 + "shallowequal" "^1.0.0" 2878 + "subscribe-ui-event" "^2.0.6" 2879 + 2880 + "react@^0.14.2 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16 || ^17 || ^18", "react@^17.0.2", "react@>= 16.8.0", "react@>=15", "react@17.0.2": 1871 2881 "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" 1872 2882 "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" 1873 2883 "version" "17.0.2" ··· 1882 2892 dependencies: 1883 2893 "pify" "^2.3.0" 1884 2894 2895 + "read-cmd-shim@^4.0.0": 2896 + "version" "4.0.0" 2897 + 2898 + "read-package-json-fast@^3.0.0", "read-package-json-fast@^3.0.1": 2899 + "version" "3.0.1" 2900 + dependencies: 2901 + "json-parse-even-better-errors" "^3.0.0" 2902 + "npm-normalize-package-bin" "^3.0.0" 2903 + 2904 + "read-package-json@^6.0.0": 2905 + "version" "6.0.0" 2906 + dependencies: 2907 + "glob" "^8.0.1" 2908 + "json-parse-even-better-errors" "^3.0.0" 2909 + "normalize-package-data" "^5.0.0" 2910 + "npm-normalize-package-bin" "^3.0.0" 2911 + 2912 + "read@^1.0.7", "read@~1.0.7", "read@1": 2913 + "version" "1.0.7" 2914 + dependencies: 2915 + "mute-stream" "~0.0.4" 2916 + 2917 + "readable-stream@^3.6.0": 2918 + "version" "3.6.0" 2919 + dependencies: 2920 + "inherits" "^2.0.3" 2921 + "string_decoder" "^1.1.1" 2922 + "util-deprecate" "^1.0.1" 2923 + 2924 + "readable-stream@^4.1.0": 2925 + "version" "4.2.0" 2926 + dependencies: 2927 + "abort-controller" "^3.0.0" 2928 + "buffer" "^6.0.3" 2929 + "events" "^3.3.0" 2930 + "process" "^0.11.10" 2931 + 1885 2932 "readdirp@~3.6.0": 1886 2933 "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" 1887 2934 "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" ··· 1936 2983 "path-parse" "^1.0.7" 1937 2984 "supports-preserve-symlinks-flag" "^1.0.0" 1938 2985 2986 + "retry@^0.12.0": 2987 + "version" "0.12.0" 2988 + 1939 2989 "reusify@^1.0.4": 1940 2990 "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1941 2991 "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" ··· 1962 3012 dependencies: 1963 3013 "queue-microtask" "^1.2.2" 1964 3014 3015 + "safe-buffer@~5.2.0": 3016 + "version" "5.2.1" 3017 + 1965 3018 "safe-regex-test@^1.0.0": 1966 3019 "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" 1967 3020 "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" ··· 1971 3024 "get-intrinsic" "^1.1.3" 1972 3025 "is-regex" "^1.1.4" 1973 3026 3027 + "safer-buffer@>= 2.1.2 < 3.0.0": 3028 + "version" "2.1.2" 3029 + 1974 3030 "scheduler@^0.20.2": 1975 3031 "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" 1976 3032 "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" ··· 1984 3040 "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1985 3041 "version" "6.3.0" 1986 3042 1987 - "semver@^7.3.7": 3043 + "semver@^7.0.0", "semver@^7.1.1", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8": 1988 3044 "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" 1989 3045 "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" 1990 3046 "version" "7.3.8" 1991 3047 dependencies: 1992 3048 "lru-cache" "^6.0.0" 1993 3049 3050 + "set-blocking@^2.0.0": 3051 + "version" "2.0.0" 3052 + 3053 + "shallowequal@^1.0.0": 3054 + "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" 3055 + "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" 3056 + "version" "1.1.0" 3057 + 1994 3058 "shebang-command@^2.0.0": 1995 3059 "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" 1996 3060 "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" ··· 2012 3076 "get-intrinsic" "^1.0.2" 2013 3077 "object-inspect" "^1.9.0" 2014 3078 3079 + "signal-exit@^3.0.7": 3080 + "version" "3.0.7" 3081 + 2015 3082 "slash@^3.0.0": 2016 3083 "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 2017 3084 "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" 2018 3085 "version" "3.0.0" 2019 3086 3087 + "smart-buffer@^4.2.0": 3088 + "version" "4.2.0" 3089 + 3090 + "socks-proxy-agent@^7.0.0": 3091 + "version" "7.0.0" 3092 + dependencies: 3093 + "agent-base" "^6.0.2" 3094 + "debug" "^4.3.3" 3095 + "socks" "^2.6.2" 3096 + 3097 + "socks@^2.6.2": 3098 + "version" "2.7.0" 3099 + dependencies: 3100 + "ip" "^2.0.0" 3101 + "smart-buffer" "^4.2.0" 3102 + 2020 3103 "source-map-js@^1.0.2": 2021 3104 "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 2022 3105 "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" 2023 3106 "version" "1.0.2" 2024 3107 3108 + "spdx-correct@^3.0.0": 3109 + "version" "3.1.1" 3110 + dependencies: 3111 + "spdx-expression-parse" "^3.0.0" 3112 + "spdx-license-ids" "^3.0.0" 3113 + 3114 + "spdx-exceptions@^2.1.0": 3115 + "version" "2.3.0" 3116 + 3117 + "spdx-expression-parse@^3.0.0": 3118 + "version" "3.0.1" 3119 + dependencies: 3120 + "spdx-exceptions" "^2.1.0" 3121 + "spdx-license-ids" "^3.0.0" 3122 + 3123 + "spdx-license-ids@^3.0.0": 3124 + "version" "3.0.11" 3125 + 2025 3126 "srt-webvtt@^2.0.0": 2026 3127 "integrity" "sha512-G2Z7/Jf2NRKrmLYNSIhSYZZYE6OFlKXFp9Au2/zJBKgrioUzmrAys1x7GT01dwl6d2sEnqr5uahEIOd0JW/Rbw==" 2027 3128 "resolved" "https://registry.npmjs.org/srt-webvtt/-/srt-webvtt-2.0.0.tgz" 2028 3129 "version" "2.0.0" 2029 3130 3131 + "ssri@^10.0.0", "ssri@^10.0.1": 3132 + "version" "10.0.1" 3133 + dependencies: 3134 + "minipass" "^4.0.0" 3135 + 3136 + "ssri@^9.0.0": 3137 + "version" "9.0.1" 3138 + dependencies: 3139 + "minipass" "^3.1.1" 3140 + 3141 + "string_decoder@^1.1.1": 3142 + "version" "1.3.0" 3143 + dependencies: 3144 + "safe-buffer" "~5.2.0" 3145 + 3146 + "string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.2.0", "string-width@^4.2.3": 3147 + "version" "4.2.3" 3148 + dependencies: 3149 + "emoji-regex" "^8.0.0" 3150 + "is-fullwidth-code-point" "^3.0.0" 3151 + "strip-ansi" "^6.0.1" 3152 + 2030 3153 "string.prototype.matchall@^4.0.6": 2031 3154 "integrity" "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==" 2032 3155 "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" ··· 2076 3199 "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 2077 3200 "version" "3.1.1" 2078 3201 3202 + "subscribe-ui-event@^2.0.6": 3203 + "integrity" "sha512-Acrtf9XXl6lpyHAWYeRD1xTPUQHDERfL4GHeNuYAtZMc4Z8Us2iDBP0Fn3xiRvkQ1FO+hx+qRLmPEwiZxp7FDQ==" 3204 + "resolved" "https://registry.npmjs.org/subscribe-ui-event/-/subscribe-ui-event-2.0.7.tgz" 3205 + "version" "2.0.7" 3206 + dependencies: 3207 + "eventemitter3" "^3.0.0" 3208 + "lodash" "^4.17.15" 3209 + "raf" "^3.0.0" 3210 + 2079 3211 "supports-color@^7.1.0": 2080 3212 "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" 2081 3213 "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" ··· 2122 3254 "quick-lru" "^5.1.1" 2123 3255 "resolve" "^1.22.1" 2124 3256 3257 + "tar@^6.1.11", "tar@^6.1.13", "tar@^6.1.2": 3258 + "version" "6.1.13" 3259 + dependencies: 3260 + "chownr" "^2.0.0" 3261 + "fs-minipass" "^2.0.0" 3262 + "minipass" "^4.0.0" 3263 + "minizlib" "^2.1.1" 3264 + "mkdirp" "^1.0.3" 3265 + "yallist" "^4.0.0" 3266 + 2125 3267 "text-table@^0.2.0": 2126 3268 "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 2127 3269 "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" 2128 3270 "version" "0.2.0" 2129 3271 3272 + "text-table@~0.2.0": 3273 + "version" "0.2.0" 3274 + 2130 3275 "tiny-invariant@^1.0.2": 2131 3276 "integrity" "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" 2132 3277 "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" 2133 3278 "version" "1.3.1" 3279 + 3280 + "tiny-relative-date@^1.3.0": 3281 + "version" "1.3.0" 2134 3282 2135 3283 "tiny-warning@^1.0.0": 2136 3284 "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" ··· 2148 3296 "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 2149 3297 "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" 2150 3298 "version" "0.0.3" 3299 + 3300 + "treeverse@^3.0.0": 3301 + "version" "3.0.0" 2151 3302 2152 3303 "tsconfig-paths@^3.14.1": 2153 3304 "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" ··· 2198 3349 "has-symbols" "^1.0.3" 2199 3350 "which-boxed-primitive" "^1.0.2" 2200 3351 3352 + "unique-filename@^2.0.0": 3353 + "version" "2.0.1" 3354 + dependencies: 3355 + "unique-slug" "^3.0.0" 3356 + 3357 + "unique-filename@^3.0.0": 3358 + "version" "3.0.0" 3359 + dependencies: 3360 + "unique-slug" "^4.0.0" 3361 + 3362 + "unique-slug@^3.0.0": 3363 + "version" "3.0.0" 3364 + dependencies: 3365 + "imurmurhash" "^0.1.4" 3366 + 3367 + "unique-slug@^4.0.0": 3368 + "version" "4.0.0" 3369 + dependencies: 3370 + "imurmurhash" "^0.1.4" 3371 + 2201 3372 "unpacker@^1.0.1": 2202 3373 "integrity" "sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==" 2203 3374 "resolved" "https://registry.npmjs.org/unpacker/-/unpacker-1.0.1.tgz" ··· 2218 3389 dependencies: 2219 3390 "punycode" "^2.1.0" 2220 3391 2221 - "util-deprecate@^1.0.2": 3392 + "util-deprecate@^1.0.1", "util-deprecate@^1.0.2": 2222 3393 "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2223 3394 "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 2224 3395 "version" "1.0.2" 2225 3396 3397 + "validate-npm-package-license@^3.0.4": 3398 + "version" "3.0.4" 3399 + dependencies: 3400 + "spdx-correct" "^3.0.0" 3401 + "spdx-expression-parse" "^3.0.0" 3402 + 3403 + "validate-npm-package-name@^5.0.0": 3404 + "version" "5.0.0" 3405 + dependencies: 3406 + "builtins" "^5.0.0" 3407 + 2226 3408 "value-equal@^1.0.1": 2227 3409 "integrity" "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" 2228 3410 "resolved" "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" 2229 3411 "version" "1.0.1" 2230 3412 2231 - "vite@^4.0.0", "vite@^4.0.1": 3413 + "vite-plugin-package-version@^1.0.2": 3414 + "integrity" "sha512-xCJMR0KD4rqSUwINyHJlLizio2VzYzaMrRkqC9xWaVGXgw1lIrzdD+wBUf1XDM8EhL1JoQ7aykLOfKrlZd1SoQ==" 3415 + "resolved" "https://registry.npmjs.org/vite-plugin-package-version/-/vite-plugin-package-version-1.0.2.tgz" 3416 + "version" "1.0.2" 3417 + 3418 + "vite@^4.0.0", "vite@^4.0.1", "vite@>=2.0.0-beta.69": 2232 3419 "integrity" "sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==" 2233 3420 "resolved" "https://registry.npmjs.org/vite/-/vite-4.0.1.tgz" 2234 3421 "version" "4.0.1" ··· 2245 3432 "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" 2246 3433 "version" "3.1.0" 2247 3434 3435 + "walk-up-path@^1.0.0": 3436 + "version" "1.0.0" 3437 + 3438 + "wcwidth@^1.0.0": 3439 + "version" "1.0.1" 3440 + dependencies: 3441 + "defaults" "^1.0.3" 3442 + 2248 3443 "webidl-conversions@^3.0.0": 2249 3444 "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 2250 3445 "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" ··· 2276 3471 dependencies: 2277 3472 "isexe" "^2.0.0" 2278 3473 3474 + "which@^2.0.2": 3475 + "version" "2.0.2" 3476 + dependencies: 3477 + "isexe" "^2.0.0" 3478 + 3479 + "which@^3.0.0": 3480 + "version" "3.0.0" 3481 + dependencies: 3482 + "isexe" "^2.0.0" 3483 + 3484 + "wide-align@^1.1.5": 3485 + "version" "1.1.5" 3486 + dependencies: 3487 + "string-width" "^1.0.2 || 2 || 3 || 4" 3488 + 2279 3489 "word-wrap@^1.2.3": 2280 3490 "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 2281 3491 "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" ··· 2285 3495 "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2286 3496 "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 2287 3497 "version" "1.0.2" 3498 + 3499 + "write-file-atomic@^5.0.0": 3500 + "version" "5.0.0" 3501 + dependencies: 3502 + "imurmurhash" "^0.1.4" 3503 + "signal-exit" "^3.0.7" 2288 3504 2289 3505 "xtend@^4.0.2": 2290 3506 "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="