From 243ae14f3671b90f57eb37094be5b8330b0643ca Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Thu, 31 Aug 2023 14:33:49 -0400 Subject: [PATCH 01/31] remove blip from reloading --- src/renderer/managers/quick-css.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/managers/quick-css.ts b/src/renderer/managers/quick-css.ts index ac231b149..f89f09a9c 100644 --- a/src/renderer/managers/quick-css.ts +++ b/src/renderer/managers/quick-css.ts @@ -12,6 +12,5 @@ export function unload(): void { } export function reload(): void { - unload(); - load(); + if (el) el.href = `replugged://quickcss/main.css?t=${Date.now()}`; } From a1380df8fdc89cbfb7bfa53e978e6f320097d3eb Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Thu, 31 Aug 2023 17:55:20 -0400 Subject: [PATCH 02/31] redesign scrollbar --- src/renderer/coremods/settings/pages/QuickCSS.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/renderer/coremods/settings/pages/QuickCSS.css b/src/renderer/coremods/settings/pages/QuickCSS.css index 3c10b8df6..44cdc41c7 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.css +++ b/src/renderer/coremods/settings/pages/QuickCSS.css @@ -25,4 +25,16 @@ #replugged-quickcss-wrapper .cm-scroller { overflow: auto; + max-height: 75vh; +} + +#replugged-quickcss-wrapper .cm-scroller::-webkit-scrollbar { + width: 10px; + height: 0px; + padding: 10px; +} + +#replugged-quickcss-wrapper .cm-scroller::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thin-thumb); + border-radius: 10px; } From 1437d03cb1a0237124f8ac7306bc73d157e82580 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Wed, 20 Sep 2023 12:57:13 -0400 Subject: [PATCH 03/31] popout --- i18n/en-US.json | 5 +- src/renderer/coremods/settings/index.tsx | 4 +- .../coremods/settings/pages/QuickCSS.css | 34 ++++ .../coremods/settings/pages/QuickCSS.tsx | 148 +++++++++++++++--- 4 files changed, 169 insertions(+), 22 deletions(-) diff --git a/i18n/en-US.json b/i18n/en-US.json index 520ea94ce..a576bb889 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -62,6 +62,9 @@ "REPLUGGED_PLUGIN": "Plugin", "REPLUGGED_PLUGINS": "Plugins", "REPLUGGED_QUICKCSS": "Quick CSS", + "REPLUGGED_QUICKCSS_CHANGES_APPLY": "Apply Changes", + "REPLUGGED_QUICKCSS_FOLDER_OPEN": "Open Quick CSS Folder", + "REPLUGGED_QUICKCSS_POPPED_OUT": "Quick CSS Editor has been popped out", "REPLUGGED_SETTINGS_ADVANCED_DESC": "Don't touch stuff in here if you don't know what you're doing. Unexpected things can happen to your cat.", "REPLUGGED_SETTINGS_BACKEND": "Backend URL", "REPLUGGED_SETTINGS_BACKEND_DESC": "URL used to fetch some assets and to query Replugged's REST API.", @@ -167,7 +170,6 @@ "REPLUGGED_LIST_RESULTS": "{count, plural, =1 {# match} other {# matches}}", "REPLUGGED_NO_ADDON_RESULTS": "No {type} matched your search.", "REPLUGGED_NO_ADDONS_INSTALLED": "No {type} installed.", - "REPLUGGED_QUICKCSS_CHANGES_APPLY": "Apply Changes", "REPLUGGED_SEARCH_FOR_ADDON": "Search for a {type}", "REPLUGGED_TOAST_ADDON_DISABLE_SUCCESS": "Disabled {name}", "REPLUGGED_TOAST_ADDON_ENABLE_SUCCESS": "Enabled {name}", @@ -189,7 +191,6 @@ "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name} installed successfully.", "REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED": "Failed to get info for addon.", "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "Install canceled.", - "REPLUGGED_QUICKCSS_FOLDER_OPEN": "Open Quick CSS Folder", "REPLUGGED_ADDON_AUTHORS_ONE": "by {author1}", "REPLUGGED_ADDON_AUTHORS_TWO": "by {author1} and {author2}", "REPLUGGED_ADDON_AUTHORS_THREE": "by {author1}, {author2}, and {author3}", diff --git a/src/renderer/coremods/settings/index.tsx b/src/renderer/coremods/settings/index.tsx index 080b9786b..306ef5b06 100644 --- a/src/renderer/coremods/settings/index.tsx +++ b/src/renderer/coremods/settings/index.tsx @@ -4,7 +4,7 @@ import { Injector } from "@replugged"; import { filters, waitForModule } from "src/renderer/modules/webpack"; import type { Section as SectionType } from "src/types/coremods/settings"; import { Divider, Header, Section, insertSections, settingsTools } from "./lib"; -import { General, Plugins, QuickCSS, Themes, Updater } from "./pages"; +import { General, Plugins, ConnectedQuickCSS, Themes, Updater } from "./pages"; const injector = new Injector(); @@ -47,7 +47,7 @@ export function start(): void { Section({ name: "rp-quickcss", label: () => Messages.REPLUGGED_QUICKCSS, - elem: QuickCSS, + elem: ConnectedQuickCSS as unknown as (args: unknown) => React.ReactElement, }), Section({ name: "rp-plugins", diff --git a/src/renderer/coremods/settings/pages/QuickCSS.css b/src/renderer/coremods/settings/pages/QuickCSS.css index 44cdc41c7..cd121cef7 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.css +++ b/src/renderer/coremods/settings/pages/QuickCSS.css @@ -1,3 +1,11 @@ +#replugged-quickcss-wrapper { + color: var(--text-normal); +} + +#replugged-quickcss-wrapper[data-popout=true] { + width: 100% !important; +} + #replugged-quickcss-wrapper .cm-editor { border: 1px solid transparent; border-radius: 4px; @@ -28,6 +36,11 @@ max-height: 75vh; } +/* TODO: Fix the height not working in popout */ +#replugged-quickcss-wrapper[data-popout=true] .cm-scroller { + max-height: 95vh; +} + #replugged-quickcss-wrapper .cm-scroller::-webkit-scrollbar { width: 10px; height: 0px; @@ -38,3 +51,24 @@ background-color: var(--scrollbar-thin-thumb); border-radius: 10px; } + +.replugged-quickcss-header { + height: 30px; + color: var(--text-normal); + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; + padding: 7px 15px; + background-color: var(--background-secondary); +} +/* Why do these have to be different in different windows.. */ +#replugged-quickcss-wrapper[data-popout=true] .replugged-quickcss-header { + height: 16px; +} + +.replugged-quickcss-header span, +.replugged-quickcss-header svg { + width: 100%; + height: 100%; +} diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index 59d96e0ce..a06f0c7b8 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -1,13 +1,17 @@ -import { React, toast } from "@common"; +import { React, flux, toast } from "@common"; import { Messages } from "@common/i18n"; import { EditorView, basicSetup } from "codemirror"; import { EditorState } from "@codemirror/state"; import { css } from "@codemirror/lang-css"; import { githubDark, githubLight } from "./codemirror-github"; import { webpack } from "@replugged"; -import { Button, Divider, Flex, Text } from "@components"; +import { Button, ButtonItem, Divider, Flex, Text, Tooltip } from "@components"; import "./QuickCSS.css"; import { generalSettings } from "./General"; +import { ReactComponent } from "src/types"; +import { Store } from "@common/flux"; + +const { connectStores } = flux; interface UseCodeMirrorOptions { value?: string; @@ -22,6 +26,30 @@ type ThemeModule = { removeChangeListener: (listener: () => unknown) => unknown; }; +const PopoutModule = await webpack.waitForModule( + webpack.filters.bySource('type:"POPOUT_WINDOW_OPEN"'), +); +// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style +const openPopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_OPEN") as ( + key: string, + render: ReactComponent, + features: Record, +) => void; +// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style +const closePopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_CLOSE") as ( + key: string, +) => void; +// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style +const PopoutWindowStore = webpack.getByStoreName("PopoutWindowStore") as Store & { + getWindow: (key: string) => Window; + getWindowOpen: (key: string) => boolean; +}; + +// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style +const DnDProvider = webpack.getBySource( + ".EMBEDDED_ACTIVITIES_ARE_YOU_SURE_WANT_TO_LEAVE", +) as ReactComponent; + function useTheme(): "light" | "dark" { const [theme, setTheme] = React.useState<"light" | "dark">("dark"); @@ -110,7 +138,7 @@ function useCodeMirror({ value: initialValueParam, onChange, container }: UseCod return { value, setValue: customSetValue }; } -export const QuickCSS = (): React.ReactElement => { +const QuickCSS = (props: { popout: boolean } & Record): React.ReactElement => { const ref = React.useRef(null); const { value, setValue } = useCodeMirror({ container: ref.current, @@ -170,24 +198,108 @@ export const QuickCSS = (): React.ReactElement => { if (autoApply) setReloadTimer(setTimeout(reload, 500)); }, [value]); + if (props.popout) { + React.useEffect(() => { + const window = PopoutWindowStore?.getWindow("DISCORD_REPLUGGED_QUICKCSS"); + + let el = window.document.createElement("link"); + el.rel = "stylesheet"; + el.href = `replugged://renderer.css?t=${Date.now()}`; + window.document.head.appendChild(el); + }, []); + } + return ( <> - - {Messages.REPLUGGED_QUICKCSS} -
- {autoApply ? null : ( - - )} - + {!props.popout ? ( + <> + + {Messages.REPLUGGED_QUICKCSS} +
+ {autoApply ? null : ( + + )} + +
+
+ + + ) : null} + + {!props.popout && props.isPopoutOpen ? ( + { + closePopout("DISCORD_REPLUGGED_QUICKCSS"); + }}> + {Messages.REPLUGGED_QUICKCSS_POPPED_OUT} + + ) : ( +
+
+ + {}}> + + + + + + {!props.popout ? ( + { + openPopout( + "DISCORD_REPLUGGED_QUICKCSS", + () => ( + + + + ), + {}, + ); + }}> + + + ) : ( + { + closePopout("DISCORD_REPLUGGED_QUICKCSS"); + }}> + + + + + )} + +
+
- - -
+ )} ); }; + +export const ConnectedQuickCSS = connectStores<{ popout: boolean }, { popout: boolean; isPopoutOpen: boolean }>([PopoutWindowStore], (props) => { + return { + isPopoutOpen: PopoutWindowStore.getWindowOpen("DISCORD_REPLUGGED_QUICKCSS"), + ...props + } +})(QuickCSS); From 268c0c10ee620aa5d4fb5e4194111da8489c4922 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Wed, 20 Sep 2023 13:14:36 -0400 Subject: [PATCH 04/31] use icon files --- .../coremods/settings/icons/Close.tsx | 7 +++ .../coremods/settings/icons/Popout.tsx | 7 +++ .../coremods/settings/icons/Settings.tsx | 6 +- src/renderer/coremods/settings/icons/index.ts | 4 ++ .../coremods/settings/pages/QuickCSS.tsx | 55 ++++++------------- 5 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 src/renderer/coremods/settings/icons/Close.tsx create mode 100644 src/renderer/coremods/settings/icons/Popout.tsx diff --git a/src/renderer/coremods/settings/icons/Close.tsx b/src/renderer/coremods/settings/icons/Close.tsx new file mode 100644 index 000000000..013f7499c --- /dev/null +++ b/src/renderer/coremods/settings/icons/Close.tsx @@ -0,0 +1,7 @@ +import { MouseEventHandler } from "react"; + +export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( + + + +) diff --git a/src/renderer/coremods/settings/icons/Popout.tsx b/src/renderer/coremods/settings/icons/Popout.tsx new file mode 100644 index 000000000..419028b63 --- /dev/null +++ b/src/renderer/coremods/settings/icons/Popout.tsx @@ -0,0 +1,7 @@ +import { MouseEventHandler } from "react"; + +export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( + + + +); diff --git a/src/renderer/coremods/settings/icons/Settings.tsx b/src/renderer/coremods/settings/icons/Settings.tsx index efe9d358b..b2e701fc7 100644 --- a/src/renderer/coremods/settings/icons/Settings.tsx +++ b/src/renderer/coremods/settings/icons/Settings.tsx @@ -1,5 +1,7 @@ -export default (): React.ReactElement => ( - +import { MouseEventHandler } from "react"; + +export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( + {/* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. */} diff --git a/src/renderer/coremods/settings/icons/index.ts b/src/renderer/coremods/settings/icons/index.ts index e6c8be8d6..db6583a38 100644 --- a/src/renderer/coremods/settings/icons/index.ts +++ b/src/renderer/coremods/settings/icons/index.ts @@ -4,6 +4,8 @@ import Link from "./Link"; import Reload from "./Reload"; import Settings from "./Settings"; import Trash from "./Trash"; +import Close from "./Close"; +import Popout from "./Popout"; export default { Discord, @@ -12,4 +14,6 @@ export default { Reload, Settings, Trash, + Close, + Popout, }; diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index a06f0c7b8..e29dff8cc 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -10,6 +10,9 @@ import "./QuickCSS.css"; import { generalSettings } from "./General"; import { ReactComponent } from "src/types"; import { Store } from "@common/flux"; +import Settings from "../icons/Settings"; +import Close from "../icons/Close"; +import Popout from "../icons/Popout"; const { connectStores } = flux; @@ -245,48 +248,26 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R
- {}}> - - + {!props.popout ? ( - { - openPopout( - "DISCORD_REPLUGGED_QUICKCSS", - () => ( - - - - ), - {}, - ); - }}> - - + { + openPopout( + "DISCORD_REPLUGGED_QUICKCSS", + () => ( + + + + ), + {}, + ); + }} /> ) : ( - { - closePopout("DISCORD_REPLUGGED_QUICKCSS"); - }}> - - - - + { + closePopout("DISCORD_REPLUGGED_QUICKCSS"); + }} /> )}
From 609468b26400cce15bde7100a8d392a69a48191e Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Wed, 20 Sep 2023 13:52:17 -0400 Subject: [PATCH 05/31] sticky popout --- .../settings/icons/{Close.tsx => Pin.tsx} | 7 ++- .../coremods/settings/icons/Unpin.tsx | 14 +++++ src/renderer/coremods/settings/icons/index.ts | 6 +- .../coremods/settings/pages/QuickCSS.tsx | 59 +++++++++++-------- 4 files changed, 59 insertions(+), 27 deletions(-) rename src/renderer/coremods/settings/icons/{Close.tsx => Pin.tsx} (63%) create mode 100644 src/renderer/coremods/settings/icons/Unpin.tsx diff --git a/src/renderer/coremods/settings/icons/Close.tsx b/src/renderer/coremods/settings/icons/Pin.tsx similarity index 63% rename from src/renderer/coremods/settings/icons/Close.tsx rename to src/renderer/coremods/settings/icons/Pin.tsx index 013f7499c..89a893471 100644 --- a/src/renderer/coremods/settings/icons/Close.tsx +++ b/src/renderer/coremods/settings/icons/Pin.tsx @@ -2,6 +2,9 @@ import { MouseEventHandler } from "react"; export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( - + -) +); diff --git a/src/renderer/coremods/settings/icons/Unpin.tsx b/src/renderer/coremods/settings/icons/Unpin.tsx new file mode 100644 index 000000000..37511a762 --- /dev/null +++ b/src/renderer/coremods/settings/icons/Unpin.tsx @@ -0,0 +1,14 @@ +import { MouseEventHandler } from "react"; + +export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( + + + + + + + + + + +); diff --git a/src/renderer/coremods/settings/icons/index.ts b/src/renderer/coremods/settings/icons/index.ts index db6583a38..c704d147c 100644 --- a/src/renderer/coremods/settings/icons/index.ts +++ b/src/renderer/coremods/settings/icons/index.ts @@ -4,8 +4,9 @@ import Link from "./Link"; import Reload from "./Reload"; import Settings from "./Settings"; import Trash from "./Trash"; -import Close from "./Close"; import Popout from "./Popout"; +import Pin from "./Pin"; +import Unpin from "./Unpin"; export default { Discord, @@ -14,6 +15,7 @@ export default { Reload, Settings, Trash, - Close, Popout, + Pin, + Unpin }; diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index e29dff8cc..efbfc4442 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -11,10 +11,9 @@ import { generalSettings } from "./General"; import { ReactComponent } from "src/types"; import { Store } from "@common/flux"; import Settings from "../icons/Settings"; -import Close from "../icons/Close"; import Popout from "../icons/Popout"; - -const { connectStores } = flux; +import Unpin from "../icons/Unpin"; +import Pin from "../icons/Pin"; interface UseCodeMirrorOptions { value?: string; @@ -42,10 +41,18 @@ const openPopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_OPEN const closePopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_CLOSE") as ( key: string, ) => void; + +// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style +const setAlwaysOnTop = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_SET_ALWAYS_ON_TOP") as ( + key: string, + alwaysOnTop: boolean, +) => void; + // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style const PopoutWindowStore = webpack.getByStoreName("PopoutWindowStore") as Store & { getWindow: (key: string) => Window; getWindowOpen: (key: string) => boolean; + getIsAlwaysOnTop: (key: string) => boolean; }; // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style @@ -212,6 +219,8 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R }, []); } + const [ alwaysOnTop, setAlwaysOnTop_ ] = React.useState(props.popoutOnTop); + return ( <> {!props.popout ? ( @@ -251,25 +260,28 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R - - {!props.popout ? ( - { - openPopout( - "DISCORD_REPLUGGED_QUICKCSS", - () => ( - - - - ), - {}, - ); - }} /> - ) : ( - { - closePopout("DISCORD_REPLUGGED_QUICKCSS"); - }} /> - )} - + {props.popout ? + {alwaysOnTop ? { + setAlwaysOnTop('DISCORD_REPLUGGED_QUICKCSS', false); + setAlwaysOnTop_(false); + }} /> : { + setAlwaysOnTop('DISCORD_REPLUGGED_QUICKCSS', true); + setAlwaysOnTop_(true); + }} /> + } + : + { + openPopout( + "DISCORD_REPLUGGED_QUICKCSS", + () => ( + + + + ), + {}, + ); + }} /> + }
@@ -278,9 +290,10 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R ); }; -export const ConnectedQuickCSS = connectStores<{ popout: boolean }, { popout: boolean; isPopoutOpen: boolean }>([PopoutWindowStore], (props) => { +export const ConnectedQuickCSS = flux.connectStores<{ popout: boolean }, { popout: boolean; isPopoutOpen: boolean }>([PopoutWindowStore], (props) => { return { isPopoutOpen: PopoutWindowStore.getWindowOpen("DISCORD_REPLUGGED_QUICKCSS"), + popoutOnTop: PopoutWindowStore.getIsAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS"), ...props } })(QuickCSS); From a1a96b9e3c2b25e392ee257859f59df82b96aa02 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Wed, 20 Sep 2023 16:44:08 -0400 Subject: [PATCH 06/31] lint --- src/renderer/coremods/settings/icons/Pin.tsx | 11 +-- .../coremods/settings/icons/Popout.tsx | 6 +- .../coremods/settings/icons/Settings.tsx | 6 +- .../coremods/settings/icons/Unpin.tsx | 24 ++++-- src/renderer/coremods/settings/icons/index.ts | 2 +- src/renderer/coremods/settings/index.tsx | 2 +- .../coremods/settings/pages/QuickCSS.css | 6 +- .../coremods/settings/pages/QuickCSS.tsx | 77 +++++++++++-------- 8 files changed, 85 insertions(+), 49 deletions(-) diff --git a/src/renderer/coremods/settings/icons/Pin.tsx b/src/renderer/coremods/settings/icons/Pin.tsx index 89a893471..edaa8d00f 100644 --- a/src/renderer/coremods/settings/icons/Pin.tsx +++ b/src/renderer/coremods/settings/icons/Pin.tsx @@ -1,10 +1,11 @@ import { MouseEventHandler } from "react"; export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( - - + + ); diff --git a/src/renderer/coremods/settings/icons/Popout.tsx b/src/renderer/coremods/settings/icons/Popout.tsx index 419028b63..a192ba384 100644 --- a/src/renderer/coremods/settings/icons/Popout.tsx +++ b/src/renderer/coremods/settings/icons/Popout.tsx @@ -1,7 +1,11 @@ import { MouseEventHandler } from "react"; export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( - + ); diff --git a/src/renderer/coremods/settings/icons/Settings.tsx b/src/renderer/coremods/settings/icons/Settings.tsx index b2e701fc7..a9e57441c 100644 --- a/src/renderer/coremods/settings/icons/Settings.tsx +++ b/src/renderer/coremods/settings/icons/Settings.tsx @@ -1,7 +1,11 @@ import { MouseEventHandler } from "react"; export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( - + {/* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. */} diff --git a/src/renderer/coremods/settings/icons/Unpin.tsx b/src/renderer/coremods/settings/icons/Unpin.tsx index 37511a762..465897e08 100644 --- a/src/renderer/coremods/settings/icons/Unpin.tsx +++ b/src/renderer/coremods/settings/icons/Unpin.tsx @@ -1,14 +1,24 @@ import { MouseEventHandler } from "react"; export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( - - - + + + - - - - + + + + ); diff --git a/src/renderer/coremods/settings/icons/index.ts b/src/renderer/coremods/settings/icons/index.ts index c704d147c..3b99bb216 100644 --- a/src/renderer/coremods/settings/icons/index.ts +++ b/src/renderer/coremods/settings/icons/index.ts @@ -17,5 +17,5 @@ export default { Trash, Popout, Pin, - Unpin + Unpin, }; diff --git a/src/renderer/coremods/settings/index.tsx b/src/renderer/coremods/settings/index.tsx index 306ef5b06..772fb20e4 100644 --- a/src/renderer/coremods/settings/index.tsx +++ b/src/renderer/coremods/settings/index.tsx @@ -4,7 +4,7 @@ import { Injector } from "@replugged"; import { filters, waitForModule } from "src/renderer/modules/webpack"; import type { Section as SectionType } from "src/types/coremods/settings"; import { Divider, Header, Section, insertSections, settingsTools } from "./lib"; -import { General, Plugins, ConnectedQuickCSS, Themes, Updater } from "./pages"; +import { ConnectedQuickCSS, General, Plugins, Themes, Updater } from "./pages"; const injector = new Injector(); diff --git a/src/renderer/coremods/settings/pages/QuickCSS.css b/src/renderer/coremods/settings/pages/QuickCSS.css index cd121cef7..a229dfb58 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.css +++ b/src/renderer/coremods/settings/pages/QuickCSS.css @@ -2,7 +2,7 @@ color: var(--text-normal); } -#replugged-quickcss-wrapper[data-popout=true] { +#replugged-quickcss-wrapper[data-popout="true"] { width: 100% !important; } @@ -37,7 +37,7 @@ } /* TODO: Fix the height not working in popout */ -#replugged-quickcss-wrapper[data-popout=true] .cm-scroller { +#replugged-quickcss-wrapper[data-popout="true"] .cm-scroller { max-height: 95vh; } @@ -63,7 +63,7 @@ background-color: var(--background-secondary); } /* Why do these have to be different in different windows.. */ -#replugged-quickcss-wrapper[data-popout=true] .replugged-quickcss-header { +#replugged-quickcss-wrapper[data-popout="true"] .replugged-quickcss-header { height: 16px; } diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index efbfc4442..ccbc5bf96 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -43,10 +43,10 @@ const closePopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_CLO ) => void; // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const setAlwaysOnTop = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_SET_ALWAYS_ON_TOP") as ( - key: string, - alwaysOnTop: boolean, -) => void; +const setAlwaysOnTop = webpack.getFunctionBySource( + PopoutModule, + "POPOUT_WINDOW_SET_ALWAYS_ON_TOP", +) as (key: string, alwaysOnTop: boolean) => void; // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style const PopoutWindowStore = webpack.getByStoreName("PopoutWindowStore") as Store & { @@ -219,7 +219,7 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R }, []); } - const [ alwaysOnTop, setAlwaysOnTop_ ] = React.useState(props.popoutOnTop); + const [alwaysOnTop, setAlwaysOnTop_] = React.useState(props.popoutOnTop); return ( <> @@ -260,28 +260,42 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R - {props.popout ? - {alwaysOnTop ? { - setAlwaysOnTop('DISCORD_REPLUGGED_QUICKCSS', false); - setAlwaysOnTop_(false); - }} /> : { - setAlwaysOnTop('DISCORD_REPLUGGED_QUICKCSS', true); - setAlwaysOnTop_(true); - }} /> - } - : - { - openPopout( - "DISCORD_REPLUGGED_QUICKCSS", - () => ( - - - - ), - {}, - ); - }} /> - } + {props.popout ? ( + + {alwaysOnTop ? ( + { + setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", false); + setAlwaysOnTop_(false); + }} + /> + ) : ( + { + setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", true); + setAlwaysOnTop_(true); + }} + /> + )} + + ) : ( + + { + openPopout( + "DISCORD_REPLUGGED_QUICKCSS", + () => ( + + + + ), + {}, + ); + }} + /> + + )}
@@ -290,10 +304,13 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R ); }; -export const ConnectedQuickCSS = flux.connectStores<{ popout: boolean }, { popout: boolean; isPopoutOpen: boolean }>([PopoutWindowStore], (props) => { +export const ConnectedQuickCSS = flux.connectStores< + { popout: boolean }, + { popout: boolean; isPopoutOpen: boolean } +>([PopoutWindowStore], (props) => { return { isPopoutOpen: PopoutWindowStore.getWindowOpen("DISCORD_REPLUGGED_QUICKCSS"), popoutOnTop: PopoutWindowStore.getIsAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS"), - ...props - } + ...props, + }; })(QuickCSS); From 389d6fd42453a3cad1e9bda484467fda75f09874 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Fri, 22 Sep 2023 17:45:33 -0400 Subject: [PATCH 07/31] fix css --- src/renderer/coremods/settings/pages/QuickCSS.css | 7 ++++++- src/renderer/coremods/settings/pages/QuickCSS.tsx | 4 ---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/renderer/coremods/settings/pages/QuickCSS.css b/src/renderer/coremods/settings/pages/QuickCSS.css index a229dfb58..14c3c4c11 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.css +++ b/src/renderer/coremods/settings/pages/QuickCSS.css @@ -11,6 +11,7 @@ border-radius: 4px; border: 1px solid var(--background-tertiary); outline: none !important; + max-height: calc(100vh - 52px); } #replugged-quickcss-wrapper .cm-gutters { @@ -38,7 +39,7 @@ /* TODO: Fix the height not working in popout */ #replugged-quickcss-wrapper[data-popout="true"] .cm-scroller { - max-height: 95vh; + max-height: 100%; } #replugged-quickcss-wrapper .cm-scroller::-webkit-scrollbar { @@ -72,3 +73,7 @@ width: 100%; height: 100%; } + +[class^="content-2qc4CV"]:has(> #replugged-quickcss-wrapper) { + display: block; +} diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index ccbc5bf96..1c47689de 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -256,10 +256,6 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R ) : (
- - - - {props.popout ? ( From 512aea36c7e13b8b5ba08a5538d38a3b1842f148 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Tue, 26 Sep 2023 16:23:46 -0400 Subject: [PATCH 08/31] fix most changes --- pnpm-lock.yaml | 2 +- src/renderer/coremods/settings/icons/Pin.tsx | 7 +- .../coremods/settings/icons/Popout.tsx | 7 +- .../coremods/settings/icons/Settings.tsx | 7 +- .../coremods/settings/icons/Unpin.tsx | 7 +- .../coremods/settings/pages/QuickCSS.css | 1 + .../coremods/settings/pages/QuickCSS.tsx | 74 +++++++++---------- 7 files changed, 43 insertions(+), 62 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b09e686b4..1c1887238 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '6.1' settings: autoInstallPeers: true diff --git a/src/renderer/coremods/settings/icons/Pin.tsx b/src/renderer/coremods/settings/icons/Pin.tsx index edaa8d00f..5c9f03280 100644 --- a/src/renderer/coremods/settings/icons/Pin.tsx +++ b/src/renderer/coremods/settings/icons/Pin.tsx @@ -1,11 +1,8 @@ -import { MouseEventHandler } from "react"; - -export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( +export default (): React.ReactElement => ( + fill="currentColor"> ); diff --git a/src/renderer/coremods/settings/icons/Popout.tsx b/src/renderer/coremods/settings/icons/Popout.tsx index a192ba384..687ed8d5b 100644 --- a/src/renderer/coremods/settings/icons/Popout.tsx +++ b/src/renderer/coremods/settings/icons/Popout.tsx @@ -1,11 +1,8 @@ -import { MouseEventHandler } from "react"; - -export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( +export default (): React.ReactElement => ( + fill="currentColor"> ); diff --git a/src/renderer/coremods/settings/icons/Settings.tsx b/src/renderer/coremods/settings/icons/Settings.tsx index a9e57441c..4c813b581 100644 --- a/src/renderer/coremods/settings/icons/Settings.tsx +++ b/src/renderer/coremods/settings/icons/Settings.tsx @@ -1,11 +1,8 @@ -import { MouseEventHandler } from "react"; - -export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( +export default (): React.ReactElement => ( + fill="currentColor"> {/* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. */} diff --git a/src/renderer/coremods/settings/icons/Unpin.tsx b/src/renderer/coremods/settings/icons/Unpin.tsx index 465897e08..8028c072f 100644 --- a/src/renderer/coremods/settings/icons/Unpin.tsx +++ b/src/renderer/coremods/settings/icons/Unpin.tsx @@ -1,11 +1,8 @@ -import { MouseEventHandler } from "react"; - -export default (props: { onClick?: MouseEventHandler }): React.ReactElement => ( +export default (): React.ReactElement => ( + fill="currentColor"> unknown; @@ -30,35 +30,34 @@ type ThemeModule = { const PopoutModule = await webpack.waitForModule( webpack.filters.bySource('type:"POPOUT_WINDOW_OPEN"'), -); -// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const openPopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_OPEN") as ( +)!; +const openPopout = webpack.getFunctionBySource<( key: string, - render: ReactComponent, + render: React.ComponentType, features: Record, -) => void; -// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const closePopout = webpack.getFunctionBySource(PopoutModule, "POPOUT_WINDOW_CLOSE") as ( +) => void>(PopoutModule, "POPOUT_WINDOW_OPEN")!; +const closePopout = webpack.getFunctionBySource<( key: string, -) => void; +) => void>(PopoutModule, "POPOUT_WINDOW_CLOSE")!; -// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const setAlwaysOnTop = webpack.getFunctionBySource( +const setAlwaysOnTop = webpack.getFunctionBySource<(key: string, alwaysOnTop: boolean) => void>( PopoutModule, "POPOUT_WINDOW_SET_ALWAYS_ON_TOP", -) as (key: string, alwaysOnTop: boolean) => void; +)!; -// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const PopoutWindowStore = webpack.getByStoreName("PopoutWindowStore") as Store & { +const PopoutWindowStore = webpack.getByStoreName Window; getWindowOpen: (key: string) => boolean; getIsAlwaysOnTop: (key: string) => boolean; -}; +}>("PopoutWindowStore")!; -// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style -const DnDProvider = webpack.getBySource( +const PopoutWindow = webpack.getBySource>( ".EMBEDDED_ACTIVITIES_ARE_YOU_SURE_WANT_TO_LEAVE", -) as ReactComponent; +)!; + +const StayAlwaysOnTopButton = webpack.getBySource>( + 'popoutWindowAlwaysOnTop"', +)!; function useTheme(): "light" | "dark" { const [theme, setTheme] = React.useState<"light" | "dark">("dark"); @@ -247,7 +246,7 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R {!props.popout && props.isPopoutOpen ? ( { closePopout("DISCORD_REPLUGGED_QUICKCSS"); }}> @@ -259,37 +258,30 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R {props.popout ? ( - {alwaysOnTop ? ( - { - setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", false); - setAlwaysOnTop_(false); - }} - /> - ) : ( - { - setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", true); - setAlwaysOnTop_(true); - }} - /> - )} + { + setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", !alwaysOnTop); + setAlwaysOnTop_(!alwaysOnTop); + }}> + {alwaysOnTop ? : } + ) : ( - { openPopout( "DISCORD_REPLUGGED_QUICKCSS", () => ( - + - + ), {}, ); - }} - /> + }}> + + )}
From 213d62c3b46b8b3e7079c4f2c56468aea8111467 Mon Sep 17 00:00:00 2001 From: 12944qwerty Date: Tue, 26 Sep 2023 16:25:39 -0400 Subject: [PATCH 09/31] lint --- src/renderer/coremods/settings/icons/Pin.tsx | 5 +-- .../coremods/settings/icons/Popout.tsx | 5 +-- .../coremods/settings/icons/Settings.tsx | 5 +-- .../coremods/settings/icons/Unpin.tsx | 5 +-- .../coremods/settings/pages/QuickCSS.tsx | 37 +++++++++---------- 5 files changed, 22 insertions(+), 35 deletions(-) diff --git a/src/renderer/coremods/settings/icons/Pin.tsx b/src/renderer/coremods/settings/icons/Pin.tsx index 5c9f03280..86b9a7517 100644 --- a/src/renderer/coremods/settings/icons/Pin.tsx +++ b/src/renderer/coremods/settings/icons/Pin.tsx @@ -1,8 +1,5 @@ export default (): React.ReactElement => ( - + ); diff --git a/src/renderer/coremods/settings/icons/Popout.tsx b/src/renderer/coremods/settings/icons/Popout.tsx index 687ed8d5b..35542e904 100644 --- a/src/renderer/coremods/settings/icons/Popout.tsx +++ b/src/renderer/coremods/settings/icons/Popout.tsx @@ -1,8 +1,5 @@ export default (): React.ReactElement => ( - + ); diff --git a/src/renderer/coremods/settings/icons/Settings.tsx b/src/renderer/coremods/settings/icons/Settings.tsx index 4c813b581..efe9d358b 100644 --- a/src/renderer/coremods/settings/icons/Settings.tsx +++ b/src/renderer/coremods/settings/icons/Settings.tsx @@ -1,8 +1,5 @@ export default (): React.ReactElement => ( - + {/* Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. */} diff --git a/src/renderer/coremods/settings/icons/Unpin.tsx b/src/renderer/coremods/settings/icons/Unpin.tsx index 8028c072f..1dcf38103 100644 --- a/src/renderer/coremods/settings/icons/Unpin.tsx +++ b/src/renderer/coremods/settings/icons/Unpin.tsx @@ -1,8 +1,5 @@ export default (): React.ReactElement => ( - + , -) => void>(PopoutModule, "POPOUT_WINDOW_OPEN")!; -const closePopout = webpack.getFunctionBySource<( - key: string, -) => void>(PopoutModule, "POPOUT_WINDOW_CLOSE")!; +const openPopout = webpack.getFunctionBySource< + (key: string, render: React.ComponentType, features: Record) => void +>(PopoutModule, "POPOUT_WINDOW_OPEN")!; +const closePopout = webpack.getFunctionBySource<(key: string) => void>( + PopoutModule, + "POPOUT_WINDOW_CLOSE", +)!; const setAlwaysOnTop = webpack.getFunctionBySource<(key: string, alwaysOnTop: boolean) => void>( PopoutModule, "POPOUT_WINDOW_SET_ALWAYS_ON_TOP", )!; -const PopoutWindowStore = webpack.getByStoreName Window; - getWindowOpen: (key: string) => boolean; - getIsAlwaysOnTop: (key: string) => boolean; -}>("PopoutWindowStore")!; +const PopoutWindowStore = webpack.getByStoreName< + Store & { + getWindow: (key: string) => Window; + getWindowOpen: (key: string) => boolean; + getIsAlwaysOnTop: (key: string) => boolean; + } +>("PopoutWindowStore")!; const PopoutWindow = webpack.getBySource>( ".EMBEDDED_ACTIVITIES_ARE_YOU_SURE_WANT_TO_LEAVE", )!; -const StayAlwaysOnTopButton = webpack.getBySource>( - 'popoutWindowAlwaysOnTop"', -)!; - function useTheme(): "light" | "dark" { const [theme, setTheme] = React.useState<"light" | "dark">("dark"); @@ -263,7 +260,7 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R setAlwaysOnTop("DISCORD_REPLUGGED_QUICKCSS", !alwaysOnTop); setAlwaysOnTop_(!alwaysOnTop); }}> - {alwaysOnTop ? : } + {alwaysOnTop ? : } ) : ( @@ -273,7 +270,9 @@ const QuickCSS = (props: { popout: boolean } & Record): React.R openPopout( "DISCORD_REPLUGGED_QUICKCSS", () => ( - + ), From 1abd0c4041bf0fe6e72a5e9a93ccd83cd9f4d476 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 22 Sep 2023 19:06:43 +0000 Subject: [PATCH 10/31] i18n: update translations from weblate Co-authored-by: Marius Co-authored-by: Weblate Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/de/ Translation: Replugged/Replugged --- i18n/de.json | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/i18n/de.json b/i18n/de.json index 32b441428..3abacecd0 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -67,7 +67,7 @@ "REPLUGGED_PLUGIN_EMBED_COPY": "Link kopieren", "REPLUGGED_PLUGIN_EMBED_VIEW_REPO": "Repo ansehen", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS_CONTENT": "Dies ist eine Replugged-Funktion. Sie ermöglicht es dir, Plugins oder Themes direkt aus dem Chat zu installieren.\nKlicke einfach auf die Schaltfläche „Installieren“ in der Einbettung.", - "REPLUGGED_COMMAND_ENABLE_DESC": "Aktiviere ein Plugin/Theme", + "REPLUGGED_COMMAND_ENABLE_DESC": "Aktiviere ein Plugin oder Theme", "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} ist bereits installiert.", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "Bei der Ausführung des Befehls ist ein Fehler aufgetreten:", "REPLUGGED_ERROR_CHECK_CONSOLE": "Weitere Einzelheiten finden Sie auf der Konsole.", @@ -120,12 +120,12 @@ "REPLUGGED_CANCEL": "Abbrechen", "REPLUGGED_CONFIRM": "Bestätigen", "REPLUGGED_OK": "OK", - "REPLUGGED_COMMAND_DISABLE_DESC": "Deaktiviere ein Plugin/Theme", - "REPLUGGED_COMMAND_RELOAD_DESC": "Ein Plugin/Theme neu laden", + "REPLUGGED_COMMAND_DISABLE_DESC": "Deaktiviere ein Plugin oder Theme", + "REPLUGGED_COMMAND_RELOAD_DESC": "Ein Plugin oder Theme neu laden", "REPLUGGED_ADDON_DELETE": "Lösche {type}", - "REPLUGGED_ADDON_PAGE_OPEN": "Öffne Seite {type}", + "REPLUGGED_ADDON_PAGE_OPEN": "Öffne {type} Seite", "REPLUGGED_ADDON_PROFILE_OPEN": "Öffne {type} Profil", - "REPLUGGED_ADDON_RELOAD": "lade {type} neu", + "REPLUGGED_ADDON_RELOAD": "Lade {type} neu", "REPLUGGED_ADDON_SETTINGS": "Öffne {type} Einstellungen", "REPLUGGED_ADDON_AUTHORS_THREE": "von {author1},{author2} und {author3}", "REPLUGGED_ADDON_AUTHORS_ONE": "von {author1}", @@ -196,5 +196,36 @@ "REPLUGGED_SETTINGS_ADDON_EMBEDS": "Addon-Einbettungen anzeigen", "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "Zeige eine Informationskarte über das Addon when ein Shop-/Installationslink im Chat geteilt wird.", "REPLUGGED_RESTART": "Neustart", - "REPLUGGED_SETTINGS_RESTART_TITLE": "Neustart benötigt" + "REPLUGGED_SETTINGS_RESTART_TITLE": "Neustart benötigt", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Ein Fehler ist aufgetreten, bitte versuchen Sie es später erneut. Falls dieser Fehler weiter auftreten sollte, wenden Sie sich bitte an das Replugged Team.", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "Erweiterung", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Suche nach Erweiterung, die aktiviert werden soll", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} wurde aktiviert!", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "Erweiterung", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Suche nach Erweiterung, die deaktiviert werden soll", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} wurde deaktiviert!", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "Erweiterung", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Suche nach Erweiterung, die neu geladen werden soll", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} wurde neu geladen!", + "REPLUGGED_COMMAND_LIST_DESC": "Liste alle Plugins und Themes", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "senden", + "REPLUGGED_SETTINGS_TRANSPARENT": "Durchsichtiges Fenster", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****WARNUNG:**** **Hardware acceleration** muss gegebenenfalls **ausgeschaltet** werden. In manchen Fällen, ist ein schwarzer Hintergrund zu erwarten, wie wenn das Fenster am unteren oder oberen Rand durch die Monitor Auflösung abgeschnitten wird oder wie wenn die Developer Tools offen und angedockt sind.", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Mache das Discord-Fenster durchsichtig, hauptsächlich zu Nutzen bei Themes. **Benötigt Neustart**.", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Erfolgreich", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Teile diese Liste öffentlich im Chat", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Welche Erweiterungen sollen gezeigt werden", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "Typ", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Liste Plugins", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Liste Themes", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "Version", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Zeige Versionen in der Liste", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "Status", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Zeige Erweiterungen die aktiviert, deaktivier oder die beides sind", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Aktiviert", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Deaktiviert", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Beides", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "{type} aktiviert", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "{type} deaktiviert", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Du musst angeben ob eine Plugin- oder eine Theme-Liste gesendet werden soll" } From 8568845254cff427375d7fc7565a9282c05ec42b Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Sat, 23 Sep 2023 13:29:49 -0500 Subject: [PATCH 11/31] New i18n strings --- i18n/en-US.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/i18n/en-US.json b/i18n/en-US.json index a576bb889..26621b57b 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -49,6 +49,14 @@ "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "Enabled {type}", "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "Disabled {type}", "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "You need to specify whether to send a plugin or theme list", + "REPLUGGED_COMMAND_INSTALL_NAME": "install", + "REPLUGGED_COMMAND_INSTALL_DESC": "Install a plugin or theme", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identifier of the addon to install from the source", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "source", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Source to install the addon from", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "If the source has multiple addons, specify which one to install", "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} is already installed.", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "An error occurred while executing the command:", "REPLUGGED_ERROR_CHECK_CONSOLE": "Check the console for more details.", @@ -234,5 +242,6 @@ "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Makes the Discord window transparent, primarily useful for theming. **Requires restart**.", "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****WARNING:**** This will break **window snapping**. In some cases, you may experience a black background, such as when the window is cut off at the top or bottom due to the monitor resolution, or when the development tools are open and docked.", "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****WARNING:**** **Hardware acceleration** may need to be turned **off**. In some cases, you may experience a black background, such as when the window is cut off at the top or bottom due to the monitor resolution, or when the development tools are open and docked.", - "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}" + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}", + "REPLUGGED_STORE": "Store" } From aba34cce57fdeb9ffff1f60cb0d3cfa0d06e0f40 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 23 Sep 2023 23:52:57 +0000 Subject: [PATCH 12/31] i18n: update translations from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: La prière Co-authored-by: SKEIDs <11477e@gmail.com> Co-authored-by: Weblate Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/ja/ Translation: Replugged/Replugged --- i18n/ja.json | 101 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 95 insertions(+), 6 deletions(-) diff --git a/i18n/ja.json b/i18n/ja.json index 6bc7b96d3..d60609158 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -38,8 +38,8 @@ "REPLUGGED_UPDATES_FORCE": "強制アップデート", "REPLUGGED_UPDATES_LAST_CHECKED": "最後の確認: {date}", "REPLUGGED_UPDATES_OPEN_UPDATER": "アップデーターを開く", - "REPLUGGED_UPDATES_OPTS_AUTO": "バックグラウンドで自動的にアップデートする", - "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Repluggedはバックグラウンドでアップデートをダウンロードし、インストールすることができるので、あまり迷惑をかけることはありません。ただし、再読み込みが必要な場合や、競合が発生した場合は、ユーザーによる操作が必要になります。", + "REPLUGGED_UPDATES_OPTS_AUTO": "アップデートを自動的に確認する", + "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Replugged はバックグラウンドでアップデートを確認し、アップデートがあればアラートを表示します。アップデートを選択するまで、インストールされません。公式アドオンのみが自動的にチェックされます。", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS": "チェンジログを開く", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS_DESC": "チェンジログを見逃した、またはもう一度見たい?", "REPLUGGED_UPDATES_OPTS_CONCURRENCY": "アップデートの同時実行数制限", @@ -47,7 +47,7 @@ "REPLUGGED_UPDATES_OPTS_DEBUG": "デバッグ情報", "REPLUGGED_UPDATES_OPTS_DEBUG_DESC": "一部の統計でトラブルシューティングやフレックスに役立つと思われます。", "REPLUGGED_UPDATES_OPTS_INTERVAL": "アップデートチェック間隔", - "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Repluggedがアップデートを確認する頻度(分)。最低10分です。", + "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Repluggedがアップデートを確認する頻度。最低10分。", "REPLUGGED_UPDATES_OPTS_RELEASE": "リリースチャンネルを変更する", "REPLUGGED_UPDATES_OPTS_RELEASE_DESC": "安定版ブランチと開発版ブランチのどちらかを選択することができます。安定版ブランチでは、メジャーアップデート、セキュリティアップデート、クリティカルアップデートのみが行われます。よくわからない場合は、安定版ブランチのままにしてください。", "REPLUGGED_UPDATES_OPTS_RELEASE_DEVELOP_BTN": "開発版ブランチに切り替える", @@ -56,7 +56,7 @@ "REPLUGGED_UPDATES_OPTS_RELEASE_STABLE_BTN": "安定版ブランチに切り替える", "REPLUGGED_UPDATES_OPTS_RELEASE_SWITCH": "切り替え", "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED": "アップデート確認のトーストを表示する", - "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "クライアント上にオーバーレイを表示し、アップデートを確認中であることを示し、アップデートが見つかった場合は、アップデートを促すようにします。バックグラウンドでの更新が無効の場合のみ適用されます。", + "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "クライアント上にオーバーレイを表示してアップデートを確認中であることを示し、アップデートが見つかった場合はアップデートを促します。バックグラウンドでの更新が無効の場合のみ適用されます。", "REPLUGGED_UPDATES_UPDATE": "今すぐアップデート", "REPLUGGED_UPDATES_UPDATING": "Repluggedをアップデートしています…", "REPLUGGED_UPDATES_UPDATING_ITEM": "アップデートしています…", @@ -73,7 +73,7 @@ "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name}は既にインストールされています。", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "正しくコマンドを実行できませんでした:", "REPLUGGED_ERROR_CHECK_CONSOLE": "詳細はコンソールを確認してください。", - "REPLUGGED_NOTICES_WELCOME_NEW_USER": "ようこそ! Replugged はあなたのDiscordクライアントに正常に導入されました。気軽に私たちのDiscord サーバーに参加すると、アナウンスやサポートなどを得る事が出来ます!", + "REPLUGGED_NOTICES_WELCOME_NEW_USER": "ようこそ!Replugged はあなたのDiscordクライアントに正常に導入されました。気軽に私たちのDiscord サーバーに参加すると、アナウンスやサポートなどを得る事が出来ます!", "REPLUGGED_UPDATES_OPTS_DEBUG_RELEASE_CHANNEL": "リリースチャンネル:", "REPLUGGED_UPDATES_OPTS_DEBUG_PLUGINS_SHOW_LESS": "表示を少なくする", "REPLUGGED_PLUGIN_EMBED_COPY": "リンクをコピー", @@ -153,5 +153,94 @@ "REPLUGGED_PLUGIN_INSTALL_RELOAD_PROMPT_BODY": "{name} を正しく動作させるには再読み込みが必要です。今すぐ再読み込みしますか?", "REPLUGGED_RELOAD": "再読み込み", "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_FAILED": "{name}のインストールに失敗しました。", - "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors}をインストールしますか?" + "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors}をインストールしますか?", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} は無効化されました!", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} はリロードされました!", + "REPLUGGED_DEVELOPER_MODE_WARNING": "現在、開発者モードで Replugged を実行しているため、Replugged 自体のアップデートができません。[本番モードに切り替えてください。]({url})", + "REPLUGGED_ADDON_BROWSE": "{type}を見る", + "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "チャットでストア/インストールリンクが共有されたときに、アドオンの情報が記載されたカードを表示するようにします。", + "REPLUGGED_SETTINGS_TRANSPARENT": "透明なウィンドウ", + "REPLUGGED_ADDON_NOT_REVIEWED": "未審査の{type}", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****警告: **** これにより **ウィンドウスナップ** が機能しなくなります。モニターの解像度の関係でウィンドウの上下が切れている場合や、開発者ツールを開いてドッキングしている場合など、背景が黒くなる場合があります。", + "REPLUGGED_ADDON_NOT_REVIEWED_DESC": "この{type}は Replugged チームによってレビューされておらず、あなたのコンピュータに損害を与える可能性があります。自己責任で使用してください。", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****警告: **** **ハードウェアアクセラレーション** を **オフ** にする必要があるかもしれません。モニターの解像度の関係でウィンドウの上下が切れている場合や、開発者ツールを開いてドッキングしている場合など、背景が黒くなる場合があります。", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY": "Quick CSS を自動的に適用", + "REPLUGGED_I18N": "Replugged 翻訳", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY_DESC": "入力中に Quick CSS の変更を自動的に適用します。", + "REPLUGGED_SETTINGS_DEV_COMPANION": "Dev Companion を再接続", + "REPLUGGED_SETTINGS_DEV_COMPANION_DESC": "Dev Companion coremod を VSCode 拡張機能に再接続します。", + "REPLUGGED_SETTINGS_DEV_COMPANION_RECONNECT": "再接続", + "REPLUGGED_SETTINGS_ADVANCED": "高度な設定", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS": "React DevTools を有効化", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_DESC": "React DevTools 拡張機能をロードし、React ツリーの検査とデバッグをより簡単に行えるようにします。**再起動が必要**", + "REPLUGGED_VIEW_UPDATES": "{count, number} 個のアップデートを見る", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "プラグイン: {name}", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_FAILED": "React DevTools のダウンロードに失敗しました。", + "REPLUGGED_INSTALLER_OPEN_STORE": "ストアで見る", + "REPLUGGED_SETTINGS_ADDON_EMBEDS": "アドオンの埋め込みの表示", + "REPLUGGED_SNIPPET_LINE1": "Snippet from #css-snippets applied the {date, date, medium} at {date, time, medium}", + "REPLUGGED_RESTART": "再起動", + "REPLUGGED_SETTINGS_RESTART_TITLE": "再起動", + "REPLUGGED_ADDON_AUTHORS_ONE": "作者: {author1}", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "有効にするアドオンを選択してください", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "ソースからインストールするアドオンの ID", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "無効にするアドオンを選択してください", + "REPLUGGED_COMMAND_ERROR_GENERIC": "問題が発生しました。後でもう一度お試しください。この問題が解決しない場合は、Replugged チームまでご連絡ください。", + "REPLUGGED_COMMAND_ENABLE_NAME": "enable", + "REPLUGGED_COMMAND_INSTALL_NAME": "install", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} は有効化されました!", + "REPLUGGED_COMMAND_INSTALL_DESC": "プラグイン/テーマをインストールする", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "アドオンをインストールするソース", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "ソースに複数のアドオンがある場合は、インストールするアドオンを指定してください", + "REPLUGGED_COMMAND_DISABLE_NAME": "disable", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "source", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_LIST_NAME": "list", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "リロードするアドオンを選択してください", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "チャットにリストを公開する", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "send", + "REPLUGGED_COMMAND_LIST_DESC": "プラグイン/テーマのリスト", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "type", + "REPLUGGED_COMMAND_RELOAD_NAME": "reload", + "REPLUGGED_SETTINGS_BADGES_DESC": "ユーザーのプロフィールに Replugged のカスタムバッジを表示します。", + "REPLUGGED_STORE": "ストア", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "表示するアドオンの種類", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "リストにバージョンを含める", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "有効なアドオン、無効なアドオン、またはその両方を表示するかどうか", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "version", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "status", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "有効", + "REPLUGGED_UPDATES_UPDATE_TO": "{version} にアップデート", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Discordウィンドウを透明にします、主にテーマ設定に便利です。**再起動が必要**", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "成功", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "テーマをリスト", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "プラグインをリスト", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "無効", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "両方", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "有効な{type}", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "無効な{type}", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "プラグインかテーマのどちらのリストを送信するかを指定する必要があります", + "REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED": "アドオン情報の取得に失敗しました。", + "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "インストールはキャンセルされました。", + "REPLUGGED_ADDON_AUTHORS_MANY": "作者: {author1}, {author2}, {author3}, 他 {count, number} 人", + "REPLUGGED_UPDATES_TOAST_FAILED_ONE": "アップデート失敗!", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ALL": "アップデートは正常に完了しました。", + "REPLUGGED_QUICKCSS_FOLDER_OPEN": "Quick CSS フォルダーを開く", + "REPLUGGED_UPDATES_UPDATE_NOUN": "アップデート", + "REPLUGGED_VERSION": "Replugged {version, select, dev {[DEV MODE]} other {v{version}}}", + "REPLUGGED_SETTINGS_BADGES": "Replugged バッジを有効化", + "REPLUGGED_ADDON_AUTHORS_TWO": "作者: {author1}, {author2}", + "REPLUGGED_ADDON_AUTHORS_THREE": "作者: {author1}, {author2}, {author3}", + "REPLUGGED_CONFIRM_INSTALL": "インストール", + "REPLUGGED_TOAST_INSTALLER_ADDON_LOAD_FAILED": "{name}はインストールされましたが、ロードできませんでした。", + "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name}が正常にインストールされました。", + "REPLUGGED_UPDATES_UPDATE_ALL": "すべてアップデート", + "REPLUGGED_UPDATES_TOAST_NO_NEW": "新しいアップデートはありません。", + "REPLUGGED_UPDATES_TOAST_FAILED_ALL": "アップデート失敗!", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ONE": "アップデートは正常に完了しました。", + "REPLUGGED_UPDATES_TOAST_NEW": "{count, number} 個のアップデートがあります!" } From 1e0c9fe4b9051e8812faf9e668b4f727b7f235e6 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 24 Sep 2023 01:06:42 +0000 Subject: [PATCH 13/31] i18n: update translations from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: La prière Co-authored-by: Sebastián Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/es/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/ja/ Translation: Replugged/Replugged --- i18n/es-ES.json | 9 ++++++--- i18n/ja.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/i18n/es-ES.json b/i18n/es-ES.json index c1d583c39..4a621062d 100644 --- a/i18n/es-ES.json +++ b/i18n/es-ES.json @@ -104,14 +104,14 @@ "REPLUGGED_UPDATES_OPTS_DEBUG_REVISION": "Revisión:", "REPLUGGED_UPDATES_OPTS_DEBUG_REPLUGGED_PATH": "Ruta de Replugged", "REPLUGGED_UPDATES_OPTS_DEBUG_DISCORD_PATH": "Ruta de Discord", - "REPLUGGED_COMMAND_ENABLE_DESC": "Habilita un complemento/tema", + "REPLUGGED_COMMAND_ENABLE_DESC": "Habilita un complemento o tema", "REPLUGGED_NOTICES_WELCOME_NEW_USER": "¡Bienvenido! Replugged se ha inyectado correctamente a tu cliente de Discord. ¡Únete a nuestro servidor de Discord para anuncios, soporte y mas!", "REPLUGGED_BUTTON_GOT_IT": "Entendido", "REPLUGGED_BUTTON_INSTALLER_INSTALLED": "{type} Instalado", "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Descargar {type}", "REPLUGGED_CANCEL": "Cancelar", "REPLUGGED_CONFIRM": "Confirmar", - "REPLUGGED_COMMAND_RELOAD_DESC": "Recarga un complemento/tema", + "REPLUGGED_COMMAND_RELOAD_DESC": "Recarga un complemento o tema", "REPLUGGED_OK": "OK", "REPLUGGED_COMMAND_DISABLE_DESC": "Deshabilitar un complemento o tema", "REPLUGGED_UPDATES_UPDATER": "Actualizador", @@ -213,5 +213,8 @@ "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "enviar", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "tipo", "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "versión", - "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "estado" + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "estado", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Ha ocurrido un error, por favor intente mas tarde. Si el problema persiste, contacte al equipo de Replugged.", + "REPLUGGED_COMMAND_RELOAD_NAME": "recargar", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Incluir el numero de versión en la lista" } diff --git a/i18n/ja.json b/i18n/ja.json index d60609158..a6f31c370 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -56,7 +56,7 @@ "REPLUGGED_UPDATES_OPTS_RELEASE_STABLE_BTN": "安定版ブランチに切り替える", "REPLUGGED_UPDATES_OPTS_RELEASE_SWITCH": "切り替え", "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED": "アップデート確認のトーストを表示する", - "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "クライアント上にオーバーレイを表示してアップデートを確認中であることを示し、アップデートが見つかった場合はアップデートを促します。バックグラウンドでの更新が無効の場合のみ適用されます。", + "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "アップデートがチェックされていることを示すオーバーレイをクライアント上に表示して、アップデートが見つかった場合はアップデートを促します。バックグラウンドでのアップデートが無効の場合のみ適用されます。", "REPLUGGED_UPDATES_UPDATE": "今すぐアップデート", "REPLUGGED_UPDATES_UPDATING": "Repluggedをアップデートしています…", "REPLUGGED_UPDATES_UPDATING_ITEM": "アップデートしています…", From fff3b6129028f00bde5e87058535321484c36c83 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 24 Sep 2023 15:06:43 +0000 Subject: [PATCH 14/31] i18n: update translations from weblate Co-authored-by: Olaf Harlender Co-authored-by: Teltta Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/fi/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/pl/ Translation: Replugged/Replugged --- i18n/fi.json | 6 +++++- i18n/pl.json | 11 ++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/i18n/fi.json b/i18n/fi.json index 9832f19c8..6fc032514 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -212,5 +212,9 @@ "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} ladattiin uudelleen!", "REPLUGGED_COMMAND_LIST_NAME": "lista", "REPLUGGED_COMMAND_LIST_DESC": "Listaa kaikki pluginit ja teemat", - "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "lähetä" + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "lähetä", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Jos lähteessä on useita lisäosia, valitse mikä asennetaan", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_STORE": "Kauppa", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Onnistui" } diff --git a/i18n/pl.json b/i18n/pl.json index f0ba78670..2b8a788c1 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -233,5 +233,14 @@ "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Wyświetl wtyczki", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Wyświetl motywy", "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Sukces", - "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Wtyczka: {name}" + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Wtyczka: {name}", + "REPLUGGED_COMMAND_INSTALL_NAME": "zainstaluj", + "REPLUGGED_COMMAND_INSTALL_DESC": "Zainstaluj wtyczkę lub motyw", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "dodatek", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identyfikator dodatku do zainstalowania ze źródła", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "źródło", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Źródło, z którego ma zostać zainstalowany dodatek", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "identyfikator", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Jeśli źródło zawiera wiele dodatków, określ, który z nich ma zostać zainstalowany", + "REPLUGGED_STORE": "Sklep" } From 9019fe49dc788d65576e47aaa9055a4420186eb3 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 24 Sep 2023 18:06:43 +0000 Subject: [PATCH 15/31] i18n: update translations from weblate Co-authored-by: TCr3 Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/tr/ Translation: Replugged/Replugged --- i18n/tr.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/i18n/tr.json b/i18n/tr.json index f6147fac0..fe166e04d 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -232,5 +232,15 @@ "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Discord penceresini geçirgen yapar, daha çok temalar içindir. **Yeniden başlatma gerektirir**.", "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Başarılı", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Eklentileri Listele", - "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Temaları Listele" + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Temaları Listele", + "REPLUGGED_COMMAND_INSTALL_NAME": "kur", + "REPLUGGED_COMMAND_INSTALL_DESC": "Bir plugin veya tema kur", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Eklenti: {name}", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "eklenti", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Kaynağından indirmek için eklentinin tanımlayıcısı", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "kaynak", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Eklentiyi indirmek için kaynak", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Kaynakta birden fazla eklenti varsa hangisinin kurulacağını belirt", + "REPLUGGED_STORE": "Mağaza" } From 95e26f49283495938755bf0fe95c6eacc4426053 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 25 Sep 2023 00:06:43 +0000 Subject: [PATCH 16/31] i18n: update translations from weblate Co-authored-by: Teltta Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/fi/ Translation: Replugged/Replugged --- i18n/fi.json | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/i18n/fi.json b/i18n/fi.json index 6fc032514..25b876ee8 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -198,7 +198,7 @@ "REPLUGGED_RESTART": "Uudelleenkäynnistä", "REPLUGGED_SETTINGS_RESTART_TITLE": "Uudelleenkäynnistys vaaditaan", "REPLUGGED_COMMAND_ERROR_GENERIC": "Jokin meni pieleen, yritä uudelleen myöhemmin. Jos vika jatkuu, ota yhteyttä Replugged teamiin.", - "REPLUGGED_COMMAND_ENABLE_NAME": "ota käyttöön", + "REPLUGGED_COMMAND_ENABLE_NAME": "ota-käyttöön", "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "lisäosa", "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Valitse mikä lisäosa otetaan käyttöön", "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} otettiin käyttöön!", @@ -210,11 +210,28 @@ "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "lisäosa", "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Valitse mikä lisäosa ladataan uudelleen", "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} ladattiin uudelleen!", - "REPLUGGED_COMMAND_LIST_NAME": "lista", + "REPLUGGED_COMMAND_LIST_NAME": "listaa", "REPLUGGED_COMMAND_LIST_DESC": "Listaa kaikki pluginit ja teemat", "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "lähetä", "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Jos lähteessä on useita lisäosia, valitse mikä asennetaan", "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", "REPLUGGED_STORE": "Kauppa", - "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Onnistui" + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Onnistui", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "Otettiin {type} pois käytöstä", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Jaa lista julkisesti chatissa", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Sinun on määritettävä, lähetetäänkö plugin- vai teemalista", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "tyyppi", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Minkä tyyppiset lisäosat näytetään", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "versio", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Sisällytä versionumerot listaan", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "tila", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Näytetäänkö lisäosat, jotka ovat käytössä, pois käytöstä vai molemmat", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Käytössä", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Ei Käytössä", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Molemmat", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "Otettiin {type} käyttöön", + "REPLUGGED_COMMAND_INSTALL_NAME": "asenna", + "REPLUGGED_COMMAND_INSTALL_DESC": "Asenna plugin tai teema", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Listaa Pluginit", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Listaa Teemat" } From 9d682161dee07dcd2d6a4c0664a5c86144163312 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 25 Sep 2023 14:06:43 +0000 Subject: [PATCH 17/31] i18n: update translations from weblate Co-authored-by: Teltta Co-authored-by: dolphin-cat Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/el/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/fi/ Translation: Replugged/Replugged --- i18n/el.json | 20 ++++++++++++++++---- i18n/fi.json | 19 ++++++++++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/i18n/el.json b/i18n/el.json index b25a8a56e..b46f16fdc 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -66,16 +66,28 @@ "REPLUGGED_PLUGIN_EMBED_WHATISTHIS": "Τι είναι αυτό;", "REPLUGGED_PLUGIN_EMBED_VIEW_REPO": "Προβολή αποθετηρίου", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS_CONTENT": "Αυτή είναι μια λειτουργία του Replugged. Επιτρέπει την εγκατάσταση προσθέτων ή θεμάτων κατευθείαν από την συνομιλία.\nΑπλώς πατήστε το κουμπί εγκατάστασης στο ένθετο.", - "REPLUGGED_COMMAND_ENABLE_DESC": "Ενεργοποίηση ενός πρόσθετου/θέματος", + "REPLUGGED_COMMAND_ENABLE_DESC": "Ενεργοποίηση ενός προσθετόυ ή θέματος", "REPLUGGED_BUTTON_GOT_IT": "Το κατάλαβα", "REPLUGGED_BUTTON_INSTALLER_INSTALLED": "{type} Εγκατεστημένο", "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Λήψη {type}", "REPLUGGED_CANCEL": "Ματαίωση", "REPLUGGED_CONFIRM": "Επιβεβαίωση", "REPLUGGED_OK": "Εντάξει", - "REPLUGGED_COMMAND_DISABLE_DESC": "Απενεργοποίηση ενός πρόσθετου/θέματος", - "REPLUGGED_COMMAND_RELOAD_DESC": "Επαναφόρτωση ενός πρόσθετου/θέματος", + "REPLUGGED_COMMAND_DISABLE_DESC": "Απενεργοποιήστε ένα πρόσθετο ή θέμα", + "REPLUGGED_COMMAND_RELOAD_DESC": "Επαναφόρτωση ενός προσθετόυ ή θέματος", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "Σφάλμα κατά την εκτέλεση της εντολής:", "REPLUGGED_ERROR_CHECK_CONSOLE": "Ελέγξτε την κονσόλα για περισσότερες λεπτομέρειες.", - "REPLUGGED_INSTALL_MODAL_HEADER": "Εγκατάσταση {type}" + "REPLUGGED_INSTALL_MODAL_HEADER": "Εγκατάσταση {type}", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Κάτι πήγε στραβά, δοκιμάστε ξανά αργότερα. Εάν αυτό το ζήτημα επιμένει, επικοινωνήστε με την ομάδα Replugged.", + "REPLUGGED_COMMAND_ENABLE_NAME": "ενεργοποίηση", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "πρόσθετο", + "REPLUGGED_COMMAND_DISABLE_NAME": "απενεργοποίηση", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "πρόσθετο", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Επιλέξτε ποιο πρόσθετο θέλετε να απενεργοποιήσετε", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Επιτυχία", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Επιλέξτε ποιο πρόσθετο θέλετε να ενεργοποιήσετε", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "το {type} {name} έχει ενεργοποιηθεί!", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "το {type} {name} έχει απενεργοποιηθεί!", + "REPLUGGED_COMMAND_RELOAD_NAME": "επαναφόρτωση", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "πρόσθετο" } diff --git a/i18n/fi.json b/i18n/fi.json index 25b876ee8..4a1068a95 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -12,7 +12,7 @@ "REPLUGGED_I18N_TRANSLATED_PERCENTAGE": "Replugged: {translated,number}% käännetty", "REPLUGGED_LINK_NOW": "Linkitä se nyt", "REPLUGGED_PLUGINS": "Pluginit", - "REPLUGGED_QUICKCSS": "Pika-CSS", + "REPLUGGED_QUICKCSS": "Quick CSS", "REPLUGGED_SETTINGS_BACKEND": "Backend URL", "REPLUGGED_SETTINGS_BACKEND_DESC": "URL, jota käytetään muutaman tavaran hakuun ja Repluggedin REST-ohjelmointirajapinnan pyyntöihin.", "REPLUGGED_BADGES_STAFF": "Repluggedin henkilökunta", @@ -198,15 +198,15 @@ "REPLUGGED_RESTART": "Uudelleenkäynnistä", "REPLUGGED_SETTINGS_RESTART_TITLE": "Uudelleenkäynnistys vaaditaan", "REPLUGGED_COMMAND_ERROR_GENERIC": "Jokin meni pieleen, yritä uudelleen myöhemmin. Jos vika jatkuu, ota yhteyttä Replugged teamiin.", - "REPLUGGED_COMMAND_ENABLE_NAME": "ota-käyttöön", + "REPLUGGED_COMMAND_ENABLE_NAME": "aktivoi", "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "lisäosa", "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Valitse mikä lisäosa otetaan käyttöön", "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} otettiin käyttöön!", - "REPLUGGED_COMMAND_DISABLE_NAME": "poista käytöstä", + "REPLUGGED_COMMAND_DISABLE_NAME": "epäaktivoi", "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "lisäosa", "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Valitse mikä lisäosa poistetaan käytöstä", "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} poistettiin käytöstä!", - "REPLUGGED_COMMAND_RELOAD_NAME": "lataa uudelleen", + "REPLUGGED_COMMAND_RELOAD_NAME": "lataa-uudelleen", "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "lisäosa", "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Valitse mikä lisäosa ladataan uudelleen", "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} ladattiin uudelleen!", @@ -233,5 +233,14 @@ "REPLUGGED_COMMAND_INSTALL_NAME": "asenna", "REPLUGGED_COMMAND_INSTALL_DESC": "Asenna plugin tai teema", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Listaa Pluginit", - "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Listaa Teemat" + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Listaa Teemat", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "lisäosa", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "lähde", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Lähde josta lisäosa asennetaan", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Lähteestä asennettavan lisäosan tunniste", + "REPLUGGED_SETTINGS_TRANSPARENT": "Läpinäkyvä Ikkuna", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****VAROITUS:**** **Laitteistokiihdytys** on ehkä **poistettava käytöstä**. Joissain tapauksissa saatat kokea mustan taustan, kuten jos ikkuna on leikattu ylä- tai alaosasta monitorin resoluution takia, tai kun kehitystyökalut on auki ja telakoituna.", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Tekee Discordin ikkunasta läpinäkyvän, käytetään ensisijaisesti teemaamiseen. **Vaatii uudelleenkäynnistyksen**.", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****VAROITUS:**** Tämä rikkoo **ikkunan napsahtamisen**. Joissain tapauksissa saatat kokea mustan taustan, kuten jos ikkuna on leikattu ylä- tai alaosasta monitorin resoluution takia, tai kun kehitystyökalut on auki ja telakoituna." } From 933d0859c57f4351f235324e75976ad3f8503eb0 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 25 Sep 2023 18:06:43 +0000 Subject: [PATCH 18/31] i18n: update translations from weblate Co-authored-by: dolphin-cat Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/el/ Translation: Replugged/Replugged --- i18n/el.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/i18n/el.json b/i18n/el.json index b46f16fdc..0bc5f6484 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -89,5 +89,18 @@ "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "το {type} {name} έχει ενεργοποιηθεί!", "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "το {type} {name} έχει απενεργοποιηθεί!", "REPLUGGED_COMMAND_RELOAD_NAME": "επαναφόρτωση", - "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "πρόσθετο" + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "πρόσθετο", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "το {type} {name} έχει επαναφορτωθεί!", + "REPLUGGED_COMMAND_LIST_NAME": "λίστα", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Επιλέξτε ποιο πρόσθετο θέλετε να επαναφόρτωσετε", + "REPLUGGED_COMMAND_LIST_DESC": "Λίστα όλων των πρόσθετων και θέματων", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "στείλε", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Στείλτε τη λίστα δημόσια στο κανάλι", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "είδος", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Τι είδους πρόσθετα να δειξει", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "λίστα πρόσθετων", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "λίστα θεμάτων", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "έκδοση", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Συμπεριλαμβάνει και τους αριθμούς εκδόσεων στη λίστα", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "κατάσταση" } From 11c646e75ad9c13db5a8b802fca69225fa07837b Mon Sep 17 00:00:00 2001 From: EastArctica Date: Mon, 25 Sep 2023 16:15:33 -0400 Subject: [PATCH 19/31] Improve various logs (#561) * Limit chars after decimal point in ignition logs * Improved plugin logs --- src/renderer/managers/ignition.ts | 4 ++-- src/renderer/managers/plugins.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/renderer/managers/ignition.ts b/src/renderer/managers/ignition.ts index 7bc4ed9b5..e28acd765 100644 --- a/src/renderer/managers/ignition.ts +++ b/src/renderer/managers/ignition.ts @@ -47,7 +47,7 @@ export async function start(): Promise { "Ignition", "Start", void 0, - `Finished igniting Replugged in ${performance.now() - startTime}ms`, + `Finished igniting Replugged in ${(performance.now() - startTime).toFixed(2)}ms`, ); } @@ -62,7 +62,7 @@ export async function stop(): Promise { "Ignition", "Stop", void 0, - `Finished de-igniting Replugged in ${performance.now() - startTime}ms`, + `Finished de-igniting Replugged in ${(performance.now() - startTime).toFixed(2)}ms`, ); } diff --git a/src/renderer/managers/plugins.ts b/src/renderer/managers/plugins.ts index 38100e6b8..f2534400e 100644 --- a/src/renderer/managers/plugins.ts +++ b/src/renderer/managers/plugins.ts @@ -69,20 +69,20 @@ export async function start(id: string): Promise { const plugin = plugins.get(id); try { if (!plugin) { - throw new Error("Plugin does not exist or is not loaded"); + throw new Error(`Plugin "${id}" does not exist or is not loaded`); } if (running.has(plugin.manifest.id)) { - throw new Error("Plugin is already running"); + throw new Error(`Plugin "${id}" is already running`); } if (plugin.manifest.renderer) { await Promise.race([ new Promise((_, reject) => - setTimeout(() => reject(new Error("Plugin took too long to start")), 5_000), + setTimeout(() => reject(new Error(`Plugin "${id}" took too long to start`)), 5_000), ), (async () => { const pluginExports = await import( - `replugged://plugin/${plugin.path}/${plugin.manifest.renderer}?t=${Date.now()}}` + `replugged://plugin/${plugin.path}/${plugin.manifest.renderer}?t=${Date.now()}` ); plugin.exports = pluginExports; await pluginExports.start?.(); @@ -129,10 +129,10 @@ export async function stop(id: string): Promise { const plugin = plugins.get(id); try { if (!plugin) { - throw new Error("Plugin does not exist or is not loaded"); + throw new Error(`Plugin "${id}" does not exist or is not loaded`); } if (!running.has(id)) { - throw new Error("Plugin is not running"); + throw new Error(`Plugin "${id}" is not running`); } await plugin.exports?.stop?.(); From 12f92095da788dcca70929bb8394b9289f153168 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 26 Sep 2023 04:06:44 +0000 Subject: [PATCH 20/31] i18n: update translations from weblate Co-authored-by: Lyssieth Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/et/ Translation: Replugged/Replugged --- i18n/et.json | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/i18n/et.json b/i18n/et.json index ce8190909..c099c6bf5 100644 --- a/i18n/et.json +++ b/i18n/et.json @@ -66,7 +66,7 @@ "REPLUGGED_PLUGIN_EMBED_COPIED": "Kopeeritud!", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS": "Mis see on?", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS_CONTENT": "See on Replugged'i funktsioon. See võimaldab teil installida pistikprogramme või teemasid otse vestlusest.\nKlõpsake lihtsalt manustamisel installinuppu.", - "REPLUGGED_COMMAND_ENABLE_DESC": "Lubage pistikprogramm/teema", + "REPLUGGED_COMMAND_ENABLE_DESC": "Lubage pistikprogramm/kujundus", "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} on juba installitud.", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "Käsu täitmisel ilmnes viga:", "REPLUGGED_ERROR_CHECK_CONSOLE": "Lisateabe saamiseks vaadake konsooli.", @@ -114,8 +114,8 @@ "REPLUGGED_CANCEL": "Tühista", "REPLUGGED_CONFIRM": "Kinnita", "REPLUGGED_OK": "OK", - "REPLUGGED_COMMAND_DISABLE_DESC": "Lülita pistikprogramm/teema välja", - "REPLUGGED_COMMAND_RELOAD_DESC": "Laadige pistikprogramm/teema uuesti", + "REPLUGGED_COMMAND_DISABLE_DESC": "Deaktiveeri pistikprogramm või kujundus", + "REPLUGGED_COMMAND_RELOAD_DESC": "Taaskäivita pistikprogramm või kujundus", "REPLUGGED_SETTINGS_ERROR_HEADER": "Selle elemendi renderdamisel läks midagi valesti!", "REPLUGGED_SETTINGS_ERROR_RENDER_PANEL": "Seadete paneeli renderdamisel ilmnes viga.", "REPLUGGED_SETTINGS_ERROR_COMPONENT_STACK": "Komponentide virn:", @@ -160,5 +160,34 @@ "REPLUGGED_TOAST_INSTALLER_ADDON_LOAD_FAILED": "{name} installiti, kuid seda ei saanud laadida.", "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name} installiti edukalt.", "REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED": "Lisandmooduli kohta teabe hankimine ebaõnnestus.", - "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "Install tühistati." + "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "Install tühistati.", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Valige milline lisand aktiveerida", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Midagi läks valesti, palun proovige uuesti hiljem. Kui probleem jätkub, palun võtke Replugged-i meeskonnaga ühendust.", + "REPLUGGED_COMMAND_ENABLE_NAME": "aktiveeri", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "lisand", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} on aktiveeritud!", + "REPLUGGED_COMMAND_DISABLE_NAME": "deaktiveeri", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "lisand", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Valige milline lisand deaktiveerida", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} on deaktiveeritud!", + "REPLUGGED_COMMAND_RELOAD_NAME": "taaskäivita", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "lisand", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Valige milline lisand taaskäivitada", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} on taaskäivitatud!", + "REPLUGGED_COMMAND_LIST_NAME": "nimekiri", + "REPLUGGED_COMMAND_LIST_DESC": "Loetle kõik lisandid või kujundused", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "saada", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Jaga nimekiri avalikult vestluses", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "tüüp", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Millist tüüpi lisandeid näidata", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "versioon", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Õnnestus", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Loetle Pistikprogramme", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Loetle Kujundusi", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Sisalda versiooni numbred nimekirjas", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "staatus", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Kas näidata lisanded mis on aktiveeritud, deaktiveeritud, või mõlemaid", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Aktiveeritud", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Deaktiveeritud", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Mõlemad" } From 7001f41e50cdd987a02591c73bd28c9eed138f4b Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 26 Sep 2023 08:06:43 +0000 Subject: [PATCH 21/31] i18n: update translations from weblate Co-authored-by: Lyssieth Co-authored-by: dolphin-cat Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/el/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/et/ Translation: Replugged/Replugged --- i18n/el.json | 8 +++++- i18n/et.json | 71 +++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 69 insertions(+), 10 deletions(-) diff --git a/i18n/el.json b/i18n/el.json index 0bc5f6484..4a6dec1ba 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -102,5 +102,11 @@ "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "λίστα θεμάτων", "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "έκδοση", "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Συμπεριλαμβάνει και τους αριθμούς εκδόσεων στη λίστα", - "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "κατάσταση" + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "κατάσταση", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Να εμφανίζονται τα πρόσθετα που είναι ενεργοποιημένα, απενεργοποιημένα ή και τα δύο", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "ενεργοποιημένα", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "απενεργοποιημένα", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "ενεργοποιήθηκε το {type}", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "απενεργοποιήθηκε το {type}", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Πρέπει να καθορίσετε εάν θα στείλετε μια λίστα προσθηκών ή θεμάτων" } diff --git a/i18n/et.json b/i18n/et.json index c099c6bf5..2564532eb 100644 --- a/i18n/et.json +++ b/i18n/et.json @@ -17,7 +17,7 @@ "REPLUGGED_SETTINGS_OVERLAY_DESC": "Avab DevTools'i akna, mis võimaldab teil kontrollida, mis Discord'i mängusiseses ülekattes toimub.", "REPLUGGED_UPDATES_LAST_CHECKED": "Viimati kontrollitud: {date}", "REPLUGGED_UPDATES_OPEN_UPDATER": "Ava Uuendaja", - "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Replugged saab uuendusi taustal alla laadida ja installida ilma teid liigselt tüütamata. Pange tähele, et uuendused nõuavad kasutaja tegevust, kui on vaja uuesti laadida või kui esineb konflikt.", + "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Replugged otsib taustal automaatselt uuendusi ja teatab teile kui üks on saadaval. Uuendusi ei installita kuni te otsustate uuendada. Ainult ametlikke lisandeid kontrollitakse automaatselt.", "REPLUGGED_UPDATES_OPTS_CONCURRENCY_DESC": "Mitu samaaegset protsessi Replugged kasutab taustal uuenduste kontrollimiseks. Miinimum 1. Kui pole kindel, jätke 2.", "REPLUGGED_UPDATES_OPTS_RELEASE_DESC": "Valida saab stabiilse haru või arendusharu vahel. Stabiilne haru saab ainult suuremaid uuendusi, turvalisust ja kriitilisi uuendusi. Kui pole kindel, jääge stabiilseks.", "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "Kuvage kliendi kohal ülekate, mis ütleb, et uuendusi otsitakse, ja kui uuendused leitakse, palub teil uuendada. Kehtib ainult siis, kui taustal uuendamine on keelatud.", @@ -42,14 +42,14 @@ "REPLUGGED_UPDATES_ENABLE": "Lubage Uuendused", "REPLUGGED_UPDATES_FAILED": "Mõned uuendused ebaõnnestusid!", "REPLUGGED_UPDATES_FORCE": "Sunniviisiline Uuendamine", - "REPLUGGED_UPDATES_OPTS_AUTO": "Uuenda automaatselt taustal", + "REPLUGGED_UPDATES_OPTS_AUTO": "Kontrolli saadavaid uuendusi automaatselt", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS": "Ava Muudatuste Logi", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS_DESC": "Kas jätsite muudatuste logi vahele või soovite seda uuesti näha?", "REPLUGGED_UPDATES_OPTS_CONCURRENCY": "Uuenda Samaaegsuse Limiiti", "REPLUGGED_UPDATES_OPTS_DEBUG": "Silumisinfo", "REPLUGGED_UPDATES_OPTS_DEBUG_DESC": "Asjad, mis võivad teile kasulikuks osutuda tõrkeotsinguks või mõne statistika näitamiseks.", "REPLUGGED_UPDATES_OPTS_INTERVAL": "Uuenduste Kontrollimise Intervall", - "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Kui sageli Replugged uuendusi otsib (minutites). Minimaalselt 10 minutit.", + "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Kui sageli Replugged uuendusi otsib. Minimaalselt 10 minutit.", "REPLUGGED_UPDATES_OPTS_RELEASE": "Muuda Väljalaskekanalit", "REPLUGGED_UPDATES_OPTS_RELEASE_DEVELOP_BTN": "Lülitu arendusharule", "REPLUGGED_UPDATES_OPTS_RELEASE_MODAL": "Kas soovite kindlasti oma väljalaskekanalit muuta? Replugged laadib teie Discordi kliendi uuesti.", @@ -57,10 +57,10 @@ "REPLUGGED_UPDATES_OPTS_RELEASE_STABLE_BTN": "Lülituge stabiilsele", "REPLUGGED_UPDATES_OPTS_RELEASE_SWITCH": "Lülita", "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED": "Kuva uuenduste otsija toostiteade", - "REPLUGGED_UPDATES_UPDATE": "Uuendage Kohe", + "REPLUGGED_UPDATES_UPDATE": "Uuenda", "REPLUGGED_UPDATES_UPDATING": "Replugged Uuendamine…", "REPLUGGED_UPDATES_UPDATING_ITEM": "Uuendamine…", - "REPLUGGED_UPDATES_UP_TO_DATE": "Replugged on ajakohane.", + "REPLUGGED_UPDATES_UP_TO_DATE": "Replugged on kaasaegne.", "REPLUGGED_PLUGIN_EMBED_COPY": "Kopeeri Link", "REPLUGGED_PLUGIN_EMBED_VIEW_REPO": "Vaata Hoidlat", "REPLUGGED_PLUGIN_EMBED_COPIED": "Kopeeritud!", @@ -110,7 +110,7 @@ "REPLUGGED_UPDATES_OPTS_DEBUG_REPLUGGED_PATH": "Replugged'i Tee", "REPLUGGED_BUTTON_GOT_IT": "Sain aru", "REPLUGGED_BUTTON_INSTALLER_INSTALLED": "{type} Installitud", - "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Laadi {type} alla", + "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Lae {type} alla", "REPLUGGED_CANCEL": "Tühista", "REPLUGGED_CONFIRM": "Kinnita", "REPLUGGED_OK": "OK", @@ -162,7 +162,7 @@ "REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED": "Lisandmooduli kohta teabe hankimine ebaõnnestus.", "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "Install tühistati.", "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Valige milline lisand aktiveerida", - "REPLUGGED_COMMAND_ERROR_GENERIC": "Midagi läks valesti, palun proovige uuesti hiljem. Kui probleem jätkub, palun võtke Replugged-i meeskonnaga ühendust.", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Midagi läks valesti, palun proovige hiljem uuesti. Kui probleem jätkub, palun võtke Replugged-i meeskonnaga ühendust.", "REPLUGGED_COMMAND_ENABLE_NAME": "aktiveeri", "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "lisand", "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} on aktiveeritud!", @@ -175,7 +175,7 @@ "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Valige milline lisand taaskäivitada", "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} on taaskäivitatud!", "REPLUGGED_COMMAND_LIST_NAME": "nimekiri", - "REPLUGGED_COMMAND_LIST_DESC": "Loetle kõik lisandid või kujundused", + "REPLUGGED_COMMAND_LIST_DESC": "Loetle kõik pistikprogrammid või kujundused", "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "saada", "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Jaga nimekiri avalikult vestluses", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "tüüp", @@ -189,5 +189,58 @@ "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Kas näidata lisanded mis on aktiveeritud, deaktiveeritud, või mõlemaid", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Aktiveeritud", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Deaktiveeritud", - "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Mõlemad" + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Mõlemad", + "REPLUGGED_ADDON_BROWSE": "Sirvi {type}", + "REPLUGGED_ADDON_NOT_REVIEWED": "Ülevaatamata {type}", + "REPLUGGED_ADDON_NOT_REVIEWED_DESC": "See {type} ei ole Repluggedi meeskonna poolt üle kontrollitud ja võib teie arvutile halba teha. Kasutage omal vastutusel.", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY": "Automaatselt Rakenda Kiire CSS", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY_DESC": "Automaatselt rakendab muutused Kiires CSS-is kui te kirjutate.", + "REPLUGGED_I18N": "Replugged Tõlked", + "REPLUGGED_SETTINGS_DEV_COMPANION": "Taasühenda Arenduskaaslane (Dev Companion)", + "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "Näitab lisandi informatsiooniga manust siis, kui poe/installimise link on vestluses jagatud.", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****HOIATUS:**** **Riistvara kiirendus** on võib-olla vaja **välja lülitada**. Mõnel juhul võite te kogeda musta tausta, nagu kui aken on ülevalt või alt maha lõigatud ekraani resolutsiooni pärast, või kui arenadaja tööriistad on lahti ja dokitud.", + "REPLUGGED_SETTINGS_DEV_COMPANION_DESC": "Taasühendab Arenduskaaslase põhilisandi VSCode lisandiga.", + "REPLUGGED_SETTINGS_DEV_COMPANION_RECONNECT": "Taasühenda", + "REPLUGGED_SETTINGS_ADVANCED": "Muud Seadistused", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS": "Aktiveeri React DevTools-id", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_DESC": "Aktiveerib React DevTools lisandi, mis lubab teil inspekteerida Reacti puud ja lihtsamini probleeme siluda. **Vajab uuesti avamist**.", + "REPLUGGED_VIEW_UPDATES": "Vaata {count, plural, =1 {# Uuendust} other {# Uuendust}}", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Pistikprogramm: {name}", + "REPLUGGED_DEVELOPER_MODE_WARNING": "Praegu jookseb teie Replugged arendaja režiimis ja Replugged ei saa ennast uuendada. [Vaheta tootmisrežiimi]({url}).", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_FAILED": "React DevTools-ide allalaadimine ebaõnnestus.", + "REPLUGGED_COMMAND_INSTALL_NAME": "installi", + "REPLUGGED_COMMAND_INSTALL_DESC": "Installi pistikprogramm või kujundus", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "lisand", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Lisandi identifikaator, et see lähtekoodist installida", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "lähtekood", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Lähtekood millest tulenev lisand installida", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Kui lähtekoodis on mitu lisandit, täpsusta milline neist installida", + "REPLUGGED_SETTINGS_BADGES": "Aktiveeri Repluggedi Märgid", + "REPLUGGED_SETTINGS_BADGES_DESC": "Näita isikupäraseid Repluggedi märke kasutajate profiilidel.", + "REPLUGGED_UPDATES_AVAILABLE": "{count, plural, =1 {# uuendus on} other {# uuendused on}} saadaval.", + "REPLUGGED_STORE": "Pood", + "REPLUGGED_INSTALLER_OPEN_STORE": "Vaata Poes", + "REPLUGGED_SETTINGS_ADDON_EMBEDS": "Näita Lisandite Manuseid", + "REPLUGGED_RESTART": "Taaskäivita", + "REPLUGGED_SETTINGS_RESTART_TITLE": "Taaskäivitamine Vajalik", + "REPLUGGED_SETTINGS_TRANSPARENT": "Läbipaistev Aken", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****HOIATUS:**** See teeb katki **akna kuvaletõmbamise (window snapping)**. Mõnel juhul võite te kogeda musta tausta, nagu kui aken on ülevalt või alt maha lõigatud ekraani resolutsiooni pärast, või kui arenadaja tööriistad on lahti ja dokitud.", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Teeb Discord-i akna läbipaistvaks, mis on peamiselt kasulik kujunduseks. **Vajab Taaskäivitamist**.", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "Aktiveeritud {type}", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "Deaktiveeritud {type}", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Sa pead valima kas saata pistikprogrammide või kujunduste nimekiri", + "REPLUGGED_UPDATES_UPDATE_NOUN": "Uuendus", + "REPLUGGED_VERSION": "Replugged {version, select, dev {[DEV MODE]} other {v{version}}}", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ALL": "Kõik uuendused edukalt installitud.", + "REPLUGGED_PLUGIN_INSTALL_RELOAD_PROMPT_BODY": "{name} vajab taaslaadimist, et korralikult töödata. Taaslaadi kohe?", + "REPLUGGED_ADDON_AUTHORS_MANY": "{author1}, {author2}, {author3} ja {count, plural, =1 {# teine} other {# teist}}", + "REPLUGGED_UPDATES_UPDATE_ALL": "Uuenda Kõik", + "REPLUGGED_UPDATES_UPDATE_TO": "Uuenda versioonile {version}", + "REPLUGGED_UPDATES_TOAST_NO_NEW": "Ühtegi uuendust pole saadaval.", + "REPLUGGED_UPDATES_TOAST_FAILED_ONE": "Uuendus ebaõnnestus!", + "REPLUGGED_UPDATES_TOAST_FAILED_ALL": "Mõned uuendused ebaõnnestusid!", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ONE": "Uuendus lõpetatud edukalt.", + "REPLUGGED_UPDATES_TOAST_NEW": "{count, plural, =1 {# uus uuendus} other {# uut uuendust}} on saadaval!", + "REPLUGGED_RELOAD": "Taaslaadi" } From 7556fbfd2d8cd98968e8f3976c0fc601424c5174 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 26 Sep 2023 10:06:43 +0000 Subject: [PATCH 22/31] i18n: update translations from weblate Co-authored-by: Olaf Harlender Co-authored-by: dolphin-cat Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/el/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/pl/ Translation: Replugged/Replugged --- i18n/el.json | 7 ++++++- i18n/pl.json | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/i18n/el.json b/i18n/el.json index 4a6dec1ba..a174cbb88 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -108,5 +108,10 @@ "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "απενεργοποιημένα", "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "ενεργοποιήθηκε το {type}", "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "απενεργοποιήθηκε το {type}", - "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Πρέπει να καθορίσετε εάν θα στείλετε μια λίστα προσθηκών ή θεμάτων" + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Πρέπει να καθορίσετε εάν θα στείλετε μια λίστα προσθηκών ή θεμάτων", + "REPLUGGED_COMMAND_INSTALL_NAME": "βάλε", + "REPLUGGED_COMMAND_INSTALL_DESC": "εγκαταστήστε ένα πρόσθετο ή θέμα", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "πρόσθετο", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Αναγνωριστικό του πρόσθετου προς εγκατάσταση από την πηγή", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Και τα δυο" } diff --git a/i18n/pl.json b/i18n/pl.json index 2b8a788c1..73336affe 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -211,8 +211,8 @@ "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Musisz określić, czy chcesz wysłać listę wtyczek czy motywów", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Włączone", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Wyłączone", - "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Udostępnij listę publicznie na czacie", - "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Uwzględnij numery wersji w liście", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Czy udostępnić listę publicznie na czacie", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Czy uwzględnić numery wersji w liście", "REPLUGGED_COMMAND_LIST_DESC": "Wyświetl listę wszystkich wtyczek lub motywów", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Wszystkie", "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Wybierz, który z dodatków chcesz wyłączyć", From c88cf1afd98262c0a2733fe59b3559416e7822eb Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 08:49:21 -0500 Subject: [PATCH 23/31] Package updates (#549) * Package updates * Lemme have my safe optional chaining * Missed one * Update src/renderer/coremods/settings/pages/QuickCSS.tsx Co-authored-by: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> * Less ignores --------- Co-authored-by: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> --- .eslintrc.yml | 6 + package.json | 35 +- pnpm-lock.yaml | 1259 ++++++++--------- scripts/build.mts | 8 + src/main/index.ts | 9 +- src/main/ipc/react-devtools.ts | 5 +- src/main/ipc/settings.ts | 2 +- src/preload.ts | 1 + src/renderer/apis/connections.ts | 9 +- src/renderer/apis/notices.ts | 4 +- src/renderer/apis/settings.ts | 4 +- src/renderer/coremods/badges/index.tsx | 17 +- src/renderer/coremods/contextMenu/index.tsx | 27 +- src/renderer/coremods/devCompanion/index.tsx | 15 +- src/renderer/coremods/installer/util.tsx | 2 +- src/renderer/coremods/rpc/index.ts | 2 +- .../coremods/settings/pages/Addons.tsx | 3 +- .../coremods/settings/pages/QuickCSS.tsx | 5 +- src/renderer/managers/coremods.ts | 7 +- src/renderer/managers/ignition.ts | 3 +- src/renderer/managers/updater.ts | 2 + src/renderer/modules/common/toast.ts | 2 +- .../modules/components/ButtonItem.tsx | 7 +- src/renderer/modules/components/Category.tsx | 7 +- src/renderer/modules/webpack/get-modules.ts | 2 + src/renderer/modules/webpack/helpers.ts | 4 +- src/renderer/modules/webpack/patch-load.ts | 2 +- src/renderer/util.ts | 8 +- src/types/index.ts | 2 +- 29 files changed, 717 insertions(+), 742 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 5f736afd5..1d9d7452b 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -75,3 +75,9 @@ overrides: - files: "src/renderer/**/*.{ts,tsx,mts,cts}" rules: no-console: error + - files: "src/renderer/modules/{common,components}/*.{ts,tsx,mts,cts}" + rules: + # These files sometimes have checks that are technically unnecessary according to the typedefs, + # but should help prevent a crash in the case of an unexpected Discord change + # So we will allow them + "@typescript-eslint/no-unnecessary-condition": off diff --git a/package.json b/package.json index a91148eb6..fa86fbdf4 100644 --- a/package.json +++ b/package.json @@ -38,35 +38,36 @@ "devDependencies": { "@types/adm-zip": "^0.5.0", "@types/highlightjs": "^9.12.2", - "@types/lodash": "^4.14.197", - "@types/node": "^18.17.11", + "@types/lodash": "^4.14.198", + "@types/node": "^18.17.14", "@types/prompts": "^2.4.4", "@types/react": "^18.2.21", "@types/react-dom": "^18.2.7", - "@types/react-reconciler": "^0.28.3", - "@types/semver": "^7.5.0", + "@types/react-reconciler": "^0.28.4", + "@types/semver": "^7.5.1", "@types/superagent": "^4.1.18", - "@types/update-notifier": "^6.0.4", + "@types/update-notifier": "^6.0.5", "@types/ws": "^8.5.5", "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "cspell": "^6.31.3", - "discord-types": "^1.3.26", + "@typescript-eslint/eslint-plugin": "^6.6.0", + "@typescript-eslint/parser": "^6.6.0", + "cspell": "^7.3.2", + "discord-types": "^1.3.3", + "esbuild-plugin-polyfill-node": "^0.3.0", "eslint": "^8.48.0", - "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel#690f1b1121d342fcc8ee511ca9f2af7502f53db6", + "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel", "eslint-plugin-node": "^11.1.0", "eslint-plugin-react": "^7.33.2", "moment": "^2.29.4", "np": "^8.0.4", "parcel": "^2.9.3", - "prettier": "^2.8.8", + "prettier": "^3.0.3", "simple-markdown": "^0.7.3", "style-mod": "^4.1.0", - "tsx": "^3.12.7", - "type-fest": "^3.13.1", - "typedoc": "^0.23.28", - "typescript": "~5.0.4" + "tsx": "^3.12.8", + "type-fest": "^4.3.1", + "typedoc": "^0.25.1", + "typescript": "^5.2.2" }, "files": [ "dist", @@ -79,7 +80,7 @@ "@ddietr/codemirror-themes": "^1.4.2", "@electron/asar": "^3.2.4", "@lezer/highlight": "^1.1.6", - "@octokit/rest": "^19.0.13", + "@octokit/rest": "^20.0.1", "@parcel/config-default": "^2.9.3", "@parcel/core": "^2.9.3", "@parcel/transformer-sass": "^2.9.3", @@ -92,7 +93,7 @@ "semver": "^7.5.4", "standalone-electron-types": "^1.0.0", "update-notifier": "^6.0.2", - "ws": "^8.13.0", + "ws": "^8.14.0", "yargs": "^17.7.2", "zod": "^3.22.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c1887238..6209a15d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ overrides: dependencies: '@codemirror/lang-css': specifier: ^6.2.1 - version: 6.2.1(@codemirror/view@6.16.0) + version: 6.2.1(@codemirror/view@6.18.0) '@codemirror/language': specifier: ^6.9.0 version: 6.9.0 @@ -27,11 +27,11 @@ dependencies: specifier: ^1.1.6 version: 1.1.6 '@octokit/rest': - specifier: ^19.0.13 - version: 19.0.13 + specifier: ^20.0.1 + version: 20.0.1 '@parcel/config-default': specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3) + version: 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) '@parcel/core': specifier: ^2.9.3 version: 2.9.3 @@ -66,8 +66,8 @@ dependencies: specifier: ^6.0.2 version: 6.0.2 ws: - specifier: ^8.13.0 - version: 8.13.0 + specifier: ^8.14.0 + version: 8.14.0 yargs: specifier: ^17.7.2 version: 17.7.2 @@ -83,11 +83,11 @@ devDependencies: specifier: ^9.12.2 version: 9.12.2 '@types/lodash': - specifier: ^4.14.197 - version: 4.14.197 + specifier: ^4.14.198 + version: 4.14.198 '@types/node': - specifier: ^18.17.11 - version: 18.17.11 + specifier: ^18.17.14 + version: 18.17.14 '@types/prompts': specifier: ^2.4.4 version: 2.4.4 @@ -98,17 +98,17 @@ devDependencies: specifier: ^18.2.7 version: 18.2.7 '@types/react-reconciler': - specifier: ^0.28.3 - version: 0.28.3 + specifier: ^0.28.4 + version: 0.28.4 '@types/semver': - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^7.5.1 + version: 7.5.1 '@types/superagent': specifier: ^4.1.18 version: 4.1.18 '@types/update-notifier': - specifier: ^6.0.4 - version: 6.0.4 + specifier: ^6.0.5 + version: 6.0.5 '@types/ws': specifier: ^8.5.5 version: 8.5.5 @@ -116,23 +116,26 @@ devDependencies: specifier: ^17.0.24 version: 17.0.24 '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.0.4) + specifier: ^6.6.0 + version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.48.0)(typescript@5.0.4) + specifier: ^6.6.0 + version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) cspell: - specifier: ^6.31.3 - version: 6.31.3 + specifier: ^7.3.2 + version: 7.3.2 discord-types: - specifier: ^1.3.26 + specifier: ^1.3.3 version: 1.3.26 + esbuild-plugin-polyfill-node: + specifier: ^0.3.0 + version: 0.3.0(esbuild@0.16.17) eslint: specifier: ^8.48.0 version: 8.48.0 eslint-config-dmitmel: - specifier: github:dmitmel/eslint-config-dmitmel#690f1b1121d342fcc8ee511ca9f2af7502f53db6 - version: github.com/dmitmel/eslint-config-dmitmel/690f1b1121d342fcc8ee511ca9f2af7502f53db6(eslint@8.48.0) + specifier: github:dmitmel/eslint-config-dmitmel + version: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.48.0) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@8.48.0) @@ -144,13 +147,13 @@ devDependencies: version: 2.29.4 np: specifier: ^8.0.4 - version: 8.0.4 + version: 8.0.4(typescript@5.2.2) parcel: specifier: ^2.9.3 - version: 2.9.3 + version: 2.9.3(typescript@5.2.2) prettier: - specifier: ^2.8.8 - version: 2.8.8 + specifier: ^3.0.3 + version: 3.0.3 simple-markdown: specifier: ^0.7.3 version: 0.7.3 @@ -158,17 +161,17 @@ devDependencies: specifier: ^4.1.0 version: 4.1.0 tsx: - specifier: ^3.12.7 - version: 3.12.7 + specifier: ^3.12.8 + version: 3.12.8 type-fest: - specifier: ^3.13.1 - version: 3.13.1 + specifier: ^4.3.1 + version: 4.3.1 typedoc: - specifier: ^0.23.28 - version: 0.23.28(typescript@5.0.4) + specifier: ^0.25.1 + version: 0.25.1(typescript@5.2.2) typescript: - specifier: ~5.0.4 - version: 5.0.4 + specifier: ^5.2.2 + version: 5.2.2 packages: @@ -177,22 +180,22 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@babel/code-frame@7.22.10: - resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.10 + '@babel/highlight': 7.22.13 chalk: 2.4.2 - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - /@babel/highlight@7.22.10: - resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 @@ -204,7 +207,7 @@ packages: types-pkg-json: 1.2.1 dev: true - /@codemirror/autocomplete@6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4): + /@codemirror/autocomplete@6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4): resolution: {integrity: sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==} peerDependencies: '@codemirror/language': ^6.0.0 @@ -214,7 +217,7 @@ packages: dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 '@lezer/common': 1.0.4 dev: false @@ -223,14 +226,14 @@ packages: dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 '@lezer/common': 1.0.4 dev: false - /@codemirror/lang-css@6.2.1(@codemirror/view@6.16.0): + /@codemirror/lang-css@6.2.1(@codemirror/view@6.18.0): resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} dependencies: - '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4) '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 '@lezer/common': 1.0.4 @@ -243,7 +246,7 @@ packages: resolution: {integrity: sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw==} dependencies: '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 '@lezer/common': 1.0.4 '@lezer/highlight': 1.1.6 '@lezer/lr': 1.3.10 @@ -254,7 +257,7 @@ packages: resolution: {integrity: sha512-2Hx945qKX7FBan5/gUdTM8fsMYrNG9clIgEcPXestbLVFAUyQYFAuju/5BMNf/PwgpVaX5pvRm4+ovjbp9D9gQ==} dependencies: '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 crelt: 1.0.6 dev: false @@ -262,7 +265,7 @@ packages: resolution: {integrity: sha512-WRihpqd0l9cEh9J3IZe45Yi+Z5MfTsEXnyc3V7qXHP4ZYtIYpGOn+EJ7fyLIkyAm/8S6QIr7/mMISfAadf8zCg==} dependencies: '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 crelt: 1.0.6 dev: false @@ -270,24 +273,24 @@ packages: resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} dev: false - /@codemirror/view@6.16.0: - resolution: {integrity: sha512-1Z2HkvkC3KR/oEZVuW9Ivmp8TWLzGEd8T8TA04TTwPvqogfkHBdYSlflytDOqmkUxM2d1ywTg7X2dU5mC+SXvg==} + /@codemirror/view@6.18.0: + resolution: {integrity: sha512-T6q1yYAoU+gSWfJFR4ryvDQcyOqS+Mw5RCvh26y0KiNksOOLYhNvdB3BTyLz8vy4fKaYlzbAOyBU7OQPUGHzjQ==} dependencies: '@codemirror/state': 6.2.1 style-mod: 4.1.0 w3c-keyname: 2.2.8 dev: false - /@cspell/cspell-bundled-dicts@6.31.3: - resolution: {integrity: sha512-KXy3qKWYzXOGYwqOGMCXHem3fV39iEmoKLiNhoWWry/SFdvAafmeY+LIDcQTXAcOQLkMDCwP2/rY/NadcWnrjg==} - engines: {node: '>=14'} + /@cspell/cspell-bundled-dicts@7.3.2: + resolution: {integrity: sha512-mmb9gi2/jTj983ijgVsdsQ4FM5Bv/lKslgJt4jDUm6SOtQYW4geCJNl5/MbMzcMQUWSJouS0w4C55AyrJmq0iw==} + engines: {node: '>=16'} dependencies: '@cspell/dict-ada': 4.0.2 - '@cspell/dict-aws': 3.0.0 + '@cspell/dict-aws': 4.0.0 '@cspell/dict-bash': 4.1.1 - '@cspell/dict-companies': 3.0.20 + '@cspell/dict-companies': 3.0.21 '@cspell/dict-cpp': 5.0.4 - '@cspell/dict-cryptocurrencies': 3.0.1 + '@cspell/dict-cryptocurrencies': 4.0.0 '@cspell/dict-csharp': 4.0.2 '@cspell/dict-css': 4.0.7 '@cspell/dict-dart': 2.0.3 @@ -297,9 +300,10 @@ packages: '@cspell/dict-elixir': 4.0.3 '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.6 + '@cspell/dict-en_us': 4.3.7 '@cspell/dict-filetypes': 3.0.1 - '@cspell/dict-fonts': 3.0.2 + '@cspell/dict-fonts': 4.0.0 + '@cspell/dict-fsharp': 1.0.0 '@cspell/dict-fullstack': 3.1.5 '@cspell/dict-gaming-terms': 1.0.4 '@cspell/dict-git': 2.0.0 @@ -310,7 +314,7 @@ packages: '@cspell/dict-java': 5.0.5 '@cspell/dict-k8s': 1.0.1 '@cspell/dict-latex': 4.0.0 - '@cspell/dict-lorem-ipsum': 3.0.0 + '@cspell/dict-lorem-ipsum': 4.0.0 '@cspell/dict-lua': 4.0.1 '@cspell/dict-node': 4.0.2 '@cspell/dict-npm': 5.0.8 @@ -322,7 +326,7 @@ packages: '@cspell/dict-ruby': 5.0.0 '@cspell/dict-rust': 4.0.1 '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.2.1 + '@cspell/dict-software-terms': 3.2.2 '@cspell/dict-sql': 2.1.1 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 @@ -330,50 +334,57 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-json-reporter@6.31.3: - resolution: {integrity: sha512-ZJwj2vT4lxncYxduXcxy0dCvjjMvXIfphbLSCN5CXvufrtupB4KlcjZUnOofCi4pfpp8qocCSn1lf2DU9xgUXA==} - engines: {node: '>=14'} + /@cspell/cspell-json-reporter@7.3.2: + resolution: {integrity: sha512-5j1CX2OXkQGO3ljMBzfHjDzEiixodjfxVGR3VKkQX1vxTUMTIkPgt4BsgOVCQtqTiO21Dd2Bzn+H0/Jf4OL37g==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-types': 6.31.3 + '@cspell/cspell-types': 7.3.2 dev: true - /@cspell/cspell-pipe@6.31.3: - resolution: {integrity: sha512-Lv/y4Ya/TJyU1pf66yl1te7LneFZd3lZg1bN5oe1cPrKSmfWdiX48v7plTRecWd/OWyLGd0yN807v79A+/0W7A==} - engines: {node: '>=14'} + /@cspell/cspell-pipe@7.3.2: + resolution: {integrity: sha512-ZKOkb6IxuEXRXtjVAlZ41+4SXhyiGqrQ3FW16iZlCbM9Mp9WJAw2MOVh6wvpXmfKcM5/3jK1A4rFylB7b0QBHw==} + engines: {node: '>=16'} dev: true - /@cspell/cspell-service-bus@6.31.3: - resolution: {integrity: sha512-x5j8j3n39KN8EXOAlv75CpircdpF5WEMCC5pcO916o6GBmJBy8SrdzdsBGJhVcYGGilqy6pf8R9RCZ3yAmG8gQ==} - engines: {node: '>=14'} + /@cspell/cspell-resolver@7.3.2: + resolution: {integrity: sha512-3gvZPlYLkjuPezF2VyCVurEJiJnb3sbr32Jp3MfvpO7x026RXMbetkdH87MKoiSAThxSiyG+qi/jvUeDYY/Wtg==} + engines: {node: '>=16'} + dependencies: + global-dirs: 3.0.1 dev: true - /@cspell/cspell-types@6.31.3: - resolution: {integrity: sha512-wZ+t+lUsQJB65M31btZM4fH3K1CkRgE8pSeTiCwxYcnCL19pi4TMcEEMKdO8yFZMdocW4B7VRwzxNoQMw2ewBg==} - engines: {node: '>=14'} + /@cspell/cspell-service-bus@7.3.2: + resolution: {integrity: sha512-i2sPnUSsFJXc5afijbUsUtv1YEXyO8EbJbXV0kdE6KVu7I0CSMV8jprJaG3X1m5HE6lGftNcpLKLHjSlFOFvsA==} + engines: {node: '>=16'} + dev: true + + /@cspell/cspell-types@7.3.2: + resolution: {integrity: sha512-2lvRUfIgH9TvqGEDpuukuD6J84XPP8KFxR/qphtPZAzwg9SEpiagdN79eFlPe4ZI2xHNvwEsPDJUxuvxXu15wQ==} + engines: {node: '>=16'} dev: true /@cspell/dict-ada@4.0.2: resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} dev: true - /@cspell/dict-aws@3.0.0: - resolution: {integrity: sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==} + /@cspell/dict-aws@4.0.0: + resolution: {integrity: sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==} dev: true /@cspell/dict-bash@4.1.1: resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} dev: true - /@cspell/dict-companies@3.0.20: - resolution: {integrity: sha512-o13HaqYxkWo20FC5iU9PHKMFexY9D7/XeSj9tvBzy3sEzW324zw5MWEkeDszwmC/GsLZtot+5vopCv6/evRNlA==} + /@cspell/dict-companies@3.0.21: + resolution: {integrity: sha512-u9b7qtCWYS728WqiJeAucJcjRs16Y1yGGwagS/w59SV25R0rXbXbPbQuX8wYDcaeIO8uRHGkbSWngx6O4qFoCQ==} dev: true /@cspell/dict-cpp@5.0.4: resolution: {integrity: sha512-Vmz/CCb2d91ES5juaO8+CFWeTa2AFsbpR8bkCPJq+P8cRP16+37tY0zNXEBSK/1ur4MakaRf76jeQBijpZxw0Q==} dev: true - /@cspell/dict-cryptocurrencies@3.0.1: - resolution: {integrity: sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==} + /@cspell/dict-cryptocurrencies@4.0.0: + resolution: {integrity: sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==} dev: true /@cspell/dict-csharp@4.0.2: @@ -416,16 +427,20 @@ packages: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us@4.3.6: - resolution: {integrity: sha512-odhgsjNZI9BtEOJdvqfAuv/3yz5aB1ngfBNaph7WSnYVt//9e3fhrElZ6/pIIkoyuGgeQPwz1fXt+tMgcnLSEQ==} + /@cspell/dict-en_us@4.3.7: + resolution: {integrity: sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==} dev: true /@cspell/dict-filetypes@3.0.1: resolution: {integrity: sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==} dev: true - /@cspell/dict-fonts@3.0.2: - resolution: {integrity: sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==} + /@cspell/dict-fonts@4.0.0: + resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} + dev: true + + /@cspell/dict-fsharp@1.0.0: + resolution: {integrity: sha512-dHPkMHwW4dWv3Lv9VWxHuVm4IylqvcfRBSnZ7usJTRThraetSVrOPIJwr6UJh7F5un/lGJx2lxWVApf2WQaB/A==} dev: true /@cspell/dict-fullstack@3.1.5: @@ -468,8 +483,8 @@ packages: resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} dev: true - /@cspell/dict-lorem-ipsum@3.0.0: - resolution: {integrity: sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==} + /@cspell/dict-lorem-ipsum@4.0.0: + resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} dev: true /@cspell/dict-lua@4.0.1: @@ -518,8 +533,8 @@ packages: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms@3.2.1: - resolution: {integrity: sha512-+QXmyoONVc/3aNgKW+0F0u3XUCRTfNRkWKLZQA78i+9fOfde8ZT4JmROmZgRveH/MxD4n6pNFceIRcYI6C8WuQ==} + /@cspell/dict-software-terms@3.2.2: + resolution: {integrity: sha512-DmdS/qAyJVmKKku4ab89HVZhsvRIk84HoPUVIZ/zJhmuCO+LF45Ylzy1/7G32MYLjbG/o1Ze3UvbaE9HY4FKKA==} dev: true /@cspell/dict-sql@2.1.1: @@ -542,16 +557,16 @@ packages: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@6.31.3: - resolution: {integrity: sha512-A6sT00+6UNGFksQ5SxW2ohNl6vUutai8F4jwJMHTjZL/9vivQpU7y5V4PpsfoPZtx3WZcbrzuTvJ+tLfdbWc4A==} - engines: {node: '>=14'} + /@cspell/dynamic-import@7.3.2: + resolution: {integrity: sha512-G2ZBPC08X3lUQmHRobGdFYxb3oTSuSIfpW1P/oTMovqbuVoQh108W2WXv0Va40LVGkQD9OS31ZafHbcLELANeA==} + engines: {node: '>=16'} dependencies: - import-meta-resolve: 2.2.2 + import-meta-resolve: 3.0.0 dev: true - /@cspell/strong-weak-map@6.31.3: - resolution: {integrity: sha512-znwc9IlgGUPioHGshP/zyM8HsuYg1OY5S7HSiVXARh5H8RqcyBsnyn8abc0PPhqPrfDy9Fh5xHsAEPZ55dl1vQ==} - engines: {node: '>=14.6'} + /@cspell/strong-weak-map@7.3.2: + resolution: {integrity: sha512-Y2JL8A/CG37NnreVtU3DhvcOuYWNEAKUmOSU9NfBeOoptWwTMBvbNF5UbOpmZrf2BXc8OmdHIogIWHXYIESiyg==} + engines: {node: '>=16'} dev: true /@ddietr/codemirror-themes@1.4.2: @@ -559,7 +574,7 @@ packages: dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 '@lezer/highlight': 1.1.6 dev: false @@ -577,21 +592,21 @@ packages: /@esbuild-kit/cjs-loader@2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: - '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/core-utils': 3.2.2 get-tsconfig: 4.7.0 dev: true - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + /@esbuild-kit/core-utils@3.2.2: + resolution: {integrity: sha512-Ub6LaRaAgF80dTSzUdXpFLM1pVDdmEVB9qb5iAzSpyDlX/mfJTFGOnZ516O05p5uWWteNviMKi4PAyEuRxI5gA==} dependencies: - esbuild: 0.17.19 + esbuild: 0.18.20 source-map-support: 0.5.21 dev: true /@esbuild-kit/esm-loader@2.5.5: resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: - '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/core-utils': 3.2.2 get-tsconfig: 4.7.0 dev: true @@ -601,11 +616,10 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false optional: true - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -619,11 +633,10 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: false optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -637,11 +650,10 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: false optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -655,11 +667,10 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -673,11 +684,10 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -691,11 +701,10 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: false optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -709,11 +718,10 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: false optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -727,11 +735,10 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -745,11 +752,10 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -763,11 +769,10 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -781,11 +786,10 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -799,11 +803,10 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -817,11 +820,10 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -835,11 +837,10 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -853,11 +854,10 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -871,11 +871,10 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -889,11 +888,10 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: false optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -907,11 +905,10 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: false optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -925,11 +922,10 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: false optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -943,11 +939,10 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -961,11 +956,10 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -979,11 +973,10 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1028,8 +1021,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -1048,6 +1041,10 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@jspm/core@2.0.1: + resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} + dev: true + /@lezer/common@0.15.12: resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} @@ -1197,126 +1194,107 @@ packages: fastq: 1.15.0 dev: true - /@octokit/auth-token@3.0.4: - resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} - engines: {node: '>= 14'} + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} dev: false - /@octokit/core@4.2.4: - resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} - engines: {node: '>= 14'} + /@octokit/core@5.0.0: + resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==} + engines: {node: '>= 18'} dependencies: - '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6 - '@octokit/request': 6.2.8 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.1 + '@octokit/request': 8.1.1 + '@octokit/request-error': 5.0.0 + '@octokit/types': 11.1.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: false - /@octokit/endpoint@7.0.6: - resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} - engines: {node: '>= 14'} + /@octokit/endpoint@9.0.0: + resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 9.3.2 + '@octokit/types': 11.1.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: false - /@octokit/graphql@5.0.6: - resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} - engines: {node: '>= 14'} + /@octokit/graphql@7.0.1: + resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==} + engines: {node: '>= 18'} dependencies: - '@octokit/request': 6.2.8 - '@octokit/types': 9.3.2 + '@octokit/request': 8.1.1 + '@octokit/types': 11.1.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: false /@octokit/openapi-types@18.0.0: resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} dev: false - /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): - resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} - engines: {node: '>= 14'} + /@octokit/plugin-paginate-rest@8.0.0(@octokit/core@5.0.0): + resolution: {integrity: sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=4' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 - '@octokit/tsconfig': 1.0.2 - '@octokit/types': 9.3.2 + '@octokit/core': 5.0.0 + '@octokit/types': 11.1.0 dev: false - /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4): - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + /@octokit/plugin-request-log@4.0.0(@octokit/core@5.0.0): + resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 + '@octokit/core': 5.0.0 dev: false - /@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4): - resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} - engines: {node: '>= 14'} + /@octokit/plugin-rest-endpoint-methods@9.0.0(@octokit/core@5.0.0): + resolution: {integrity: sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '>=5' dependencies: - '@octokit/core': 4.2.4 - '@octokit/types': 10.0.0 + '@octokit/core': 5.0.0 + '@octokit/types': 11.1.0 dev: false - /@octokit/request-error@3.0.3: - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} + /@octokit/request-error@5.0.0: + resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 9.3.2 + '@octokit/types': 11.1.0 deprecation: 2.3.1 once: 1.4.0 dev: false - /@octokit/request@6.2.8: - resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} - engines: {node: '>= 14'} + /@octokit/request@8.1.1: + resolution: {integrity: sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 + '@octokit/endpoint': 9.0.0 + '@octokit/request-error': 5.0.0 + '@octokit/types': 11.1.0 is-plain-object: 5.0.0 - node-fetch: 2.7.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding dev: false - /@octokit/rest@19.0.13: - resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} - engines: {node: '>= 14'} + /@octokit/rest@20.0.1: + resolution: {integrity: sha512-wROV21RwHQIMNb2Dgd4+pY+dVy1Dwmp85pBrgr6YRRDYRBu9Gb+D73f4Bl2EukZSj5hInq2Tui9o7gAQpc2k2Q==} + engines: {node: '>= 18'} dependencies: - '@octokit/core': 4.2.4 - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) - transitivePeerDependencies: - - encoding - dev: false - - /@octokit/tsconfig@1.0.2: - resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} + '@octokit/core': 5.0.0 + '@octokit/plugin-paginate-rest': 8.0.0(@octokit/core@5.0.0) + '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.0.0) + '@octokit/plugin-rest-endpoint-methods': 9.0.0(@octokit/core@5.0.0) dev: false - /@octokit/types@10.0.0: - resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} - dependencies: - '@octokit/openapi-types': 18.0.0 - dev: false - - /@octokit/types@9.3.2: - resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} + /@octokit/types@11.1.0: + resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==} dependencies: '@octokit/openapi-types': 18.0.0 dev: false @@ -1360,7 +1338,7 @@ packages: transitivePeerDependencies: - '@parcel/core' - /@parcel/config-default@2.9.3(@parcel/core@2.9.3): + /@parcel/config-default@2.9.3(@parcel/core@2.9.3)(typescript@5.2.2): resolution: {integrity: sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==} peerDependencies: '@parcel/core': ^2.9.3 @@ -1370,7 +1348,7 @@ packages: '@parcel/core': 2.9.3 '@parcel/namer-default': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3) + '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) '@parcel/optimizer-image': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-svgo': 2.9.3(@parcel/core@2.9.3) '@parcel/optimizer-swc': 2.9.3(@parcel/core@2.9.3) @@ -1404,6 +1382,7 @@ packages: - relateurl - srcset - terser + - typescript - uncss /@parcel/core@2.9.3: @@ -1432,7 +1411,7 @@ packages: dotenv: 7.0.0 dotenv-expand: 5.1.0 json5: 2.2.3 - msgpackr: 1.9.7 + msgpackr: 1.9.8 nullthrows: 1.1.1 semver: 7.5.4 @@ -1526,12 +1505,12 @@ packages: transitivePeerDependencies: - '@parcel/core' - /@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3): + /@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3)(typescript@5.2.2): resolution: {integrity: sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==} engines: {node: '>= 12.0.0', parcel: ^2.9.3} dependencies: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - htmlnano: 2.0.4(svgo@2.8.0) + htmlnano: 2.0.4(svgo@2.8.0)(typescript@5.2.2) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -1543,6 +1522,7 @@ packages: - relateurl - srcset - terser + - typescript - uncss /@parcel/optimizer-image@2.9.3(@parcel/core@2.9.3): @@ -1576,7 +1556,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.3.80 + '@swc/core': 1.3.83 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -1830,7 +1810,7 @@ packages: '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.2 browserslist: 4.21.10 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 @@ -2122,88 +2102,88 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - /@swc/core-darwin-arm64@1.3.80: - resolution: {integrity: sha512-rhoFTcQMUGfO7IkfOnopPSF6O0/aVJ58B7KueIKbvrMe6YvSfFj9QfObELFjYCcrJZTvUWBhig0QrsfPIiUphA==} + /@swc/core-darwin-arm64@1.3.83: + resolution: {integrity: sha512-Plz2IKeveVLivbXTSCC3OZjD2MojyKYllhPrn9RotkDIZEFRYJZtW5/Ik1tJW/2rzu5HVKuGYrDKdScVVTbOxQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.3.80: - resolution: {integrity: sha512-0dOLedFpVXe+ugkKHXsqSxMKqvQYfFtibWbrZ7j8wOaErzSGPr0VpyWvepNVb9s046725kPXSw+fsGhqZR8wrw==} + /@swc/core-darwin-x64@1.3.83: + resolution: {integrity: sha512-FBGVg5IPF/8jQ6FbK60iDUHjv0H5+LwfpJHKH6wZnRaYWFtm7+pzYgreLu3NTsm3m7/1a7t0+7KURwBGUaJCCw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.80: - resolution: {integrity: sha512-QIjwP3PtDeHBDkwF6+ZZqdUsqAhORbMpxrw2jq3mHe4lQrxBttSFTq018vlMRo2mFEorOvXdadzaD9m+NymPrw==} + /@swc/core-linux-arm-gnueabihf@1.3.83: + resolution: {integrity: sha512-EZcsuRYhGkzofXtzwDjuuBC/suiX9s7zeg2YYXOVjWwyebb6BUhB1yad3mcykFQ20rTLO9JUyIaiaMYDHGobqw==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.3.80: - resolution: {integrity: sha512-cg8WriIueab58ZwkzXmIACnjSzFLzOBwxlC9k65gPXMNgCjab2YbqEYvAbjBqneuqaao02gW6tad2uhjgYaExw==} + /@swc/core-linux-arm64-gnu@1.3.83: + resolution: {integrity: sha512-khI41szLHrCD/cFOcN4p2SYvZgHjhhHlcMHz5BksRrDyteSJKu0qtWRZITVom0N/9jWoAleoFhMnFTUs0H8IWA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.3.80: - resolution: {integrity: sha512-AhdCQ7QKx5mWrtpaOA1mFRiWWvuiiUtspvo0QSpspDetRKTND1rlf/3UB5+gp0kCeCNUTsVmJWU7fIA9ICZtXA==} + /@swc/core-linux-arm64-musl@1.3.83: + resolution: {integrity: sha512-zgT7yNOdbjHcGAwvys79mbfNLK65KBlPJWzeig+Yk7I8TVzmaQge7B6ZS/gwF9/p+8TiLYo/tZ5aF2lqlgdSVw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.3.80: - resolution: {integrity: sha512-+2e5oni1vOrLIjM5Q2/GIzK/uS2YEtuJqnjPvCK8SciRJsSl8OgVsRvyCDbmKeZNtJ2Q+o/O2AQ2w1qpAJG6jg==} + /@swc/core-linux-x64-gnu@1.3.83: + resolution: {integrity: sha512-x+mH0Y3NC/G0YNlFmGi3vGD4VOm7IPDhh+tGrx6WtJp0BsShAbOpxtfU885rp1QweZe4qYoEmGqiEjE2WrPIdA==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.3.80: - resolution: {integrity: sha512-8OK9IlI1zpWOm7vIp1iXmZSEzLAwFpqhsGSEhxPavpOx2m54kLFdPcw/Uv3n461f6TCtszIxkGq1kSqBUdfUBA==} + /@swc/core-linux-x64-musl@1.3.83: + resolution: {integrity: sha512-s5AYhAOmetUwUZwS5g9qb92IYgNHHBGiY2mTLImtEgpAeBwe0LPDj6WrujxCBuZnaS55mKRLLOuiMZE5TpjBNA==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.3.80: - resolution: {integrity: sha512-RKhatwiAGlffnF6z2Mm3Ddid0v3KB+uf5m/Gc7N9zO/EUAV0PnHRuYuZSGyqodHmGFC+mK8YrCooFCEmHL9n+w==} + /@swc/core-win32-arm64-msvc@1.3.83: + resolution: {integrity: sha512-yw2rd/KVOGs95lRRB+killLWNaO1dy4uVa8Q3/4wb5txlLru07W1m041fZLzwOg/1Sh0TMjJgGxj0XHGR3ZXhQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.3.80: - resolution: {integrity: sha512-3jiiZzU/kaw7k4zUp1yMq1QiUe4wJVtCEXIhf+fKuBsIwm7rdvyK/+PIx5KHnZy4TGQnYczKBRhJA5nuBcrUCQ==} + /@swc/core-win32-ia32-msvc@1.3.83: + resolution: {integrity: sha512-POW+rgZ6KWqBpwPGIRd2/3pcf46P+UrKBm4HLt5IwbHvekJ4avIM8ixJa9kK0muJNVJcDpaZgxaU1ELxtJ1j8w==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.3.80: - resolution: {integrity: sha512-2eZtIoIWQBWqykfms92Zd37lveYOBWQTZjdooBGlsLHtcoQLkNpf1NXmR6TKY0yy8q6Yl3OhPvY+izjmO08MSg==} + /@swc/core-win32-x64-msvc@1.3.83: + resolution: {integrity: sha512-CiWQtkFnZElXQUalaHp+Wacw0Jd+24ncRYhqaJ9YKnEQP1H82CxIIuQqLM8IFaLpn5dpY6SgzaeubWF46hjcLA==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.80: - resolution: {integrity: sha512-yX2xV5I/lYswHHR+44TPvzBgq3/Y8N1YWpTQADYuvSiX3Jxyvemk5Jpx3rRtigYb8WBkWAAf2i5d5ZJ2M7hhgw==} + /@swc/core@1.3.83: + resolution: {integrity: sha512-PccHDgGQlFjpExgJxH91qA3a4aifR+axCFJ4RieCoiI0m5gURE4nBhxzTBY5YU/YKTBmPO8Gc5Q6inE3+NquWg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -2214,19 +2194,19 @@ packages: dependencies: '@swc/types': 0.1.4 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.80 - '@swc/core-darwin-x64': 1.3.80 - '@swc/core-linux-arm-gnueabihf': 1.3.80 - '@swc/core-linux-arm64-gnu': 1.3.80 - '@swc/core-linux-arm64-musl': 1.3.80 - '@swc/core-linux-x64-gnu': 1.3.80 - '@swc/core-linux-x64-musl': 1.3.80 - '@swc/core-win32-arm64-msvc': 1.3.80 - '@swc/core-win32-ia32-msvc': 1.3.80 - '@swc/core-win32-x64-msvc': 1.3.80 - - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + '@swc/core-darwin-arm64': 1.3.83 + '@swc/core-darwin-x64': 1.3.83 + '@swc/core-linux-arm-gnueabihf': 1.3.83 + '@swc/core-linux-arm64-gnu': 1.3.83 + '@swc/core-linux-arm64-musl': 1.3.83 + '@swc/core-linux-x64-gnu': 1.3.83 + '@swc/core-linux-x64-musl': 1.3.83 + '@swc/core-win32-arm64-msvc': 1.3.83 + '@swc/core-win32-ia32-msvc': 1.3.83 + '@swc/core-win32-x64-msvc': 1.3.83 + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.2 @@ -2253,7 +2233,7 @@ packages: /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: true /@types/cacheable-request@6.0.3: @@ -2261,7 +2241,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.17.11 + '@types/node': 18.17.14 '@types/responselike': 1.0.0 dev: true @@ -2287,15 +2267,15 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: true - /@types/lodash@4.14.197: - resolution: {integrity: sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==} + /@types/lodash@4.14.198: + resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} dev: true - /@types/node@18.17.11: - resolution: {integrity: sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==} + /@types/node@18.17.14: + resolution: {integrity: sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -2304,7 +2284,7 @@ packages: /@types/prompts@2.4.4: resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 kleur: 3.0.3 dev: true @@ -2318,8 +2298,8 @@ packages: '@types/react': 18.2.21 dev: true - /@types/react-reconciler@0.28.3: - resolution: {integrity: sha512-srdTEjQKa0e2mVdjIJkISnFAevdXk3py6J7oKQWjLhy1JNaGq9zEgBh2adejjKi36gHn8NGa/Rr1Uh29rF97dQ==} + /@types/react-reconciler@0.28.4: + resolution: {integrity: sha512-Xd55E2aLI9Q/ikDQEmfRzIwYJs4oO0h9ZHA3FZDakzt1WR6JMZcpqtCZlF97I72KVjoY4rHXU5TfvkRDOyr/rg==} dependencies: '@types/react': 18.2.21 dev: true @@ -2342,26 +2322,26 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: true /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true /@types/superagent@4.1.18: resolution: {integrity: sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: true - /@types/update-notifier@6.0.4: - resolution: {integrity: sha512-CiKJPSmt/3F4sVnkQTjnP/onKtTJxRkib6Gvw4XESM8FNsHlvRnBNqU5qL0IQmqjtKnz5e9E6Y7xChOpvxFzKg==} + /@types/update-notifier@6.0.5: + resolution: {integrity: sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==} dependencies: '@types/configstore': 6.0.0 boxen: 7.1.1 @@ -2370,7 +2350,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: true /@types/yargs-parser@21.0.0: @@ -2383,133 +2363,134 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.0.4): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.0.4) + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 ignore: 5.2.4 - natural-compare-lite: 1.4.0 + natural-compare: 1.4.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.0.4): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 eslint: 8.48.0 - typescript: 5.0.4 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@6.6.0: + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.0.4): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/types@6.6.0: + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.4): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.0.4): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) eslint: 8.48.0 - eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.6.0: + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 6.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2552,8 +2533,8 @@ packages: uri-js: 4.4.1 dev: true - /all-package-names@2.0.720: - resolution: {integrity: sha512-+7AsuNLAVbpHsj+qxf/p0kSqj3uW29AOsSLrS8LdikXREkZichjCOiTTr7JQj39KUlVqQsJ6NzxhnizK0N8weA==} + /all-package-names@2.0.732: + resolution: {integrity: sha512-sQqderEdnRc1hkAG2Rc/SRdUGFnwOAVkdB4/4AhO94gNd2kFzGFVdEQdso0bJ9+W7gshMKk4yRdfrGVVf/KFoA==} hasBin: true dependencies: commander-version: 1.1.0 @@ -2668,8 +2649,8 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2688,8 +2669,8 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2698,8 +2679,8 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2708,8 +2689,8 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -2718,13 +2699,14 @@ packages: get-intrinsic: 1.2.1 dev: true - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 define-properties: 1.2.0 + es-abstract: 1.22.1 get-intrinsic: 1.2.1 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -2821,8 +2803,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001523 - electron-to-chromium: 1.4.503 + caniuse-lite: 1.0.30001528 + electron-to-chromium: 1.4.511 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) @@ -2902,8 +2884,15 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - /caniuse-lite@1.0.30001523: - resolution: {integrity: sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA==} + /caniuse-lite@1.0.30001528: + resolution: {integrity: sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==} + + /chalk-template@1.1.0: + resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} + engines: {node: '>=14.16'} + dependencies: + chalk: 5.3.0 + dev: true /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -3058,13 +3047,13 @@ packages: /codemirror@6.0.1(@lezer/common@1.0.4): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.16.0)(@lezer/common@1.0.4) + '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.5 '@codemirror/language': 6.9.0 '@codemirror/lint': 6.4.1 '@codemirror/search': 6.5.2 '@codemirror/state': 6.2.1 - '@codemirror/view': 6.16.0 + '@codemirror/view': 6.18.0 transitivePeerDependencies: - '@lezer/common' dev: false @@ -3093,9 +3082,9 @@ packages: commander: 6.2.1 dev: true - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} dev: true /commander@5.1.0: @@ -3132,18 +3121,6 @@ packages: ini: 1.3.8 proto-list: 1.2.4 - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: true - /configstore@6.0.0: resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} engines: {node: '>=12'} @@ -3168,14 +3145,20 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.2.0: - resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + /cosmiconfig@8.3.4(typescript@5.2.2): + resolution: {integrity: sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + typescript: 5.2.2 /crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -3190,123 +3173,119 @@ packages: which: 2.0.2 dev: true - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: true - /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} dependencies: type-fest: 1.4.0 - /cspell-dictionary@6.31.3: - resolution: {integrity: sha512-3w5P3Md/tbHLVGPKVL0ePl1ObmNwhdDiEuZ2TXfm2oAIwg4aqeIrw42A2qmhaKLcuAIywpqGZsrGg8TviNNhig==} - engines: {node: '>=14'} + /cspell-dictionary@7.3.2: + resolution: {integrity: sha512-hL8fOZ7zTkUuE6jq2CUObxUp0fSLsNQyMo+HAkpg0w6ssHvbgnP6HP8kyEN641L/F0X/Ow2vo3CaRBadvyyzCA==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 6.31.3 - '@cspell/cspell-types': 6.31.3 - cspell-trie-lib: 6.31.3 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 + cspell-trie-lib: 7.3.2 fast-equals: 4.0.3 gensequence: 5.0.2 dev: true - /cspell-gitignore@6.31.3: - resolution: {integrity: sha512-vCfVG4ZrdwJnsZHl/cdp8AY+YNPL3Ga+0KR9XJsaz69EkQpgI6porEqehuwle7hiXw5e3L7xFwNEbpCBlxgLRA==} - engines: {node: '>=14'} + /cspell-gitignore@7.3.2: + resolution: {integrity: sha512-NWxxFcf4wwKbRInkZK/p/BrPR2ElCpcB8DLcrBxRkiI4uX7yCX8v5QjI8ZpTyuaUTl9aFqJFYtj9Q7GqkBnPzA==} + engines: {node: '>=16'} hasBin: true dependencies: - cspell-glob: 6.31.3 + cspell-glob: 7.3.2 find-up: 5.0.0 dev: true - /cspell-glob@6.31.3: - resolution: {integrity: sha512-+koUJPSCOittQwhR0T1mj4xXT3N+ZnY2qQ53W6Gz9HY3hVfEEy0NpbwE/Uy7sIvFMbc426fK0tGXjXyIj72uhQ==} - engines: {node: '>=14'} + /cspell-glob@7.3.2: + resolution: {integrity: sha512-R/YwtBN5ApOTONkBoTOSCKDMmnRRA1fF9prkaFMfE0aT5oC2VF0N7hLCSYjpQM+kYsXeqLDc13vxFBOnHRuc3g==} + engines: {node: '>=16'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@6.31.3: - resolution: {integrity: sha512-TZYaOLIGAumyHlm4w7HYKKKcR1ZgEMKt7WNjCFqq7yGVW7U+qyjQqR8jqnLiUTZl7c2Tque4mca7n0CFsjVv5A==} - engines: {node: '>=14'} + /cspell-grammar@7.3.2: + resolution: {integrity: sha512-ale40T4M0jHmwQsPjIbpZKzaRxMVy5dnpyvplwj7ExX4sp2Grt1wcqxk2ELS4r4bsaIap+iIfeYYhoXqYq1dQg==} + engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.31.3 - '@cspell/cspell-types': 6.31.3 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 dev: true - /cspell-io@6.31.3: - resolution: {integrity: sha512-yCnnQ5bTbngUuIAaT5yNSdI1P0Kc38uvC8aynNi7tfrCYOQbDu1F9/DcTpbdhrsCv+xUn2TB1YjuCmm0STfJlA==} - engines: {node: '>=14'} + /cspell-io@7.3.2: + resolution: {integrity: sha512-nul6K4YUMe1VdxuJDDOMvWUw/hIS2UZkvJLDo5GkAus7YmGSR0knfDueU+hebYszRa0LxjrduuPNcNJE/ZWUFg==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-service-bus': 6.31.3 + '@cspell/cspell-service-bus': 7.3.2 node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true - /cspell-lib@6.31.3: - resolution: {integrity: sha512-Dv55aecaMvT/5VbNryKo0Zos8dtHon7e1K0z8DR4/kGZdQVT0bOFWeotSLhuaIqoNFdEt8ypfKbrIHIdbgt1Hg==} - engines: {node: '>=14.6'} + /cspell-lib@7.3.2: + resolution: {integrity: sha512-cbo0TSL2JnM/GdiutH193aynxdxSnxBR1DYJ1/8ycIWDU0p4AHO0EZ+5L5MkBFwpM20OicuXvLrAem9WjYVDBQ==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-bundled-dicts': 6.31.3 - '@cspell/cspell-pipe': 6.31.3 - '@cspell/cspell-types': 6.31.3 - '@cspell/strong-weak-map': 6.31.3 + '@cspell/cspell-bundled-dicts': 7.3.2 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-resolver': 7.3.2 + '@cspell/cspell-types': 7.3.2 + '@cspell/dynamic-import': 7.3.2 + '@cspell/strong-weak-map': 7.3.2 clear-module: 4.1.2 comment-json: 4.2.3 - configstore: 5.0.1 + configstore: 6.0.0 cosmiconfig: 8.0.0 - cspell-dictionary: 6.31.3 - cspell-glob: 6.31.3 - cspell-grammar: 6.31.3 - cspell-io: 6.31.3 - cspell-trie-lib: 6.31.3 - fast-equals: 4.0.3 - find-up: 5.0.0 + cspell-dictionary: 7.3.2 + cspell-glob: 7.3.2 + cspell-grammar: 7.3.2 + cspell-io: 7.3.2 + cspell-trie-lib: 7.3.2 + fast-equals: 5.0.1 + find-up: 6.3.0 gensequence: 5.0.2 import-fresh: 3.3.0 resolve-from: 5.0.0 - resolve-global: 1.0.0 vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 transitivePeerDependencies: - encoding dev: true - /cspell-trie-lib@6.31.3: - resolution: {integrity: sha512-HNUcLWOZAvtM3E34U+7/mSSpO0F6nLd/kFlRIcvSvPb9taqKe8bnSa0Yyb3dsdMq9rMxUmuDQtF+J6arZK343g==} - engines: {node: '>=14'} + /cspell-trie-lib@7.3.2: + resolution: {integrity: sha512-IXNCWBw4UDZuY6MB+j7YNdcDpTdcfElsLkwTV8fEmNfUeClJacn2mQicQ/LKZJLvOc1TNbcSPWSCe3kQA+uxNw==} + engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 6.31.3 - '@cspell/cspell-types': 6.31.3 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 gensequence: 5.0.2 dev: true - /cspell@6.31.3: - resolution: {integrity: sha512-VeeShDLWVM6YPiU/imeGy0lmg6ki63tbLEa6hz20BExhzzpmINOP5nSTYtpY0H9zX9TrF/dLbI38TuuYnyG3Uw==} - engines: {node: '>=14'} + /cspell@7.3.2: + resolution: {integrity: sha512-/YY1C0CYBP+GueFon1BUgcDGc1YXDCyAIjuebvRygjt1cXwCklQVF5bZIGCrimgjzTrY+wx0ePgzuVQ9RyJnOQ==} + engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 6.31.3 - '@cspell/cspell-pipe': 6.31.3 - '@cspell/cspell-types': 6.31.3 - '@cspell/dynamic-import': 6.31.3 - chalk: 4.1.2 - commander: 10.0.1 - cspell-gitignore: 6.31.3 - cspell-glob: 6.31.3 - cspell-io: 6.31.3 - cspell-lib: 6.31.3 + '@cspell/cspell-json-reporter': 7.3.2 + '@cspell/cspell-pipe': 7.3.2 + '@cspell/cspell-types': 7.3.2 + '@cspell/dynamic-import': 7.3.2 + chalk: 5.3.0 + chalk-template: 1.1.0 + commander: 11.0.0 + cspell-gitignore: 7.3.2 + cspell-glob: 7.3.2 + cspell-io: 7.3.2 + cspell-lib: 7.3.2 fast-glob: 3.3.1 fast-json-stable-stringify: 2.1.0 file-entry-cache: 6.0.1 - get-stdin: 8.0.0 - imurmurhash: 0.1.4 + get-stdin: 9.0.0 semver: 7.5.4 - strip-ansi: 6.0.1 + strip-ansi: 7.1.0 vscode-uri: 3.0.7 transitivePeerDependencies: - encoding @@ -3418,8 +3397,8 @@ packages: object-keys: 1.1.1 dev: true - /del@7.0.0: - resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} + /del@7.1.0: + resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} engines: {node: '>=14.16'} dependencies: globby: 13.2.2 @@ -3492,13 +3471,6 @@ packages: domelementtype: 2.3.0 domhandler: 4.3.1 - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: true - /dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -3522,8 +3494,8 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /electron-to-chromium@1.4.503: - resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + /electron-to-chromium@1.4.511: + resolution: {integrity: sha512-udHyLfdy390CObLy3uFQitCBvK+WxWu6WZWQMBzO/npNiRy6tanDKR1c/F6OImfAiSt1ylgNszPJBxix2c0w3w==} /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -3559,12 +3531,12 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -3586,11 +3558,11 @@ packages: object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.0 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 @@ -3599,8 +3571,8 @@ packages: which-typed-array: 1.1.11 dev: true - /es-iterator-helpers@1.0.13: - resolution: {integrity: sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==} + /es-iterator-helpers@1.0.14: + resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.2 @@ -3614,8 +3586,8 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - iterator.prototype: 1.1.0 - safe-array-concat: 1.0.0 + iterator.prototype: 1.1.1 + safe-array-concat: 1.0.1 dev: true /es-set-tostringtag@2.0.1: @@ -3642,6 +3614,16 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-plugin-polyfill-node@0.3.0(esbuild@0.16.17): + resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} + peerDependencies: + esbuild: '*' + dependencies: + '@jspm/core': 2.0.1 + esbuild: 0.16.17 + import-meta-resolve: 3.0.0 + dev: true + /esbuild@0.16.17: resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} @@ -3670,36 +3652,35 @@ packages: '@esbuild/win32-arm64': 0.16.17 '@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-x64': 0.16.17 - dev: false - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /escalade@3.1.1: @@ -3756,31 +3737,23 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - es-iterator-helpers: 1.0.13 + es-iterator-helpers: 1.0.14 eslint: 8.48.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 7.5.4 - string.prototype.matchall: 4.0.8 - dev: true - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 + string.prototype.matchall: 4.0.9 dev: true /eslint-scope@7.2.2: @@ -3817,7 +3790,7 @@ packages: '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -3883,11 +3856,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3950,6 +3918,11 @@ packages: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} dev: true + /fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + dev: true + /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -4094,8 +4067,8 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -4132,9 +4105,9 @@ packages: engines: {node: '>=6'} dev: true - /get-stdin@8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} + /get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} dev: true /get-stream@5.2.0: @@ -4189,13 +4162,6 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 - dev: true - /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -4359,7 +4325,7 @@ packages: lru-cache: 7.18.3 dev: true - /htmlnano@2.0.4(svgo@2.8.0): + /htmlnano@2.0.4(svgo@2.8.0)(typescript@5.2.2): resolution: {integrity: sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==} peerDependencies: cssnano: ^6.0.0 @@ -4388,10 +4354,12 @@ packages: uncss: optional: true dependencies: - cosmiconfig: 8.2.0 + cosmiconfig: 8.3.4(typescript@5.2.2) posthtml: 0.16.6 svgo: 2.8.0 timsort: 0.3.0 + transitivePeerDependencies: + - typescript /htmlparser2@7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} @@ -4476,8 +4444,8 @@ packages: resolve-cwd: 3.0.0 dev: true - /import-meta-resolve@2.2.2: - resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + /import-meta-resolve@3.0.0: + resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} dev: true /imurmurhash@0.1.4: @@ -4735,7 +4703,7 @@ packages: /is-name-taken@2.0.0: resolution: {integrity: sha512-W+FUWF5g7ONVJTx3rldZeVizmPzrMMUdscpSQ96vyYerx+4b2NcqaujLJJDWruGzE0FjzGZO9RFIipOGxx/WIw==} dependencies: - all-package-names: 2.0.720 + all-package-names: 2.0.732 package-name-conflict: 1.0.3 validate-npm-package-name: 3.0.0 dev: true @@ -4914,14 +4882,13 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /iterator.prototype@1.1.0: - resolution: {integrity: sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==} + /iterator.prototype@1.1.1: + resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} dependencies: define-properties: 1.2.0 get-intrinsic: 1.2.1 has-symbols: 1.0.3 - has-tostringtag: 1.0.0 - reflect.getprototypeof: 1.0.3 + reflect.getprototypeof: 1.0.4 dev: true /js-tokens@4.0.0: @@ -4960,10 +4927,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 - object.values: 1.1.6 + object.values: 1.1.7 dev: true /keyv@4.5.3: @@ -5258,13 +5225,6 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 7.5.4 - dev: true - /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -5274,8 +5234,8 @@ packages: /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - /meow@12.1.0: - resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} dev: true @@ -5328,13 +5288,6 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5373,8 +5326,8 @@ packages: optionalDependencies: msgpackr-extract: 3.0.2 - /msgpackr@1.9.7: - resolution: {integrity: sha512-baUNaLvKQvVhzfWTNO07njwbZK1Lxjtb0P1JL6/EhXdLTHzR57/mZqqJC39TtQKvOmkJA4pcejS4dbk7BDgLLA==} + /msgpackr@1.9.8: + resolution: {integrity: sha512-dQvfSMSIQ9kXXQTlJFDq+f7J3RrmydhI6Tn23lFy7BItp7zDR3nH70CHk2QIfs2copLSaKRv/PPjMbNSTFu2hA==} optionalDependencies: msgpackr-extract: 3.0.2 @@ -5391,10 +5344,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -5427,6 +5376,7 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true /node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} @@ -5474,14 +5424,14 @@ packages: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} - /np@8.0.4: + /np@8.0.4(typescript@5.2.2): resolution: {integrity: sha512-a4s1yESHcIwsrk/oaTekfbhb1R/2z2yyfVLX6Atl54w/9+QR01qeYyK3vMWgJ0UY+kYsGzQXausgvUX0pkmIMg==} engines: {git: '>=2.11.0', node: '>=16.6.0', npm: '>=7.19.0', yarn: '>=1.7.0'} hasBin: true dependencies: chalk: 5.3.0 - cosmiconfig: 8.2.0 - del: 7.0.0 + cosmiconfig: 8.3.4(typescript@5.2.2) + del: 7.1.0 escape-goat: 4.0.0 escape-string-regexp: 5.0.0 execa: 7.2.0 @@ -5499,7 +5449,7 @@ packages: listr: 0.14.3 listr-input: 0.2.1 log-symbols: 5.1.0 - meow: 12.1.0 + meow: 12.1.1 new-github-release-url: 2.0.0 npm-name: 7.1.0 onetime: 6.0.0 @@ -5516,6 +5466,7 @@ packages: terminal-link: 3.0.0 update-notifier: 6.0.2 transitivePeerDependencies: + - typescript - zen-observable - zenObservable dev: true @@ -5587,8 +5538,8 @@ packages: object-keys: 1.1.1 dev: true - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -5596,8 +5547,8 @@ packages: es-abstract: 1.22.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -5605,15 +5556,15 @@ packages: es-abstract: 1.22.1 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.0 es-abstract: 1.22.1 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -5806,7 +5757,7 @@ packages: resolution: {integrity: sha512-DPBNWSUWC0wPofXeNThao0uP4a93J7r90UyhagmJS0QcacTTkorZwXYsOop70phn1hKdcf/2e9lJIhazS8bx5A==} dev: true - /parcel@2.9.3: + /parcel@2.9.3(typescript@5.2.2): resolution: {integrity: sha512-2GTVocFkwblV/TIg9AmT7TI2fO4xdWkyN8aFUEVtiVNWt96GTR3FgQyHFValfCbcj1k9Xf962Ws2hYXYUr9k1Q==} engines: {node: '>= 12.0.0'} hasBin: true @@ -5814,7 +5765,7 @@ packages: '@parcel/core': optional: true dependencies: - '@parcel/config-default': 2.9.3(@parcel/core@2.9.3) + '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) '@parcel/core': 2.9.3 '@parcel/diagnostic': 2.9.3 '@parcel/events': 2.9.3 @@ -5836,6 +5787,7 @@ packages: - relateurl - srcset - terser + - typescript - uncss dev: true @@ -5868,7 +5820,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.10 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5959,9 +5911,9 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} hasBin: true dev: true @@ -6081,8 +6033,8 @@ packages: picomatch: 2.3.1 dev: false - /reflect.getprototypeof@1.0.3: - resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==} + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -6158,13 +6110,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true @@ -6263,8 +6208,8 @@ packages: tslib: 2.6.2 dev: true - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.2 @@ -6328,8 +6273,8 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + /shiki@0.14.4: + resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -6422,7 +6367,7 @@ packages: /standalone-electron-types@1.0.0: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} dependencies: - '@types/node': 18.17.11 + '@types/node': 18.17.14 dev: false /string-width@1.0.2: @@ -6458,8 +6403,8 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.9: + resolution: {integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -6471,8 +6416,8 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -6480,16 +6425,16 @@ packages: es-abstract: 1.22.1 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.22.1 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 @@ -6654,6 +6599,16 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /ts-api-utils@1.0.2(typescript@5.2.2): + resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -6662,22 +6617,12 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.0.4): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.0.4 - dev: true - - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + /tsx@3.12.8: + resolution: {integrity: sha512-Lt9KYaRGF023tlLInPj8rgHwsZU8qWLBj4iRXNWxTfjIkU7canGL806AqKear1j722plHuiYNcL2ZCo6uS9UJA==} hasBin: true dependencies: '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/core-utils': 3.2.2 '@esbuild-kit/esm-loader': 2.5.5 optionalDependencies: fsevents: 2.3.3 @@ -6712,6 +6657,11 @@ packages: engines: {node: '>=14.16'} dev: true + /type-fest@4.3.1: + resolution: {integrity: sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==} + engines: {node: '>=16'} + dev: true + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -6755,18 +6705,18 @@ packages: dependencies: is-typedarray: 1.0.0 - /typedoc@0.23.28(typescript@5.0.4): - resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} - engines: {node: '>= 14.14'} + /typedoc@0.25.1(typescript@5.2.2): + resolution: {integrity: sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==} + engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 7.4.6 - shiki: 0.14.3 - typescript: 5.0.4 + minimatch: 9.0.3 + shiki: 0.14.4 + typescript: 5.2.2 dev: true /types-eslintrc@1.0.3: @@ -6786,11 +6736,10 @@ packages: types-json: 1.2.2 dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} hasBin: true - dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -6801,13 +6750,6 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: true - /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -6920,12 +6862,14 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -6941,7 +6885,7 @@ packages: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} dependencies: - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 is-async-function: 2.0.0 is-date-object: 1.0.5 @@ -7034,8 +6978,8 @@ packages: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.0: + resolution: {integrity: sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7047,11 +6991,6 @@ packages: optional: true dev: false - /xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: true - /xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -7099,11 +7038,11 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/dmitmel/eslint-config-dmitmel/690f1b1121d342fcc8ee511ca9f2af7502f53db6(eslint@8.48.0): - resolution: {tarball: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/690f1b1121d342fcc8ee511ca9f2af7502f53db6} - id: github.com/dmitmel/eslint-config-dmitmel/690f1b1121d342fcc8ee511ca9f2af7502f53db6 + github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.48.0): + resolution: {tarball: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd} + id: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd name: eslint-config-dmitmel - version: 8.2.2 + version: 8.3.0 engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=8.17.0' diff --git a/scripts/build.mts b/scripts/build.mts index b8d0c4b5f..b0e44c6bb 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -11,6 +11,7 @@ import { rmSync, writeFileSync, } from "fs"; +import { polyfillNode } from "esbuild-plugin-polyfill-node"; const NODE_VERSION = "14"; const CHROME_VERSION = "91"; @@ -97,5 +98,12 @@ Promise.all([ target: `chrome${CHROME_VERSION}`, outfile: "dist/renderer.js", format: "esm", + plugins: [ + polyfillNode({ + polyfills: { + assert: true, + }, + }), + ], }), ]); diff --git a/src/main/index.ts b/src/main/index.ts index f14be6c8c..92d04769f 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -28,13 +28,13 @@ Object.defineProperty(global, "appSettings", { class BrowserWindow extends electron.BrowserWindow { public constructor( opts: electron.BrowserWindowConstructorOptions & { - webContents: electron.WebContents; - webPreferences: { + webContents?: electron.WebContents; + webPreferences?: { nativeWindowOpen: boolean; }; }, ) { - const originalPreload = opts.webPreferences.preload; + const originalPreload = opts.webPreferences?.preload; if (opts.webContents) { // General purpose pop-outs used by Discord @@ -125,7 +125,8 @@ electron.app.once("ready", () => { // @todo: Whitelist a few domains instead of removing CSP altogether; See #386 electron.session.defaultSession.webRequest.onHeadersReceived(({ responseHeaders }, done) => { if (!responseHeaders) { - return done({}); + done({}); + return; } const hasFrameOptions = Object.keys(responseHeaders).find((e) => /x-frame-options/i.test(e)); diff --git a/src/main/ipc/react-devtools.ts b/src/main/ipc/react-devtools.ts index d994ddc18..a22e88608 100644 --- a/src/main/ipc/react-devtools.ts +++ b/src/main/ipc/react-devtools.ts @@ -33,7 +33,10 @@ ipcMain.handle(RepluggedIpcChannels.DOWNLOAD_REACT_DEVTOOLS, async () => { return new Promise((resolve, reject) => { zip.extractAllToAsync(OUTPUT_PATH, true, false, (error) => { - if (error) return reject(error); + if (error) { + reject(error); + return; + } resolve(); }); }); diff --git a/src/main/ipc/settings.ts b/src/main/ipc/settings.ts index 80cd524ef..b7c1f354a 100644 --- a/src/main/ipc/settings.ts +++ b/src/main/ipc/settings.ts @@ -28,7 +28,7 @@ function writeSettings(namespace: string, settings: SettingsMap): Promise ); } -const locks: Record> = {}; +const locks: Record | undefined> = {}; async function transaction(namespace: string, handler: TransactionHandler): Promise { const lock = locks[namespace] ?? Promise.resolve(); diff --git a/src/preload.ts b/src/preload.ts index 6cb8da77b..1a611af16 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -6,6 +6,7 @@ import { } from "electron"; import { RepluggedIpcChannels } from "./types"; +// eslint-disable-next-line no-duplicate-imports -- these are only used for types, the other import is for the actual code import type { CheckResultFailure, CheckResultSuccess, diff --git a/src/renderer/apis/connections.ts b/src/renderer/apis/connections.ts index 23d14e6c1..b0cfd3a5e 100644 --- a/src/renderer/apis/connections.ts +++ b/src/renderer/apis/connections.ts @@ -12,13 +12,8 @@ class ConnectionsAPI extends EventTarget { return this.connections.filter.bind(this.connections); } - public get(type: string): RepluggedConnection { - const connections: Record = {}; - for (const element of this.connections) { - connections[element.type] = element; - } - - return connections[type]; + public get(type: string): RepluggedConnection | undefined { + return this.connections.find((c) => c.type === type); } public registerConnection(connection: RepluggedConnection): void { diff --git a/src/renderer/apis/notices.ts b/src/renderer/apis/notices.ts index d833d1ea2..23d4257e2 100644 --- a/src/renderer/apis/notices.ts +++ b/src/renderer/apis/notices.ts @@ -14,10 +14,10 @@ class NoticesAPI extends EventTarget { } public getAnnouncement(): RepluggedAnnouncement | undefined { - while (this.announcements?.[0]?._dismissed) { + while (this.announcements[0]?._dismissed) { this.announcements.shift(); } - return this.announcements?.[0]; + return this.announcements[0]; } public closeActiveAnnouncement(): void { diff --git a/src/renderer/apis/settings.ts b/src/renderer/apis/settings.ts index 07a2933c6..2cdfd9a51 100644 --- a/src/renderer/apis/settings.ts +++ b/src/renderer/apis/settings.ts @@ -39,7 +39,7 @@ export class SettingsManager, D extends ke * settings from the file system. * @param namespace Namespace of settings to manage. */ - public constructor(namespace: string, defaultSettings: Partial) { + public constructor(namespace: string, defaultSettings: Partial = {}) { this.namespace = namespace; this.#defaultSettings = defaultSettings; this.#queuedUpdates = new Map(); @@ -63,7 +63,7 @@ export class SettingsManager, D extends ke throw new Error(`Settings not loaded for namespace ${this.namespace}`); } // @ts-expect-error It doesn't understand ig - return this.#settings[key] ?? fallback ?? this.#defaultSettings?.[key]; + return this.#settings[key] ?? fallback ?? this.#defaultSettings[key]; } /** diff --git a/src/renderer/coremods/badges/index.tsx b/src/renderer/coremods/badges/index.tsx index 20e0f502e..7f9bda4c2 100644 --- a/src/renderer/coremods/badges/index.tsx +++ b/src/renderer/coremods/badges/index.tsx @@ -20,10 +20,12 @@ interface BadgeModArgs { size?: BadgeSizes; } -type BadgeMod = (args: BadgeModArgs) => React.ReactElement<{ - children: React.ReactElement[]; - className: string; -}>; +type BadgeMod = (args: BadgeModArgs) => + | React.ReactElement<{ + children?: React.ReactElement[]; + className: string; + }> + | undefined; interface BadgeCache { badges: APIBadges; @@ -66,7 +68,7 @@ export async function start(): Promise { await fetch(`${generalSettings.get("apiUrl")}/api/v1/users/${id}`) .then(async (res) => { const body = (await res.json()) as Record & { - badges: APIBadges; + badges: APIBadges | undefined; }; if (res.status === 200 || res.status === 404) { @@ -95,8 +97,7 @@ export async function start(): Promise { if (!badges) { return res; } - - const children = res?.props?.children; + const children = res?.props.children; if (!children || !Array.isArray(children)) { logger.error("Error injecting badges: res.props.children is not an array", { children }); return res; @@ -111,7 +112,7 @@ export async function start(): Promise { const sizeClass = getBadgeSizeClass(size); children.forEach((badge) => { - const elem: React.ReactElement = badge.props.children?.(); + const elem: React.ReactElement | undefined = badge.props.children?.(); if (elem) { elem.props.children.props.className = sizeClass; badge.props.children = (props: Record) => { diff --git a/src/renderer/coremods/contextMenu/index.tsx b/src/renderer/coremods/contextMenu/index.tsx index 9947c16b0..06d423a67 100644 --- a/src/renderer/coremods/contextMenu/index.tsx +++ b/src/renderer/coremods/contextMenu/index.tsx @@ -13,7 +13,8 @@ const logger = Logger.api("ContextMenu"); export const menuItems = {} as Record< ContextMenuTypes, - Array<{ getItem: GetContextItem; sectionId: number | undefined; indexInSection: number }> + | Array<{ getItem: GetContextItem; sectionId: number | undefined; indexInSection: number }> + | undefined >; /** @@ -23,6 +24,7 @@ export const menuItems = {} as Record< */ function makeItem(raw: RawContextItem | ContextItem | undefined | void): ContextItem | undefined { // Occasionally React won't be loaded when this function is ran, so we don't return anything + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!React) return undefined; if (!raw) { @@ -59,9 +61,9 @@ export function addContextMenuItem( sectionId: number | undefined, indexInSection: number, ): () => void { - if (!menuItems[navId]) menuItems[navId] = []; + menuItems[navId] ||= []; - menuItems[navId].push({ getItem, sectionId, indexInSection }); + menuItems[navId]?.push({ getItem, sectionId, indexInSection }); return () => removeContextMenuItem(navId, getItem); } @@ -72,9 +74,7 @@ export function addContextMenuItem( * @returns */ export function removeContextMenuItem(navId: ContextMenuTypes, getItem: GetContextItem): void { - const items = menuItems[navId]; - - menuItems[navId] = items.filter((item) => item.getItem !== getItem); + menuItems[navId] = menuItems[navId]?.filter((item) => item.getItem !== getItem); } type ContextMenuData = ContextMenuProps["ContextMenu"] & { @@ -104,8 +104,7 @@ export function _insertMenuItems(menu: ContextMenuData): void { "Menu", "MenuItem", "MenuGroup", - ])!; - + ]) || { MenuGroup: undefined }; if (!MenuGroup) return; // The data as passed as Arguments from the calling function, so we just grab what we want from it @@ -127,10 +126,11 @@ export function _insertMenuItems(menu: ContextMenuData): void { menu.children.push(repluggedGroup); } - menuItems[navId].forEach((item) => { + menuItems[navId]?.forEach((item) => { try { - const res = makeItem(item.getItem(data, menu)) as ContextItem & { props: { id?: string } }; - + const res = makeItem(item.getItem(data, menu)) as + | (ContextItem & { props: { id?: string } }) + | undefined; if (res?.props) { // add in unique ids res.props.id = `${res.props.id || "repluggedItem"}-${Math.random() @@ -141,7 +141,10 @@ export function _insertMenuItems(menu: ContextMenuData): void { if (!Array.isArray(menu.children)) menu.children = [menu.children]; const section = typeof item.sectionId === "undefined" ? repluggedGroup : menu.children.at(item.sectionId); - if (!section) return logger.error("Couldn't find section", item.sectionId, menu.children); + if (!section) { + logger.error("Couldn't find section", item.sectionId, menu.children); + return; + } section.props.children.splice(item.indexInSection, 0, res); } catch (err) { logger.error("Error while running GetContextItem function", err, item.getItem); diff --git a/src/renderer/coremods/devCompanion/index.tsx b/src/renderer/coremods/devCompanion/index.tsx index 28bee6d8c..990b322c5 100644 --- a/src/renderer/coremods/devCompanion/index.tsx +++ b/src/renderer/coremods/devCompanion/index.tsx @@ -142,8 +142,10 @@ export function initWs(isManual = false): void { const candidates = search(find); const keys = Object.keys(candidates); - if (keys.length !== 1) - return reply(`Expected exactly one 'find' match, found ${keys.length}`); + if (keys.length !== 1) { + reply(`Expected exactly one 'find' match, found ${keys.length}`); + return; + } let src = String(candidates[keys[0] as keyof typeof candidates]); @@ -163,7 +165,8 @@ export function initWs(isManual = false): void { src = newSource; } catch (err) { - return reply(`Replacement ${i} failed: ${err}`); + reply(`Replacement ${i} failed: ${err}`); + return; } } @@ -176,7 +179,8 @@ export function initWs(isManual = false): void { try { parsedArgs = args.map(parseNode); } catch (err) { - return reply(`Failed to parse args: ${err}`); + reply(`Failed to parse args: ${err}`); + return; } try { @@ -185,7 +189,8 @@ export function initWs(isManual = false): void { if (results.length > 1) throw new Error("Found more than one result! Make this filter more specific."); } catch (err) { - return reply(`Failed to find: ${err}`); + reply(`Failed to find: ${err}`); + return; } reply(); diff --git a/src/renderer/coremods/installer/util.tsx b/src/renderer/coremods/installer/util.tsx index 3188528e3..516de6b7b 100644 --- a/src/renderer/coremods/installer/util.tsx +++ b/src/renderer/coremods/installer/util.tsx @@ -18,7 +18,7 @@ const DEFAULT_INSTALLER_SOURCE: InstallerSource = "store"; const CACHE_INTERVAL = 1000 * 60 * 60; -const cache: Map = new Map(); +const cache = new Map(); export function isValidSource(type: string): type is InstallerSource { // @ts-expect-error Doesn't matter that it might not be a valid type diff --git a/src/renderer/coremods/rpc/index.ts b/src/renderer/coremods/rpc/index.ts index 21c32b731..04a47e945 100644 --- a/src/renderer/coremods/rpc/index.ts +++ b/src/renderer/coremods/rpc/index.ts @@ -14,7 +14,7 @@ type Socket = Record & { }; type RPCData = { - args: Record; + args: Record; cmd: string; }; diff --git a/src/renderer/coremods/settings/pages/Addons.tsx b/src/renderer/coremods/settings/pages/Addons.tsx index 8a9451b5f..614775b22 100644 --- a/src/renderer/coremods/settings/pages/Addons.tsx +++ b/src/renderer/coremods/settings/pages/Addons.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unnecessary-condition */ import { Messages } from "@common/i18n"; import { React, api, fluxDispatcher, modal, toast, users } from "@common"; import { @@ -574,7 +575,7 @@ export const Addons = (type: AddonType): React.ReactElement => { label: list?.filter?.( (x) => x.manifest.id === section.slice(`rp_${type}_`.length), - )?.[0]?.manifest?.name || "", + )?.[0]?.manifest.name || "", }, ]} onBreadcrumbClick={(breadcrumb) => setSection(breadcrumb.id)} diff --git a/src/renderer/coremods/settings/pages/QuickCSS.tsx b/src/renderer/coremods/settings/pages/QuickCSS.tsx index b92029a27..02095b39c 100644 --- a/src/renderer/coremods/settings/pages/QuickCSS.tsx +++ b/src/renderer/coremods/settings/pages/QuickCSS.tsx @@ -91,8 +91,7 @@ function useCodeMirror({ value: initialValueParam, onChange, container }: UseCod const [value, setValue] = React.useState(""); const [view, setView] = React.useState(undefined); - // ESLint doesn't think x is a number, but it is - // eslint-disable-next-line @typescript-eslint/restrict-plus-operands + const [update, forceUpdate] = React.useReducer((x) => x + 1, 0); React.useEffect(() => { @@ -128,7 +127,7 @@ function useCodeMirror({ value: initialValueParam, onChange, container }: UseCod container.setAttribute("data-theme", theme); return () => { - newView?.destroy(); + newView.destroy(); setView(undefined); }; }, [container, theme, update]); diff --git a/src/renderer/managers/coremods.ts b/src/renderer/managers/coremods.ts index 39771892a..654ef3010 100644 --- a/src/renderer/managers/coremods.ts +++ b/src/renderer/managers/coremods.ts @@ -10,6 +10,7 @@ import { default as notices } from "../coremods/notices/plaintextPatches"; import { default as contextMenu } from "../coremods/contextMenu/plaintextPatches"; import { default as languagePlaintext } from "../coremods/language/plaintextPatches"; import { Logger } from "../modules/logger"; +import assert from "assert"; const logger = Logger.api("Coremods"); @@ -35,11 +36,13 @@ export namespace coremods { } export async function start(name: keyof typeof coremods): Promise { - await coremods[name]?.start?.(); + assert(name in coremods, `Coremod ${name} does not exist`); + await coremods[name].start?.(); } export async function stop(name: keyof typeof coremods): Promise { - await coremods[name]?.stop?.(); + assert(name in coremods, `Coremod ${name} does not exist`); + await coremods[name].stop?.(); } export async function startAll(): Promise { diff --git a/src/renderer/managers/ignition.ts b/src/renderer/managers/ignition.ts index e28acd765..74f035b3f 100644 --- a/src/renderer/managers/ignition.ts +++ b/src/renderer/managers/ignition.ts @@ -56,7 +56,8 @@ export async function stop(): Promise { const startTime = performance.now(); quickCSS.unload(); - await Promise.all([coremods.stopAll(), plugins.stopAll(), themes.unloadAll()]); + themes.unloadAll(); + await Promise.all([coremods.stopAll(), plugins.stopAll()]); log( "Ignition", diff --git a/src/renderer/managers/updater.ts b/src/renderer/managers/updater.ts index 82eae4c9f..5123c6b58 100644 --- a/src/renderer/managers/updater.ts +++ b/src/renderer/managers/updater.ts @@ -288,9 +288,11 @@ async function autoUpdateCheck(): Promise { if (isAnUpdate && (areNewUpdates || isFirstRun)) { logger.log("Showing update notification"); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const Messages = common.i18n?.Messages; // Weird hack due to circular dependency const { open } = await openSettingsModPromise; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!Messages) { logger.error("Messages missing, cannot show update notification"); return; diff --git a/src/renderer/modules/common/toast.ts b/src/renderer/modules/common/toast.ts index f4733733e..660221ebe 100644 --- a/src/renderer/modules/common/toast.ts +++ b/src/renderer/modules/common/toast.ts @@ -23,7 +23,7 @@ type ToastFn = ( content: string | React.ReactElement | null, kind?: (typeof Kind)[keyof typeof Kind], opts?: ToastOptions, -) => void; +) => unknown; export interface Toast { toast: ToastFn; diff --git a/src/renderer/modules/components/ButtonItem.tsx b/src/renderer/modules/components/ButtonItem.tsx index 6132201fc..d4720a3c5 100644 --- a/src/renderer/modules/components/ButtonItem.tsx +++ b/src/renderer/modules/components/ButtonItem.tsx @@ -98,9 +98,10 @@ export const Button = await waitForModule(filters.bySource(".BorderColors=")).th (mod) => getFunctionBySource(mod, "wrapperClassName")!, ); -const classes = await waitForProps< - Record<"dividerDefault" | "labelRow" | "note" | "title", string> ->("dividerDefault"); +const classes = + await waitForProps>( + "dividerDefault", + ); interface ButtonItemProps { onClick?: React.MouseEventHandler; diff --git a/src/renderer/modules/components/Category.tsx b/src/renderer/modules/components/Category.tsx index b94d82341..2f92ef3d8 100644 --- a/src/renderer/modules/components/Category.tsx +++ b/src/renderer/modules/components/Category.tsx @@ -2,9 +2,10 @@ import React from "@common/react"; import { Divider, FormText } from "."; import { waitForProps } from "../webpack"; -const classes = await waitForProps< - Record<"labelRow" | "title" | "note" | "dividerDefault", string> ->("dividerDefault"); +const classes = + await waitForProps>( + "dividerDefault", + ); interface CategoryProps { title: string; diff --git a/src/renderer/modules/webpack/get-modules.ts b/src/renderer/modules/webpack/get-modules.ts index e2a282486..c2d81d492 100644 --- a/src/renderer/modules/webpack/get-modules.ts +++ b/src/renderer/modules/webpack/get-modules.ts @@ -1,6 +1,7 @@ import type { Filter, GetModuleOptions, RawModule } from "src/types"; import { wpRequire } from "./patch-load"; import { logError } from "./util"; +import assert from "assert"; // Export-finding utilities @@ -81,6 +82,7 @@ export function getById(id: number, raw?: boolean): T | RawModule | undefi * You should not use this function in production unless the ID is dynamically determined. */ export function getById(id: number, raw = false): T | RawModule | undefined { + assert(wpRequire, "Webpack not initialized"); // Load the module if not already initialized if (!(id in wpRequire.c)) { wpRequire(id); diff --git a/src/renderer/modules/webpack/helpers.ts b/src/renderer/modules/webpack/helpers.ts index c6182c236..62817c752 100644 --- a/src/renderer/modules/webpack/helpers.ts +++ b/src/renderer/modules/webpack/helpers.ts @@ -106,7 +106,7 @@ export function getByProps( ...args: [P[], GetModuleOptions] | P[] ): T | T[] | RawModule | Array> | undefined { const props = (typeof args[0] === "string" ? args : args[0]) as P[]; - const raw = typeof args[0] === "string" ? false : (args[1] as GetModuleOptions)?.raw; + const raw = typeof args[0] === "string" ? false : (args[1] as GetModuleOptions | undefined)?.raw; const result = typeof args.at(-1) === "object" @@ -151,7 +151,7 @@ export async function waitForProps( ...args: [P[], WaitForOptions] | P[] ): Promise> { const props = (typeof args[0] === "string" ? args : args[0]) as P[]; - const raw = typeof args[0] === "string" ? false : (args[1] as WaitForOptions)?.raw; + const raw = typeof args[0] === "string" ? false : (args[1] as WaitForOptions | undefined)?.raw; const result = await (typeof args.at(-1) === "object" ? waitForModule(filters.byProps(...props), args.at(-1) as WaitForOptions) diff --git a/src/renderer/modules/webpack/patch-load.ts b/src/renderer/modules/webpack/patch-load.ts index 487ea596c..35e865def 100644 --- a/src/renderer/modules/webpack/patch-load.ts +++ b/src/renderer/modules/webpack/patch-load.ts @@ -9,7 +9,7 @@ import { patchModuleSource } from "./plaintext-patch"; * @internal * @hidden */ -export let wpRequire: WebpackRequire; +export let wpRequire: WebpackRequire | undefined; let signalReady: () => void; let ready = false; diff --git a/src/renderer/util.ts b/src/renderer/util.ts index 87c16bb94..34f9a8312 100644 --- a/src/renderer/util.ts +++ b/src/renderer/util.ts @@ -85,6 +85,7 @@ export function forceUpdateElement(selector: string, all = false): void { all ? [...document.querySelectorAll(selector)] : [document.querySelector(selector)] ).filter(Boolean) as Element[]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- May not actually have forceUpdate elements.forEach((element) => getOwnerInstance(element)?.forceUpdate()); } @@ -175,7 +176,7 @@ export async function openExternal(url: string): Promise { if (!mod) { throw new Error("Could not find openExternal"); } - return await mod(url); + await mod(url); } type ValType = @@ -300,7 +301,7 @@ export function virtualMerge(...objects: O): ExtractObje return new Proxy(fallback, handler) as ExtractObjectType; } -export type Tree = Record; +export type Tree = Record | null; type TreeFilter = string | ((tree: Tree) => boolean); /** @@ -320,7 +321,8 @@ export function findInTree( if (maxRecursion <= 0) return undefined; if (typeof searchFilter === "string") { - if (Object.prototype.hasOwnProperty.call(tree, searchFilter)) return tree[searchFilter] as Tree; + if (Object.prototype.hasOwnProperty.call(tree, searchFilter)) + return tree?.[searchFilter] as Tree; } else if (searchFilter(tree)) { return tree; } diff --git a/src/types/index.ts b/src/types/index.ts index 37ea7a987..1bc3ebbaf 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -42,7 +42,7 @@ export interface RepluggedAnnouncement { onClose?: () => void; button?: { text: string; - onClick: () => void; + onClick?: () => void; href?: string; }; } From 8f90fff6aaebfe08634ab138f268edd5ebee57ba Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 20:21:51 -0500 Subject: [PATCH 24/31] Fix Discord crash (#562) * Fix component selector * Handle components failing to import --- src/renderer/modules/common/index.ts | 15 ++++++++++----- src/renderer/modules/components/TextInput.tsx | 8 +++----- src/renderer/modules/components/index.ts | 15 ++++++++++----- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/renderer/modules/common/index.ts b/src/renderer/modules/common/index.ts index ffbaa31ac..d8d05b17c 100644 --- a/src/renderer/modules/common/index.ts +++ b/src/renderer/modules/common/index.ts @@ -10,11 +10,16 @@ function importTimeout(name: string, moduleImport: Promise, cb: (mod: T) = error("CommonModules", name, void 0, `Could not find module "${name}"`); rej(new Error(`Module not found: "${name}`)); }, 10_000); - void moduleImport.then((mod) => { - clearTimeout(timeout); - cb(mod); - res(); - }); + void moduleImport + .then((mod) => { + clearTimeout(timeout); + cb(mod); + res(); + }) + .catch((err) => { + error("CommonModules", name, void 0, `Failed to import module "${name}"`, err); + rej(err); + }); }), ); } diff --git a/src/renderer/modules/components/TextInput.tsx b/src/renderer/modules/components/TextInput.tsx index 0f54618e0..4ca3ec057 100644 --- a/src/renderer/modules/components/TextInput.tsx +++ b/src/renderer/modules/components/TextInput.tsx @@ -1,5 +1,5 @@ import type React from "react"; -import { filters, waitForModule } from "../webpack"; +import { waitForProps } from "../webpack"; interface TextInputProps extends Omit, "size" | "onChange"> { @@ -19,8 +19,6 @@ export type TextInputType = React.ComponentClass & { Sizes: Record<"DEFAULT" | "MINI", string>; }; -export default await waitForModule>( - filters.bySource(".getIsOverFlowing"), -).then( - (mod) => Object.values(mod).find((x) => "defaultProps" in x && "maxLength" in x.defaultProps)!, +export default await waitForProps>("TextInput").then( + (x) => x.TextInput, ); diff --git a/src/renderer/modules/components/index.ts b/src/renderer/modules/components/index.ts index 2dd176d30..d5244f228 100644 --- a/src/renderer/modules/components/index.ts +++ b/src/renderer/modules/components/index.ts @@ -15,11 +15,16 @@ function importTimeout( error("Components", name, void 0, `Could not find component "${name}"`); rej(new Error(`Module not found: "${name}`)); }, 10_000); - void moduleImport.then((mod) => { - clearTimeout(timeout); - cb(mod); - res(); - }); + void moduleImport + .then((mod) => { + clearTimeout(timeout); + cb(mod); + res(); + }) + .catch((err) => { + error("Components", name, void 0, `Failed to import component "${name}"`, err); + rej(err); + }); }), ); } From 0f525891926f06461adebd1bb31df3406087809d Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 20:23:01 -0500 Subject: [PATCH 25/31] Security patch (Closes #556) --- scripts/build.mts | 2 +- src/main/ipc/installer.ts | 29 +++++++++++++-- src/main/ipc/plugins.ts | 18 ++++++++-- src/main/ipc/settings.ts | 36 +++++++++++++++++-- src/main/ipc/themes.ts | 18 ++++++++-- .../coremods/settings/pages/General.tsx | 1 + 6 files changed, 91 insertions(+), 13 deletions(-) diff --git a/scripts/build.mts b/scripts/build.mts index b0e44c6bb..6bf84e95f 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -79,7 +79,7 @@ Promise.all([ platform: "node", target: `node${NODE_VERSION}`, outfile: "dist/main.js", - external: ["electron"], + external: ["electron", "original-fs"], }), // Preload esbuild.build({ diff --git a/src/main/ipc/installer.ts b/src/main/ipc/installer.ts index 80df14b55..1a1cef52a 100644 --- a/src/main/ipc/installer.ts +++ b/src/main/ipc/installer.ts @@ -9,11 +9,15 @@ import { } from "../../types"; import { Octokit } from "@octokit/rest"; import { CONFIG_PATH, CONFIG_PATHS } from "../../util.mjs"; -import { readFile, writeFile } from "fs/promises"; +import { readFile } from "fs/promises"; +import { writeFile as originalWriteFile } from "original-fs"; import fetch from "node-fetch"; -import { join } from "path"; +import { join, resolve, sep } from "path"; import { AnyAddonManifestOrReplugged, anyAddonOrReplugged } from "src/types/addon"; import { getSetting } from "./settings"; +import { promisify } from "util"; + +const writeFile = promisify(originalWriteFile); const octokit = new Octokit(); @@ -170,6 +174,13 @@ ipcMain.handle( query.set("type", update ? "update" : "install"); if (version) query.set("version", version); + if (type === "replugged") { + // Manually set Path and URL for security purposes + path = "replugged.asar"; + const apiUrl = await getSetting("dev.replugged.Settings", "apiUrl", "https://replugged.dev"); + url = `${apiUrl}/api/v1/store/dev.replugged.Replugged.asar`; + } + let res; try { res = await fetch(`${url}?${query}`); @@ -191,8 +202,20 @@ ipcMain.handle( const buf = Buffer.from(file); + const base = getBaseName(type); + const filePath = resolve(base, path); + if (!filePath.startsWith(`${base}${sep}`)) { + // Ensure file changes are restricted to the base path + return { + success: false, + error: "Invalid path", + }; + } + + console.log(url, filePath); + try { - await writeFile(join(getBaseName(type), path), buf); + await writeFile(filePath, buf); } catch (err) { return { success: false, diff --git a/src/main/ipc/plugins.ts b/src/main/ipc/plugins.ts index fac451063..67b9bc884 100644 --- a/src/main/ipc/plugins.ts +++ b/src/main/ipc/plugins.ts @@ -5,7 +5,7 @@ IPC events: */ import { readFile, readdir, readlink, rm, stat } from "fs/promises"; -import { extname, join } from "path"; +import { extname, join, sep } from "path"; import { ipcMain, shell } from "electron"; import { RepluggedIpcChannels, type RepluggedPlugin } from "../../types"; import { plugin } from "../../types/addon"; @@ -19,8 +19,14 @@ export const isFileAPlugin = (f: Dirent | Stats, name: string): boolean => { }; async function getPlugin(pluginName: string): Promise { + const manifestPath = join(PLUGINS_DIR, pluginName, "manifest.json"); + if (!manifestPath.startsWith(`${PLUGINS_DIR}${sep}`)) { + // Ensure file changes are restricted to the base path + throw new Error("Invalid plugin name"); + } + const manifest: unknown = JSON.parse( - await readFile(join(PLUGINS_DIR, pluginName, "manifest.json"), { + await readFile(manifestPath, { encoding: "utf-8", }), ); @@ -85,7 +91,13 @@ ipcMain.handle(RepluggedIpcChannels.LIST_PLUGINS, async (): Promise { - await rm(join(PLUGINS_DIR, pluginName), { + const pluginPath = join(PLUGINS_DIR, pluginName); + if (!pluginPath.startsWith(`${PLUGINS_DIR}${sep}`)) { + // Ensure file changes are restricted to the base path + throw new Error("Invalid plugin name"); + } + + await rm(pluginPath, { recursive: true, force: true, }); diff --git a/src/main/ipc/settings.ts b/src/main/ipc/settings.ts index b7c1f354a..d821560c3 100644 --- a/src/main/ipc/settings.ts +++ b/src/main/ipc/settings.ts @@ -1,5 +1,5 @@ import { readFile, writeFile } from "fs/promises"; -import { join } from "path"; +import { resolve, sep } from "path"; import { ipcMain, shell } from "electron"; import { RepluggedIpcChannels } from "../../types"; import type { @@ -11,9 +11,20 @@ import { CONFIG_PATHS } from "src/util.mjs"; const SETTINGS_DIR = CONFIG_PATHS.settings; +export function getSettingsPath(namespace: string): string { + const resolved = resolve(SETTINGS_DIR, `${namespace}.json`); + console.log(resolved, SETTINGS_DIR, resolved.startsWith(SETTINGS_DIR)); + if (!resolved.startsWith(`${SETTINGS_DIR}${sep}`)) { + // Ensure file changes are restricted to the base path + throw new Error("Invalid namespace"); + } + return resolved; +} + async function readSettings(namespace: string): Promise> { + const path = getSettingsPath(namespace); try { - const data = await readFile(join(SETTINGS_DIR, `${namespace}.json`), "utf8"); + const data = await readFile(path, "utf8"); return new Map(Object.entries(JSON.parse(data))); } catch { return new Map(); @@ -22,7 +33,7 @@ async function readSettings(namespace: string): Promise> { function writeSettings(namespace: string, settings: SettingsMap): Promise { return writeFile( - join(SETTINGS_DIR, `${namespace}.json`), + getSettingsPath(namespace), JSON.stringify(Object.fromEntries(settings.entries()), null, 2), "utf8", ); @@ -54,8 +65,27 @@ export async function writeTransaction( handler: SettingsTransactionHandler, ): Promise { return transaction(namespace, async () => { + const postHandlerTransform: Array<(settings: SettingsMap) => void | Promise> = []; + const settings = await readSettings(namespace); + if (namespace.toLowerCase() === "dev.replugged.settings") { + // Prevent the "apiUrl" setting from changing + const originalValue = settings.get("apiUrl"); + postHandlerTransform.push((settings) => { + if (originalValue) { + settings.set("apiUrl", originalValue); + } else { + settings.delete("apiUrl"); + } + }); + } + const res = await handler(settings); + + for (const transform of postHandlerTransform) { + await transform(settings); + } + await writeSettings(namespace, settings); return res; }); diff --git a/src/main/ipc/themes.ts b/src/main/ipc/themes.ts index aefa92cf2..84f24b563 100644 --- a/src/main/ipc/themes.ts +++ b/src/main/ipc/themes.ts @@ -5,7 +5,7 @@ IPC events: */ import { readFile, readdir, readlink, rm, stat } from "fs/promises"; -import { extname, join } from "path"; +import { extname, join, sep } from "path"; import { ipcMain, shell } from "electron"; import { RepluggedIpcChannels, type RepluggedTheme } from "../../types"; import { theme } from "../../types/addon"; @@ -19,8 +19,14 @@ export const isFileATheme = (f: Dirent | Stats, name: string): boolean => { }; async function getTheme(path: string): Promise { + const manifestPath = join(THEMES_DIR, path, "manifest.json"); + if (!manifestPath.startsWith(`${THEMES_DIR}${sep}`)) { + // Ensure file changes are restricted to the base path + throw new Error("Invalid plugin name"); + } + const manifest: unknown = JSON.parse( - await readFile(join(THEMES_DIR, path, "manifest.json"), { + await readFile(manifestPath, { encoding: "utf-8", }), ); @@ -72,7 +78,13 @@ ipcMain.handle(RepluggedIpcChannels.LIST_THEMES, async (): Promise { - await rm(join(THEMES_DIR, themeName), { + const themePath = join(THEMES_DIR, themeName); + if (!themePath.startsWith(`${THEMES_DIR}${sep}`)) { + // Ensure file changes are restricted to the base path + throw new Error("Invalid theme name"); + } + + await rm(themePath, { recursive: true, force: true, }); diff --git a/src/renderer/coremods/settings/pages/General.tsx b/src/renderer/coremods/settings/pages/General.tsx index 52374fa5c..daf6165f8 100644 --- a/src/renderer/coremods/settings/pages/General.tsx +++ b/src/renderer/coremods/settings/pages/General.tsx @@ -125,6 +125,7 @@ export const General = (): React.ReactElement => { From e8153180e287308228356926174c3131e296e957 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 20:24:50 -0500 Subject: [PATCH 26/31] 4.6.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fa86fbdf4..bc11810ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.6.3", + "version": "4.6.4", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From 7eb26b66a010110bcdb1dadac1924ce3502b2995 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 20:56:59 -0500 Subject: [PATCH 27/31] Remove polyfill plugin --- scripts/build.mts | 8 -------- src/renderer/managers/coremods.ts | 5 ++--- src/renderer/modules/webpack/get-modules.ts | 3 +-- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/scripts/build.mts b/scripts/build.mts index 6bf84e95f..a4389fa46 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -11,7 +11,6 @@ import { rmSync, writeFileSync, } from "fs"; -import { polyfillNode } from "esbuild-plugin-polyfill-node"; const NODE_VERSION = "14"; const CHROME_VERSION = "91"; @@ -98,12 +97,5 @@ Promise.all([ target: `chrome${CHROME_VERSION}`, outfile: "dist/renderer.js", format: "esm", - plugins: [ - polyfillNode({ - polyfills: { - assert: true, - }, - }), - ], }), ]); diff --git a/src/renderer/managers/coremods.ts b/src/renderer/managers/coremods.ts index 654ef3010..a0ec8744c 100644 --- a/src/renderer/managers/coremods.ts +++ b/src/renderer/managers/coremods.ts @@ -10,7 +10,6 @@ import { default as notices } from "../coremods/notices/plaintextPatches"; import { default as contextMenu } from "../coremods/contextMenu/plaintextPatches"; import { default as languagePlaintext } from "../coremods/language/plaintextPatches"; import { Logger } from "../modules/logger"; -import assert from "assert"; const logger = Logger.api("Coremods"); @@ -36,12 +35,12 @@ export namespace coremods { } export async function start(name: keyof typeof coremods): Promise { - assert(name in coremods, `Coremod ${name} does not exist`); + if (!(name in coremods)) throw new Error(`Coremod ${name} does not exist`); await coremods[name].start?.(); } export async function stop(name: keyof typeof coremods): Promise { - assert(name in coremods, `Coremod ${name} does not exist`); + if (!(name in coremods)) throw new Error(`Coremod ${name} does not exist`); await coremods[name].stop?.(); } diff --git a/src/renderer/modules/webpack/get-modules.ts b/src/renderer/modules/webpack/get-modules.ts index c2d81d492..c9c0d57d2 100644 --- a/src/renderer/modules/webpack/get-modules.ts +++ b/src/renderer/modules/webpack/get-modules.ts @@ -1,7 +1,6 @@ import type { Filter, GetModuleOptions, RawModule } from "src/types"; import { wpRequire } from "./patch-load"; import { logError } from "./util"; -import assert from "assert"; // Export-finding utilities @@ -82,7 +81,7 @@ export function getById(id: number, raw?: boolean): T | RawModule | undefi * You should not use this function in production unless the ID is dynamically determined. */ export function getById(id: number, raw = false): T | RawModule | undefined { - assert(wpRequire, "Webpack not initialized"); + if (!wpRequire) throw new Error("Webpack not initialized"); // Load the module if not already initialized if (!(id in wpRequire.c)) { wpRequire(id); From 0cb58edf23c094dd7d9ed7a84a12f995522f4f5b Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 20:57:15 -0500 Subject: [PATCH 28/31] Remove package --- package.json | 1 - pnpm-lock.yaml | 40 +++++++++++++++++++++++----------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index bc11810ae..5e048c79e 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "@typescript-eslint/parser": "^6.6.0", "cspell": "^7.3.2", "discord-types": "^1.3.3", - "esbuild-plugin-polyfill-node": "^0.3.0", "eslint": "^8.48.0", "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel", "eslint-plugin-node": "^11.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6209a15d0..b0ce64ddb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -127,9 +127,6 @@ devDependencies: discord-types: specifier: ^1.3.3 version: 1.3.26 - esbuild-plugin-polyfill-node: - specifier: ^0.3.0 - version: 0.3.0(esbuild@0.16.17) eslint: specifier: ^8.48.0 version: 8.48.0 @@ -616,6 +613,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: false optional: true /@esbuild/android-arm64@0.18.20: @@ -633,6 +631,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: false optional: true /@esbuild/android-arm@0.18.20: @@ -650,6 +649,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: false optional: true /@esbuild/android-x64@0.18.20: @@ -667,6 +667,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false optional: true /@esbuild/darwin-arm64@0.18.20: @@ -684,6 +685,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: false optional: true /@esbuild/darwin-x64@0.18.20: @@ -701,6 +703,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: false optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -718,6 +721,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: false optional: true /@esbuild/freebsd-x64@0.18.20: @@ -735,6 +739,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-arm64@0.18.20: @@ -752,6 +757,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-arm@0.18.20: @@ -769,6 +775,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-ia32@0.18.20: @@ -786,6 +793,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-loong64@0.18.20: @@ -803,6 +811,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-mips64el@0.18.20: @@ -820,6 +829,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-ppc64@0.18.20: @@ -837,6 +847,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-riscv64@0.18.20: @@ -854,6 +865,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-s390x@0.18.20: @@ -871,6 +883,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true /@esbuild/linux-x64@0.18.20: @@ -888,6 +901,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: false optional: true /@esbuild/netbsd-x64@0.18.20: @@ -905,6 +919,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: false optional: true /@esbuild/openbsd-x64@0.18.20: @@ -922,6 +937,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: false optional: true /@esbuild/sunos-x64@0.18.20: @@ -939,6 +955,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: false optional: true /@esbuild/win32-arm64@0.18.20: @@ -956,6 +973,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: false optional: true /@esbuild/win32-ia32@0.18.20: @@ -973,6 +991,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: false optional: true /@esbuild/win32-x64@0.18.20: @@ -1041,10 +1060,6 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jspm/core@2.0.1: - resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} - dev: true - /@lezer/common@0.15.12: resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} @@ -3614,16 +3629,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-plugin-polyfill-node@0.3.0(esbuild@0.16.17): - resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} - peerDependencies: - esbuild: '*' - dependencies: - '@jspm/core': 2.0.1 - esbuild: 0.16.17 - import-meta-resolve: 3.0.0 - dev: true - /esbuild@0.16.17: resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} @@ -3652,6 +3657,7 @@ packages: '@esbuild/win32-arm64': 0.16.17 '@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-x64': 0.16.17 + dev: false /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} From 21b3f095b9e0d1d8b748ca6ae36c1e676ee9c1b7 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 21:14:15 -0500 Subject: [PATCH 29/31] 4.6.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e048c79e..c3029e46d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.6.4", + "version": "4.6.5", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From cb06d920495ae7074f018778df89fecfc400614a Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 21:34:03 -0500 Subject: [PATCH 30/31] Create SECURITY.md --- SECURITY.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..a29598f6c --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +# Security Policy + +## Reporting a Vulnerability + +Please privately DM a staff message of our [Discord server](https://discord.gg/replugged) with the details of your issue so we can address it privately. From 42122585199d52a1f134641c27b0cbf81cebbada Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 26 Sep 2023 21:53:27 -0500 Subject: [PATCH 31/31] Update SECURITY.md (#563) --- SECURITY.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index a29598f6c..37e93a57e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,4 +2,6 @@ ## Reporting a Vulnerability -Please privately DM a staff message of our [Discord server](https://discord.gg/replugged) with the details of your issue so we can address it privately. +Please create a private [security advisory](https://github.com/replugged-org/replugged/security/advisories/new). This will only be visible to us until we release a fix. + +If you have issues with the form above, you can also DM a staff member of our [Discord server](https://discord.gg/replugged) with the details of your issue.