![]()
{
return userProfile?.relation?.status === "ACCEPTED";
}, [userProfile]);
@@ -148,7 +145,6 @@ export function ProfileContent() {
userStats,
numberFormatter,
t,
- navigate,
statsIndex,
]);
diff --git a/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx b/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
index 0aaee611..c6b024dd 100644
--- a/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
+++ b/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
@@ -254,7 +254,7 @@ export function ProfileHero() {
if (gameRunning)
return {
...gameRunning,
- objectId: gameRunning.objectID,
+ objectId: gameRunning.objectId,
sessionDurationInSeconds: gameRunning.sessionDurationInMillis / 1000,
};
diff --git a/src/renderer/src/pages/settings/settings-privacy.css.ts b/src/renderer/src/pages/settings/settings-account.css.ts
similarity index 80%
rename from src/renderer/src/pages/settings/settings-privacy.css.ts
rename to src/renderer/src/pages/settings/settings-account.css.ts
index 2aec8cd0..8fbb3845 100644
--- a/src/renderer/src/pages/settings/settings-privacy.css.ts
+++ b/src/renderer/src/pages/settings/settings-account.css.ts
@@ -5,14 +5,7 @@ import { SPACING_UNIT, vars } from "../../theme.css";
export const form = style({
display: "flex",
flexDirection: "column",
- gap: `${SPACING_UNIT}px`,
-});
-
-export const blockedUserAvatar = style({
- width: "32px",
- height: "32px",
- borderRadius: "4px",
- filter: "grayscale(100%)",
+ gap: `${SPACING_UNIT * 3}px`,
});
export const blockedUser = style({
@@ -43,5 +36,4 @@ export const blockedUsersList = style({
flexDirection: "column",
alignItems: "flex-start",
gap: `${SPACING_UNIT}px`,
- marginTop: `${SPACING_UNIT}px`,
});
diff --git a/src/renderer/src/pages/settings/settings-account.tsx b/src/renderer/src/pages/settings/settings-account.tsx
new file mode 100644
index 00000000..e8bac125
--- /dev/null
+++ b/src/renderer/src/pages/settings/settings-account.tsx
@@ -0,0 +1,291 @@
+import { Avatar, Button, SelectField } from "@renderer/components";
+import { SPACING_UNIT } from "@renderer/theme.css";
+import { Controller, useForm } from "react-hook-form";
+import { useTranslation } from "react-i18next";
+
+import * as styles from "./settings-account.css";
+import { useDate, useToast, useUserDetails } from "@renderer/hooks";
+import { useCallback, useContext, useEffect, useState } from "react";
+import {
+ CloudIcon,
+ KeyIcon,
+ MailIcon,
+ XCircleFillIcon,
+} from "@primer/octicons-react";
+import { settingsContext } from "@renderer/context";
+import { AuthPage } from "@shared";
+
+interface FormValues {
+ profileVisibility: "PUBLIC" | "FRIENDS" | "PRIVATE";
+}
+
+export function SettingsAccount() {
+ const { t } = useTranslation("settings");
+
+ const [isUnblocking, setIsUnblocking] = useState(false);
+
+ const { showSuccessToast } = useToast();
+
+ const { blockedUsers, fetchBlockedUsers } = useContext(settingsContext);
+
+ const { formatDate } = useDate();
+
+ const {
+ control,
+ formState: { isSubmitting },
+ setValue,
+ handleSubmit,
+ } = useForm
();
+
+ const {
+ userDetails,
+ hasActiveSubscription,
+ patchUser,
+ fetchUserDetails,
+ updateUserDetails,
+ unblockUser,
+ } = useUserDetails();
+
+ useEffect(() => {
+ if (userDetails?.profileVisibility) {
+ setValue("profileVisibility", userDetails.profileVisibility);
+ }
+ }, [userDetails, setValue]);
+
+ useEffect(() => {
+ const unsubscribe = window.electron.onAccountUpdated(() => {
+ fetchUserDetails().then((response) => {
+ if (response) {
+ updateUserDetails(response);
+ }
+ });
+ showSuccessToast(t("account_data_updated_successfully"));
+ });
+
+ return () => {
+ unsubscribe();
+ };
+ }, [fetchUserDetails, updateUserDetails, showSuccessToast]);
+
+ const visibilityOptions = [
+ { value: "PUBLIC", label: t("public") },
+ { value: "FRIENDS", label: t("friends_only") },
+ { value: "PRIVATE", label: t("private") },
+ ];
+
+ const onSubmit = async (values: FormValues) => {
+ await patchUser(values);
+ showSuccessToast(t("changes_saved"));
+ };
+
+ const handleUnblockClick = useCallback(
+ (id: string) => {
+ setIsUnblocking(true);
+
+ unblockUser(id)
+ .then(() => {
+ fetchBlockedUsers();
+ showSuccessToast(t("user_unblocked"));
+ })
+ .finally(() => {
+ setIsUnblocking(false);
+ });
+ },
+ [unblockUser, fetchBlockedUsers, t, showSuccessToast]
+ );
+
+ const getHydraCloudSectionContent = () => {
+ const hasSubscribedBefore = Boolean(userDetails?.subscription?.expiresAt);
+ const isRenewalActive = userDetails?.subscription?.status === "active";
+
+ if (!hasSubscribedBefore) {
+ return {
+ description: {t("no_subscription")},
+ callToAction: t("become_subscriber"),
+ };
+ }
+
+ if (hasActiveSubscription) {
+ return {
+ description: isRenewalActive ? (
+ <>
+
+ {t("subscription_renews_on", {
+ date: formatDate(userDetails.subscription!.expiresAt!),
+ })}
+
+ {t("bill_sent_until")}
+ >
+ ) : (
+ <>
+ {t("subscription_renew_cancelled")}
+
+ {t("subscription_active_until", {
+ date: formatDate(userDetails!.subscription!.expiresAt!),
+ })}
+
+ >
+ ),
+ callToAction: t("manage_subscription"),
+ };
+ }
+
+ return {
+ description: (
+
+ {t("subscription_expired_at", {
+ date: formatDate(userDetails!.subscription!.expiresAt!),
+ })}
+
+ ),
+ callToAction: t("renew_subscription"),
+ };
+ };
+
+ if (!userDetails) return null;
+
+ return (
+
+ );
+}
diff --git a/src/renderer/src/pages/settings/settings-general.tsx b/src/renderer/src/pages/settings/settings-general.tsx
index 6737c4b7..ba0411a5 100644
--- a/src/renderer/src/pages/settings/settings-general.tsx
+++ b/src/renderer/src/pages/settings/settings-general.tsx
@@ -57,10 +57,30 @@ export function SettingsGeneral() {
);
}, []);
- useEffect(updateFormWithUserPreferences, [
- userPreferences,
- defaultDownloadsPath,
- ]);
+ useEffect(() => {
+ if (userPreferences) {
+ const languageKeys = Object.keys(languageResources);
+ const language =
+ languageKeys.find(
+ (language) => language === userPreferences.language
+ ) ??
+ languageKeys.find((language) => {
+ return language.startsWith(userPreferences.language.split("-")[0]);
+ });
+
+ setForm((prev) => ({
+ ...prev,
+ downloadsPath: userPreferences.downloadsPath ?? defaultDownloadsPath,
+ downloadNotificationsEnabled:
+ userPreferences.downloadNotificationsEnabled,
+ repackUpdatesNotificationsEnabled:
+ userPreferences.repackUpdatesNotificationsEnabled,
+ achievementNotificationsEnabled:
+ userPreferences.achievementNotificationsEnabled,
+ language: language ?? "en",
+ }));
+ }
+ }, [userPreferences, defaultDownloadsPath]);
const handleLanguageChange = (event) => {
const value = event.target.value;
@@ -86,31 +106,6 @@ export function SettingsGeneral() {
}
};
- function updateFormWithUserPreferences() {
- if (userPreferences) {
- const languageKeys = Object.keys(languageResources);
- const language =
- languageKeys.find((language) => {
- return language === userPreferences.language;
- }) ??
- languageKeys.find((language) => {
- return language.startsWith(userPreferences.language.split("-")[0]);
- });
-
- setForm((prev) => ({
- ...prev,
- downloadsPath: userPreferences.downloadsPath ?? defaultDownloadsPath,
- downloadNotificationsEnabled:
- userPreferences.downloadNotificationsEnabled,
- repackUpdatesNotificationsEnabled:
- userPreferences.repackUpdatesNotificationsEnabled,
- achievementNotificationsEnabled:
- userPreferences.achievementNotificationsEnabled,
- language: language ?? "en",
- }));
- }
- }
-
return (
<>
();
-
- const { patchUser, userDetails } = useUserDetails();
-
- const { unblockUser } = useUserDetails();
-
- useEffect(() => {
- if (userDetails?.profileVisibility) {
- setValue("profileVisibility", userDetails.profileVisibility);
- }
- }, [userDetails, setValue]);
-
- const visibilityOptions = [
- { value: "PUBLIC", label: t("public") },
- { value: "FRIENDS", label: t("friends_only") },
- { value: "PRIVATE", label: t("private") },
- ];
-
- const onSubmit = async (values: FormValues) => {
- await patchUser(values);
- showSuccessToast(t("changes_saved"));
- };
-
- const handleUnblockClick = useCallback(
- (id: string) => {
- setIsUnblocking(true);
-
- unblockUser(id)
- .then(() => {
- fetchBlockedUsers();
- showSuccessToast(t("user_unblocked"));
- })
- .finally(() => {
- setIsUnblocking(false);
- });
- },
- [unblockUser, fetchBlockedUsers, t, showSuccessToast]
- );
-
- return (
-
- );
-}
diff --git a/src/renderer/src/pages/settings/settings.tsx b/src/renderer/src/pages/settings/settings.tsx
index 00ceebd7..702da53e 100644
--- a/src/renderer/src/pages/settings/settings.tsx
+++ b/src/renderer/src/pages/settings/settings.tsx
@@ -11,7 +11,7 @@ import {
SettingsContextConsumer,
SettingsContextProvider,
} from "@renderer/context";
-import { SettingsPrivacy } from "./settings-privacy";
+import { SettingsAccount } from "./settings-account";
import { useUserDetails } from "@renderer/hooks";
import { useMemo } from "react";
@@ -28,7 +28,7 @@ export default function Settings() {
t("debrid_services"),
];
- if (userDetails) return [...categories, t("privacy")];
+ if (userDetails) return [...categories, t("account")];
return categories;
}, [userDetails, t]);
@@ -53,7 +53,7 @@ export default function Settings() {
return ;
}
- return ;
+ return ;
};
return (
diff --git a/src/renderer/src/scss/globals.scss b/src/renderer/src/scss/globals.scss
index cc01c197..792abf86 100644
--- a/src/renderer/src/scss/globals.scss
+++ b/src/renderer/src/scss/globals.scss
@@ -16,6 +16,6 @@ $spacing-unit: 8px;
$toast-z-index: 5;
$bottom-panel-z-index: 3;
-$title-bar-z-index: 4;
+$title-bar-z-index: 1900000001;
$backdrop-z-index: 4;
$modal-z-index: 5;
diff --git a/src/renderer/src/theme.css.ts b/src/renderer/src/theme.css.ts
index b9fbaf55..7cd92ef3 100644
--- a/src/renderer/src/theme.css.ts
+++ b/src/renderer/src/theme.css.ts
@@ -24,7 +24,7 @@ export const vars = createGlobalTheme(":root", {
zIndex: {
toast: "5",
bottomPanel: "3",
- titleBar: "4",
+ titleBar: "1900000001",
backdrop: "4",
},
});
diff --git a/src/shared/constants.ts b/src/shared/constants.ts
index e5a3f6ae..0fa2e3a1 100644
--- a/src/shared/constants.ts
+++ b/src/shared/constants.ts
@@ -43,3 +43,9 @@ export enum Cracker {
rle = "RLE",
razor1911 = "RAZOR1911",
}
+
+export enum AuthPage {
+ SignIn = "/",
+ UpdateEmail = "/update-email",
+ UpdatePassword = "/update-password",
+}
diff --git a/src/types/download.types.ts b/src/types/download.types.ts
new file mode 100644
index 00000000..8b7f2091
--- /dev/null
+++ b/src/types/download.types.ts
@@ -0,0 +1,176 @@
+import type { Download } from "./level.types";
+
+export type DownloadStatus =
+ | "active"
+ | "waiting"
+ | "paused"
+ | "error"
+ | "complete"
+ | "seeding"
+ | "removed";
+
+export interface DownloadProgress {
+ downloadSpeed: number;
+ timeRemaining: number;
+ numPeers: number;
+ numSeeds: number;
+ isDownloadingMetadata: boolean;
+ isCheckingFiles: boolean;
+ progress: number;
+ gameId: string;
+ download: Download;
+}
+
+/* Torbox */
+export interface TorBoxUser {
+ id: number;
+ email: string;
+ plan: string;
+ expiration: string;
+}
+
+export interface TorBoxUserRequest {
+ success: boolean;
+ detail: string;
+ error: string;
+ data: TorBoxUser;
+}
+
+export interface TorBoxFile {
+ id: number;
+ md5: string;
+ s3_path: string;
+ name: string;
+ size: number;
+ mimetype: string;
+ short_name: string;
+}
+
+export interface TorBoxTorrentInfo {
+ id: number;
+ hash: string;
+ created_at: string;
+ updated_at: string;
+ magnet: string;
+ size: number;
+ active: boolean;
+ cached: boolean;
+ auth_id: string;
+ download_state:
+ | "downloading"
+ | "uploading"
+ | "stalled (no seeds)"
+ | "paused"
+ | "completed"
+ | "cached"
+ | "metaDL"
+ | "checkingResumeData";
+ seeds: number;
+ ratio: number;
+ progress: number;
+ download_speed: number;
+ upload_speed: number;
+ name: string;
+ eta: number;
+ files: TorBoxFile[];
+}
+
+export interface TorBoxTorrentInfoRequest {
+ success: boolean;
+ detail: string;
+ error: string;
+ data: TorBoxTorrentInfo[];
+}
+
+export interface TorBoxAddTorrentRequest {
+ success: boolean;
+ detail: string;
+ error: string;
+ data: {
+ torrent_id: number;
+ name: string;
+ hash: string;
+ };
+}
+
+export interface TorBoxRequestLinkRequest {
+ success: boolean;
+ detail: string;
+ error: string;
+ data: string;
+}
+
+/* Real-Debrid */
+export interface RealDebridUnrestrictLink {
+ id: string;
+ filename: string;
+ mimeType: string;
+ filesize: number;
+ link: string;
+ host: string;
+ host_icon: string;
+ chunks: number;
+ crc: number;
+ download: string;
+ streamable: number;
+}
+
+export interface RealDebridAddMagnet {
+ id: string;
+ // URL of the created resource
+ uri: string;
+}
+
+export interface RealDebridTorrentInfo {
+ id: string;
+ filename: string;
+ original_filename: string;
+ hash: string;
+ bytes: number;
+ original_bytes: number;
+ host: string;
+ split: number;
+ progress: number;
+ status:
+ | "magnet_error"
+ | "magnet_conversion"
+ | "waiting_files_selection"
+ | "queued"
+ | "downloading"
+ | "downloaded"
+ | "error"
+ | "virus"
+ | "compressing"
+ | "uploading"
+ | "dead";
+ added: string;
+ files: {
+ id: number;
+ path: string;
+ bytes: number;
+ selected: number;
+ }[];
+ links: string[];
+ ended: string;
+ speed: number;
+ seeders: number;
+}
+
+export interface RealDebridUser {
+ id: number;
+ username: string;
+ email: string;
+ points: number;
+ locale: string;
+ avatar: string;
+ type: string;
+ premium: number;
+ expiration: string;
+}
+
+/* Torrent */
+export interface SeedingStatus {
+ gameId: string;
+ status: DownloadStatus;
+ uploadSpeed: number;
+}
diff --git a/src/types/game.types.ts b/src/types/game.types.ts
new file mode 100644
index 00000000..e1ba779b
--- /dev/null
+++ b/src/types/game.types.ts
@@ -0,0 +1,21 @@
+export type GameShop = "steam" | "epic";
+
+export interface UnlockedAchievement {
+ name: string;
+ unlockTime: number;
+}
+
+export interface SteamAchievement {
+ name: string;
+ displayName: string;
+ description?: string;
+ icon: string;
+ icongray: string;
+ hidden: boolean;
+ points?: number;
+}
+
+export interface UserAchievement extends SteamAchievement {
+ unlocked: boolean;
+ unlockTime: number | null;
+}
diff --git a/src/types/index.ts b/src/types/index.ts
index da5deea4..f436551f 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -1,16 +1,7 @@
import type { Cracker, DownloadSourceStatus, Downloader } from "@shared";
import type { SteamAppDetails } from "./steam.types";
-
-export type GameStatus =
- | "active"
- | "waiting"
- | "paused"
- | "error"
- | "complete"
- | "seeding"
- | "removed";
-
-export type GameShop = "steam" | "epic";
+import type { Download, Game, Subscription } from "./level.types";
+import type { GameShop } from "./game.types";
export type FriendRequestAction = "ACCEPTED" | "REFUSED" | "CANCEL";
@@ -33,48 +24,6 @@ export interface GameRepack {
updatedAt: Date;
}
-export interface AchievementData {
- name: string;
- displayName: string;
- description?: string;
- icon: string;
- icongray: string;
- hidden: boolean;
- points?: number;
-}
-
-export interface UserAchievement {
- name: string;
- hidden: boolean;
- displayName: string;
- points?: number;
- description?: string;
- unlocked: boolean;
- unlockTime: number | null;
- icon: string;
- icongray: string;
-}
-
-export interface RemoteUnlockedAchievement {
- name: string;
- hidden: boolean;
- icon: string;
- displayName: string;
- description?: string;
- unlockTime: number;
-}
-
-export interface GameAchievement {
- name: string;
- hidden: boolean;
- displayName: string;
- description?: string;
- unlocked: boolean;
- unlockTime: number | null;
- icon: string;
- icongray: string;
-}
-
export type ShopDetails = SteamAppDetails & {
objectId: string;
};
@@ -97,45 +46,11 @@ export interface UserGame {
achievementsPointsEarnedSum: number;
}
-export interface DownloadQueue {
- id: number;
- createdAt: Date;
- updatedAt: Date;
-}
-
-/* Used by the library */
-export interface Game {
- id: number;
- title: string;
- iconUrl: string;
- status: GameStatus | null;
- folderName: string;
- downloadPath: string | null;
- progress: number;
- bytesDownloaded: number;
- playTimeInMilliseconds: number;
- downloader: Downloader;
- winePrefixPath: string | null;
- executablePath: string | null;
- launchOptions: string | null;
- lastTimePlayed: Date | null;
- uri: string | null;
- fileSize: number;
- objectID: string;
- shop: GameShop;
- downloadQueue: DownloadQueue | null;
- shouldSeed: boolean;
- createdAt: Date;
- updatedAt: Date;
-}
-
-export type LibraryGame = Omit;
-
export interface GameRunning {
- id?: number;
+ id: string;
title: string;
iconUrl: string | null;
- objectID: string;
+ objectId: string;
shop: GameShop;
sessionDurationInMillis: number;
}
@@ -251,16 +166,6 @@ export interface UserProfileCurrentGame extends Omit {
export type ProfileVisibility = "PUBLIC" | "PRIVATE" | "FRIENDS";
-export type SubscriptionStatus = "active" | "pending" | "cancelled";
-
-export interface Subscription {
- id: string;
- status: SubscriptionStatus;
- plan: { id: string; name: string };
- expiresAt: string | null;
- paymentMethod: "pix" | "paypal";
-}
-
export interface UserDetails {
id: string;
username: string;
@@ -270,6 +175,7 @@ export interface UserDetails {
backgroundImageUrl: string | null;
profileVisibility: ProfileVisibility;
bio: string;
+ featurebaseJwt: string;
subscription: Subscription | null;
quirks?: {
backupsPerGameLimit: number;
@@ -302,6 +208,7 @@ export interface UpdateProfileRequest {
profileImageUrl?: string | null;
backgroundImageUrl?: string | null;
bio?: string;
+ language?: string;
}
export interface DownloadSourceDownload {
@@ -356,11 +263,6 @@ export interface UserStats {
unlockedAchievementSum?: number;
}
-export interface UnlockedAchievement {
- name: string;
- unlockTime: number;
-}
-
export interface AchievementFile {
type: Cracker;
filePath: string;
@@ -419,8 +321,14 @@ export interface CatalogueSearchPayload {
developers: string[];
}
+export interface LibraryGame extends Game {
+ id: string;
+ download: Download | null;
+}
+
+export * from "./game.types";
export * from "./steam.types";
-export * from "./real-debrid.types";
+export * from "./download.types";
export * from "./ludusavi.types";
export * from "./how-long-to-beat.types";
-export * from "./torbox.types";
+export * from "./level.types";
diff --git a/src/types/level.types.ts b/src/types/level.types.ts
new file mode 100644
index 00000000..06fc79e3
--- /dev/null
+++ b/src/types/level.types.ts
@@ -0,0 +1,81 @@
+import type { Downloader } from "@shared";
+import type {
+ GameShop,
+ SteamAchievement,
+ UnlockedAchievement,
+} from "./game.types";
+import type { DownloadStatus } from "./download.types";
+
+export type SubscriptionStatus = "active" | "pending" | "cancelled";
+
+export interface Subscription {
+ id: string;
+ status: SubscriptionStatus;
+ plan: { id: string; name: string };
+ expiresAt: string | null;
+ paymentMethod: "pix" | "paypal";
+}
+
+export interface Auth {
+ accessToken: string;
+ refreshToken: string;
+ tokenExpirationTimestamp: number;
+}
+
+export interface User {
+ id: string;
+ displayName: string;
+ profileImageUrl: string | null;
+ backgroundImageUrl: string | null;
+ subscription: Subscription | null;
+}
+
+export interface Game {
+ title: string;
+ iconUrl: string | null;
+ playTimeInMilliseconds: number;
+ lastTimePlayed: Date | null;
+ objectId: string;
+ shop: GameShop;
+ remoteId: string | null;
+ isDeleted: boolean;
+ winePrefixPath?: string | null;
+ executablePath?: string | null;
+ launchOptions?: string | null;
+}
+
+export interface Download {
+ shop: GameShop;
+ objectId: string;
+ uri: string;
+ folderName: string | null;
+ downloadPath: string;
+ progress: number;
+ downloader: Downloader;
+ bytesDownloaded: number;
+ fileSize: number | null;
+ shouldSeed: boolean;
+ status: DownloadStatus | null;
+ queued: boolean;
+ timestamp: number;
+}
+
+export interface GameAchievement {
+ achievements: SteamAchievement[];
+ unlockedAchievements: UnlockedAchievement[];
+}
+
+export interface UserPreferences {
+ downloadsPath: string | null;
+ language: string;
+ realDebridApiToken: string | null;
+ preferQuitInsteadOfHiding: boolean;
+ runAtStartup: boolean;
+ startMinimized: boolean;
+ disableNsfwAlert: boolean;
+ seedAfterDownloadComplete: boolean;
+ showHiddenAchievementsDescription: boolean;
+ downloadNotificationsEnabled: boolean;
+ repackUpdatesNotificationsEnabled: boolean;
+ achievementNotificationsEnabled: boolean;
+}
diff --git a/src/types/real-debrid.types.ts b/src/types/real-debrid.types.ts
deleted file mode 100644
index 6b16ecfd..00000000
--- a/src/types/real-debrid.types.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-export interface RealDebridUnrestrictLink {
- id: string;
- filename: string;
- mimeType: string;
- filesize: number;
- link: string;
- host: string;
- host_icon: string;
- chunks: number;
- crc: number;
- download: string;
- streamable: number;
-}
-
-export interface RealDebridAddMagnet {
- id: string;
- // URL of the created resource
- uri: string;
-}
-
-export interface RealDebridTorrentInfo {
- id: string;
- filename: string;
- original_filename: string;
- hash: string;
- bytes: number;
- original_bytes: number;
- host: string;
- split: number;
- progress: number;
- status:
- | "magnet_error"
- | "magnet_conversion"
- | "waiting_files_selection"
- | "queued"
- | "downloading"
- | "downloaded"
- | "error"
- | "virus"
- | "compressing"
- | "uploading"
- | "dead";
- added: string;
- files: {
- id: number;
- path: string;
- bytes: number;
- selected: number;
- }[];
- links: string[];
- ended: string;
- speed: number;
- seeders: number;
-}
-
-export interface RealDebridUser {
- id: number;
- username: string;
- email: string;
- points: number;
- locale: string;
- avatar: string;
- type: string;
- premium: number;
- expiration: string;
-}
diff --git a/yarn.lock b/yarn.lock
index 69ee75d8..3a4656b4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3026,11 +3026,6 @@
"@smithy/types" "^3.7.2"
tslib "^2.6.2"
-"@sqltools/formatter@^1.2.5":
- version "1.2.5"
- resolved "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz"
- integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==
-
"@svgr/babel-plugin-add-jsx-attribute@8.0.0":
version "8.0.0"
resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz"
@@ -3699,6 +3694,18 @@ abort-controller@^3.0.0:
dependencies:
event-target-shim "^5.0.0"
+abstract-level@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-2.0.2.tgz#8d965e731afb42a72f163874410c1687fb2e4bdb"
+ integrity sha512-pPJixmXk/kTKLB2sSue7o4Uj6TlLD2XfaP2gWZomHVCC6cuUGX/VslQqKG1yZHfXwBb/3lS6oSTMPGzh1P1iig==
+ dependencies:
+ buffer "^6.0.3"
+ is-buffer "^2.0.5"
+ level-supports "^6.0.0"
+ level-transcoder "^1.0.1"
+ maybe-combine-errors "^1.0.0"
+ module-error "^1.0.1"
+
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
@@ -3809,11 +3816,6 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
-any-promise@^1.0.0:
- version "1.3.0"
- resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
- integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
-
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
@@ -3865,11 +3867,6 @@ app-builder-lib@25.1.8:
tar "^6.1.12"
temp-file "^3.4.0"
-app-root-path@^3.1.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz"
- integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==
-
applescript@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/applescript/-/applescript-1.0.0.tgz"
@@ -4421,6 +4418,16 @@ ci-info@^3.2.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
+classic-level@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-2.0.0.tgz#6fd9ca686bbcd645e35caaf403c3f3a56495d11b"
+ integrity sha512-ftiMvKgCQK+OppXcvMieDoYlYLYWhScK6yZRFBrrlHQRbm4k6Gr+yDgu/wt3V0k1/jtNbuiXAsRmuAFcD0Tx5Q==
+ dependencies:
+ abstract-level "^2.0.0"
+ module-error "^1.0.1"
+ napi-macros "^2.2.2"
+ node-gyp-build "^4.3.0"
+
classnames@^2.2.1, classnames@^2.2.6, classnames@^2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
@@ -4438,18 +4445,6 @@ cli-cursor@^3.1.0:
dependencies:
restore-cursor "^3.1.0"
-cli-highlight@^2.1.11:
- version "2.1.11"
- resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf"
- integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==
- dependencies:
- chalk "^4.0.0"
- highlight.js "^10.7.1"
- mz "^2.4.0"
- parse5 "^5.1.1"
- parse5-htmlparser2-tree-adapter "^6.0.0"
- yargs "^16.0.0"
-
cli-spinners@^2.5.0:
version "2.9.2"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
@@ -4463,15 +4458,6 @@ cli-truncate@^2.1.0:
slice-ansi "^3.0.0"
string-width "^4.2.0"
-cliui@^7.0.2:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
- integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
- dependencies:
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
- wrap-ansi "^7.0.0"
-
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
@@ -4780,11 +4766,6 @@ date-fns@^3.6.0:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf"
integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==
-dayjs@^1.11.9:
- version "1.11.13"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
- integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
-
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
@@ -4988,16 +4969,16 @@ dotenv-expand@^11.0.6:
dependencies:
dotenv "^16.4.4"
-dotenv@^16.0.3, dotenv@^16.4.4, dotenv@^16.4.5:
- version "16.4.5"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
- integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
-
dotenv@^16.3.1:
version "16.4.7"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
+dotenv@^16.4.4, dotenv@^16.4.5:
+ version "16.4.5"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
+ integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+
dunder-proto@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80"
@@ -5975,17 +5956,6 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@^10.3.10:
- version "10.3.15"
- resolved "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz"
- integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==
- dependencies:
- foreground-child "^3.1.0"
- jackspeak "^2.3.6"
- minimatch "^9.0.1"
- minipass "^7.0.4"
- path-scurry "^1.11.0"
-
glob@^10.3.12, glob@^10.3.7:
version "10.4.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
@@ -6177,11 +6147,6 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
dependencies:
function-bind "^1.1.2"
-highlight.js@^10.7.1:
- version "10.7.3"
- resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
- integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
-
hoist-non-react-statics@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
@@ -6353,7 +6318,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4:
+inherits@2, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -6459,6 +6424,11 @@ is-boolean-object@^1.2.0:
call-bound "^1.0.2"
has-tostringtag "^1.0.2"
+is-buffer@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@@ -6723,15 +6693,6 @@ iterator.prototype@^1.1.3:
reflect.getprototypeof "^1.0.8"
set-function-name "^2.0.2"
-jackspeak@^2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
- integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
- dependencies:
- "@isaacs/cliui" "^8.0.2"
- optionalDependencies:
- "@pkgjs/parseargs" "^0.11.0"
-
jackspeak@^3.1.2:
version "3.4.3"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
@@ -6958,6 +6919,19 @@ lazy-val@^1.0.5:
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
+level-supports@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-6.2.0.tgz#e78b228973a24acdc5199c5f51e244e70f26c611"
+ integrity sha512-QNxVXP0IRnBmMsJIh+sb2kwNCYcKciQZJEt+L1hPCHrKNELllXhvrlClVHXBYZVT+a7aTSM6StgNXdAldoab3w==
+
+level-transcoder@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c"
+ integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==
+ dependencies:
+ buffer "^6.0.3"
+ module-error "^1.0.1"
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -7198,6 +7172,11 @@ math-intrinsics@^1.0.0:
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817"
integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==
+maybe-combine-errors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz#e9592832e61fc47643a92cff3c1f33e27211e5be"
+ integrity sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==
+
media-query-parser@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29"
@@ -7283,7 +7262,7 @@ minimatch@^8.0.2:
dependencies:
brace-expansion "^2.0.1"
-minimatch@^9.0.1, minimatch@^9.0.3, minimatch@^9.0.4:
+minimatch@^9.0.3, minimatch@^9.0.4:
version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
@@ -7389,11 +7368,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-mkdirp@^2.1.3:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19"
- integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==
-
mkdirp@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
@@ -7414,6 +7388,11 @@ modern-ahocorasick@^1.0.0:
resolved "https://registry.yarnpkg.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz#dec373444f51b5458ac05216a8ec376e126dd283"
integrity sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==
+module-error@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86"
+ integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==
+
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
@@ -7424,15 +7403,6 @@ ms@^2.0.0, ms@^2.1.1, ms@^2.1.3:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-mz@^2.4.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
- integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
- dependencies:
- any-promise "^1.0.0"
- object-assign "^4.0.1"
- thenify-all "^1.0.0"
-
nan@^2.18.0:
version "2.22.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3"
@@ -7448,6 +7418,11 @@ napi-build-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+napi-macros@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044"
+ integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -7506,6 +7481,11 @@ node-fetch@^3.3.0:
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
+node-gyp-build@^4.3.0:
+ version "4.8.4"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8"
+ integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==
+
node-gyp@^9.0.0:
version "9.4.1"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185"
@@ -7565,7 +7545,7 @@ nwsapi@^2.2.12:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655"
integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==
-object-assign@^4.0.1, object-assign@^4.1.1:
+object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
@@ -7738,23 +7718,6 @@ parse-torrent@^11.0.17:
queue-microtask "^1.2.3"
uint8-util "^2.2.5"
-parse5-htmlparser2-tree-adapter@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
- integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
- dependencies:
- parse5 "^6.0.1"
-
-parse5@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
- integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
-
-parse5@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
- integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
-
parse5@^7.0.0, parse5@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
@@ -7787,7 +7750,7 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-path-scurry@^1.11.0, path-scurry@^1.11.1, path-scurry@^1.6.1:
+path-scurry@^1.11.1, path-scurry@^1.6.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
@@ -8156,11 +8119,6 @@ redux@^5.0.1:
resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b"
integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==
-reflect-metadata@^0.2.1:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
- integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==
-
reflect.getprototypeof@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz#c58afb17a4007b4d1118c07b92c23fca422c5d82"
@@ -8612,14 +8570,6 @@ set-function-name@^2.0.1, set-function-name@^2.0.2:
functions-have-names "^1.2.3"
has-property-descriptors "^1.0.2"
-sha.js@^2.4.11:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -9034,20 +8984,6 @@ text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-thenify-all@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
- integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
- dependencies:
- thenify ">= 3.1.0 < 4"
-
-"thenify@>= 3.1.0 < 4":
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
- integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
- dependencies:
- any-promise "^1.0.0"
-
"through@>=2.2.7 <3":
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -9168,7 +9104,7 @@ tslib@^2.0.0, tslib@^2.1.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-tslib@^2.0.3, tslib@^2.5.0, tslib@^2.6.2:
+tslib@^2.0.3, tslib@^2.6.2:
version "2.7.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
@@ -9246,27 +9182,6 @@ typed-array-length@^1.0.6:
is-typed-array "^1.1.13"
possible-typed-array-names "^1.0.0"
-typeorm@^0.3.20:
- version "0.3.20"
- resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.20.tgz#4b61d737c6fed4e9f63006f88d58a5e54816b7ab"
- integrity sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==
- dependencies:
- "@sqltools/formatter" "^1.2.5"
- app-root-path "^3.1.0"
- buffer "^6.0.3"
- chalk "^4.1.2"
- cli-highlight "^2.1.11"
- dayjs "^1.11.9"
- debug "^4.3.4"
- dotenv "^16.0.3"
- glob "^10.3.10"
- mkdirp "^2.1.3"
- reflect-metadata "^0.2.1"
- sha.js "^2.4.11"
- tslib "^2.5.0"
- uuid "^9.0.0"
- yargs "^17.6.2"
-
typescript@^5.3.3, typescript@^5.4.3:
version "5.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
@@ -9413,7 +9328,7 @@ util-deprecate@^1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-uuid@^9.0.0, uuid@^9.0.1:
+uuid@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
@@ -9714,29 +9629,11 @@ yaml@^2.6.1:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773"
integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==
-yargs-parser@^20.2.2:
- version "20.2.9"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
- integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
-
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-yargs@^16.0.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
- integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
- dependencies:
- cliui "^7.0.2"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.0"
- y18n "^5.0.5"
- yargs-parser "^20.2.2"
-
yargs@^17.0.0, yargs@^17.0.1, yargs@^17.6.2:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"