{
props.streams.length === 0 ?
@@ -109,30 +142,6 @@ const StreamsList = ({ className, video, ...props }) => {
:
null
}
-
- {
- video ?
-
-
-
- {`S${video?.season}E${video?.episode} ${(video?.title)}`}
-
-
- :
- null
- }
- {
- Object.keys(streamsByAddon).length > 1 ?
-
- :
- null
- }
-
{filteredStreams.map((stream, index) => (
{
- return deepLinks ?
- typeof deepLinks.player === 'string' ?
- deepLinks.player
- :
- typeof deepLinks.metaDetailsStreams === 'string' ?
- deepLinks.metaDetailsStreams
- :
- null
- :
- null;
+ const videoButtonOnClick = React.useCallback(() => {
+ if (deepLinks) {
+ if (typeof deepLinks.player === 'string') {
+ window.location = deepLinks.player;
+ } else if (typeof deepLinks.metaDetailsStreams === 'string') {
+ window.location.replace(deepLinks.metaDetailsStreams);
+ }
+ }
}, [deepLinks]);
const renderLabel = React.useMemo(() => function renderLabel({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, children, ...props }) {
return (
@@ -171,7 +168,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w
watched={watched}
progress={progress}
scheduled={scheduled}
- href={href}
+ onClick={videoButtonOnClick}
{...props}
onMouseUp={popupLabelOnMouseUp}
onLongPress={popupLabelOnLongPress}
From b002a1c1943fd30e47356776e03496b31cb5b842 Mon Sep 17 00:00:00 2001
From: ArtificialSloth
Date: Tue, 17 Sep 2024 04:41:48 -0400
Subject: [PATCH 43/94] fixed indentation
---
src/routes/MetaDetails/StreamsList/StreamsList.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js
index 6dd4f1c6f..840664c8b 100644
--- a/src/routes/MetaDetails/StreamsList/StreamsList.js
+++ b/src/routes/MetaDetails/StreamsList/StreamsList.js
@@ -26,7 +26,7 @@ const StreamsList = ({ className, video, ...props }) => {
`?${new URLSearchParams({'season': video.season})}`
:
null
- ));
+ ));
} else {
window.history.back();
}
From a1b94a68ff3ba428f3a31afb3de4cc411c92a18c Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Wed, 18 Sep 2024 16:30:40 +0300
Subject: [PATCH 44/94] refactor: inline function
---
src/common/MultiselectMenu/Dropdown/Option/Option.tsx | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/common/MultiselectMenu/Dropdown/Option/Option.tsx b/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
index 4309e766e..68884610f 100644
--- a/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
+++ b/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
@@ -1,6 +1,6 @@
// Copyright (C) 2017-2024 Smart code 203358507
-import React, { useMemo } from 'react';
+import React, { useCallback, useMemo } from 'react';
import classNames from 'classnames';
import Button from 'stremio/common/Button';
import styles from './Option.less';
@@ -16,11 +16,15 @@ const Option = ({ option, selectedOption, onSelect }: Props) => {
// consider using option.id === selectedOption?.id instead
const selected = useMemo(() => option?.value === selectedOption?.value, [option, selectedOption]);
+ const handleClick = useCallback(() => {
+ onSelect(option.value);
+ }, [onSelect, option.value]);
+
return (
-
+ {
+ profile.auth ?
+
+ :
+ null
+ }
{
profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string' ?
From 50b93014babbe80b3b53f943be2a911936cb8154 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 13:06:57 +0300
Subject: [PATCH 55/94] refactor: wrap everything in try catch
---
src/common/Platform/Platform.tsx | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/src/common/Platform/Platform.tsx b/src/common/Platform/Platform.tsx
index 0804d512b..13e8592ad 100644
--- a/src/common/Platform/Platform.tsx
+++ b/src/common/Platform/Platform.tsx
@@ -16,23 +16,19 @@ const PlatformProvider = ({ children }: Props) => {
const shell = useShell();
const openExternal = (url: string) => {
- let finalUrl = url;
try {
- const parsedUrl = new URL(url);
- const hostname = parsedUrl.hostname;
- const isWhitelisted = WHITELISTED_HOSTS.some((host: string) => hostname === host || hostname.endsWith('.' + host));
- if (!isWhitelisted) {
- finalUrl = 'https://www.stremio.com/warning#' + encodeURIComponent(url);
+ const { hostname } = new URL(url);
+ const isWhitelisted = WHITELISTED_HOSTS.some((host: string) => hostname.endsWith(host));
+ const finalUrl = !isWhitelisted ? 'https://www.stremio.com/warning#' + encodeURIComponent(url) : url;
+
+ if (shell.active) {
+ shell.send('open-external', finalUrl);
+ } else {
+ window.open(finalUrl, '_blank');
}
} catch (e) {
- finalUrl = 'https://www.stremio.com/warning#' + encodeURIComponent(url);
- }
-
- if (shell.active) {
- shell.send('open-external', finalUrl);
- } else {
- window.open(finalUrl, '_blank');
- }
+ console.error('Failed to parse external url:', e);
+ }
};
return (
From c1b9a057309215e97f4949331ea2f0b931b3721d Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 13:09:08 +0300
Subject: [PATCH 56/94] refactor: whitelisted hosts list
---
src/common/CONSTANTS.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/CONSTANTS.js b/src/common/CONSTANTS.js
index c64c84bcd..c08cf471d 100644
--- a/src/common/CONSTANTS.js
+++ b/src/common/CONSTANTS.js
@@ -93,7 +93,7 @@ const EXTERNAL_PLAYERS = [
},
];
-const WHITELISTED_HOSTS = ['www.stremio.com', 'blog.stremio.com', 'web.stremio.com', 'web.strem.io', 'stremio.zendesk.com', 'www.google.com', 'www.youtube.com', 'www.twitch.tv', 'twitter.com', 'www.netflix.com', 'www.adex.network', 'www.amazon.com', 'docs.google.com', 'blog.stremio.com', 'forms.gle'];
+const WHITELISTED_HOSTS = ['stremio.com', 'strem.io', 'stremio.zendesk.com', 'google.com', 'youtube.com', 'twitch.tv', 'twitter.com', 'netflix.com', 'adex.network', 'amazon.com', 'forms.gle'];
module.exports = {
CHROMECAST_RECEIVER_APP_ID,
From bd1305927919c9260195901c5327afccd4c5e610 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 14:51:12 +0300
Subject: [PATCH 57/94] refactor: turn button into a link
---
src/routes/Settings/Settings.js | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 5c5d51774..ab69d26f6 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -11,6 +11,7 @@ const { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, Modal
const useProfileSettingsInputs = require('./useProfileSettingsInputs');
const useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs');
const useDataExport = require('./useDataExport');
+const { name: platformName } = require('stremio/common/platform');
const styles = require('./styles');
const GENERAL_SECTION = 'general';
@@ -102,16 +103,20 @@ const Settings = () => {
});
}
}, [isTraktAuthenticated, profile.auth]);
+ const protocol = platformName === 'ios' ? 'webcal' : 'http';
+ const calendarUrl = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
+ const calendarFileName = `${profile.auth.user._id}.ics`;
const subscribeCalendarOnClick = React.useCallback(() => {
- const url = `webcal://www.strem.io/calendar/${profile.auth.user._id}.ics`;
- platform.openExternal(url);
+ platform.openExternal(calendarUrl);
toast.show({
type: 'success',
- title: 'Calendar has been added to your default caldendar app',
+ title: platformName === 'android' ?
+ 'Calendar has been downloaded. Please open it in your calendar app.' :
+ 'Calendar has been added to your default calendar app.',
timeout: 25000
});
- //Stremio 4 emits not documented event subscribeCalendar
- }, []);
+ // Stremio 4 emits not documented event subscribeCalendar
+ }, [platformName, profile.auth.user._id, platform, toast]);
const exportDataOnClick = React.useCallback(() => {
loadDataExport();
}, []);
@@ -269,7 +274,7 @@ const Settings = () => {
{
profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string' ?
-
From 0ee4b6d396417d43c9caafd3f1884998d97229c6 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 14:55:43 +0300
Subject: [PATCH 58/94] remove: download file name
---
src/routes/Settings/Settings.js | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index ab69d26f6..7b1afe620 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -103,9 +103,8 @@ const Settings = () => {
});
}
}, [isTraktAuthenticated, profile.auth]);
- const protocol = platformName === 'ios' ? 'webcal' : 'http';
+ const protocol = platformName === 'ios' ? 'webcal' : 'https';
const calendarUrl = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
- const calendarFileName = `${profile.auth.user._id}.ics`;
const subscribeCalendarOnClick = React.useCallback(() => {
platform.openExternal(calendarUrl);
toast.show({
@@ -274,7 +273,7 @@ const Settings = () => {
{
profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string' ?
-
+
{ t('SETTINGS_SUBSCRIBE_CALENDAR') }
From 9b160a0c6b60a85011705dfbf3a0e41ea4393412 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 14:57:40 +0300
Subject: [PATCH 59/94] remove: href and target on button
---
src/routes/Settings/Settings.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 7b1afe620..3b2846305 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -103,10 +103,10 @@ const Settings = () => {
});
}
}, [isTraktAuthenticated, profile.auth]);
- const protocol = platformName === 'ios' ? 'webcal' : 'https';
- const calendarUrl = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
const subscribeCalendarOnClick = React.useCallback(() => {
- platform.openExternal(calendarUrl);
+ const protocol = platformName === 'ios' ? 'webcal' : 'https';
+ const url = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
+ platform.openExternal(url);
toast.show({
type: 'success',
title: platformName === 'android' ?
@@ -273,7 +273,7 @@ const Settings = () => {
{
profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string' ?
-
+
{ t('SETTINGS_SUBSCRIBE_CALENDAR') }
From 0ebdf83c7f3988502e6282cd3733bbe5071233ff Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 14:59:32 +0300
Subject: [PATCH 60/94] refactor: dependencies on useCallback
---
src/routes/Settings/Settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 3b2846305..fb97d7386 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -115,7 +115,7 @@ const Settings = () => {
timeout: 25000
});
// Stremio 4 emits not documented event subscribeCalendar
- }, [platformName, profile.auth.user._id, platform, toast]);
+ }, [profile.auth.user._id]);
const exportDataOnClick = React.useCallback(() => {
loadDataExport();
}, []);
From dab0169038cf537430958d91d3512d641321cae1 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 15:02:50 +0300
Subject: [PATCH 61/94] refactor: add translations
---
src/routes/Settings/Settings.js | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index fb97d7386..92ad44763 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -109,9 +109,7 @@ const Settings = () => {
platform.openExternal(url);
toast.show({
type: 'success',
- title: platformName === 'android' ?
- 'Calendar has been downloaded. Please open it in your calendar app.' :
- 'Calendar has been added to your default calendar app.',
+ title: platformName === 'ios' ? t('SETTINGS_SUBSCRIBE_CALENDAR_IOS') : t('SETTINGS_SUBSCRIBE_CALENDAR'),
timeout: 25000
});
// Stremio 4 emits not documented event subscribeCalendar
From f84bc813f9c71b0759cedea082d05f0ca399ffbb Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 15:08:47 +0300
Subject: [PATCH 62/94] refactor: translations strings
---
src/routes/Settings/Settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 92ad44763..3e0c4cf8e 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -109,7 +109,7 @@ const Settings = () => {
platform.openExternal(url);
toast.show({
type: 'success',
- title: platformName === 'ios' ? t('SETTINGS_SUBSCRIBE_CALENDAR_IOS') : t('SETTINGS_SUBSCRIBE_CALENDAR'),
+ title: platformName === 'ios' ? t('SETTINGS_SUBSCRIBE_CALENDAR_IOS_TOAST') : t('SETTINGS_SUBSCRIBE_CALENDAR_TOAST'),
timeout: 25000
});
// Stremio 4 emits not documented event subscribeCalendar
From 8e2da823eaf041435ad7d9782570a599aba13d8e Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 16:00:55 +0300
Subject: [PATCH 63/94] chore: update translations pkg
---
package-lock.json | 9 ++++-----
package.json | 2 +-
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5775eb1a9..31a0fdda8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -36,7 +36,7 @@
"react-i18next": "^12.1.1",
"react-is": "18.2.0",
"spatial-navigation-polyfill": "github:Stremio/spatial-navigation#64871b1422466f5f45d24ebc8bbd315b2ebab6a6",
- "stremio-translations": "github:Stremio/stremio-translations#b13b3e2653bd0dcf644d2a20ffa32074fe6532dd",
+ "stremio-translations": "github:Stremio/stremio-translations#378218c9617f3e763ba5f6755e4d39c1c158747d",
"url": "0.11.0",
"use-long-press": "^3.1.5"
},
@@ -12470,10 +12470,9 @@
}
},
"node_modules/stremio-translations": {
- "version": "1.44.7",
- "resolved": "git+ssh://git@github.com/Stremio/stremio-translations.git#b13b3e2653bd0dcf644d2a20ffa32074fe6532dd",
- "integrity": "sha512-OtRAM3j9ie89llgI379p4utCbgnNMswE+LtL/lyLRVLfm5B+jpBLp4ozpU25iQg0O4tvN+OHBjXZ870CCHtZMA==",
- "license": "MIT"
+ "version": "1.44.9",
+ "resolved": "git+ssh://git@github.com/Stremio/stremio-translations.git#378218c9617f3e763ba5f6755e4d39c1c158747d",
+ "integrity": "sha512-3GboN8JS2LgrdIVK/gW+n6r1kLrGG+D/tWkRv8PJo2mZLzh49HTzS2u7XXUSkNmA4AGUyEf8QRjyBhlOg8JNTQ=="
},
"node_modules/string_decoder": {
"version": "1.1.1",
diff --git a/package.json b/package.json
index 6610395a6..1339ba710 100755
--- a/package.json
+++ b/package.json
@@ -40,7 +40,7 @@
"react-i18next": "^12.1.1",
"react-is": "18.2.0",
"spatial-navigation-polyfill": "github:Stremio/spatial-navigation#64871b1422466f5f45d24ebc8bbd315b2ebab6a6",
- "stremio-translations": "github:Stremio/stremio-translations#b13b3e2653bd0dcf644d2a20ffa32074fe6532dd",
+ "stremio-translations": "github:Stremio/stremio-translations#378218c9617f3e763ba5f6755e4d39c1c158747d",
"url": "0.11.0",
"use-long-press": "^3.1.5"
},
From d474ec60ca86e791c1f6f1d0d37bef7a8942b131 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Thu, 26 Sep 2024 17:06:27 +0300
Subject: [PATCH 64/94] refactor: logic unite
---
src/common/Platform/Platform.tsx | 66 ++++++++++++++++++++++++++------
src/common/platform.js | 36 -----------------
src/routes/Settings/Settings.js | 5 +--
3 files changed, 57 insertions(+), 50 deletions(-)
delete mode 100644 src/common/platform.js
diff --git a/src/common/Platform/Platform.tsx b/src/common/Platform/Platform.tsx
index 13e8592ad..2dee98bff 100644
--- a/src/common/Platform/Platform.tsx
+++ b/src/common/Platform/Platform.tsx
@@ -1,26 +1,70 @@
import React, { createContext, useContext } from 'react';
-import useShell from './useShell';
import { WHITELISTED_HOSTS } from 'stremio/common/CONSTANTS';
+import useShell from './useShell';
+import Bowser from 'bowser';
interface PlatformContext {
- openExternal: (url: string) => void,
-};
+ name: string;
+ isMobile: () => boolean;
+ openExternal: (url: string) => void;
+}
const PlatformContext = createContext(null);
type Props = {
- children: JSX.Element,
+ children: JSX.Element;
};
const PlatformProvider = ({ children }: Props) => {
const shell = useShell();
+ // this detects ipad properly in safari
+ // while bowser does not
+ const iOS = () => {
+ return (
+ [
+ 'iPad Simulator',
+ 'iPhone Simulator',
+ 'iPod Simulator',
+ 'iPad',
+ 'iPhone',
+ 'iPod',
+ ].includes(navigator.platform) ||
+ (navigator.userAgent.includes('Mac') && 'ontouchend' in document)
+ );
+ };
+
+ // Edge case: iPad is included in this function
+ // Keep in mind maxTouchPoints for Vision Pro might change in the future
+ const isVisionProUser = () => {
+ const isMacintosh = navigator.userAgent.includes('Macintosh');
+ const hasFiveTouchPoints = navigator.maxTouchPoints === 5;
+ return isMacintosh && hasFiveTouchPoints;
+ };
+
+ const browser = Bowser.getParser(window.navigator?.userAgent || '');
+ const osName = browser.getOSName().toLowerCase();
+
+ const name = isVisionProUser()
+ ? 'visionos'
+ : iOS()
+ ? 'ios'
+ : osName || 'unknown';
+
+ const isMobile = () => {
+ return name === 'ios' || name === 'android';
+ };
+
const openExternal = (url: string) => {
try {
const { hostname } = new URL(url);
- const isWhitelisted = WHITELISTED_HOSTS.some((host: string) => hostname.endsWith(host));
- const finalUrl = !isWhitelisted ? 'https://www.stremio.com/warning#' + encodeURIComponent(url) : url;
-
+ const isWhitelisted = WHITELISTED_HOSTS.some((host: string) =>
+ hostname.endsWith(host)
+ );
+ const finalUrl = !isWhitelisted
+ ? 'https://www.stremio.com/warning#' + encodeURIComponent(url)
+ : url;
+
if (shell.active) {
shell.send('open-external', finalUrl);
} else {
@@ -28,11 +72,11 @@ const PlatformProvider = ({ children }: Props) => {
}
} catch (e) {
console.error('Failed to parse external url:', e);
- }
+ }
};
return (
-
+
{children}
);
@@ -42,7 +86,7 @@ const usePlatform = () => {
return useContext(PlatformContext);
};
-export {
+export {
PlatformProvider,
- usePlatform,
+ usePlatform
};
diff --git a/src/common/platform.js b/src/common/platform.js
deleted file mode 100644
index 7e423489a..000000000
--- a/src/common/platform.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2017-2024 Smart code 203358507
-
-// this detects ipad properly in safari
-// while bowser does not
-const iOS = () => {
- return [
- 'iPad Simulator',
- 'iPhone Simulator',
- 'iPod Simulator',
- 'iPad',
- 'iPhone',
- 'iPod'
- ].includes(navigator.platform)
- || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);
-};
-
-const Bowser = require('bowser');
-
-const browser = Bowser.parse(window.navigator?.userAgent || '');
-
-// Edge case: iPad is included in this function
-// Keep in mind maxTouchPoints for Vision Pro might change in the future
-const isVisionProUser = () => {
- const isMacintosh = navigator.userAgent.includes('Macintosh');
- const hasFiveTouchPoints = navigator.maxTouchPoints === 5;
- return isMacintosh && hasFiveTouchPoints;
-};
-
-const name = isVisionProUser() ? 'visionos' : (iOS() ? 'ios' : (browser?.os?.name || 'unknown').toLowerCase());
-
-module.exports = {
- name,
- isMobile: () => {
- return name === 'ios' || name === 'android';
- }
-};
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 3e0c4cf8e..0d9199225 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -11,7 +11,6 @@ const { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, Modal
const useProfileSettingsInputs = require('./useProfileSettingsInputs');
const useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs');
const useDataExport = require('./useDataExport');
-const { name: platformName } = require('stremio/common/platform');
const styles = require('./styles');
const GENERAL_SECTION = 'general';
@@ -104,12 +103,12 @@ const Settings = () => {
}
}, [isTraktAuthenticated, profile.auth]);
const subscribeCalendarOnClick = React.useCallback(() => {
- const protocol = platformName === 'ios' ? 'webcal' : 'https';
+ const protocol = platform.name === 'ios' ? 'webcal' : 'https';
const url = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
platform.openExternal(url);
toast.show({
type: 'success',
- title: platformName === 'ios' ? t('SETTINGS_SUBSCRIBE_CALENDAR_IOS_TOAST') : t('SETTINGS_SUBSCRIBE_CALENDAR_TOAST'),
+ title: platform.name === 'ios' ? t('SETTINGS_SUBSCRIBE_CALENDAR_IOS_TOAST') : t('SETTINGS_SUBSCRIBE_CALENDAR_TOAST'),
timeout: 25000
});
// Stremio 4 emits not documented event subscribeCalendar
From ff662d087282bf6665885e4daaa4535a4b52b369 Mon Sep 17 00:00:00 2001
From: Tim
Date: Fri, 27 Sep 2024 09:05:02 +0200
Subject: [PATCH 65/94] refactor: platform device logic
---
src/common/Platform/Platform.tsx | 49 +++-----------------------------
src/common/Platform/device.ts | 31 ++++++++++++++++++++
src/common/index.js | 2 --
3 files changed, 35 insertions(+), 47 deletions(-)
create mode 100644 src/common/Platform/device.ts
diff --git a/src/common/Platform/Platform.tsx b/src/common/Platform/Platform.tsx
index 2dee98bff..69ff3e8c3 100644
--- a/src/common/Platform/Platform.tsx
+++ b/src/common/Platform/Platform.tsx
@@ -1,11 +1,11 @@
import React, { createContext, useContext } from 'react';
import { WHITELISTED_HOSTS } from 'stremio/common/CONSTANTS';
import useShell from './useShell';
-import Bowser from 'bowser';
+import { name, isMobile } from './device';
interface PlatformContext {
name: string;
- isMobile: () => boolean;
+ isMobile: boolean;
openExternal: (url: string) => void;
}
@@ -18,52 +18,11 @@ type Props = {
const PlatformProvider = ({ children }: Props) => {
const shell = useShell();
- // this detects ipad properly in safari
- // while bowser does not
- const iOS = () => {
- return (
- [
- 'iPad Simulator',
- 'iPhone Simulator',
- 'iPod Simulator',
- 'iPad',
- 'iPhone',
- 'iPod',
- ].includes(navigator.platform) ||
- (navigator.userAgent.includes('Mac') && 'ontouchend' in document)
- );
- };
-
- // Edge case: iPad is included in this function
- // Keep in mind maxTouchPoints for Vision Pro might change in the future
- const isVisionProUser = () => {
- const isMacintosh = navigator.userAgent.includes('Macintosh');
- const hasFiveTouchPoints = navigator.maxTouchPoints === 5;
- return isMacintosh && hasFiveTouchPoints;
- };
-
- const browser = Bowser.getParser(window.navigator?.userAgent || '');
- const osName = browser.getOSName().toLowerCase();
-
- const name = isVisionProUser()
- ? 'visionos'
- : iOS()
- ? 'ios'
- : osName || 'unknown';
-
- const isMobile = () => {
- return name === 'ios' || name === 'android';
- };
-
const openExternal = (url: string) => {
try {
const { hostname } = new URL(url);
- const isWhitelisted = WHITELISTED_HOSTS.some((host: string) =>
- hostname.endsWith(host)
- );
- const finalUrl = !isWhitelisted
- ? 'https://www.stremio.com/warning#' + encodeURIComponent(url)
- : url;
+ const isWhitelisted = WHITELISTED_HOSTS.some((host: string) => hostname.endsWith(host));
+ const finalUrl = !isWhitelisted ? `https://www.stremio.com/warning#${encodeURIComponent(url)}` : url;
if (shell.active) {
shell.send('open-external', finalUrl);
diff --git a/src/common/Platform/device.ts b/src/common/Platform/device.ts
new file mode 100644
index 000000000..68ca72b32
--- /dev/null
+++ b/src/common/Platform/device.ts
@@ -0,0 +1,31 @@
+import Bowser from 'bowser';
+
+const APPLE_MOBILE_DEVICES = [
+ 'iPad Simulator',
+ 'iPhone Simulator',
+ 'iPod Simulator',
+ 'iPad',
+ 'iPhone',
+ 'iPod',
+];
+
+const { userAgent, platform, maxTouchPoints } = globalThis.navigator;
+
+// this detects ipad properly in safari
+// while bowser does not
+const isIOS = APPLE_MOBILE_DEVICES.includes(platform) || (userAgent.includes('Mac') && 'ontouchend' in document);
+
+// Edge case: iPad is included in this function
+// Keep in mind maxTouchPoints for Vision Pro might change in the future
+const isVisionOS = userAgent.includes('Macintosh') || maxTouchPoints === 5;
+
+const bowser = Bowser.getParser(userAgent);
+const os = bowser.getOSName().toLowerCase();
+
+const name = isVisionOS ? 'visionos' : isIOS ? 'ios' : os || 'unknown';
+const isMobile = ['ios', 'android'].includes(name);
+
+export {
+ name,
+ isMobile,
+};
\ No newline at end of file
diff --git a/src/common/index.js b/src/common/index.js
index 1188b8c61..5adef3e60 100644
--- a/src/common/index.js
+++ b/src/common/index.js
@@ -46,7 +46,6 @@ const useProfile = require('./useProfile');
const useStreamingServer = require('./useStreamingServer');
const useTorrent = require('./useTorrent');
const useTranslate = require('./useTranslate');
-const platform = require('./platform');
const EventModal = require('./EventModal');
module.exports = {
@@ -101,6 +100,5 @@ module.exports = {
useStreamingServer,
useTorrent,
useTranslate,
- platform,
EventModal,
};
From 3c517f6a32a2b29e8b789e23771378916096cc45 Mon Sep 17 00:00:00 2001
From: Tim
Date: Fri, 27 Sep 2024 10:59:48 +0200
Subject: [PATCH 66/94] fix: replace platform by usePlatform
---
src/routes/MetaDetails/StreamsList/Stream/Stream.js | 3 ++-
src/routes/Settings/useProfileSettingsInputs.js | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js
index 40ccb2f07..e4829ece0 100644
--- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js
+++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js
@@ -5,7 +5,7 @@ const PropTypes = require('prop-types');
const classnames = require('classnames');
const { default: Icon } = require('@stremio/stremio-icons/react');
const { t } = require('i18next');
-const { Button, Image, useProfile, platform, useToast, Popup, useBinaryState } = require('stremio/common');
+const { Button, Image, useProfile, usePlatform, useToast, Popup, useBinaryState } = require('stremio/common');
const { useServices } = require('stremio/services');
const { useRouteFocused } = require('stremio-router');
const StreamPlaceholder = require('./StreamPlaceholder');
@@ -14,6 +14,7 @@ const styles = require('./styles');
const Stream = ({ className, videoId, videoReleased, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => {
const profile = useProfile();
const toast = useToast();
+ const platform = usePlatform();
const { core } = useServices();
const routeFocused = useRouteFocused();
diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js
index 939e5e7cf..a90d0d483 100644
--- a/src/routes/Settings/useProfileSettingsInputs.js
+++ b/src/routes/Settings/useProfileSettingsInputs.js
@@ -3,11 +3,12 @@
const React = require('react');
const { useTranslation } = require('react-i18next');
const { useServices } = require('stremio/services');
-const { CONSTANTS, interfaceLanguages, languageNames, platform } = require('stremio/common');
+const { CONSTANTS, usePlatform, interfaceLanguages, languageNames } = require('stremio/common');
const useProfileSettingsInputs = (profile) => {
const { t } = useTranslation();
const { core } = useServices();
+ const platform = usePlatform();
// TODO combine those useMemo in one
const interfaceLanguageSelect = React.useMemo(() => ({
options: interfaceLanguages.map(({ name, codes }) => ({
From 0a2ad7b6aa4331f20ae48b8c82f43b60405366d9 Mon Sep 17 00:00:00 2001
From: Tim
Date: Fri, 27 Sep 2024 11:20:57 +0200
Subject: [PATCH 67/94] fix(Settings): check for profile.auth in
subscribeCalendarOnClick
---
src/routes/Settings/Settings.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/routes/Settings/Settings.js b/src/routes/Settings/Settings.js
index 0d9199225..ed4f45e16 100644
--- a/src/routes/Settings/Settings.js
+++ b/src/routes/Settings/Settings.js
@@ -103,6 +103,8 @@ const Settings = () => {
}
}, [isTraktAuthenticated, profile.auth]);
const subscribeCalendarOnClick = React.useCallback(() => {
+ if (!profile.auth) return;
+
const protocol = platform.name === 'ios' ? 'webcal' : 'https';
const url = `${protocol}://www.strem.io/calendar/${profile.auth.user._id}.ics`;
platform.openExternal(url);
@@ -112,7 +114,7 @@ const Settings = () => {
timeout: 25000
});
// Stremio 4 emits not documented event subscribeCalendar
- }, [profile.auth.user._id]);
+ }, [profile.auth]);
const exportDataOnClick = React.useCallback(() => {
loadDataExport();
}, []);
From 67aeed6005d97ed49d5dfe78260031bc22ad8f14 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Tue, 1 Oct 2024 12:25:46 +0300
Subject: [PATCH 68/94] fix: dropdown scroll
---
src/common/MultiselectMenu/Dropdown/Dropdown.less | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/common/MultiselectMenu/Dropdown/Dropdown.less b/src/common/MultiselectMenu/Dropdown/Dropdown.less
index 1e15419ef..17aeedef9 100644
--- a/src/common/MultiselectMenu/Dropdown/Dropdown.less
+++ b/src/common/MultiselectMenu/Dropdown/Dropdown.less
@@ -14,6 +14,8 @@
&.open {
display: block;
+ max-height: 50vh;
+ overflow: scroll;
}
.back-button {
From 3da58916671279060afdc40ca5fdfd61845310f0 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Wed, 2 Oct 2024 17:08:17 +0300
Subject: [PATCH 69/94] refactor: dropdown styles
---
src/common/MultiselectMenu/Dropdown/Dropdown.less | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/common/MultiselectMenu/Dropdown/Dropdown.less b/src/common/MultiselectMenu/Dropdown/Dropdown.less
index 17aeedef9..57840ca22 100644
--- a/src/common/MultiselectMenu/Dropdown/Dropdown.less
+++ b/src/common/MultiselectMenu/Dropdown/Dropdown.less
@@ -1,5 +1,7 @@
// Copyright (C) 2017-2024 Smart code 203358507
+@import (reference) '~stremio/common/screen-sizes.less';
+
.dropdown {
background: var(--modal-background-color);
display: none;
@@ -14,8 +16,8 @@
&.open {
display: block;
- max-height: 50vh;
- overflow: scroll;
+ max-height: calc(3.2rem * 10);
+ overflow: auto;
}
.back-button {
@@ -29,4 +31,12 @@
width: 1.5rem;
}
}
+}
+
+@media only screen and (max-width: @minimum) {
+ .dropdown {
+ &.open {
+ max-height: calc(3.2rem * 7);
+ }
+ }
}
\ No newline at end of file
From 5e1b808b4bdc476dac3188725ff3e5f1e1d0c30e Mon Sep 17 00:00:00 2001
From: Tim
Date: Wed, 2 Oct 2024 16:14:30 +0200
Subject: [PATCH 70/94] 5.0.0-beta.10
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 31a0fdda8..6f767069b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "stremio",
- "version": "5.0.0-beta.9",
+ "version": "5.0.0-beta.10",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "stremio",
- "version": "5.0.0-beta.9",
+ "version": "5.0.0-beta.10",
"license": "gpl-2.0",
"dependencies": {
"@babel/runtime": "7.16.0",
diff --git a/package.json b/package.json
index 1339ba710..73f27d28e 100755
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "stremio",
"displayName": "Stremio",
- "version": "5.0.0-beta.9",
+ "version": "5.0.0-beta.10",
"author": "Smart Code OOD",
"private": true,
"license": "gpl-2.0",
From 53174981a901ffa53d5a8da96dee57bb12a5466c Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 3 Oct 2024 15:52:25 +0200
Subject: [PATCH 71/94] refactor(Intro): make fb login compatible with shell
---
package-lock.json | 17 +++++++-
package.json | 3 +-
src/routes/Intro/Intro.js | 14 ++++---
src/routes/Intro/useFacebookLogin.ts | 63 ++++++++++++++++++++++++++++
src/routes/Intro/useFacebookToken.js | 51 ----------------------
5 files changed, 88 insertions(+), 60 deletions(-)
create mode 100644 src/routes/Intro/useFacebookLogin.ts
delete mode 100644 src/routes/Intro/useFacebookToken.js
diff --git a/package-lock.json b/package-lock.json
index 6f767069b..f2404dd17 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
"classnames": "2.3.1",
"eventemitter3": "4.0.7",
"filter-invalid-dom-props": "2.1.0",
- "hat": "0.0.3",
+ "hat": "^0.0.3",
"i18next": "^22.4.3",
"langs": "^2.0.0",
"lodash.debounce": "4.0.8",
@@ -46,6 +46,7 @@
"@babel/plugin-proposal-object-rest-spread": "7.16.0",
"@babel/preset-env": "7.16.0",
"@babel/preset-react": "7.16.0",
+ "@types/hat": "^0.0.4",
"@types/react": "^18.2.9",
"babel-loader": "8.2.3",
"clean-webpack-plugin": "4.0.0",
@@ -3181,6 +3182,13 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hat": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hat/-/hat-0.0.4.tgz",
+ "integrity": "sha512-HsNPoA1/v8x1d1jztZNI/RJNv7gvFsy2QVx9TEJyZ7S2aqJEDyRPiEYjr246tujQ6Br5ouH1VWIv8tXHYKlZUw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/html-minifier-terser": {
"version": "6.0.0",
"dev": true,
@@ -6887,7 +6895,12 @@
},
"node_modules/hat": {
"version": "0.0.3",
- "license": "MIT/X11"
+ "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
+ "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==",
+ "license": "MIT/X11",
+ "engines": {
+ "node": "*"
+ }
},
"node_modules/he": {
"version": "1.2.0",
diff --git a/package.json b/package.json
index 73f27d28e..725c75658 100755
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
"classnames": "2.3.1",
"eventemitter3": "4.0.7",
"filter-invalid-dom-props": "2.1.0",
- "hat": "0.0.3",
+ "hat": "^0.0.3",
"i18next": "^22.4.3",
"langs": "^2.0.0",
"lodash.debounce": "4.0.8",
@@ -50,6 +50,7 @@
"@babel/plugin-proposal-object-rest-spread": "7.16.0",
"@babel/preset-env": "7.16.0",
"@babel/preset-react": "7.16.0",
+ "@types/hat": "^0.0.4",
"@types/react": "^18.2.9",
"babel-loader": "8.2.3",
"clean-webpack-plugin": "4.0.0",
diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js
index cde07bc96..c1fd82d74 100644
--- a/src/routes/Intro/Intro.js
+++ b/src/routes/Intro/Intro.js
@@ -10,7 +10,7 @@ const { Button, Image, useBinaryState } = require('stremio/common');
const CredentialsTextInput = require('./CredentialsTextInput');
const ConsentCheckbox = require('./ConsentCheckbox');
const PasswordResetModal = require('./PasswordResetModal');
-const useFacebookToken = require('./useFacebookToken');
+const useFacebookLogin = require('./useFacebookLogin');
const styles = require('./styles');
const SIGNUP_FORM = 'signup';
@@ -19,7 +19,7 @@ const LOGIN_FORM = 'login';
const Intro = ({ queryParams }) => {
const { core } = useServices();
const routeFocused = useRouteFocused();
- const getFacebookToken = useFacebookToken();
+ const startFacebookLogin = useFacebookLogin();
const emailRef = React.useRef(null);
const passwordRef = React.useRef(null);
const confirmPasswordRef = React.useRef(null);
@@ -80,15 +80,17 @@ const Intro = ({ queryParams }) => {
);
const loginWithFacebook = React.useCallback(() => {
openLoaderModal();
- getFacebookToken()
- .then((accessToken) => {
+ startFacebookLogin()
+ .then(({ email, password }) => {
core.transport.dispatch({
action: 'Ctx',
args: {
action: 'Authenticate',
args: {
- type: 'Facebook',
- token: accessToken,
+ type: 'Login',
+ email,
+ password,
+ facebook: true
}
}
});
diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts
new file mode 100644
index 000000000..a1097111b
--- /dev/null
+++ b/src/routes/Intro/useFacebookLogin.ts
@@ -0,0 +1,63 @@
+// Copyright (C) 2017-2023 Smart code 203358507
+
+import { useCallback, useEffect, useRef } from 'react';
+import hat from 'hat';
+import { usePlatform } from 'stremio/common';
+
+const STREMIO_URL = 'https://www.strem.io';
+const MAX_TRIES = 10;
+
+const getCredentials = async (state: string) => {
+ try {
+ const response = await fetch(`${STREMIO_URL}/login-fb-get-acc/${state}`);
+ const { user } = await response.json();
+
+ return Promise.resolve({
+ email: user.email,
+ password: user.fbLoginToken,
+ });
+ } catch (e) {
+ console.error('Failed to get credentials from facebook auth', e);
+ return Promise.reject(e);
+ }
+};
+
+const useFacebookLogin = () => {
+ const platform = usePlatform();
+ const timeout = useRef(null);
+
+ const startFacebookLogin = useCallback(() => {
+ return new Promise((resolve, reject) => {
+ const state = hat(128);
+ let tries = 0;
+
+ platform.openExternal(`${STREMIO_URL}/login-fb/${state}`);
+
+ const waitForCredentials = () => {
+ timeout.current && clearTimeout(timeout.current);
+ timeout.current = setTimeout(() => {
+ if (tries >= MAX_TRIES)
+ return reject(new Error('Failed to authenticate with facebook'));
+
+ tries++;
+
+ getCredentials(state)
+ .then(resolve)
+ .catch(waitForCredentials);
+ }, 1000);
+ };
+
+ waitForCredentials();
+ });
+ }, []);
+
+ useEffect(() => {
+ return () => {
+ timeout.current && clearTimeout(timeout.current);
+ };
+ }, []);
+
+ return startFacebookLogin;
+};
+
+module.exports = useFacebookLogin;
diff --git a/src/routes/Intro/useFacebookToken.js b/src/routes/Intro/useFacebookToken.js
deleted file mode 100644
index 8f978e248..000000000
--- a/src/routes/Intro/useFacebookToken.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2017-2023 Smart code 203358507
-
-const React = require('react');
-
-const useFacebookToken = () => {
- const getToken = React.useCallback(() => {
- return new Promise((resolve, reject) => {
- if (typeof FB === 'undefined') {
- reject(new Error('Failed to connect to Facebook'));
- return;
- }
-
- FB.getLoginStatus((resp) => {
- if (resp && resp.authResponse && typeof resp.authResponse.accessToken === 'string') {
- resolve(resp.authResponse.accessToken);
- return;
- }
-
- FB.login((resp) => {
- if (!resp || !resp.authResponse || typeof resp.authResponse.accessToken !== 'string') {
- reject(new Error('Failed to get token from Facebook'));
- return;
- }
-
- resolve(resp.authResponse.accessToken);
- });
- });
- });
- }, []);
- React.useEffect(() => {
- window.fbAsyncInit = function() {
- FB.init({
- appId: '1537119779906825',
- status: true,
- xfbml: false,
- version: 'v2.7'
- });
- };
- const sdkScriptElement = document.createElement('script');
- sdkScriptElement.src = 'https://connect.facebook.net/en_US/sdk.js';
- sdkScriptElement.async = true;
- sdkScriptElement.defer = true;
- document.body.appendChild(sdkScriptElement);
- return () => {
- document.body.removeChild(sdkScriptElement);
- };
- }, []);
- return getToken;
-};
-
-module.exports = useFacebookToken;
From 6305743c1afc1fe8fbec68d71c7a4aef2878f583 Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 3 Oct 2024 16:25:30 +0200
Subject: [PATCH 72/94] feat(Intro): add cancel button to facebook modal
---
src/routes/Intro/Intro.js | 11 ++++++++++-
src/routes/Intro/styles.less | 25 +++++++++++++++++++++++--
src/routes/Intro/useFacebookLogin.ts | 17 +++++++++++------
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js
index c1fd82d74..bcdd74aff 100644
--- a/src/routes/Intro/Intro.js
+++ b/src/routes/Intro/Intro.js
@@ -1,6 +1,7 @@
// Copyright (C) 2017-2023 Smart code 203358507
const React = require('react');
+const { useTranslation } = require('react-i18next');
const PropTypes = require('prop-types');
const classnames = require('classnames');
const { default: Icon } = require('@stremio/stremio-icons/react');
@@ -18,8 +19,9 @@ const LOGIN_FORM = 'login';
const Intro = ({ queryParams }) => {
const { core } = useServices();
+ const { t } = useTranslation();
const routeFocused = useRouteFocused();
- const startFacebookLogin = useFacebookLogin();
+ const [startFacebookLogin, stopFacebookLogin] = useFacebookLogin();
const emailRef = React.useRef(null);
const passwordRef = React.useRef(null);
const confirmPasswordRef = React.useRef(null);
@@ -100,6 +102,10 @@ const Intro = ({ queryParams }) => {
dispatch({ type: 'error', error: error.message });
});
}, []);
+ const cancelLoginWithFacebook = React.useCallback(() => {
+ stopFacebookLogin();
+ closeLoaderModal();
+ }, []);
const loginWithEmail = React.useCallback(() => {
if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) {
dispatch({ type: 'error', error: 'Invalid email' });
@@ -385,6 +391,9 @@ const Intro = ({ queryParams }) => {
Authenticating...
+
+ {t('BUTTON_CANCEL')}
+
:
diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less
index 1b1200a7c..61a62aff1 100644
--- a/src/routes/Intro/styles.less
+++ b/src/routes/Intro/styles.less
@@ -200,7 +200,8 @@
flex-direction: column;
align-items: center;
justify-content: center;
- padding: 2rem;
+ gap: 1rem;
+ padding: 2.5rem;
border-radius: var(--border-radius);
background-color: var(--modal-background-color);
@@ -218,7 +219,6 @@
flex: none;
width: 5rem;
height: 5rem;
- margin-bottom: 1rem;
color: var(--primary-foreground-color);
animation: 1s linear infinite alternate flash;
}
@@ -228,6 +228,27 @@
color: var(--primary-foreground-color);
animation: 1s linear infinite alternate flash;
}
+
+ .button {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ height: 3.5rem;
+ width: 100%;
+ border-radius: 3.5rem;
+ padding: 0 1rem;
+ margin-top: 2rem;
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--primary-foreground-color);
+ outline: var(--focus-outline-size) solid var(--primary-foreground-color);
+
+ &:hover {
+ color: var(--secondary-foreground-color);
+ background-color: var(--primary-foreground-color);
+ }
+ }
}
}
diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts
index a1097111b..c59f6e275 100644
--- a/src/routes/Intro/useFacebookLogin.ts
+++ b/src/routes/Intro/useFacebookLogin.ts
@@ -26,7 +26,7 @@ const useFacebookLogin = () => {
const platform = usePlatform();
const timeout = useRef(null);
- const startFacebookLogin = useCallback(() => {
+ const start = useCallback(() => {
return new Promise((resolve, reject) => {
const state = hat(128);
let tries = 0;
@@ -51,13 +51,18 @@ const useFacebookLogin = () => {
});
}, []);
- useEffect(() => {
- return () => {
- timeout.current && clearTimeout(timeout.current);
- };
+ const stop = useCallback(() => {
+ timeout.current && clearTimeout(timeout.current);
}, []);
- return startFacebookLogin;
+ useEffect(() => {
+ return () => stop();
+ }, []);
+
+ return [
+ start,
+ stop,
+ ];
};
module.exports = useFacebookLogin;
From c3f0c91ea88d80559d0cc6d5019a3cbb2ab1b85d Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 3 Oct 2024 16:29:39 +0200
Subject: [PATCH 73/94] refactor(Intro): increase waitFroCredentials max tries
---
src/routes/Intro/useFacebookLogin.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts
index c59f6e275..f447079ec 100644
--- a/src/routes/Intro/useFacebookLogin.ts
+++ b/src/routes/Intro/useFacebookLogin.ts
@@ -5,7 +5,7 @@ import hat from 'hat';
import { usePlatform } from 'stremio/common';
const STREMIO_URL = 'https://www.strem.io';
-const MAX_TRIES = 10;
+const MAX_TRIES = 25;
const getCredentials = async (state: string) => {
try {
From a95458f99552c9850be083f7064d40db7ba229de Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 3 Oct 2024 16:49:48 +0200
Subject: [PATCH 74/94] fix(useFacebookLogin): requests were made after
cancelling
---
src/routes/Intro/useFacebookLogin.ts | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts
index f447079ec..992c6501a 100644
--- a/src/routes/Intro/useFacebookLogin.ts
+++ b/src/routes/Intro/useFacebookLogin.ts
@@ -1,6 +1,6 @@
// Copyright (C) 2017-2023 Smart code 203358507
-import { useCallback, useEffect, useRef } from 'react';
+import { useCallback, useEffect, useRef, useState } from 'react';
import hat from 'hat';
import { usePlatform } from 'stremio/common';
@@ -24,16 +24,18 @@ const getCredentials = async (state: string) => {
const useFacebookLogin = () => {
const platform = usePlatform();
+ const started = useRef(false);
const timeout = useRef(null);
- const start = useCallback(() => {
- return new Promise((resolve, reject) => {
- const state = hat(128);
- let tries = 0;
+ const start = useCallback(() => new Promise((resolve, reject) => {
+ started.current = true;
+ const state = hat(128);
+ let tries = 0;
- platform.openExternal(`${STREMIO_URL}/login-fb/${state}`);
+ platform.openExternal(`${STREMIO_URL}/login-fb/${state}`);
- const waitForCredentials = () => {
+ const waitForCredentials = () => {
+ if (started.current) {
timeout.current && clearTimeout(timeout.current);
timeout.current = setTimeout(() => {
if (tries >= MAX_TRIES)
@@ -45,13 +47,14 @@ const useFacebookLogin = () => {
.then(resolve)
.catch(waitForCredentials);
}, 1000);
- };
+ }
+ };
- waitForCredentials();
- });
- }, []);
+ waitForCredentials();
+ }), []);
const stop = useCallback(() => {
+ started.current = false;
timeout.current && clearTimeout(timeout.current);
}, []);
From bb5866955e65e38cdac3fa367c7abba7c74147c5 Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 3 Oct 2024 17:00:22 +0200
Subject: [PATCH 75/94] refactor(useFacebookLogin): remove unused import
---
src/routes/Intro/useFacebookLogin.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts
index 992c6501a..901ca9495 100644
--- a/src/routes/Intro/useFacebookLogin.ts
+++ b/src/routes/Intro/useFacebookLogin.ts
@@ -1,6 +1,6 @@
// Copyright (C) 2017-2023 Smart code 203358507
-import { useCallback, useEffect, useRef, useState } from 'react';
+import { useCallback, useEffect, useRef } from 'react';
import hat from 'hat';
import { usePlatform } from 'stremio/common';
From 13ef4d86aad8e37c7d33dc687c74418371739772 Mon Sep 17 00:00:00 2001
From: Tim
Date: Sun, 6 Oct 2024 10:01:15 +0200
Subject: [PATCH 76/94] fix(AddonsDetailsModal): import error
---
src/common/AddonDetailsModal/AddonDetailsModal.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/common/AddonDetailsModal/AddonDetailsModal.js b/src/common/AddonDetailsModal/AddonDetailsModal.js
index b4ffdab71..1ebbb2e60 100644
--- a/src/common/AddonDetailsModal/AddonDetailsModal.js
+++ b/src/common/AddonDetailsModal/AddonDetailsModal.js
@@ -3,7 +3,8 @@
const React = require('react');
const PropTypes = require('prop-types');
const ModalDialog = require('stremio/common/ModalDialog');
-const { usePlatform, withCoreSuspender } = require('stremio/common/CoreSuspender');
+const { withCoreSuspender } = require('stremio/common/CoreSuspender');
+const { usePlatform } = require('stremio/common/Platform');
const { useServices } = require('stremio/services');
const AddonDetailsWithRemoteAndLocalAddon = withRemoteAndLocalAddon(require('./AddonDetails'));
const useAddonDetails = require('./useAddonDetails');
From 5ca9d3a70196161c5919d9c70b99804eedd5cb84 Mon Sep 17 00:00:00 2001
From: Tim
Date: Sun, 6 Oct 2024 19:23:04 +0200
Subject: [PATCH 77/94] chore: fix js imports resolution
---
src/common/Platform/Platform.tsx | 2 +-
src/common/useBinaryState.d.ts | 8 ++++++++
src/modules.d.ts | 9 ++++++---
tsconfig.json | 9 +++++----
4 files changed, 20 insertions(+), 8 deletions(-)
create mode 100644 src/common/useBinaryState.d.ts
diff --git a/src/common/Platform/Platform.tsx b/src/common/Platform/Platform.tsx
index 69ff3e8c3..057e60703 100644
--- a/src/common/Platform/Platform.tsx
+++ b/src/common/Platform/Platform.tsx
@@ -9,7 +9,7 @@ interface PlatformContext {
openExternal: (url: string) => void;
}
-const PlatformContext = createContext(null);
+const PlatformContext = createContext({} as PlatformContext);
type Props = {
children: JSX.Element;
diff --git a/src/common/useBinaryState.d.ts b/src/common/useBinaryState.d.ts
new file mode 100644
index 000000000..c61a28712
--- /dev/null
+++ b/src/common/useBinaryState.d.ts
@@ -0,0 +1,8 @@
+declare const useBinaryState: (initialValue?: boolean) => [
+ boolean,
+ () => void,
+ () => void,
+ () => void,
+];
+
+export = useBinaryState;
\ No newline at end of file
diff --git a/src/modules.d.ts b/src/modules.d.ts
index 70ebbd3fc..73d4eec32 100644
--- a/src/modules.d.ts
+++ b/src/modules.d.ts
@@ -1,3 +1,6 @@
-declare module '*.less';
-declare module 'stremio/common';
-declare module 'stremio/common/*';
\ No newline at end of file
+declare module '*.less' {
+ const resource: { [key: string]: string };
+ export = resource;
+}
+
+declare module 'stremio/common/Button';
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 896a7d197..fd930dbcf 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,10 +2,11 @@
"compilerOptions": {
"lib": ["DOM", "DOM.Iterable"],
"jsx": "react",
- "baseUrl": "src",
+ "baseUrl": "./src",
+ "outDir": "./dist",
"moduleResolution": "node",
"paths": {
- "stremio/*": ["src/*"],
+ "stremio/*": ["*"],
},
"resolveJsonModule": true,
"esModuleInterop": true,
@@ -15,6 +16,6 @@
"strict": true,
},
"include": [
- "src",
- ],
+ "src/",
+ ]
}
From e51e6f415e4a39e23e1fab074a8db93bafb0e994 Mon Sep 17 00:00:00 2001
From: Tim
Date: Mon, 7 Oct 2024 12:17:33 +0200
Subject: [PATCH 78/94] chore: update eslint
---
.eslintrc | 99 -
eslint.config.mjs | 100 +
package-lock.json | 2418 +++++++++++++----
package.json | 9 +-
src/common/Chips/Chip/Chip.tsx | 2 +-
src/common/Chips/Chip/index.ts | 2 +-
src/common/Chips/Chips.tsx | 2 +-
src/common/Chips/index.ts | 2 +-
src/common/CoreSuspender.js | 1 +
src/common/DelayedRenderer/DelayedRenderer.js | 3 +-
.../MultiselectMenu/Dropdown/Dropdown.tsx | 5 +-
.../Dropdown/Option/Option.tsx | 2 +-
.../MultiselectMenu/Dropdown/Option/index.ts | 2 +-
src/common/MultiselectMenu/Dropdown/index.ts | 2 +-
.../MultiselectMenu/MultiselectMenu.tsx | 6 +-
src/common/MultiselectMenu/index.ts | 2 +-
src/common/MultiselectMenu/types.d.ts | 2 +-
.../SearchBar/useLocalSearch.d.ts | 2 +-
.../SearchBar/useSearchHistory.d.ts | 2 +-
src/common/Platform/Platform.tsx | 2 +-
src/common/Platform/device.ts | 2 +-
src/common/Platform/index.ts | 2 +-
src/common/Platform/useShell.ts | 2 +-
src/common/Toast/ToastContext.js | 2 +
src/common/useNotifications.d.ts | 2 +-
src/common/useOutsideClick.ts | 2 +-
src/common/useProfile.d.ts | 2 +-
src/common/useStreamingServer.d.ts | 2 +-
src/modules.d.ts | 2 +-
src/routes/Addons/useInstalledAddons.d.ts | 2 +-
src/routes/Addons/useRemoteAddons.d.ts | 2 +-
src/routes/Board/useBoard.d.ts | 2 +-
src/routes/Discover/useDiscover.d.ts | 2 +-
src/routes/Library/useLibrary.d.ts | 2 +-
src/routes/MetaDetails/useMetaDetails.d.ts | 2 +-
src/routes/Player/usePlayer.d.ts | 2 +-
src/routes/Player/useSettings.d.ts | 2 +-
src/routes/Search/useSearch.d.ts | 2 +-
src/services/Core/Core.d.ts | 2 +-
src/services/Core/CoreTransport.d.ts | 2 +-
src/services/Core/globals.d.ts | 2 +-
src/services/Core/types.d.ts | 2 +-
src/services/DragAndDrop/DragAndDrop.js | 2 +-
src/services/ServicesContext/types.d.ts | 2 +-
src/services/ServicesContext/useServices.d.ts | 2 +-
src/services/Shell/ShellTransport.js | 1 +
src/types/Addon.d.ts | 2 +-
src/types/LibraryItem.d.ts | 2 +-
src/types/MetaItem.d.ts | 2 +-
src/types/Selectable.d.ts | 2 +-
src/types/Stream.d.ts | 2 +-
src/types/Video.d.ts | 2 +-
src/types/global.d.ts | 4 +-
src/types/models/Board.d.ts | 2 +-
src/types/models/CatalogsWithExtra.d.ts | 2 +-
src/types/models/Ctx.d.ts | 2 +-
src/types/models/Discover.d.ts | 2 +-
src/types/models/InstalledAddons.d.ts | 2 +-
src/types/models/Library.d.ts | 2 +-
src/types/models/LocalSearch.d.ts | 2 +-
src/types/models/MetaDetails.d.ts | 2 +-
src/types/models/Player.d.ts | 2 +-
src/types/models/RemoteAddons.d.ts | 2 +-
src/types/models/Search.d.ts | 2 +-
src/types/models/StremingServer.d.ts | 2 +-
src/types/types.d.ts | 4 +-
webpack.config.js | 2 +-
67 files changed, 2090 insertions(+), 672 deletions(-)
delete mode 100644 .eslintrc
create mode 100644 eslint.config.mjs
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 88fa22404..000000000
--- a/.eslintrc
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- "extends": [
- "eslint:recommended",
- "plugin:react/recommended"
- ],
- "settings": {
- "react": {
- "version": "detect"
- }
- },
- "globals": {
- "YT": "readonly",
- "FB": "readonly",
- "cast": "readonly",
- "chrome": "readonly"
- },
- "env": {
- "node": true,
- "commonjs": true,
- "browser": true,
- "es6": true
- },
- "parserOptions": {
- "ecmaVersion": 11,
- "ecmaFeatures": {
- "jsx": true
- }
- },
- "ignorePatterns": [
- "/*",
- "!/src"
- ],
- "rules": {
- "arrow-parens": "error",
- "arrow-spacing": "error",
- "block-spacing": "error",
- "comma-spacing": "error",
- "eol-last": "error",
- "eqeqeq": "error",
- "func-call-spacing": "error",
- "indent": [
- "error",
- 4,
- {
- "SwitchCase": 1
- }
- ],
- "no-console": [
- "error",
- {
- "allow": [
- "warn",
- "error"
- ]
- }
- ],
- "no-extra-semi": "error",
- "no-eq-null": "error",
- "no-multi-spaces": "error",
- "no-multiple-empty-lines": [
- "error",
- {
- "max": 1
- }
- ],
- "no-prototype-builtins": "off",
- "no-template-curly-in-string": "error",
- "no-trailing-spaces": "error",
- "no-useless-concat": "error",
- "no-unreachable": "error",
- "no-unused-vars": [
- "error",
- {
- "varsIgnorePattern": "_"
- }
- ],
- "prefer-const": "error",
- "quotes": [
- "error",
- "single"
- ],
- "quote-props": [
- "error",
- "as-needed",
- {
- "unnecessary": false
- }
- ],
- "semi": "error",
- "semi-spacing": "error",
- "space-before-blocks": "error",
- "valid-typeof": [
- "error",
- {
- "requireStringLiterals": true
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 000000000..acb2014cd
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,100 @@
+import globals from 'globals';
+import pluginJs from '@eslint/js';
+import tseslint from 'typescript-eslint';
+import pluginReact from 'eslint-plugin-react';
+import stylistic from '@stylistic/eslint-plugin'
+
+export default [
+ pluginJs.configs.recommended,
+ ...tseslint.configs.recommended,
+ ...tseslint.configs.stylistic,
+ pluginReact.configs.flat.recommended,
+ {
+ plugins: {
+ '@stylistic': stylistic
+ },
+ },
+ {
+ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}']
+ },
+ {
+ files: ['**/*.js'],
+ languageOptions: {
+ sourceType: 'commonjs',
+ ecmaVersion: 'latest',
+ }
+ },
+ {
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ YT: 'readonly',
+ FB: 'readonly',
+ cast: 'readonly',
+ chrome: 'readonly',
+ }
+ }
+ },
+ {
+ settings: {
+ react: {
+ version: 'detect',
+ },
+ },
+ },
+ {
+ rules: {
+ 'no-redeclare': 'off',
+ 'eol-last': 'error',
+ 'eqeqeq': 'error',
+ 'no-console': ['error', {
+ allow: [
+ 'warn',
+ 'error'
+ ]
+ }],
+ }
+ },
+ {
+ rules: {
+ '@typescript-eslint/no-redeclare': 'off',
+ '@typescript-eslint/no-require-imports': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-empty-object-type': 'off',
+ '@typescript-eslint/no-unused-expressions': 'off',
+ '@typescript-eslint/consistent-type-definitions': 'off',
+ '@typescript-eslint/no-unused-vars': [
+ 'error',
+ {
+ 'varsIgnorePattern': '_',
+ 'caughtErrorsIgnorePattern': '_',
+ }
+ ],
+ }
+ },
+ {
+ rules: {
+ '@stylistic/arrow-parens': 'error',
+ '@stylistic/arrow-spacing': 'error',
+ '@stylistic/block-spacing': 'error',
+ '@stylistic/comma-spacing': 'error',
+ '@stylistic/semi-spacing': 'error',
+ '@stylistic/space-before-blocks': 'error',
+ '@stylistic/no-trailing-spaces': 'error',
+ '@stylistic/func-call-spacing': 'error',
+ '@stylistic/eol-last': 'error',
+ '@stylistic/no-multi-spaces': 'error',
+ '@stylistic/no-multiple-empty-lines': ['error', {
+ max: 1
+ }],
+ '@stylistic/indent': ['error', 4],
+ '@stylistic/quotes': ['error', 'single'],
+ }
+ },
+ {
+ rules: {
+ 'react/display-name': 'off',
+ }
+ }
+];
diff --git a/package-lock.json b/package-lock.json
index f2404dd17..e48fb0f8c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -46,6 +46,9 @@
"@babel/plugin-proposal-object-rest-spread": "7.16.0",
"@babel/preset-env": "7.16.0",
"@babel/preset-react": "7.16.0",
+ "@eslint/js": "^9.12.0",
+ "@stylistic/eslint-plugin": "^2.9.0",
+ "@stylistic/eslint-plugin-jsx": "^2.9.0",
"@types/hat": "^0.0.4",
"@types/react": "^18.2.9",
"babel-loader": "8.2.3",
@@ -54,8 +57,9 @@
"css-loader": "6.5.0",
"cssnano": "5.0.8",
"cssnano-preset-advanced": "5.1.4",
- "eslint": "7.32.0",
- "eslint-plugin-react": "7.26.1",
+ "eslint": "^9.12.0",
+ "eslint-plugin-react": "^7.37.1",
+ "globals": "^15.10.0",
"html-webpack-plugin": "5.5.0",
"jest": "27.3.1",
"less": "4.1.2",
@@ -66,6 +70,7 @@
"terser-webpack-plugin": "5.2.4",
"ts-loader": "^9.5.1",
"typescript": "^5.4.2",
+ "typescript-eslint": "^8.8.0",
"webpack": "5.61.0",
"webpack-cli": "4.9.1",
"webpack-dev-server": "^4.7.4",
@@ -1012,6 +1017,16 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.16.0",
"dev": true,
@@ -1630,6 +1645,16 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/types": {
"version": "7.18.7",
"dev": true,
@@ -1655,64 +1680,198 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+ "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
+ "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
+ "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "0.4.3",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
+ "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
"import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.12.0",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz",
+ "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">= 4"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.5.0",
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
+ "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">=10.10.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.0",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz",
+ "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.5",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz",
+ "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.0",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
@@ -3018,6 +3177,117 @@
"vtt.js": "github:jaruba/vtt.js#e4f5f5603730866bacb174a93f51b734c9f29e6a"
}
},
+ "node_modules/@stylistic/eslint-plugin": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz",
+ "integrity": "sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.8.0",
+ "eslint-visitor-keys": "^4.1.0",
+ "espree": "^10.2.0",
+ "estraverse": "^5.3.0",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.40.0"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin-jsx": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.9.0.tgz",
+ "integrity": "sha512-eP7fPtuwDcuF0RvvYPCemW2VbEE4vj9e9mK04w8lTWLC2/yMqhs+tQCJqA1vDSNg/y3sHEw1uYRrSZuCF8Q4wg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^4.1.0",
+ "espree": "^10.2.0",
+ "estraverse": "^5.3.0",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.40.0"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin-jsx/node_modules/eslint-visitor-keys": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+ "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin-jsx/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin-jsx/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+ "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@surma/rollup-plugin-off-main-thread": {
"version": "2.2.3",
"dev": true,
@@ -3224,7 +3494,9 @@
}
},
"node_modules/@types/json-schema": {
- "version": "7.0.9",
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true,
"license": "MIT"
},
@@ -3352,6 +3624,235 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz",
+ "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.8.0",
+ "@typescript-eslint/type-utils": "8.8.0",
+ "@typescript-eslint/utils": "8.8.0",
+ "@typescript-eslint/visitor-keys": "8.8.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz",
+ "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.8.0",
+ "@typescript-eslint/types": "8.8.0",
+ "@typescript-eslint/typescript-estree": "8.8.0",
+ "@typescript-eslint/visitor-keys": "8.8.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz",
+ "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.8.0",
+ "@typescript-eslint/visitor-keys": "8.8.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz",
+ "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.8.0",
+ "@typescript-eslint/utils": "8.8.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz",
+ "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz",
+ "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "8.8.0",
+ "@typescript-eslint/visitor-keys": "8.8.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz",
+ "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.8.0",
+ "@typescript-eslint/types": "8.8.0",
+ "@typescript-eslint/typescript-estree": "8.8.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz",
+ "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.8.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.11.1",
"dev": true,
@@ -3570,7 +4071,9 @@
}
},
"node_modules/acorn": {
- "version": "8.7.1",
+ "version": "8.12.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3610,6 +4113,8 @@
},
"node_modules/acorn-jsx": {
"version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -3711,14 +4216,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"dev": true,
@@ -3799,20 +4296,40 @@
"sprintf-js": "~1.0.2"
}
},
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array-flatten": {
"version": "2.1.2",
"dev": true,
"license": "MIT"
},
"node_modules/array-includes": {
- "version": "3.1.4",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
"is-string": "^1.0.7"
},
"engines": {
@@ -3841,14 +4358,19 @@
"node": ">=0.10.0"
}
},
- "node_modules/array.prototype.flatmap": {
+ "node_modules/array.prototype.findlast": {
"version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -3857,12 +4379,63 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/astral-regex": {
- "version": "2.0.0",
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/async": {
@@ -3912,6 +4485,22 @@
"postcss": "^8.1.0"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/babel-jest": {
"version": "27.3.1",
"dev": true,
@@ -4376,12 +4965,20 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5214,12 +5811,68 @@
"node": ">=10"
}
},
- "node_modules/debug": {
- "version": "4.3.2",
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5284,6 +5937,24 @@
"node": ">= 10"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"dev": true,
@@ -5293,14 +5964,21 @@
}
},
"node_modules/define-properties": {
- "version": "1.1.3",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "object-keys": "^1.0.12"
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/del": {
@@ -5399,17 +6077,6 @@
"buffer-indexof": "^1.0.0"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/dom-converter": {
"version": "0.2.0",
"dev": true,
@@ -5574,17 +6241,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/enquirer": {
- "version": "2.3.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
"node_modules/entities": {
"version": "2.2.0",
"dev": true,
@@ -5625,30 +6281,58 @@
}
},
"node_modules/es-abstract": {
- "version": "1.19.1",
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "get-symbol-description": "^1.0.0",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.4",
- "is-negative-zero": "^2.0.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.1",
+ "is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",
- "is-weakref": "^1.0.1",
- "object-inspect": "^1.11.0",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
},
"engines": {
"node": ">= 0.4"
@@ -5657,13 +6341,102 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+ "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.3",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "0.9.3",
"dev": true,
"license": "MIT"
},
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
"node_modules/es-to-primitive": {
"version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5784,86 +6557,97 @@
}
},
"node_modules/eslint": {
- "version": "7.32.0",
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz",
+ "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.11.0",
+ "@eslint/config-array": "^0.18.0",
+ "@eslint/core": "^0.6.0",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "9.12.0",
+ "@eslint/plugin-kit": "^0.2.0",
+ "@humanfs/node": "^0.16.5",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.3.1",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
+ "debug": "^4.3.2",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
+ "eslint-scope": "^8.1.0",
+ "eslint-visitor-keys": "^4.1.0",
+ "espree": "^10.2.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
"lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
+ "optionator": "^0.9.3",
+ "text-table": "^0.2.0"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.26.1",
+ "version": "7.37.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz",
+ "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "array-includes": "^3.1.3",
- "array.prototype.flatmap": "^1.2.4",
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
"doctrine": "^2.1.0",
- "estraverse": "^5.2.0",
+ "es-iterator-helpers": "^1.0.19",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.0.4",
- "object.entries": "^1.1.4",
- "object.fromentries": "^2.0.4",
- "object.hasown": "^1.0.0",
- "object.values": "^1.1.4",
- "prop-types": "^15.7.2",
- "resolve": "^2.0.0-next.3",
- "semver": "^6.3.0",
- "string.prototype.matchall": "^4.0.5"
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7"
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
@@ -5885,13 +6669,38 @@
"node": ">=4.0"
}
},
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.3",
+ "node_modules/eslint-plugin-react/node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5909,43 +6718,25 @@
"node": ">=8.0.0"
}
},
- "node_modules/eslint-utils": {
- "version": "2.1.0",
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=6"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
+ "node_modules/eslint/node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
+ "license": "MIT"
},
"node_modules/eslint/node_modules/ansi-styles": {
"version": "4.3.0",
@@ -6003,26 +6794,58 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "5.1.2",
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz",
+ "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==",
"dev": true,
- "license": "ISC",
+ "license": "BSD-2-Clause",
"dependencies": {
- "is-glob": "^4.0.1"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">= 6"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.12.0",
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+ "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "type-fest": "^0.20.2"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -6036,26 +6859,52 @@
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/ignore": {
- "version": "4.0.6",
+ "node_modules/eslint/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/eslint/node_modules/semver": {
- "version": "7.3.5",
- "dev": true,
- "license": "ISC",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint/node_modules/supports-color": {
@@ -6070,35 +6919,34 @@
}
},
"node_modules/espree": {
- "version": "7.3.1",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz",
+ "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
+ "acorn": "^8.12.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.1.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/espree/node_modules/acorn": {
- "version": "7.4.1",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
- "engines": {
- "node": ">=0.4.0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+ "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
"dev": true,
"license": "Apache-2.0",
"engines": {
- "node": ">=4"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
@@ -6114,7 +6962,9 @@
}
},
"node_modules/esquery": {
- "version": "1.4.0",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -6335,7 +7185,9 @@
"license": "MIT"
},
"node_modules/fast-glob": {
- "version": "3.2.7",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6346,7 +7198,7 @@
"micromatch": "^4.0.4"
},
"engines": {
- "node": ">=8"
+ "node": ">=8.6.0"
}
},
"node_modules/fast-glob/node_modules/glob-parent": {
@@ -6403,14 +7255,16 @@
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/file-type": {
@@ -6533,33 +7387,23 @@
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flat-cache/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.2.2",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"dev": true,
"license": "ISC"
},
@@ -6596,6 +7440,16 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/form-data": {
"version": "3.0.1",
"dev": true,
@@ -6670,14 +7524,43 @@
"license": "ISC"
},
"node_modules/function-bind": {
- "version": "1.1.1",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
@@ -6696,13 +7579,20 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.1",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6733,12 +7623,15 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.0",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
@@ -6801,11 +7694,33 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
+ "version": "15.10.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz",
+ "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/globby": {
@@ -6831,29 +7746,40 @@
"node": ">=0.10.0"
}
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.8",
"dev": true,
"license": "ISC"
},
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/handle-thing": {
"version": "2.0.1",
"dev": true,
"license": "MIT"
},
- "node_modules/has": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-bigints": {
- "version": "1.0.1",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -6868,8 +7794,36 @@
"node": ">=4"
}
},
- "node_modules/has-symbols": {
+ "node_modules/has-property-descriptors": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6880,11 +7834,13 @@
}
},
"node_modules/has-tostringtag": {
- "version": "1.0.0",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -6893,6 +7849,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/hat": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
@@ -7215,7 +8184,9 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.1.8",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7308,12 +8279,14 @@
"license": "ISC"
},
"node_modules/internal-slot": {
- "version": "1.0.3",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.1.0",
- "has": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
"side-channel": "^1.0.4"
},
"engines": {
@@ -7364,13 +8337,48 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"dev": true,
"license": "MIT"
},
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-bigint": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7393,6 +8401,8 @@
},
"node_modules/is-boolean-object": {
"version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7407,7 +8417,9 @@
}
},
"node_modules/is-callable": {
- "version": "1.2.4",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7418,11 +8430,32 @@
}
},
"node_modules/is-core-module": {
- "version": "2.8.0",
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7464,6 +8497,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"dev": true,
@@ -7485,6 +8531,22 @@
"node": ">=6"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"dev": true,
@@ -7496,13 +8558,28 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-module": {
"version": "1.0.0",
"dev": true,
"license": "MIT"
},
"node_modules/is-negative-zero": {
- "version": "2.0.1",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7521,7 +8598,9 @@
}
},
"node_modules/is-number-object": {
- "version": "1.0.6",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7626,10 +8705,31 @@
"dev": true,
"license": "ISC"
},
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.1",
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
"dev": true,
"license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -7661,6 +8761,8 @@
},
"node_modules/is-symbol": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7673,17 +8775,65 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"dev": true,
"license": "MIT"
},
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-weakref": {
- "version": "1.0.1",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.0"
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7809,6 +8959,20 @@
"node": ">=8"
}
},
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ }
+ },
"node_modules/jake": {
"version": "10.8.5",
"dev": true,
@@ -9553,6 +10717,13 @@
"node": ">=4"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
"dev": true,
@@ -9631,6 +10802,16 @@
"node": ">=4.0"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"dev": true,
@@ -9870,11 +11051,6 @@
"version": "4.1.1",
"license": "MIT"
},
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.uniq": {
"version": "4.5.0",
"dev": true,
@@ -10114,7 +11290,9 @@
"license": "ISC"
},
"node_modules/minimatch": {
- "version": "3.0.4",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -10141,7 +11319,9 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
"license": "MIT"
},
@@ -10324,9 +11504,14 @@
}
},
"node_modules/object-inspect": {
- "version": "1.11.0",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
"dev": true,
"license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -10355,13 +11540,15 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.2",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
"object-keys": "^1.1.1"
},
"engines": {
@@ -10372,26 +11559,31 @@
}
},
"node_modules/object.entries": {
- "version": "1.1.5",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.fromentries": {
- "version": "2.0.5",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -10400,26 +11592,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.hasown": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/object.values": {
- "version": "1.1.5",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -10496,7 +11678,9 @@
}
},
"node_modules/optionator": {
- "version": "0.9.1",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10505,7 +11689,7 @@
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -10839,6 +12023,16 @@
"ms": "^2.1.1"
}
},
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/postcss": {
"version": "8.3.11",
"dev": true,
@@ -11477,14 +12671,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/progress": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/prompts": {
"version": "2.4.2",
"dev": true,
@@ -11745,6 +12931,28 @@
"node": ">= 0.10"
}
},
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
+ "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.1",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/regenerate": {
"version": "1.4.2",
"dev": true,
@@ -11774,12 +12982,16 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.3.1",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -11788,17 +13000,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/regexpu-core": {
"version": "4.8.0",
"dev": true,
@@ -12044,11 +13245,55 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/safe-buffer": {
"version": "5.1.2",
"dev": true,
"license": "MIT"
},
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"dev": true,
@@ -12111,7 +13356,9 @@
}
},
"node_modules/semver": {
- "version": "6.3.0",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -12154,11 +13401,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "dev": true,
- "license": "MIT"
- },
"node_modules/serialize-javascript": {
"version": "6.0.0",
"dev": true,
@@ -12235,6 +13477,40 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"dev": true,
@@ -12271,13 +13547,19 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12312,52 +13594,6 @@
"node": ">=8"
}
},
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/slice-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
"node_modules/sockjs": {
"version": "0.3.24",
"dev": true,
@@ -12521,42 +13757,90 @@
}
},
"node_modules/string.prototype.matchall": {
- "version": "4.0.6",
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "regexp.prototype.flags": "^1.5.2",
+ "set-function-name": "^2.0.2",
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
"define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "regexp.prototype.flags": "^1.3.1",
- "side-channel": "^1.0.4"
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.4",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.4",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12612,6 +13896,8 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12694,6 +13980,19 @@
"node": ">=8"
}
},
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/svgo": {
"version": "2.7.0",
"dev": true,
@@ -12719,42 +14018,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/table": {
- "version": "6.7.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/table/node_modules/ajv": {
- "version": "8.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
"node_modules/tapable": {
"version": "2.2.1",
"dev": true,
@@ -13053,6 +14316,19 @@
"node": ">=6"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
"node_modules/ts-loader": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
@@ -13190,17 +14466,6 @@
"node": ">=4"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/type-is": {
"version": "1.6.18",
"dev": true,
@@ -13213,6 +14478,83 @@
"node": ">= 0.6"
}
},
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
"dev": true,
@@ -13234,14 +14576,40 @@
"node": ">=14.17"
}
},
- "node_modules/unbox-primitive": {
- "version": "1.0.1",
+ "node_modules/typescript-eslint": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.0.tgz",
+ "integrity": "sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
+ "@typescript-eslint/eslint-plugin": "8.8.0",
+ "@typescript-eslint/parser": "8.8.0",
+ "@typescript-eslint/utils": "8.8.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
},
"funding": {
@@ -13462,11 +14830,6 @@
"uuid": "dist/bin/uuid"
}
},
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT"
- },
"node_modules/v8-to-istanbul": {
"version": "8.1.0",
"dev": true,
@@ -13853,32 +15216,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/webpack-dev-server/node_modules/fast-glob": {
- "version": "3.2.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/webpack-dev-server/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/webpack-dev-server/node_modules/globby": {
"version": "11.1.0",
"dev": true,
@@ -13898,14 +15235,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/webpack-dev-server/node_modules/ignore": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/webpack-dev-server/node_modules/is-path-inside": {
"version": "3.0.3",
"dev": true,
@@ -14123,6 +15452,8 @@
},
"node_modules/which-boxed-primitive": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -14136,13 +15467,88 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-builtin-type": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz",
+ "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/wildcard": {
"version": "2.0.0",
"dev": true,
"license": "MIT"
},
"node_modules/word-wrap": {
- "version": "1.2.3",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"license": "MIT",
"engines": {
diff --git a/package.json b/package.json
index 725c75658..910f236a7 100755
--- a/package.json
+++ b/package.json
@@ -50,6 +50,9 @@
"@babel/plugin-proposal-object-rest-spread": "7.16.0",
"@babel/preset-env": "7.16.0",
"@babel/preset-react": "7.16.0",
+ "@eslint/js": "^9.12.0",
+ "@stylistic/eslint-plugin": "^2.9.0",
+ "@stylistic/eslint-plugin-jsx": "^2.9.0",
"@types/hat": "^0.0.4",
"@types/react": "^18.2.9",
"babel-loader": "8.2.3",
@@ -58,8 +61,9 @@
"css-loader": "6.5.0",
"cssnano": "5.0.8",
"cssnano-preset-advanced": "5.1.4",
- "eslint": "7.32.0",
- "eslint-plugin-react": "7.26.1",
+ "eslint": "^9.12.0",
+ "eslint-plugin-react": "^7.37.1",
+ "globals": "^15.10.0",
"html-webpack-plugin": "5.5.0",
"jest": "27.3.1",
"less": "4.1.2",
@@ -70,6 +74,7 @@
"terser-webpack-plugin": "5.2.4",
"ts-loader": "^9.5.1",
"typescript": "^5.4.2",
+ "typescript-eslint": "^8.8.0",
"webpack": "5.61.0",
"webpack-cli": "4.9.1",
"webpack-dev-server": "^4.7.4",
diff --git a/src/common/Chips/Chip/Chip.tsx b/src/common/Chips/Chip/Chip.tsx
index 403d198af..e3a7fa849 100644
--- a/src/common/Chips/Chip/Chip.tsx
+++ b/src/common/Chips/Chip/Chip.tsx
@@ -42,4 +42,4 @@ const Chip = memo(({ label, value, active, onSelect }: Props) => {
);
});
-export default Chip;
\ No newline at end of file
+export default Chip;
diff --git a/src/common/Chips/Chip/index.ts b/src/common/Chips/Chip/index.ts
index 9713aecaa..f540cf064 100644
--- a/src/common/Chips/Chip/index.ts
+++ b/src/common/Chips/Chip/index.ts
@@ -1,4 +1,4 @@
// Copyright (C) 2017-2024 Smart code 203358507
import Chip from './Chip';
-export default Chip;
\ No newline at end of file
+export default Chip;
diff --git a/src/common/Chips/Chips.tsx b/src/common/Chips/Chips.tsx
index 4e02c620f..8804775b0 100644
--- a/src/common/Chips/Chips.tsx
+++ b/src/common/Chips/Chips.tsx
@@ -53,4 +53,4 @@ const Chips = memo(({ options, selected, onSelect }: Props) => {
);
});
-export default Chips;
\ No newline at end of file
+export default Chips;
diff --git a/src/common/Chips/index.ts b/src/common/Chips/index.ts
index 883af30d1..b92e80c79 100644
--- a/src/common/Chips/index.ts
+++ b/src/common/Chips/index.ts
@@ -1,4 +1,4 @@
// Copyright (C) 2017-2024 Smart code 203358507
import Chips from './Chips';
-export default Chips;
\ No newline at end of file
+export default Chips;
diff --git a/src/common/CoreSuspender.js b/src/common/CoreSuspender.js
index a9e666b58..d225d5411 100644
--- a/src/common/CoreSuspender.js
+++ b/src/common/CoreSuspender.js
@@ -37,6 +37,7 @@ const useCoreSuspender = () => {
return React.useContext(CoreSuspenderContext);
};
+// eslint-disable-next-line @typescript-eslint/no-empty-function
const withCoreSuspender = (Component, Fallback = () => { }) => {
return function withCoreSuspender(props) {
const { core } = useServices();
diff --git a/src/common/DelayedRenderer/DelayedRenderer.js b/src/common/DelayedRenderer/DelayedRenderer.js
index cbf976ddb..940bc96bd 100644
--- a/src/common/DelayedRenderer/DelayedRenderer.js
+++ b/src/common/DelayedRenderer/DelayedRenderer.js
@@ -17,7 +17,8 @@ const DelayedRenderer = ({ children, delay }) => {
};
DelayedRenderer.propTypes = {
- children: PropTypes.node
+ children: PropTypes.node,
+ delay: PropTypes.number,
};
module.exports = DelayedRenderer;
diff --git a/src/common/MultiselectMenu/Dropdown/Dropdown.tsx b/src/common/MultiselectMenu/Dropdown/Dropdown.tsx
index 9f82106d1..cb7de76c2 100644
--- a/src/common/MultiselectMenu/Dropdown/Dropdown.tsx
+++ b/src/common/MultiselectMenu/Dropdown/Dropdown.tsx
@@ -32,7 +32,7 @@ const Dropdown = ({ level, setLevel, options, onSelect, selectedOption, menuOpen
{t('BACK')}
- : null
+ : null
}
{
options
@@ -46,10 +46,9 @@ const Dropdown = ({ level, setLevel, options, onSelect, selectedOption, menuOpen
/>
))
-
}
);
};
-export default Dropdown;
\ No newline at end of file
+export default Dropdown;
diff --git a/src/common/MultiselectMenu/Dropdown/Option/Option.tsx b/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
index c7dbb4ebb..13ea37bd5 100644
--- a/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
+++ b/src/common/MultiselectMenu/Dropdown/Option/Option.tsx
@@ -43,4 +43,4 @@ const Option = ({ option, selectedOption, onSelect }: Props) => {
);
};
-export default Option;
\ No newline at end of file
+export default Option;
diff --git a/src/common/MultiselectMenu/Dropdown/Option/index.ts b/src/common/MultiselectMenu/Dropdown/Option/index.ts
index 6004f7754..fee9da7be 100644
--- a/src/common/MultiselectMenu/Dropdown/Option/index.ts
+++ b/src/common/MultiselectMenu/Dropdown/Option/index.ts
@@ -2,4 +2,4 @@
import Option from './Option';
-export default Option;
\ No newline at end of file
+export default Option;
diff --git a/src/common/MultiselectMenu/Dropdown/index.ts b/src/common/MultiselectMenu/Dropdown/index.ts
index ce3622a25..52d853721 100644
--- a/src/common/MultiselectMenu/Dropdown/index.ts
+++ b/src/common/MultiselectMenu/Dropdown/index.ts
@@ -2,4 +2,4 @@
import Dropdown from './Dropdown';
-export default Dropdown;
\ No newline at end of file
+export default Dropdown;
diff --git a/src/common/MultiselectMenu/MultiselectMenu.tsx b/src/common/MultiselectMenu/MultiselectMenu.tsx
index 2bd298752..df4208c4c 100644
--- a/src/common/MultiselectMenu/MultiselectMenu.tsx
+++ b/src/common/MultiselectMenu/MultiselectMenu.tsx
@@ -25,7 +25,7 @@ const MultiselectMenu = ({ className, title, options, selectedOption, onSelect }
const onOptionSelect = (value: number) => {
level ? setLevel(level + 1) : onSelect(value), closeMenu();
};
-
+
return (
- : null
+ : null
}
);
};
-export default MultiselectMenu;
\ No newline at end of file
+export default MultiselectMenu;
diff --git a/src/common/MultiselectMenu/index.ts b/src/common/MultiselectMenu/index.ts
index e526218cd..0d7c60413 100644
--- a/src/common/MultiselectMenu/index.ts
+++ b/src/common/MultiselectMenu/index.ts
@@ -2,4 +2,4 @@
import MultiselectMenu from './MultiselectMenu';
-export default MultiselectMenu;
\ No newline at end of file
+export default MultiselectMenu;
diff --git a/src/common/MultiselectMenu/types.d.ts b/src/common/MultiselectMenu/types.d.ts
index 7ed039ddd..b59d699b6 100644
--- a/src/common/MultiselectMenu/types.d.ts
+++ b/src/common/MultiselectMenu/types.d.ts
@@ -6,4 +6,4 @@ type MultiselectMenuOption = {
default?: boolean;
hidden?: boolean;
level?: MultiselectMenuOption[];
-};
\ No newline at end of file
+};
diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/useLocalSearch.d.ts b/src/common/NavBar/HorizontalNavBar/SearchBar/useLocalSearch.d.ts
index 1812b96f9..c86a2a6b8 100644
--- a/src/common/NavBar/HorizontalNavBar/SearchBar/useLocalSearch.d.ts
+++ b/src/common/NavBar/HorizontalNavBar/SearchBar/useLocalSearch.d.ts
@@ -1,2 +1,2 @@
declare const useLocalSearch: () => { items: LocalSearchItem[], search: (query: string) => void };
-export = useLocalSearch;
\ No newline at end of file
+export = useLocalSearch;
diff --git a/src/common/NavBar/HorizontalNavBar/SearchBar/useSearchHistory.d.ts b/src/common/NavBar/HorizontalNavBar/SearchBar/useSearchHistory.d.ts
index 6beedfc66..def3eb255 100644
--- a/src/common/NavBar/HorizontalNavBar/SearchBar/useSearchHistory.d.ts
+++ b/src/common/NavBar/HorizontalNavBar/SearchBar/useSearchHistory.d.ts
@@ -1,2 +1,2 @@
declare const useSearchHistory: () => { items: SearchHistory, clear: () => void };
-export = useSearchHistory;
\ No newline at end of file
+export = useSearchHistory;
diff --git a/src/common/Platform/Platform.tsx b/src/common/Platform/Platform.tsx
index 69ff3e8c3..2cd1932c5 100644
--- a/src/common/Platform/Platform.tsx
+++ b/src/common/Platform/Platform.tsx
@@ -45,7 +45,7 @@ const usePlatform = () => {
return useContext(PlatformContext);
};
-export {
+export {
PlatformProvider,
usePlatform
};
diff --git a/src/common/Platform/device.ts b/src/common/Platform/device.ts
index 68ca72b32..dda45f795 100644
--- a/src/common/Platform/device.ts
+++ b/src/common/Platform/device.ts
@@ -28,4 +28,4 @@ const isMobile = ['ios', 'android'].includes(name);
export {
name,
isMobile,
-};
\ No newline at end of file
+};
diff --git a/src/common/Platform/index.ts b/src/common/Platform/index.ts
index 8d2b68f12..f6cb22c9c 100644
--- a/src/common/Platform/index.ts
+++ b/src/common/Platform/index.ts
@@ -2,4 +2,4 @@ import { PlatformProvider, usePlatform } from './Platform';
export {
PlatformProvider,
usePlatform,
-};
\ No newline at end of file
+};
diff --git a/src/common/Platform/useShell.ts b/src/common/Platform/useShell.ts
index aaf5a028e..5e61bfe84 100644
--- a/src/common/Platform/useShell.ts
+++ b/src/common/Platform/useShell.ts
@@ -19,4 +19,4 @@ const useShell = () => {
};
};
-export default useShell;
\ No newline at end of file
+export default useShell;
diff --git a/src/common/Toast/ToastContext.js b/src/common/Toast/ToastContext.js
index 152cbf675..6a5ede356 100644
--- a/src/common/Toast/ToastContext.js
+++ b/src/common/Toast/ToastContext.js
@@ -1,5 +1,7 @@
// Copyright (C) 2017-2023 Smart code 203358507
+/* eslint-disable @typescript-eslint/no-empty-function */
+
const React = require('react');
const ToastContext = React.createContext({
diff --git a/src/common/useNotifications.d.ts b/src/common/useNotifications.d.ts
index 7a6943654..e3cae5b81 100644
--- a/src/common/useNotifications.d.ts
+++ b/src/common/useNotifications.d.ts
@@ -1,2 +1,2 @@
declare const useNotifcations: () => Notifications;
-export = useNotifcations;
\ No newline at end of file
+export = useNotifcations;
diff --git a/src/common/useOutsideClick.ts b/src/common/useOutsideClick.ts
index 815132924..182cf8e37 100644
--- a/src/common/useOutsideClick.ts
+++ b/src/common/useOutsideClick.ts
@@ -24,4 +24,4 @@ const useOutsideClick = (callback: () => void) => {
return ref;
};
-export default useOutsideClick;
\ No newline at end of file
+export default useOutsideClick;
diff --git a/src/common/useProfile.d.ts b/src/common/useProfile.d.ts
index be5aed774..9cdea8a00 100644
--- a/src/common/useProfile.d.ts
+++ b/src/common/useProfile.d.ts
@@ -1,2 +1,2 @@
declare const useProfile: () => Profile;
-export = useProfile;
\ No newline at end of file
+export = useProfile;
diff --git a/src/common/useStreamingServer.d.ts b/src/common/useStreamingServer.d.ts
index 76d3167de..146c1500b 100644
--- a/src/common/useStreamingServer.d.ts
+++ b/src/common/useStreamingServer.d.ts
@@ -1,2 +1,2 @@
declare const useStreamingServer: () => StreamingServer;
-export = useStreamingServer;
\ No newline at end of file
+export = useStreamingServer;
diff --git a/src/modules.d.ts b/src/modules.d.ts
index 70ebbd3fc..d2e09c121 100644
--- a/src/modules.d.ts
+++ b/src/modules.d.ts
@@ -1,3 +1,3 @@
declare module '*.less';
declare module 'stremio/common';
-declare module 'stremio/common/*';
\ No newline at end of file
+declare module 'stremio/common/*';
diff --git a/src/routes/Addons/useInstalledAddons.d.ts b/src/routes/Addons/useInstalledAddons.d.ts
index 72120dad4..7298b9895 100644
--- a/src/routes/Addons/useInstalledAddons.d.ts
+++ b/src/routes/Addons/useInstalledAddons.d.ts
@@ -1,2 +1,2 @@
declare const useInstalledAddons: (urlParams: UrlParams) => InstalledAddons;
-export = useInstalledAddons;
\ No newline at end of file
+export = useInstalledAddons;
diff --git a/src/routes/Addons/useRemoteAddons.d.ts b/src/routes/Addons/useRemoteAddons.d.ts
index 520f53d60..854edcf15 100644
--- a/src/routes/Addons/useRemoteAddons.d.ts
+++ b/src/routes/Addons/useRemoteAddons.d.ts
@@ -1,2 +1,2 @@
declare const useRemoteAddons: (urlParams: UrlParams) => RemoteAddons;
-export = useRemoteAddons;
\ No newline at end of file
+export = useRemoteAddons;
diff --git a/src/routes/Board/useBoard.d.ts b/src/routes/Board/useBoard.d.ts
index c0fe06d3c..e15070dd9 100644
--- a/src/routes/Board/useBoard.d.ts
+++ b/src/routes/Board/useBoard.d.ts
@@ -1,2 +1,2 @@
declare const useBoard: () => [Board, ({ start, end }: { start: number, end: number }) => void];
-export = useBoard;
\ No newline at end of file
+export = useBoard;
diff --git a/src/routes/Discover/useDiscover.d.ts b/src/routes/Discover/useDiscover.d.ts
index 3fbd7a512..0748c8d27 100644
--- a/src/routes/Discover/useDiscover.d.ts
+++ b/src/routes/Discover/useDiscover.d.ts
@@ -1,2 +1,2 @@
declare const useDiscover: (urlParams: UrlParams, searchParams: URLSearchParams) => [Discover, () => void];
-export = useDiscover;
\ No newline at end of file
+export = useDiscover;
diff --git a/src/routes/Library/useLibrary.d.ts b/src/routes/Library/useLibrary.d.ts
index f197b0820..dd440918e 100644
--- a/src/routes/Library/useLibrary.d.ts
+++ b/src/routes/Library/useLibrary.d.ts
@@ -1,2 +1,2 @@
declare const useLibrary: (model: string, urlParams: UrlParams, searchParams: URLSearchParams) => Library;
-export = useLibrary;
\ No newline at end of file
+export = useLibrary;
diff --git a/src/routes/MetaDetails/useMetaDetails.d.ts b/src/routes/MetaDetails/useMetaDetails.d.ts
index 5146bed99..e2215194c 100644
--- a/src/routes/MetaDetails/useMetaDetails.d.ts
+++ b/src/routes/MetaDetails/useMetaDetails.d.ts
@@ -1,2 +1,2 @@
declare const useMetaDetails: (urlParams: UrlParams) => MetaDetails;
-export = useMetaDetails;
\ No newline at end of file
+export = useMetaDetails;
diff --git a/src/routes/Player/usePlayer.d.ts b/src/routes/Player/usePlayer.d.ts
index 8580583f3..28beeeabd 100644
--- a/src/routes/Player/usePlayer.d.ts
+++ b/src/routes/Player/usePlayer.d.ts
@@ -1,2 +1,2 @@
declare const usePlayer: (urlParams: UrlParams, videoParams: any) => [Player, (time: number, duration: number, device: string) => void, (paused: boolean) => void, () => void, () => void];
-export = usePlayer;
\ No newline at end of file
+export = usePlayer;
diff --git a/src/routes/Player/useSettings.d.ts b/src/routes/Player/useSettings.d.ts
index 688445b1f..e3daf32cd 100644
--- a/src/routes/Player/useSettings.d.ts
+++ b/src/routes/Player/useSettings.d.ts
@@ -1,2 +1,2 @@
declare const useSettings: () => [Settings, (settings: any) => void];
-export = useSettings;
\ No newline at end of file
+export = useSettings;
diff --git a/src/routes/Search/useSearch.d.ts b/src/routes/Search/useSearch.d.ts
index 156cacbbf..dd8e77ef6 100644
--- a/src/routes/Search/useSearch.d.ts
+++ b/src/routes/Search/useSearch.d.ts
@@ -1,2 +1,2 @@
declare const useSearch: (searchParams: URLSearchParams) => [Search, (range: number) => void];
-export = useSearch;
\ No newline at end of file
+export = useSearch;
diff --git a/src/services/Core/Core.d.ts b/src/services/Core/Core.d.ts
index e9cfdef5b..ab03f3b1d 100644
--- a/src/services/Core/Core.d.ts
+++ b/src/services/Core/Core.d.ts
@@ -1,2 +1,2 @@
declare function Core(): Core;
-export = Core;
\ No newline at end of file
+export = Core;
diff --git a/src/services/Core/CoreTransport.d.ts b/src/services/Core/CoreTransport.d.ts
index ef9b606ca..8a58f7451 100644
--- a/src/services/Core/CoreTransport.d.ts
+++ b/src/services/Core/CoreTransport.d.ts
@@ -1,2 +1,2 @@
declare function CoreTransport(): CoreTransport;
-export = CoreTransport;
\ No newline at end of file
+export = CoreTransport;
diff --git a/src/services/Core/globals.d.ts b/src/services/Core/globals.d.ts
index ca2680a0e..dd7e39e4b 100644
--- a/src/services/Core/globals.d.ts
+++ b/src/services/Core/globals.d.ts
@@ -9,4 +9,4 @@ declare global {
}
}
-export {};
\ No newline at end of file
+export {};
diff --git a/src/services/Core/types.d.ts b/src/services/Core/types.d.ts
index 73875adf9..7e4249ac8 100644
--- a/src/services/Core/types.d.ts
+++ b/src/services/Core/types.d.ts
@@ -25,4 +25,4 @@ interface CoreTransport {
interface Core {
active: boolean,
transport: CoreTransport,
-}
\ No newline at end of file
+}
diff --git a/src/services/DragAndDrop/DragAndDrop.js b/src/services/DragAndDrop/DragAndDrop.js
index 477362bb5..bc54e2f35 100644
--- a/src/services/DragAndDrop/DragAndDrop.js
+++ b/src/services/DragAndDrop/DragAndDrop.js
@@ -25,7 +25,7 @@ function DragAndDrop({ core }) {
args: Array.from(new Uint8Array(torrent))
}
});
- } catch (error) {
+ } catch (_error) {
events.emit('error', {
message: 'Failed to process file',
file: {
diff --git a/src/services/ServicesContext/types.d.ts b/src/services/ServicesContext/types.d.ts
index 48a599ea2..432155719 100644
--- a/src/services/ServicesContext/types.d.ts
+++ b/src/services/ServicesContext/types.d.ts
@@ -4,4 +4,4 @@ type ServicesContext = {
chromecast: any,
keyboardShortcuts: any,
dragAndDrop: any,
-};
\ No newline at end of file
+};
diff --git a/src/services/ServicesContext/useServices.d.ts b/src/services/ServicesContext/useServices.d.ts
index bd4199743..710be6d01 100644
--- a/src/services/ServicesContext/useServices.d.ts
+++ b/src/services/ServicesContext/useServices.d.ts
@@ -1,2 +1,2 @@
declare const useService: () => ServicesContext;
-export = useService;
\ No newline at end of file
+export = useService;
diff --git a/src/services/Shell/ShellTransport.js b/src/services/Shell/ShellTransport.js
index 4fba3ac08..c70e28008 100644
--- a/src/services/Shell/ShellTransport.js
+++ b/src/services/Shell/ShellTransport.js
@@ -45,6 +45,7 @@ function ShellTransport() {
this.props = {};
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
const shell = this;
initialize()
.then(() => {
diff --git a/src/types/Addon.d.ts b/src/types/Addon.d.ts
index 880ff2ca8..9274dd8b7 100644
--- a/src/types/Addon.d.ts
+++ b/src/types/Addon.d.ts
@@ -17,4 +17,4 @@ type Addon = {
type AddonsDeepLinks = {
addons: string,
-};
\ No newline at end of file
+};
diff --git a/src/types/LibraryItem.d.ts b/src/types/LibraryItem.d.ts
index 69a42c8a4..4981e1191 100644
--- a/src/types/LibraryItem.d.ts
+++ b/src/types/LibraryItem.d.ts
@@ -31,4 +31,4 @@ type LibraryItemDeepLinks = {
metaDetailsStreams: string | null,
player: string | null,
externalPlayer: ExternalPlayerLinks | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/MetaItem.d.ts b/src/types/MetaItem.d.ts
index ae7e2fe55..1eac35151 100644
--- a/src/types/MetaItem.d.ts
+++ b/src/types/MetaItem.d.ts
@@ -29,4 +29,4 @@ type MetaItemDeepLinks = {
metaDetailsVideos: string | null,
metaDetailsStreams: string | null,
player: string | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/Selectable.d.ts b/src/types/Selectable.d.ts
index 36d4be598..cbabdd697 100644
--- a/src/types/Selectable.d.ts
+++ b/src/types/Selectable.d.ts
@@ -24,4 +24,4 @@ type SelectableCatalog
= {
name: string,
selected: boolean,
deepLinks: T,
-};
\ No newline at end of file
+};
diff --git a/src/types/Stream.d.ts b/src/types/Stream.d.ts
index 9d9cdebf3..2400c9725 100644
--- a/src/types/Stream.d.ts
+++ b/src/types/Stream.d.ts
@@ -15,4 +15,4 @@ type Stream = {
player: string,
externalPlayer: ExternalPlayerLinks,
},
-};
\ No newline at end of file
+};
diff --git a/src/types/Video.d.ts b/src/types/Video.d.ts
index 645fa2a4c..92bc704f5 100644
--- a/src/types/Video.d.ts
+++ b/src/types/Video.d.ts
@@ -14,4 +14,4 @@ type Video = {
episode?: number,
streams: Stream[],
trailerStreams: TrailerStream[],
-};
\ No newline at end of file
+};
diff --git a/src/types/global.d.ts b/src/types/global.d.ts
index 97da1d705..5effeffd4 100644
--- a/src/types/global.d.ts
+++ b/src/types/global.d.ts
@@ -1,3 +1,5 @@
+/* eslint-disable no-var */
+
interface QtTransport {
send: (message: string) => void,
}
@@ -10,4 +12,4 @@ declare global {
var qt: Qt | undefined;
}
-export { };
\ No newline at end of file
+export { };
diff --git a/src/types/models/Board.d.ts b/src/types/models/Board.d.ts
index f03046102..4c9445e3a 100644
--- a/src/types/models/Board.d.ts
+++ b/src/types/models/Board.d.ts
@@ -1 +1 @@
-type Board = CatalogsWithExtra;
\ No newline at end of file
+type Board = CatalogsWithExtra;
diff --git a/src/types/models/CatalogsWithExtra.d.ts b/src/types/models/CatalogsWithExtra.d.ts
index 7a8a4efad..7931dc4b7 100644
--- a/src/types/models/CatalogsWithExtra.d.ts
+++ b/src/types/models/CatalogsWithExtra.d.ts
@@ -8,4 +8,4 @@ type CatalogsWithExtra = {
type: string | null,
extra: [string, string][]
} | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/Ctx.d.ts b/src/types/models/Ctx.d.ts
index 74f770698..33da9f366 100644
--- a/src/types/models/Ctx.d.ts
+++ b/src/types/models/Ctx.d.ts
@@ -71,4 +71,4 @@ type Ctx = {
profile: Profile,
notifications: Notifications,
searchHistory: SearchHistory,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/Discover.d.ts b/src/types/models/Discover.d.ts
index 7c7d8d614..5f34c124e 100644
--- a/src/types/models/Discover.d.ts
+++ b/src/types/models/Discover.d.ts
@@ -23,4 +23,4 @@ type Discover = {
selected: {
request: ResourceRequest,
} | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/InstalledAddons.d.ts b/src/types/models/InstalledAddons.d.ts
index 0bce5cff8..d31f70829 100644
--- a/src/types/models/InstalledAddons.d.ts
+++ b/src/types/models/InstalledAddons.d.ts
@@ -9,4 +9,4 @@ type InstalledAddons = {
type: string,
}
} | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/Library.d.ts b/src/types/models/Library.d.ts
index 6599c2ccf..ffb693824 100644
--- a/src/types/models/Library.d.ts
+++ b/src/types/models/Library.d.ts
@@ -26,4 +26,4 @@ type Library = {
type: string | null,
}
} | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/LocalSearch.d.ts b/src/types/models/LocalSearch.d.ts
index 9862ebcd6..720173c0c 100644
--- a/src/types/models/LocalSearch.d.ts
+++ b/src/types/models/LocalSearch.d.ts
@@ -7,4 +7,4 @@ type LocalSearchItem = {
type LocalSearch = {
items: LocalSearchItem[],
-};
\ No newline at end of file
+};
diff --git a/src/types/models/MetaDetails.d.ts b/src/types/models/MetaDetails.d.ts
index efa7efc33..c7eeafb1b 100644
--- a/src/types/models/MetaDetails.d.ts
+++ b/src/types/models/MetaDetails.d.ts
@@ -24,4 +24,4 @@ type MetaDetails = {
content: Loadable
}[],
title: string | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/Player.d.ts b/src/types/models/Player.d.ts
index 3dff6e3ec..6664e83f5 100644
--- a/src/types/models/Player.d.ts
+++ b/src/types/models/Player.d.ts
@@ -42,4 +42,4 @@ type Player = {
} | null,
subtitles: Subtitle[],
title: string | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/RemoteAddons.d.ts b/src/types/models/RemoteAddons.d.ts
index 9c046e885..d745a5f15 100644
--- a/src/types/models/RemoteAddons.d.ts
+++ b/src/types/models/RemoteAddons.d.ts
@@ -7,4 +7,4 @@ type RemoteAddons = {
selected: {
request: ResourceRequest,
} | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/models/Search.d.ts b/src/types/models/Search.d.ts
index b9c91ba67..5859b1633 100644
--- a/src/types/models/Search.d.ts
+++ b/src/types/models/Search.d.ts
@@ -1 +1 @@
-type Search = CatalogsWithExtra;
\ No newline at end of file
+type Search = CatalogsWithExtra;
diff --git a/src/types/models/StremingServer.d.ts b/src/types/models/StremingServer.d.ts
index f44563d9b..68b7d6d42 100644
--- a/src/types/models/StremingServer.d.ts
+++ b/src/types/models/StremingServer.d.ts
@@ -115,4 +115,4 @@ type StreamingServer = {
torrent: [string, Loadable] | null,
statistics: Loadable | null,
playbackDevices: Loadable | null,
-};
\ No newline at end of file
+};
diff --git a/src/types/types.d.ts b/src/types/types.d.ts
index 18c769a07..8b7a627b6 100644
--- a/src/types/types.d.ts
+++ b/src/types/types.d.ts
@@ -51,7 +51,7 @@ type BehaviorHints = {
hasScheduledVideos: boolean,
};
-type PosterShape = 'square' | 'landscape' | 'poster' | null;
+type PosterShape = 'square' | 'landscape' | 'poster' | null;
type Catalog = {
label?: string,
@@ -60,4 +60,4 @@ type Catalog = {
content: T,
installed?: boolean,
deepLinks?: D,
-};
\ No newline at end of file
+};
diff --git a/webpack.config.js b/webpack.config.js
index 8f62fa021..8e6cac439 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -194,7 +194,7 @@ module.exports = (env, argv) => ({
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: ['*']
}),
- argv.mode === 'production' &&
+ argv.mode === 'production' &&
new WorkboxPlugin.GenerateSW({
maximumFileSizeToCacheInBytes: 20000000,
clientsClaim: true,
From 401911dd5b07d7cae3aa8e5fcc567633dcef5372 Mon Sep 17 00:00:00 2001
From: Tim
Date: Mon, 7 Oct 2024 13:43:53 +0200
Subject: [PATCH 79/94] fix: lint
---
src/common/useBinaryState.d.ts | 2 +-
src/modules.d.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/common/useBinaryState.d.ts b/src/common/useBinaryState.d.ts
index c61a28712..7a0185109 100644
--- a/src/common/useBinaryState.d.ts
+++ b/src/common/useBinaryState.d.ts
@@ -5,4 +5,4 @@ declare const useBinaryState: (initialValue?: boolean) => [
() => void,
];
-export = useBinaryState;
\ No newline at end of file
+export = useBinaryState;
diff --git a/src/modules.d.ts b/src/modules.d.ts
index 9b680c72c..66f93be4c 100644
--- a/src/modules.d.ts
+++ b/src/modules.d.ts
@@ -1,5 +1,5 @@
declare module '*.less' {
- const resource: { [key: string]: string };
+ const resource: Record;
export = resource;
}
From 59ec8326036346e620ed5205cb60adb36f09b4b9 Mon Sep 17 00:00:00 2001
From: Tim
Date: Mon, 7 Oct 2024 14:21:55 +0200
Subject: [PATCH 80/94] 5.0.0-beta.12
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e48fb0f8c..46eb25c54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "stremio",
- "version": "5.0.0-beta.10",
+ "version": "5.0.0-beta.12",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "stremio",
- "version": "5.0.0-beta.10",
+ "version": "5.0.0-beta.12",
"license": "gpl-2.0",
"dependencies": {
"@babel/runtime": "7.16.0",
diff --git a/package.json b/package.json
index 910f236a7..b3e1e8086 100755
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "stremio",
"displayName": "Stremio",
- "version": "5.0.0-beta.10",
+ "version": "5.0.0-beta.12",
"author": "Smart Code OOD",
"private": true,
"license": "gpl-2.0",
From 5f9b4ab0e24de085fb4a4dafac107d5bf11570b7 Mon Sep 17 00:00:00 2001
From: Tim
Date: Tue, 8 Oct 2024 14:32:23 +0200
Subject: [PATCH 81/94] fix(Platform): macos detection
---
src/common/Platform/device.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/Platform/device.ts b/src/common/Platform/device.ts
index dda45f795..dfb5aa690 100644
--- a/src/common/Platform/device.ts
+++ b/src/common/Platform/device.ts
@@ -17,7 +17,7 @@ const isIOS = APPLE_MOBILE_DEVICES.includes(platform) || (userAgent.includes('Ma
// Edge case: iPad is included in this function
// Keep in mind maxTouchPoints for Vision Pro might change in the future
-const isVisionOS = userAgent.includes('Macintosh') || maxTouchPoints === 5;
+const isVisionOS = userAgent.includes('Macintosh') && maxTouchPoints === 5;
const bowser = Bowser.getParser(userAgent);
const os = bowser.getOSName().toLowerCase();
From a532d48bf52841498a53504043ead08043ad71c1 Mon Sep 17 00:00:00 2001
From: Tim
Date: Tue, 22 Oct 2024 16:31:41 +0200
Subject: [PATCH 82/94] chore: add eslint semi rules
---
eslint.config.mjs | 4 +++-
src/types/MetaItem.d.ts | 2 +-
src/types/models/Ctx.d.ts | 2 +-
src/types/models/StremingServer.d.ts | 10 +++++-----
4 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/eslint.config.mjs b/eslint.config.mjs
index acb2014cd..33e314ea6 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -2,7 +2,7 @@ import globals from 'globals';
import pluginJs from '@eslint/js';
import tseslint from 'typescript-eslint';
import pluginReact from 'eslint-plugin-react';
-import stylistic from '@stylistic/eslint-plugin'
+import stylistic from '@stylistic/eslint-plugin';
export default [
pluginJs.configs.recommended,
@@ -83,6 +83,8 @@ export default [
'@stylistic/space-before-blocks': 'error',
'@stylistic/no-trailing-spaces': 'error',
'@stylistic/func-call-spacing': 'error',
+ '@stylistic/semi': 'error',
+ '@stylistic/no-extra-semi': 'error',
'@stylistic/eol-last': 'error',
'@stylistic/no-multi-spaces': 'error',
'@stylistic/no-multiple-empty-lines': ['error', {
diff --git a/src/types/MetaItem.d.ts b/src/types/MetaItem.d.ts
index 1eac35151..0d692a580 100644
--- a/src/types/MetaItem.d.ts
+++ b/src/types/MetaItem.d.ts
@@ -23,7 +23,7 @@ type MetaItemPreview = {
type MetaItem = MetaItemPreview & {
videos: Video[],
-}
+};
type MetaItemDeepLinks = {
metaDetailsVideos: string | null,
diff --git a/src/types/models/Ctx.d.ts b/src/types/models/Ctx.d.ts
index 33da9f366..fbb6caee4 100644
--- a/src/types/models/Ctx.d.ts
+++ b/src/types/models/Ctx.d.ts
@@ -56,7 +56,7 @@ type NotificationItem = {
metaId: string,
videoId: string,
videoReleased: string,
-}
+};
type SearchHistoryItem = {
query: string,
diff --git a/src/types/models/StremingServer.d.ts b/src/types/models/StremingServer.d.ts
index 68b7d6d42..d344755d6 100644
--- a/src/types/models/StremingServer.d.ts
+++ b/src/types/models/StremingServer.d.ts
@@ -38,23 +38,23 @@ type Source = {
numFoundUniq: number,
numRequests: number,
url: string,
-}
+};
type Growler = {
flood: number,
pulse: number,
-}
+};
type PeerSearch = {
max: number,
min: number,
sources: string[],
-}
+};
type SwarmCap = {
maxSpeed: number,
minPeers: number,
-}
+};
type Options = {
connections: number,
@@ -67,7 +67,7 @@ type Options = {
timeout: number,
tracker: boolean,
virtual: boolean,
-}
+};
type Statistics = {
name: string,
From bb02ab8d543151324e2799f0659a14a8c5512a83 Mon Sep 17 00:00:00 2001
From: Alexandru Branza
Date: Fri, 25 Oct 2024 15:58:58 +0300
Subject: [PATCH 83/94] Fix Backward Support for Older Browsers
---
src/common/useTranslate.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/useTranslate.js b/src/common/useTranslate.js
index 459025f46..7214a4a1e 100644
--- a/src/common/useTranslate.js
+++ b/src/common/useTranslate.js
@@ -19,7 +19,7 @@ const useTranslate = () => {
const catalogTitle = useCallback(({ addon, id, name, type } = {}, withType = true) => {
if (addon && id && name) {
- const partialKey = `${addon.manifest.id.replaceAll('.', '_')}_${id}`;
+ const partialKey = `${addon.manifest.id.split('.').join('_')}_${id}`;
const translatedName = stringWithPrefix(partialKey, 'CATALOG_', name);
if (type && withType) {
From 4bfb28382ec2bf63574f9ca32bf20e1383099417 Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Wed, 30 Oct 2024 10:20:13 +0200
Subject: [PATCH 84/94] fix: upcoming label removed when video watched
---
src/routes/MetaDetails/VideosList/Video/Video.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/MetaDetails/VideosList/Video/Video.js b/src/routes/MetaDetails/VideosList/Video/Video.js
index d0d2a4d6b..a9ef3be86 100644
--- a/src/routes/MetaDetails/VideosList/Video/Video.js
+++ b/src/routes/MetaDetails/VideosList/Video/Video.js
@@ -116,7 +116,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w
}
{
- upcoming ?
+ upcoming && !watched ?
From e8417074974250bc5c8613be8dac6aa46f432bad Mon Sep 17 00:00:00 2001
From: Tim
Date: Thu, 31 Oct 2024 10:04:35 +0100
Subject: [PATCH 85/94] 5.0.0-beta.13
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 46eb25c54..80030ab13 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "stremio",
- "version": "5.0.0-beta.12",
+ "version": "5.0.0-beta.13",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "stremio",
- "version": "5.0.0-beta.12",
+ "version": "5.0.0-beta.13",
"license": "gpl-2.0",
"dependencies": {
"@babel/runtime": "7.16.0",
diff --git a/package.json b/package.json
index b3e1e8086..f52b9ea0f 100755
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "stremio",
"displayName": "Stremio",
- "version": "5.0.0-beta.12",
+ "version": "5.0.0-beta.13",
"author": "Smart Code OOD",
"private": true,
"license": "gpl-2.0",
From be40252744fceb5b415ab002faf5d46c7fc9bffd Mon Sep 17 00:00:00 2001
From: cevznriny <57298997+cevznriny@users.noreply.github.com>
Date: Thu, 31 Oct 2024 10:56:10 +0100
Subject: [PATCH 86/94] img loading='lazy'
---
src/common/Image/Image.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/common/Image/Image.js b/src/common/Image/Image.js
index c962a8a91..33140504b 100644
--- a/src/common/Image/Image.js
+++ b/src/common/Image/Image.js
@@ -19,9 +19,9 @@ const Image = ({ className, src, alt, fallbackSrc, renderFallback, ...props }) =
typeof renderFallback === 'function' ?
renderFallback()
:
-
+
:
-
;
+
;
};
Image.propTypes = {
From d941da36cdfe5ac14910ed756d88bfbd829d191c Mon Sep 17 00:00:00 2001
From: heavy-baby <59328555+heavy-baby@users.noreply.github.com>
Date: Mon, 4 Nov 2024 14:30:14 +0900
Subject: [PATCH 87/94] Update interfaceLanguages.json
Added Japanese item.
---
src/common/interfaceLanguages.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/common/interfaceLanguages.json b/src/common/interfaceLanguages.json
index 235193f0d..7313e70c7 100644
--- a/src/common/interfaceLanguages.json
+++ b/src/common/interfaceLanguages.json
@@ -75,6 +75,10 @@
"name": "italiano",
"codes": ["it-IT", "ita"]
},
+ {
+ "name": "日本語 (にほんご)",
+ "codes": ["ja-JP", "jpn"]
+ },
{
"name": "македонски јазик",
"codes": ["mk-MK", "mkd"]
@@ -147,4 +151,4 @@
"name": "中文(台灣)",
"codes": ["zh-TW", "zho"]
}
-]
\ No newline at end of file
+]
From c9e116006d40961d899440956ec92dc221a7a5f4 Mon Sep 17 00:00:00 2001
From: Tim
Date: Mon, 4 Nov 2024 13:35:21 +0100
Subject: [PATCH 88/94] chore: add new interface languages
---
src/common/interfaceLanguages.json | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/common/interfaceLanguages.json b/src/common/interfaceLanguages.json
index 7313e70c7..d4eaa7f60 100644
--- a/src/common/interfaceLanguages.json
+++ b/src/common/interfaceLanguages.json
@@ -7,6 +7,10 @@
"name": "български език",
"codes": ["bg-BG", "bul"]
},
+ {
+ "name": "বাংলা",
+ "codes": ["bn-Bd", "ben"]
+ },
{
"name": "català",
"codes": ["ca-CA", "cat"]
@@ -79,6 +83,10 @@
"name": "日本語 (にほんご)",
"codes": ["ja-JP", "jpn"]
},
+ {
+ "name": "한국어",
+ "codes": ["ko-KR", "kor"]
+ },
{
"name": "македонски јазик",
"codes": ["mk-MK", "mkd"]
@@ -139,6 +147,10 @@
"name": "українська мова",
"codes": ["uk-UA", "ukr"]
},
+ {
+ "name": "Tiếng Việt",
+ "codes": ["vi-VN", "vie"]
+ },
{
"name": "中文(中华人民共和国)",
"codes": ["zh-CN", "zho"]
From e0342be6dc193f09d6c7f6d1e35f0cefb97cef6c Mon Sep 17 00:00:00 2001
From: Tim
Date: Mon, 4 Nov 2024 13:36:00 +0100
Subject: [PATCH 89/94] chore: update stremio-translations
---
package-lock.json | 7 ++++---
package.json | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 80030ab13..8dea6cb6a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -36,7 +36,7 @@
"react-i18next": "^12.1.1",
"react-is": "18.2.0",
"spatial-navigation-polyfill": "github:Stremio/spatial-navigation#64871b1422466f5f45d24ebc8bbd315b2ebab6a6",
- "stremio-translations": "github:Stremio/stremio-translations#378218c9617f3e763ba5f6755e4d39c1c158747d",
+ "stremio-translations": "github:Stremio/stremio-translations#57d66ecc8e2df4e73a613dc5e17123ce62ae63f7",
"url": "0.11.0",
"use-long-press": "^3.1.5"
},
@@ -13720,8 +13720,9 @@
},
"node_modules/stremio-translations": {
"version": "1.44.9",
- "resolved": "git+ssh://git@github.com/Stremio/stremio-translations.git#378218c9617f3e763ba5f6755e4d39c1c158747d",
- "integrity": "sha512-3GboN8JS2LgrdIVK/gW+n6r1kLrGG+D/tWkRv8PJo2mZLzh49HTzS2u7XXUSkNmA4AGUyEf8QRjyBhlOg8JNTQ=="
+ "resolved": "git+ssh://git@github.com/Stremio/stremio-translations.git#57d66ecc8e2df4e73a613dc5e17123ce62ae63f7",
+ "integrity": "sha512-Q3Q++Tx3quu71tgTfS8CEP6CajdGyig92SdtRyGMsLHHkgBgzP9ggYBUHVbKAfXcKUegABIkW8CxMueEw758Xg==",
+ "license": "MIT"
},
"node_modules/string_decoder": {
"version": "1.1.1",
diff --git a/package.json b/package.json
index f52b9ea0f..61052be4d 100755
--- a/package.json
+++ b/package.json
@@ -40,7 +40,7 @@
"react-i18next": "^12.1.1",
"react-is": "18.2.0",
"spatial-navigation-polyfill": "github:Stremio/spatial-navigation#64871b1422466f5f45d24ebc8bbd315b2ebab6a6",
- "stremio-translations": "github:Stremio/stremio-translations#378218c9617f3e763ba5f6755e4d39c1c158747d",
+ "stremio-translations": "github:Stremio/stremio-translations#57d66ecc8e2df4e73a613dc5e17123ce62ae63f7",
"url": "0.11.0",
"use-long-press": "^3.1.5"
},
From df1aa716d2abb4a2a95dd71b345fe2d7720b1397 Mon Sep 17 00:00:00 2001
From: Tim
Date: Tue, 5 Nov 2024 22:42:14 +0100
Subject: [PATCH 90/94] ci: prevent deploy for PRs from forks
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 08886cd03..973b6a625 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -37,7 +37,7 @@ jobs:
# "--parrents where no error if existing, make parent directories as needed."
- run: mkdir -p ./build/${{ github.head_ref || github.ref_name }}
- name: Deploy to GitHub Pages
- if: github.repository == 'Stremio/stremio-web' && github.actor != 'dependabot[bot]'
+ if: github.event.pull_request.head.repo.fork == false && github.actor != 'dependabot[bot]'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
From 38c72441c3d0cd287c466b47d000bb13a95f0f70 Mon Sep 17 00:00:00 2001
From: Vladimir Borisov
Date: Wed, 6 Nov 2024 10:38:17 +0200
Subject: [PATCH 91/94] chore: update stremio-video
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 8dea6cb6a..2966ee9c0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,7 @@
"@stremio/stremio-colors": "5.0.1",
"@stremio/stremio-core-web": "0.47.8",
"@stremio/stremio-icons": "5.2.0",
- "@stremio/stremio-video": "0.0.38",
+ "@stremio/stremio-video": "0.0.46",
"a-color-picker": "1.2.1",
"bowser": "2.11.0",
"buffer": "6.0.3",
@@ -3160,9 +3160,9 @@
"integrity": "sha512-rABlPBTFF17QcSm/4IizVoE/jh+REt+waqA0RvIxuGjQppXlvj7CalqVvTam0CC2wgY00zNG1v/9kVHUDVzo4Q=="
},
"node_modules/@stremio/stremio-video": {
- "version": "0.0.38",
- "resolved": "https://registry.npmjs.org/@stremio/stremio-video/-/stremio-video-0.0.38.tgz",
- "integrity": "sha512-ev9z3YdMcZAsTQjEwOLfqB9EI8GdbQzwSGMZIOLPR/7/Ce7BQIctwDnEtTLgPmCsRpYZsqOD1PiBwU9tiDHZ8w==",
+ "version": "0.0.46",
+ "resolved": "https://registry.npmjs.org/@stremio/stremio-video/-/stremio-video-0.0.46.tgz",
+ "integrity": "sha512-U15CGB6CrUZKq3IKcEouAEH2RQoLy2+BI/hDStEYEACxlRlFaavKPI2opl37muh9TY089RnZVBYAM3yDidBZdg==",
"dependencies": {
"buffer": "6.0.3",
"color": "4.2.3",
@@ -3174,7 +3174,7 @@
"magnet-uri": "6.2.0",
"url": "0.11.0",
"video-name-parser": "1.4.6",
- "vtt.js": "github:jaruba/vtt.js#e4f5f5603730866bacb174a93f51b734c9f29e6a"
+ "vtt.js": "github:jaruba/vtt.js#84d33d157848407d790d78423dacc41a096294f0"
}
},
"node_modules/@stylistic/eslint-plugin": {
@@ -14882,8 +14882,8 @@
},
"node_modules/vtt.js": {
"version": "0.13.0",
- "resolved": "git+ssh://git@github.com/jaruba/vtt.js.git#e4f5f5603730866bacb174a93f51b734c9f29e6a",
- "integrity": "sha512-RXV60lPGrmjuRcV/jRuydLC2thMaMlmK4Vc3DtBmVSotFA3986sgW0H5AH9IUmHzQo4bFR2gELYLcfwVh7Dqow==",
+ "resolved": "git+ssh://git@github.com/jaruba/vtt.js.git#84d33d157848407d790d78423dacc41a096294f0",
+ "integrity": "sha512-N/WeijIW9oiGmfqWdEcNqSblzfnXR8dfsBRNPIG9YYFhIBU0Y2c7w8Sfl0bDOZVhjA5qHbwoHx6SxDgRLiraTQ==",
"license": "Apache-2.0"
},
"node_modules/w3c-hr-time": {
diff --git a/package.json b/package.json
index 61052be4d..10da2944a 100755
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"@stremio/stremio-colors": "5.0.1",
"@stremio/stremio-core-web": "0.47.8",
"@stremio/stremio-icons": "5.2.0",
- "@stremio/stremio-video": "0.0.38",
+ "@stremio/stremio-video": "0.0.46",
"a-color-picker": "1.2.1",
"bowser": "2.11.0",
"buffer": "6.0.3",
From e095ca1e5c700c32f8abbfc230eb0a3375f97f50 Mon Sep 17 00:00:00 2001
From: Gater73
Date: Mon, 11 Nov 2024 23:48:43 -0300
Subject: [PATCH 92/94] Update CONSTANTS.js
Add x.com as a white listed domain
---
src/common/CONSTANTS.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/CONSTANTS.js b/src/common/CONSTANTS.js
index c08cf471d..af8426600 100644
--- a/src/common/CONSTANTS.js
+++ b/src/common/CONSTANTS.js
@@ -93,7 +93,7 @@ const EXTERNAL_PLAYERS = [
},
];
-const WHITELISTED_HOSTS = ['stremio.com', 'strem.io', 'stremio.zendesk.com', 'google.com', 'youtube.com', 'twitch.tv', 'twitter.com', 'netflix.com', 'adex.network', 'amazon.com', 'forms.gle'];
+const WHITELISTED_HOSTS = ['stremio.com', 'strem.io', 'stremio.zendesk.com', 'google.com', 'youtube.com', 'twitch.tv', 'twitter.com', 'x.com', 'netflix.com', 'adex.network', 'amazon.com', 'forms.gle'];
module.exports = {
CHROMECAST_RECEIVER_APP_ID,
From feb6746c90910cd81d9f2959de4e04fab3a2c81e Mon Sep 17 00:00:00 2001
From: "Timothy Z."
Date: Sat, 16 Nov 2024 22:27:42 +0200
Subject: [PATCH 93/94] fix: modal dialog styles issues
---
src/common/ModalDialog/styles.less | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/common/ModalDialog/styles.less b/src/common/ModalDialog/styles.less
index 9aafca16a..32605d341 100644
--- a/src/common/ModalDialog/styles.less
+++ b/src/common/ModalDialog/styles.less
@@ -67,6 +67,7 @@
.modal-dialog-content {
z-index: 1;
position: relative;
+ overflow-y: auto;
.title-container {
flex: 1 0 auto;
@@ -157,9 +158,11 @@
z-index: 0;
padding: 0 1.5rem;
- .buttons-container {
- flex-direction: column;
- gap: 1rem;
+ .modal-dialog-content {
+ .buttons-container {
+ flex-direction: column;
+ gap: 1rem;
+ }
}
}
From c27b94fa6c16212ec5c406c8c90804f523e0d40c Mon Sep 17 00:00:00 2001
From: Tim
Date: Sat, 16 Nov 2024 22:22:53 +0100
Subject: [PATCH 94/94] refactor(ModalDialog): rename duplicated class name
---
src/common/ModalDialog/ModalDialog.js | 2 +-
src/common/ModalDialog/styles.less | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/common/ModalDialog/ModalDialog.js b/src/common/ModalDialog/ModalDialog.js
index 52d0a2513..1efa6ea6e 100644
--- a/src/common/ModalDialog/ModalDialog.js
+++ b/src/common/ModalDialog/ModalDialog.js
@@ -70,7 +70,7 @@ const ModalDialog = ({ className, title, buttons, children, dataset, onCloseRequ
:
null
}
-
+
{children}
{
diff --git a/src/common/ModalDialog/styles.less b/src/common/ModalDialog/styles.less
index 32605d341..bde17932d 100644
--- a/src/common/ModalDialog/styles.less
+++ b/src/common/ModalDialog/styles.less
@@ -79,7 +79,7 @@
color: var(--primary-foreground-color);
}
- .modal-dialog-content {
+ .body-container {
flex: 1;
align-self: stretch;
overflow-y: auto;