diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..ef555e9 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,14 @@ +module.exports = { + extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], + root: true, + ignorePatterns: ["build/", "*.test.ts", "*.js"], + env: { + browser: true, + worker: true, + commonjs: true, + node: false, + }, + }; + \ No newline at end of file diff --git a/package.json b/package.json index 247c4ab..5c50cc7 100644 --- a/package.json +++ b/package.json @@ -64,23 +64,26 @@ "@babel/plugin-syntax-import-assertions": "^7.20.0", "@babel/preset-env": "^7.21.5", "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.22.5", "@formatjs/cli": "^6.0.1", "@formatjs/ts-transformer": "^3.13.1", "@types/lodash": "^4.14.195", "@types/lodash.uniqby": "^4.7.7", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "@webbtc/webln-types": "^1.0.12", "babel-loader": "^9.1.2", - "babel-plugin-formatjs": "^10.5.1", + "babel-plugin-formatjs": "^10.5.3", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.3", "css-minimizer-webpack-plugin": "^5.0.0", - "eslint": "^8.43.0", + "eslint": "^8.45.0", "eslint-plugin-formatjs": "^4.10.1", "eslint-webpack-plugin": "^4.0.1", "html-webpack-plugin": "^5.5.1", "mini-css-extract-plugin": "^2.7.5", "prettier": "^2.8.8", - "ts-loader": "^9.4.2", + "source-map-loader": "^4.0.1", "typescript": "^5.1.3", "webpack": "^5.82.1", "webpack-bundle-analyzer": "^4.8.0", diff --git a/src/element/chat-message.tsx b/src/element/chat-message.tsx index 1a46e4f..c0fdc49 100644 --- a/src/element/chat-message.tsx +++ b/src/element/chat-message.tsx @@ -1,6 +1,6 @@ import { useUserProfile } from "@snort/system-react"; import { NostrEvent, parseZap, EventKind } from "@snort/system"; -import { useRef, useState, useMemo } from "react"; +import React, { useRef, useState, useMemo } from "react"; import { useMediaQuery, useHover, @@ -46,7 +46,7 @@ export function ChatMessage({ reactions: readonly NostrEvent[]; emojiPacks: EmojiPack[]; }) { - const ref = useRef(null); + const ref = useRef(null); const inView = useIntersectionObserver(ref, { freezeOnceVisible: true, }); @@ -119,15 +119,15 @@ export function ChatMessage({ console.debug(reply); System.BroadcastEvent(reply); } - } catch (error) { } + } catch { + //ignore + } } - // @ts-expect-error const topOffset = ref.current?.getBoundingClientRect().top; - // @ts-expect-error const leftOffset = ref.current?.getBoundingClientRect().left; - function pickEmoji(ev: any) { + function pickEmoji(ev: React.MouseEvent) { ev.stopPropagation(); setShowEmojiPicker(!showEmojiPicker); } @@ -182,8 +182,8 @@ export function ChatMessage({ } : { position: "fixed", - top: topOffset - 12, - left: leftOffset - 32, + top: topOffset ? topOffset - 12 : 0, + left: leftOffset ? leftOffset - 32 : 0, opacity: showZapDialog || isHovering ? 1 : 0, pointerEvents: showZapDialog || isHovering ? "auto" : "none", @@ -211,8 +211,8 @@ export function ChatMessage({ {showEmojiPicker && ( setShowEmojiPicker(false)} diff --git a/src/element/goal.tsx b/src/element/goal.tsx index d9bd6c5..1f816fa 100644 --- a/src/element/goal.tsx +++ b/src/element/goal.tsx @@ -2,18 +2,16 @@ import "./goal.css"; import { useMemo } from "react"; import * as Progress from "@radix-ui/react-progress"; import Confetti from "react-confetti"; -import { NostrLink, ParsedZap, NostrEvent } from "@snort/system"; +import { ParsedZap, NostrEvent } from "@snort/system"; import { Icon } from "./icon"; import { findTag } from "utils"; import { formatSats } from "number"; import usePreviousValue from "hooks/usePreviousValue"; export function Goal({ - link, ev, zaps, }: { - link: NostrLink; ev: NostrEvent; zaps: ParsedZap[]; }) { diff --git a/src/element/live-chat.tsx b/src/element/live-chat.tsx index c975740..28dde72 100644 --- a/src/element/live-chat.tsx +++ b/src/element/live-chat.tsx @@ -37,7 +37,7 @@ function TopZappers({ zaps }: { zaps: ParsedZap[] }) { return ( <> - {zappers.map(({ pubkey, total }, idx) => { + {zappers.map(({ pubkey, total }) => { return (
{pubkey === "anon" ? ( @@ -79,7 +79,6 @@ export function LiveChat({ }, [feed.zaps]); const userEmojiPacks = useEmoji(login?.pubkey); - const userEmojis = userEmojiPacks.map((pack) => pack.emojis).flat(); const channelEmojiPacks = useEmoji(host); const allEmojiPacks = useMemo(() => { return uniqBy(channelEmojiPacks.concat(userEmojiPacks), packId); diff --git a/src/element/live-video-player.tsx b/src/element/live-video-player.tsx index cf765ac..834a2f6 100644 --- a/src/element/live-video-player.tsx +++ b/src/element/live-video-player.tsx @@ -1,5 +1,5 @@ import Hls from "hls.js"; -import { HTMLProps, useEffect, useMemo, useRef, useState } from "react"; +import { useEffect, useMemo, useRef, useState } from "react"; import { WISH } from "wish"; export enum VideoStatus { @@ -71,7 +71,7 @@ export function LiveVideoPlayer( export function WebRTCPlayer(props: VideoPlayerProps) { const video = useRef(null); const streamCached = useMemo(() => "https://customer-uu10flpvos4pfhgu.cloudflarestream.com/7634aee1af35a2de4ac13ca3d1718a8b/webRTC/play", [props.stream]); - const [status, setStatus] = useState(); + const [status] = useState(); //https://customer-uu10flpvos4pfhgu.cloudflarestream.com/7634aee1af35a2de4ac13ca3d1718a8b/webRTC/play useEffect(() => { diff --git a/src/element/login-signup.tsx b/src/element/login-signup.tsx index e55a93d..0f0152c 100644 --- a/src/element/login-signup.tsx +++ b/src/element/login-signup.tsx @@ -10,7 +10,6 @@ import { Icon } from "./icon"; import Copy from "./copy"; import { hexToBech32, openFile } from "utils"; import { VoidApi } from "@void-cat/api"; -import { upload } from "@testing-library/user-event/dist/upload"; import { LoginType } from "login"; enum Stage { diff --git a/src/element/mention.tsx b/src/element/mention.tsx index 5f5dfaa..ba2199a 100644 --- a/src/element/mention.tsx +++ b/src/element/mention.tsx @@ -8,7 +8,7 @@ interface MentionProps { relays?: string[]; } -export function Mention({ pubkey, relays }: MentionProps) { +export function Mention({ pubkey }: MentionProps) { const user = useUserProfile(System, pubkey); const npub = hexToBech32("npub", pubkey); return {user?.name || pubkey}; diff --git a/src/element/new-stream.tsx b/src/element/new-stream.tsx index 45fc7b8..556de0a 100644 --- a/src/element/new-stream.tsx +++ b/src/element/new-stream.tsx @@ -3,7 +3,7 @@ import * as Dialog from "@radix-ui/react-dialog"; import { Icon } from "element/icon"; import { useStreamProvider } from "hooks/stream-provider"; -import { StreamProvider, StreamProviderInfo, StreamProviders } from "providers"; +import { StreamProvider, StreamProviders } from "providers"; import { useEffect, useState } from "react"; import { StreamEditor, StreamEditorProps } from "./stream-editor"; import { useNavigate } from "react-router-dom"; diff --git a/src/element/textarea.tsx b/src/element/textarea.tsx index 49921d3..ca353c6 100644 --- a/src/element/textarea.tsx +++ b/src/element/textarea.tsx @@ -1,10 +1,10 @@ import "./textarea.css"; import type { KeyboardEvent, ChangeEvent } from "react"; -import ReactTextareaAutocomplete from "@webscopeio/react-textarea-autocomplete"; +import ReactTextareaAutocomplete, { TriggerType } from "@webscopeio/react-textarea-autocomplete"; import "@webscopeio/react-textarea-autocomplete/style.css"; import uniqWith from "lodash/uniqWith"; import isEqual from "lodash/isEqual"; -import { MetadataCache, NostrPrefix } from "@snort/system"; +import { MetadataCache, NostrPrefix, UserProfileCache } from "@snort/system"; import { System } from "index"; import { Emoji, type EmojiTag } from "./emoji"; import { Avatar } from "element/avatar"; @@ -27,7 +27,7 @@ const EmojiItem = ({ entity: { name, url } }: { entity: EmojiItemProps }) => { }; const UserItem = (metadata: MetadataCache) => { - const { pubkey, display_name, nip05, ...rest } = metadata; + const { pubkey, display_name, ...rest } = metadata; return (
@@ -39,14 +39,16 @@ const UserItem = (metadata: MetadataCache) => { interface TextareaProps { emojis: EmojiTag[]; value: string; - onChange: (e: ChangeEvent) => void; + onChange: (e: ChangeEvent) => void; onKeyDown: (e: KeyboardEvent) => void; } export function Textarea({ emojis, ...props }: TextareaProps) { const userDataProvider = async (token: string) => { - // @ts-expect-error: Property 'search' - return System.ProfileLoader.Cache.search(token); + const cache = System.ProfileLoader.Cache; + if (cache instanceof UserProfileCache) { + return cache.search(token); + } }; const emojiDataProvider = async (token: string) => { @@ -76,7 +78,7 @@ export function Textarea({ emojis, ...props }: TextareaProps) { output: (item: { pubkey: string }) => `@${hexToBech32(NostrPrefix.PublicKey, item.pubkey)}`, }, - }; + } as TriggerType; return ( Loading...} placeholder="Message" autoFocus={false} - // @ts-expect-error trigger={trigger} {...props} /> diff --git a/src/element/write-message.tsx b/src/element/write-message.tsx index 9739f93..bef81d7 100644 --- a/src/element/write-message.tsx +++ b/src/element/write-message.tsx @@ -1,5 +1,5 @@ import { NostrLink, EventKind } from "@snort/system"; -import { useRef, useState, ChangeEvent } from "react"; +import React, { useRef, useState } from "react"; import { LIVE_STREAM_CHAT } from "../const"; import { useLogin } from "../hooks/login"; @@ -17,7 +17,7 @@ export function WriteMessage({ link: NostrLink; emojiPacks: EmojiPack[]; }) { - const ref = useRef(null); + const ref = useRef(null); const emojiRef = useRef(null); const [chat, setChat] = useState(""); const [showEmojiPicker, setShowEmojiPicker] = useState(false); @@ -25,15 +25,13 @@ export function WriteMessage({ const emojis = emojiPacks.map((pack) => pack.emojis).flat(); const names = emojis.map((t) => t.at(1)); - // @ts-expect-error const topOffset = ref.current?.getBoundingClientRect().top; - // @ts-expect-error const leftOffset = ref.current?.getBoundingClientRect().left; async function sendChatMessage() { const pub = login?.publisher(); if (chat.length > 1) { - let emojiNames = new Set(); + const emojiNames = new Set(); for (const name of names) { if (chat.includes(`:${name}:`)) { @@ -80,12 +78,7 @@ export function WriteMessage({ } } - async function onChange(e: ChangeEvent) { - // @ts-expect-error - setChat(e.target.value); - } - - function pickEmoji(ev: any) { + function pickEmoji(ev: React.MouseEvent) { ev.stopPropagation(); setShowEmojiPicker(!showEmojiPicker); } @@ -97,15 +90,15 @@ export function WriteMessage({ emojis={emojis} value={chat} onKeyDown={onKeyDown} - onChange={onChange} + onChange={e => setChat(e.target.value)} />
{showEmojiPicker && ( setShowEmojiPicker(false)} diff --git a/src/hooks/goals.ts b/src/hooks/goals.ts index d82203a..7b7cff1 100644 --- a/src/hooks/goals.ts +++ b/src/hooks/goals.ts @@ -2,14 +2,11 @@ import { useMemo } from "react"; import { RequestBuilder, ReplaceableNoteStore, - NostrEvent, - EventKind, NostrLink, } from "@snort/system"; import { useRequestBuilder } from "@snort/system-react"; import { GOAL } from "const"; import { System } from "index"; -import { findTag } from "utils"; export function useZapGoal(host: string, link: NostrLink, leaveOpen = false) { const sub = useMemo(() => { diff --git a/src/providers/index.ts b/src/providers/index.ts index b16823c..ffb4499 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -18,7 +18,7 @@ export interface StreamProvider { /** * Create a config object to save in localStorage */ - createConfig(): any & { type: StreamProviders } + createConfig(): unknown & { type: StreamProviders } /** * Update stream info event @@ -59,7 +59,7 @@ export class ProviderStore extends ExternalStore> { super(); const cache = window.localStorage.getItem("providers"); if (cache) { - const cached: Array<{ type: StreamProviders } & any> = JSON.parse(cache); + const cached: Array<{ type: StreamProviders } & Record> = JSON.parse(cache); for (const c of cached) { switch (c.type) { case StreamProviders.Manual: { @@ -67,11 +67,11 @@ export class ProviderStore extends ExternalStore> { break; } case StreamProviders.NostrType: { - this.#providers.push(new Nip103StreamProvider(c.url)); + this.#providers.push(new Nip103StreamProvider(c.url as string)); break; } case StreamProviders.Owncast: { - this.#providers.push(new OwncastProvider(c.url, c.token)); + this.#providers.push(new OwncastProvider(c.url as string, c.token as string)); break; } } diff --git a/src/providers/manual.ts b/src/providers/manual.ts index 277141e..5fa3c04 100644 --- a/src/providers/manual.ts +++ b/src/providers/manual.ts @@ -28,7 +28,7 @@ export class ManualProvider implements StreamProvider { return Promise.resolve(); } - topup(amount: number): Promise { + topup(): Promise { throw new Error("Method not implemented."); } } \ No newline at end of file diff --git a/src/providers/owncast.ts b/src/providers/owncast.ts index d1ca8c0..392f5ef 100644 --- a/src/providers/owncast.ts +++ b/src/providers/owncast.ts @@ -1,4 +1,3 @@ -import { NostrEvent } from "@snort/system"; import { StreamState } from "index"; import { StreamProvider, StreamProviderInfo, StreamProviders } from "providers"; @@ -19,7 +18,7 @@ export class OwncastProvider implements StreamProvider { return StreamProviders.Owncast } - createConfig(): any & { type: StreamProviders; } { + createConfig() { return { type: StreamProviders.Owncast, url: this.#url, @@ -27,7 +26,7 @@ export class OwncastProvider implements StreamProvider { } } - updateStreamInfo(ev: NostrEvent): Promise { + updateStreamInfo(): Promise { return Promise.resolve(); } @@ -44,7 +43,7 @@ export class OwncastProvider implements StreamProvider { } as StreamProviderInfo } - topup(amount: number): Promise { + topup(): Promise { throw new Error("Method not implemented."); } diff --git a/src/wish/index.ts b/src/wish/index.ts index 919fd0c..fe949b4 100644 --- a/src/wish/index.ts +++ b/src/wish/index.ts @@ -27,7 +27,7 @@ export class WISH extends TypedEventTarget { private connecting: boolean = false; private connectedPromise!: Promise; private connectedResolver!: (any: void) => void; - private connectedRejector!: (reason?: any) => void; + private connectedRejector!: (reason?: unknown) => void; private gatherPromise!: Promise; private gatherResolver!: (any: void) => void; @@ -282,7 +282,7 @@ export class WISH extends TypedEventTarget { relAddr: candidate.relatedAddress || undefined, relPort: typeof candidate.relatedPort !== "undefined" && - candidate.relatedPort !== null + candidate.relatedPort !== null ? candidate.relatedPort.toString() : undefined, }); @@ -323,7 +323,7 @@ export class WISH extends TypedEventTarget { case "checking": this.iceStartTime = performance.now(); break; - case "connected": + case "connected": { const connected = performance.now(); if (this.connectStartTime) { const delta = connected - this.connectStartTime; @@ -352,6 +352,7 @@ export class WISH extends TypedEventTarget { this.connectedResolver(); this.stopTrickleBatching(); break; + } case "failed": if (this.connecting) { this.connectedRejector("ICE failed while trying to connect"); diff --git a/webpack.config.js b/webpack.config.js index 20f7825..620c536 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,22 +1,27 @@ // Generated using webpack-cli https://github.com/webpack/webpack-cli const path = require("path"); +const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const ESLintPlugin = require("eslint-webpack-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin"); -const TsTransformer = require("@formatjs/ts-transformer"); const isProduction = process.env.NODE_ENV == "production"; const config = { entry: { main: "./src/index.tsx", + sw: { + import: "./src/service-worker.ts", + filename: "service-worker.js", + }, }, target: "browserslist", - devtool: isProduction ? "source-map" : "eval", + mode: isProduction ? "production" : "development", + devtool: isProduction ? "source-map" : "cheap-module-source-map", output: { publicPath: "/", path: path.resolve(__dirname, "build"), @@ -49,37 +54,60 @@ const config = { favicon: "public/favicon.ico", excludeChunks: ["sw"], }), - new ESLintPlugin(), + new ESLintPlugin({ + extensions: ["js", "mjs", "jsx", "ts", "tsx"], + eslintPath: require.resolve("eslint"), + failOnError: !isProduction, + cache: true, + }), new MiniCssExtractPlugin({ filename: isProduction ? "[name].[chunkhash].css" : "[name].css", }), + new webpack.IgnorePlugin({ + resourceRegExp: /^\.\/locale$/, + contextRegExp: /moment$/, + }) ], module: { rules: [ + { + enforce: "pre", + exclude: /@babel(?:\/|\\{1,2})runtime/, + test: /\.(js|mjs|jsx|ts|tsx|css)$/, + loader: require.resolve("source-map-loader"), + }, { test: /\.tsx?$/i, + exclude: /node_modules/, use: [ - "babel-loader", { - loader: "ts-loader", + loader: require.resolve("babel-loader"), options: { - getCustomTransformers() { - return { - before: [ - TsTransformer.transform({ - overrideIdFn: "[sha512:contenthash:base64:6]", - }), - ], - }; - }, + babelrc: false, + configFile: false, + presets: [ + ["@babel/preset-env", { + targets: "defaults" + }], + ["@babel/preset-react", { runtime: "automatic" }], + "@babel/preset-typescript", + ], + plugins: [ + [ + "formatjs", + { + idInterpolationPattern: "[sha512:contenthash:base64:6]", + ast: true, + }, + ], + ], }, }, ], - exclude: ["/node_modules/"], }, { test: /\.css$/i, - use: [MiniCssExtractPlugin.loader, "css-loader"], + use: [MiniCssExtractPlugin.loader, require.resolve("css-loader")], }, { test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif|webp)$/i, @@ -88,12 +116,9 @@ const config = { ], }, optimization: { - usedExports: true, chunkIds: "deterministic", minimize: isProduction, minimizer: [ - "...", - // same as https://github.com/facebook/create-react-app/blob/main/packages/react-scripts/config/webpack.config.js new TerserPlugin({ terserOptions: { parse: { @@ -110,32 +135,17 @@ const config = { }, keep_classnames: isProduction, keep_fnames: isProduction, - output: { - ecma: 5, - comments: false, - ascii_only: true, - }, }, }), new CssMinimizerPlugin(), ], }, resolve: { - extensions: [".tsx", ".ts", ".jsx", ".js", "..."], - modules: ["node_modules", __dirname, path.resolve(__dirname, "src")], + aliasFields: ["browser"], + extensions: ["...", ".tsx", ".ts", ".jsx", ".js"], + modules: ["...", __dirname, path.resolve(__dirname, "src")], fallback: { "crypto": false } }, }; -module.exports = () => { - if (isProduction) { - config.mode = "production"; - config.entry.sw = { - import: "./src/service-worker.ts", - filename: "service-worker.js", - }; - } else { - config.mode = "development"; - } - return config; -}; +module.exports = () => config; diff --git a/yarn.lock b/yarn.lock index 7948384..32ddd5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -112,6 +112,21 @@ "@babel/helper-split-export-declaration" "^7.22.5" semver "^6.3.0" +"@babel/helper-create-class-features-plugin@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" + integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz#bb2bf0debfe39b831986a4efbf4066586819c6e4" @@ -215,6 +230,15 @@ "@babel/traverse" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-replace-supers@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -236,6 +260,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" @@ -439,6 +470,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -837,6 +875,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typescript@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" + integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-transform-unicode-escapes@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" @@ -977,6 +1025,17 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.22.5" +"@babel/preset-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" + integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" @@ -1038,19 +1097,19 @@ resolved "https://registry.yarnpkg.com/@emoji-mart/react/-/react-1.1.1.tgz#ddad52f93a25baf31c5383c3e7e4c6e05554312a" integrity sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1": version "4.5.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== -"@eslint/eslintrc@^2.0.3": +"@eslint/eslintrc@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== @@ -1065,10 +1124,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.43.0": - version "8.43.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.43.0.tgz#559ca3d9ddbd6bf907ad524320a0d14b85586af0" - integrity sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg== +"@eslint/js@8.44.0": + version "8.44.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" + integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== "@formatjs/cli@^6.0.1": version "6.1.3" @@ -1817,7 +1876,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== @@ -1912,6 +1971,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/semver@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + "@types/send@*": version "0.17.1" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" @@ -1985,11 +2049,63 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.1.0.tgz#96f3ca6615717659d06c9f7161a1d14ab0c49c66" + integrity sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.1.0" + "@typescript-eslint/type-utils" "6.1.0" + "@typescript-eslint/utils" "6.1.0" + "@typescript-eslint/visitor-keys" "6.1.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + natural-compare-lite "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.1.0.tgz#3135bf65dca5340d8650703eb8cb83113e156ee5" + integrity sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw== + dependencies: + "@typescript-eslint/scope-manager" "6.1.0" + "@typescript-eslint/types" "6.1.0" + "@typescript-eslint/typescript-estree" "6.1.0" + "@typescript-eslint/visitor-keys" "6.1.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.1.0.tgz#a6cdbe11630614f8c04867858a42dd56590796ed" + integrity sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw== + dependencies: + "@typescript-eslint/types" "6.1.0" + "@typescript-eslint/visitor-keys" "6.1.0" + +"@typescript-eslint/type-utils@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.1.0.tgz#21cc6c3bc1980b03f9eb4e64580d0c5be6f08215" + integrity sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w== + dependencies: + "@typescript-eslint/typescript-estree" "6.1.0" + "@typescript-eslint/utils" "6.1.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/types@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== +"@typescript-eslint/types@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.1.0.tgz#2d607c62827bb416ada5c96ebfa2ef84e45a8dfa" + integrity sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ== + "@typescript-eslint/typescript-estree@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz#8869156ee1dcfc5a95be3ed0e2809969ea28e965" @@ -2003,6 +2119,32 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.1.0.tgz#ea382f6482ba698d7e993a88ce5391ea7a66c33d" + integrity sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg== + dependencies: + "@typescript-eslint/types" "6.1.0" + "@typescript-eslint/visitor-keys" "6.1.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.1.0.tgz#1641843792b4e3451cc692e2c73055df8b26f453" + integrity sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.1.0" + "@typescript-eslint/types" "6.1.0" + "@typescript-eslint/typescript-estree" "6.1.0" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz#a59913f2bf0baeb61b5cfcb6135d3926c3854365" @@ -2011,6 +2153,14 @@ "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.1.0.tgz#d2b84dff6b58944d3257ea03687e269a788c73be" + integrity sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A== + dependencies: + "@typescript-eslint/types" "6.1.0" + eslint-visitor-keys "^3.4.1" + "@void-cat/api@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@void-cat/api/-/api-1.0.7.tgz#39564d478dee07398826e7109d6368c68c405426" @@ -2177,6 +2327,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -2353,7 +2508,7 @@ babel-loader@^9.1.2: find-cache-dir "^3.3.2" schema-utils "^4.0.0" -babel-plugin-formatjs@^10.5.1: +babel-plugin-formatjs@^10.5.3: version "10.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-formatjs/-/babel-plugin-formatjs-10.5.3.tgz#718e47f4f3aad663ad4f901274aedd7be0a86380" integrity sha512-PBeryWyN2HY2VUGNFPQS6+DPNQ/I9zDZ97y38i1+LzIpIyTHBePECq/ehEABE73PvvF2irFiN7TCYBrQQw5+lA== @@ -3163,7 +3318,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0: +enhanced-resolve@^5.15.0: version "5.15.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== @@ -3343,15 +3498,15 @@ eslint-webpack-plugin@^4.0.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.43.0: - version "8.43.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.43.0.tgz#3e8c6066a57097adfd9d390b8fc93075f257a094" - integrity sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q== +eslint@^8.45.0: + version "8.45.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" + integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.43.0" + "@eslint/eslintrc" "^2.1.0" + "@eslint/js" "8.44.0" "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -3363,7 +3518,7 @@ eslint@^8.43.0: escape-string-regexp "^4.0.0" eslint-scope "^7.2.0" eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + espree "^9.6.0" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -3373,7 +3528,6 @@ eslint@^8.43.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -3383,12 +3537,11 @@ eslint@^8.43.0: lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2, espree@^9.6.0: +espree@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.0.tgz#80869754b1c6560f32e3b6929194a3fe07c5b82f" integrity sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A== @@ -4001,6 +4154,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" @@ -4016,12 +4176,12 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4678,7 +4838,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -4777,6 +4937,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -4902,7 +5067,7 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== @@ -5674,7 +5839,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -5741,7 +5906,12 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4, semver@^7.3.7: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.7: version "7.5.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== @@ -5755,6 +5925,13 @@ semver@^7.3.8: dependencies: lru-cache "^6.0.0" +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -5902,6 +6079,15 @@ source-map-js@^1.0.1, source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" + integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== + dependencies: + abab "^2.0.6" + iconv-lite "^0.6.3" + source-map-js "^1.0.2" + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -6062,7 +6248,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6198,15 +6384,10 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -ts-loader@^9.4.2: - version "9.4.4" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4" - integrity sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" +ts-api-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d" + integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A== tslib@2.5.0: version "2.5.0"