diff --git a/ios/example/Info.plist b/ios/example/Info.plist index 428f83bc..56bac408 100644 --- a/ios/example/Info.plist +++ b/ios/example/Info.plist @@ -61,7 +61,7 @@ LaunchScreen.storyboard UIRequiredDeviceCapabilities - armv7 + arm64 UIStatusBarHidden diff --git a/package.json b/package.json index 53f0d741..31d14fa8 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "@sentry/react-native": "^5.22.2", "@sharcoux/slider": "^7.2.1", "@shopify/flash-list": "^1.6.4", - "@shopify/react-native-skia": "1.2.3", - "axios": "^1.7.1", + "@shopify/react-native-skia": "1.3.0", + "axios": "^1.7.2", "base-64": "^1.0.0", "base64-js": "^1.5.1", "big-integer": "^1.6.52", @@ -63,7 +63,7 @@ "fflate": "^0.8.2", "ffmpeg-kit-react-native": "^6.0.2", "he": "^1.2.0", - "i18next": "^23.11.4", + "i18next": "^23.11.5", "js-base64": "^3.7.7", "libmuse": "git+https://github.com/lovegaoshi/muse.git#apm-release", "lottie-react-native": "6.7.2", @@ -101,7 +101,7 @@ "react-native-track-player": "https://lovegaoshi@github.com/lovegaoshi/react-native-track-player.git#commit=826bd575a98b662750e043397ed9f8d5f05a6077", "react-native-url-polyfill": "^2.0.0", "react-native-vector-icons": "^10.1.0", - "react-native-video": "^6.0.0", + "react-native-video": "^6.1.0", "react-native-webview": "13.10.2", "sp-react-native-in-app-updates": "^1.4.0", "use-debounce": "^10.0.0", @@ -135,8 +135,8 @@ "@types/react-native-video": "^5.0.20", "@types/react-test-renderer": "^18.3.0", "@types/uuid": "^9.0.8", - "@typescript-eslint/eslint-plugin": "^7.9.0", - "@typescript-eslint/parser": "^7.9.0", + "@typescript-eslint/eslint-plugin": "^7.10.0", + "@typescript-eslint/parser": "^7.10.0", "@welldone-software/why-did-you-render": "^8.0.1", "argparse": "^2.0.1", "babel-jest": "^29.7.0", @@ -167,4 +167,4 @@ }, "isSwift": true, "packageManager": "yarn@4.2.2" -} \ No newline at end of file +} diff --git a/src/components/setting/DeveloperSettings.tsx b/src/components/setting/DeveloperSettings.tsx index 9db198b3..3159ee21 100644 --- a/src/components/setting/DeveloperSettings.tsx +++ b/src/components/setting/DeveloperSettings.tsx @@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next'; import { APPSTORE } from '@env'; import { useStore } from 'zustand'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; +import * as Sentry from '@sentry/react-native'; import { useNoxSetting } from '@stores/useApp'; import { logStore, LOGLEVEL } from '@utils/Logger'; @@ -67,6 +68,7 @@ const developerSettings: { [key: string]: SettingEntry } = { memoryEfficiency: { settingName: 'memoryEfficiency', settingCategory: 'GeneralSettings', + callback: Sentry.nativeCrash, }, /** chatGPTSongName: { diff --git a/src/components/setting/SetttingEntries.tsx b/src/components/setting/SetttingEntries.tsx index 24d160b2..515a721c 100644 --- a/src/components/setting/SetttingEntries.tsx +++ b/src/components/setting/SetttingEntries.tsx @@ -13,6 +13,7 @@ export interface SettingEntry { reRender?: boolean; settingType?: string; checkbox?: boolean; + callback?: () => void; } export const dummySelectSettingEntry: SelectSettingEntry = { diff --git a/src/components/setting/useRenderSetting.tsx b/src/components/setting/useRenderSetting.tsx index 0d0646ba..b45489c2 100644 --- a/src/components/setting/useRenderSetting.tsx +++ b/src/components/setting/useRenderSetting.tsx @@ -64,6 +64,7 @@ const BooleanSetting = ({ settingCategory, reRender = false, checkbox = false, + callback, }: SettingEntry) => { const { t } = useTranslation(); const playerStyle = useNoxSetting(state => state.playerStyle); @@ -75,12 +76,11 @@ const BooleanSetting = ({ ); // eslint-disable-next-line @typescript-eslint/no-explicit-any - const saveSettings = (toggled: { [key: string]: any }) => { + const saveSettings = (toggled: { [key: string]: any }) => setPlayerSetting(toggled); - }; const onToggle = () => { - saveSettings({ [settingName]: !playerSetting[settingName] }); + saveSettings({ [settingName]: !playerSetting[settingName] }).then(callback); if (reRender) { togglePlaylistReRender(); } diff --git a/src/hooks/usePlayback.ts b/src/hooks/usePlayback.ts index 9eea8266..5bcf9074 100644 --- a/src/hooks/usePlayback.ts +++ b/src/hooks/usePlayback.ts @@ -12,7 +12,7 @@ import { } from '@utils/RNTPUtils'; import { NoxRepeatMode } from '@enums/RepeatMode'; import noxPlayingList, { setPlayingIndex } from '@stores/playingList'; -import noxCache, { noxCacheKey } from '@utils/Cache'; +import { dataSaverPlaylist, dataSaverSongs } from '@utils/Cache'; import useDataSaver from './useDataSaver'; import useSnack from '@stores/useSnack'; import { PlaylistTypes } from '@enums/Playlist'; @@ -21,15 +21,6 @@ const PLAYLIST_MEDIAID = 'playlist-'; const { getState } = noxPlayingList; -const dataSaverPlaylist = (playlist: NoxMedia.Playlist) => { - const newSongList = playlist.songList.filter( - song => noxCache.noxMediaCache?.peekCache(song) !== undefined - ); - return newSongList.length === 0 - ? playlist - : { ...playlist, songList: newSongList }; -}; - const dataSaverPlaylistWrapper = (datasave = true) => { return datasave ? dataSaverPlaylist @@ -90,16 +81,20 @@ const usePlayback = () => { const playAsSearchList = async ({ songs, + playlistSongs, title = String(t('PlaylistsDrawer.SearchListTitle')), song, }: PlayAsSearchList) => { - const newSearchPlaylist = { + const newPlayingPlaylist = { ...searchPlaylist, title, songList: songs, }; + const newSearchPlaylist = playlistSongs + ? { ...newPlayingPlaylist, songList: playlistSongs } + : newPlayingPlaylist; setSearchPlaylist(newSearchPlaylist); - await playFromPlaylist({ playlist: newSearchPlaylist, song }); + await playFromPlaylist({ playlist: newPlayingPlaylist, song }); setCurrentPlaylist(newSearchPlaylist); }; @@ -109,18 +104,14 @@ const usePlayback = () => { .filter(playlist => playlist.type === PlaylistTypes.Typical) .map(p => getPlaylist(p.id)) ); - let allSongs = allPlaylists.reduce( + const allSongs = allPlaylists.reduce( (acc, curr) => acc.concat(curr.songList), [] as NoxMedia.Song[] ); - if (isDataSaving) { - const cachedSongs = Array.from(noxCache.noxMediaCache.cache.keys()); - allSongs = allSongs.filter(song => - cachedSongs.includes(noxCacheKey(song)) - ); - } + const cachedSongs = isDataSaving ? dataSaverSongs(allSongs) : allSongs; playAsSearchList({ - songs: allSongs, + songs: cachedSongs, + playlistSongs: allSongs, title: String(t('PlaylistOperations.all')), }); }; @@ -255,6 +246,7 @@ interface PlayFromPlaylist { interface PlayAsSearchList { songs: NoxMedia.Song[]; + playlistSongs?: NoxMedia.Song[]; title?: string; song?: NoxMedia.Song; } diff --git a/src/localization/zhcn/translation.json b/src/localization/zhcn/translation.json index 8c7b722a..0f3e963a 100644 --- a/src/localization/zhcn/translation.json +++ b/src/localization/zhcn/translation.json @@ -173,7 +173,7 @@ }, "Settings": { "PluginsSettingName": "插件", - "PluginsSettingDesc": "测试功能,可能导致数据丢失损坏,别说我没告诉你", + "PluginsSettingDesc": "有可能导致数据错误的插件", "GeneralSettingName": "播放器设置", "GeneralSettingDesc": "一般的播放器设置", "AppearanceSettingName": "播放器外观", diff --git a/src/stores/initializeStores.ts b/src/stores/initializeStores.ts index 466762a6..0551a483 100644 --- a/src/stores/initializeStores.ts +++ b/src/stores/initializeStores.ts @@ -1,14 +1,19 @@ import { NativeModules, Platform } from 'react-native'; import { useNoxSetting } from './useApp'; +import { fetch } from '@react-native-community/netinfo'; import { initialize as initializeAppStore } from './appStore'; import { initializeR128Gain } from '../utils/ffmpeg/r128Store'; +import { dataSaverPlaylist } from '../utils/Cache'; const { NoxAndroidAutoModule } = NativeModules; const useInitializeStore = () => { const setGestureMode = useNoxSetting(state => state.setGestureMode); const initPlayer = useNoxSetting(state => state.initPlayer); + const setCurrentPlayingList = useNoxSetting( + state => state.setCurrentPlayingList + ); const initializeStores = async (val: NoxStorage.PlayerStorageObject) => { switch (Platform.OS) { @@ -29,7 +34,11 @@ const useInitializeStore = () => { } await initializeAppStore(); await initializeR128Gain(); - return await initPlayer(val); + const results = await initPlayer(val); + if ((await fetch()) && results.storedPlayerSetting.dataSaver) { + setCurrentPlayingList(dataSaverPlaylist(results.currentPlayingList)); + } + return results; }; return { initializeStores }; }; diff --git a/src/stores/useApp.ts b/src/stores/useApp.ts index 045f507e..6f931bb4 100644 --- a/src/stores/useApp.ts +++ b/src/stores/useApp.ts @@ -103,7 +103,9 @@ interface NoxSetting { getPlaylist: (val: string) => Promise; playerSetting: NoxStorage.PlayerSettingDict; - setPlayerSetting: (val: Partial) => void; + setPlayerSetting: ( + val: Partial + ) => Promise; addPlaylist: (val: NoxMedia.Playlist) => void; removePlaylist: (val: string) => void; @@ -205,11 +207,12 @@ export const useNoxSetting = create((set, get) => ({ }, currentPlayingList: dummyPlaylistList, setCurrentPlayingList: val => { - if (val.songList === get().currentPlayingList.songList) { + const { currentPlayingList, currentPlayingId } = get(); + if (val.songList === currentPlayingList.songList) { return false; } set({ currentPlayingList: val }); - savelastPlaylistId([val.id, String(get().currentPlayingId)]); + savelastPlaylistId([val.id, String(currentPlayingId)]); setPlayingList(val.songList); return true; }, @@ -236,17 +239,18 @@ export const useNoxSetting = create((set, get) => ({ set({ favoritePlaylist: val, playlists }); }, getPlaylist: async v => { - const appState: NoxSetting = get(); + const { searchPlaylist, favoritePlaylist, playlists, playerSetting } = + get(); switch (v) { case StorageKeys.SEARCH_PLAYLIST_KEY: - return appState.searchPlaylist; + return searchPlaylist; case StorageKeys.FAVORITE_PLAYLIST_KEY: - return appState.favoritePlaylist; + return favoritePlaylist; default: - if (appState.playerSetting.memoryEfficiency) { + if (playerSetting.memoryEfficiency) { return getPlaylist({ key: v }); } - return appState.playlists[v]; + return playlists[v]; } }, @@ -254,8 +258,8 @@ export const useNoxSetting = create((set, get) => ({ setPlayerSetting: val => { const newPlayerSetting = { ...get().playerSetting, ...val }; set({ playerSetting: newPlayerSetting }); - saveSettings(newPlayerSetting); setPlayerSettingVanilla(newPlayerSetting); + return saveSettings(newPlayerSetting); }, addPlaylist: playlist => { @@ -268,9 +272,10 @@ export const useNoxSetting = create((set, get) => ({ savePlaylistIds(playlistIds); }, removePlaylist: playlistId => { - let playlistIds = get().playlistIds; - let playlists = get().playlists; - const currentPlaylist = get().currentPlaylist; + const appState = get(); + let playlistIds = appState.playlistIds; + let playlists = appState.playlists; + const currentPlaylist = appState.currentPlaylist; if (currentPlaylist.id === playlistId) { set({ currentPlaylist: playlists[StorageKeys.SEARCH_PLAYLIST_KEY] }); } @@ -281,11 +286,14 @@ export const useNoxSetting = create((set, get) => ({ }, updatePlaylist: async (playlist, addSongs = [], removeSongs = []) => { - const appState: NoxSetting = get(); - let playlists = appState.playlists; - const currentPlaylist = appState.currentPlaylist; + const { + playlists, + playerSetting, + currentPlaylist, + playlistShouldReRender, + } = get(); updatePlaylistSongs(playlist, addSongs, removeSongs); - playlists[playlist.id] = appState.playerSetting.memoryEfficiency + playlists[playlist.id] = playerSetting.memoryEfficiency ? { ...playlist, songList: [] } : playlist; if (playlist.id === currentPlaylist.id) { @@ -293,7 +301,7 @@ export const useNoxSetting = create((set, get) => ({ } set({ playlists }); savePlaylist(playlist); - set({ playlistShouldReRender: !appState.playlistShouldReRender }); + set({ playlistShouldReRender: !playlistShouldReRender }); return playlist; }, @@ -358,12 +366,13 @@ export const useNoxSetting = create((set, get) => ({ }, exportLegacy: () => { + const { playlistIds, playlists } = get(); const exportedLegacy: { [key: string]: NoxMedia.Playlist | string[]; } = { - MyFavList: get().playlistIds, + MyFavList: playlistIds, }; - for (const [key, value] of Object.entries(get().playlists)) { + for (const [key, value] of Object.entries(playlists)) { exportedLegacy[key] = value; } return exportedLegacy; diff --git a/src/utils/Cache.ts b/src/utils/Cache.ts index 0606e838..3c06f62b 100644 --- a/src/utils/Cache.ts +++ b/src/utils/Cache.ts @@ -219,4 +219,19 @@ export const cacheWrapper = ( getURL: () => Promise ) => cache.noxMediaCache.loadCacheFunction(identifier, getURL); +const _dataSaverSongs = (v: NoxMedia.Song[]) => + v.filter(song => cache.noxMediaCache?.peekCache(song) !== undefined); + +export const dataSaverSongs = (v: NoxMedia.Song[]) => { + const cachedSongIds = Array.from(cache.noxMediaCache.cache.keys()); + return v.filter(song => cachedSongIds.includes(noxCacheKey(song))); +}; + +export const dataSaverPlaylist = (playlist: NoxMedia.Playlist) => { + const newSongList = _dataSaverSongs(playlist.songList); + return newSongList.length === 0 + ? playlist + : { ...playlist, songList: newSongList }; +}; + export default cache; diff --git a/yarn.lock b/yarn.lock index 87c3429e..95c83bd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4335,9 +4335,9 @@ __metadata: languageName: node linkType: hard -"@shopify/react-native-skia@npm:1.2.3": - version: 1.2.3 - resolution: "@shopify/react-native-skia@npm:1.2.3" +"@shopify/react-native-skia@npm:1.3.0": + version: 1.3.0 + resolution: "@shopify/react-native-skia@npm:1.3.0" dependencies: canvaskit-wasm: "npm:0.39.1" react-reconciler: "npm:0.27.0" @@ -4352,7 +4352,7 @@ __metadata: optional: true bin: setup-skia-web: scripts/setup-canvaskit.js - checksum: 10c0/f9fe6af98e50d30771105a87cf8a82ab6159252837f7b503e36c19af155834e83c3b0fddb89d23a2037aa9a1a944436d47c8dfec3c599260be808b393a021c31 + checksum: 10c0/f322d6636ecde4bda5d6fd4a1c195f41eabe334e1d80c95ae3efa1686c20c9d3f9f09ae7948de91fd7d75739ef3961f07a34df444f9cf076b76f631f55f9ea2c languageName: node linkType: hard @@ -5061,15 +5061,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.9.0" +"@typescript-eslint/eslint-plugin@npm:^7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.10.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.9.0" - "@typescript-eslint/type-utils": "npm:7.9.0" - "@typescript-eslint/utils": "npm:7.9.0" - "@typescript-eslint/visitor-keys": "npm:7.9.0" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/type-utils": "npm:7.10.0" + "@typescript-eslint/utils": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5080,7 +5080,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/5c0ded9cb2210c141d236075f01a86447bf497a5061773c3c64a90756264776b4c4df100f7588e36d34f727eca55afd52fe6696a3cbe2d1f131250934254603a + checksum: 10c0/bf3f0118ea5961c3eb01894678246458a329d82dda9ac7c2f5bfe77896410d05a08a4655e533bcb1ed2a3132ba6421981ec8c2ed0a3545779d9603ea231947ae languageName: node linkType: hard @@ -5101,21 +5101,21 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/parser@npm:7.9.0" +"@typescript-eslint/parser@npm:^7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/parser@npm:7.10.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.9.0" - "@typescript-eslint/types": "npm:7.9.0" - "@typescript-eslint/typescript-estree": "npm:7.9.0" - "@typescript-eslint/visitor-keys": "npm:7.9.0" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/16ca04645429436d9b7986cddda979ef4d088f4223f4a69e04a369e0fd4852dd5ff3d4b99da2e43cddaa2b421b24ff42f275d87bd110ae2356bdd0e81c2534e7 + checksum: 10c0/4c4fbf43b5b05d75b766acb803d3dd078c6e080641a77f9e48ba005713466738ea4a71f0564fa3ce520988d65158d14c8c952ba01ccbc431ab4a05935db5ce6d languageName: node linkType: hard @@ -5129,13 +5129,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/scope-manager@npm:7.9.0" +"@typescript-eslint/scope-manager@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/scope-manager@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.9.0" - "@typescript-eslint/visitor-keys": "npm:7.9.0" - checksum: 10c0/1ba6fc559a42a9b54e38c3ac2b6669efcff1a30292fb4e5fc8739c890a6c0f37d1a6aee1d115198f57c88e4f1776e95c1d7143de5cb5b970d5eb3023e97789dd + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" + checksum: 10c0/1d4f7ee137b95bd423b5a1b0d03251202dfc19bd8b6adfa5ff5df25fd5aa30e2d8ca50ab0d8d2e92441670ecbc2a82b3c2dbe39a4f268ec1ee1c1e267f7fd1d1 languageName: node linkType: hard @@ -5156,12 +5156,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/type-utils@npm:7.9.0" +"@typescript-eslint/type-utils@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/type-utils@npm:7.10.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.9.0" - "@typescript-eslint/utils": "npm:7.9.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" + "@typescript-eslint/utils": "npm:7.10.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -5169,7 +5169,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/775280fb179268f8bacd60e684d9d5a1c6a379646b082c7244bf2dfb7dd693053bd9efa473b71e10a86db69322b0a2cecf5598d019684930df50000bf3d70af0 + checksum: 10c0/55e9a6690f9cedb79d30abb1990b161affaa2684dac246b743223353812c9c1e3fd2d923c67b193c6a3624a07e1c82c900ce7bf5b6b9891c846f04cb480ebd9f languageName: node linkType: hard @@ -5180,10 +5180,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/types@npm:7.9.0" - checksum: 10c0/d5f4a547dba4865ee2391bf06f2b3f8e8592a561976d2be35bb61ce340c7d1b7b4b25ac6ab5b9941813b465b9420bebb7b2179b1d71f6a83069feeb000b3558d +"@typescript-eslint/types@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/types@npm:7.10.0" + checksum: 10c0/f01d9330b93cc362ba7967ab5037396f64742076450e1f93139fa69cbe93a6ece3ed55d68ab780c9b7d07ef4a7c645da410305216a2cfc5dec7eba49ee65ab23 languageName: node linkType: hard @@ -5205,12 +5205,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.9.0" +"@typescript-eslint/typescript-estree@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.9.0" - "@typescript-eslint/visitor-keys": "npm:7.9.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/visitor-keys": "npm:7.10.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -5220,7 +5220,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/cfc3d2b7a5433c9a2989c7289bc72b49786993782801ad8ca5a07c651df457a67fbce13b120c86c34c03d56570a90e5cf4f3b8806349f103a3658f2366ec28ea + checksum: 10c0/6200695834c566e52e2fa7331f1a05019f7815969d8c1e1e237b85a99664d36f41ccc16384eff3f8582a0ecb75f1cc315b56ee9283b818da37f24fa4d42f1d7a languageName: node linkType: hard @@ -5242,17 +5242,17 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/utils@npm:7.9.0" +"@typescript-eslint/utils@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/utils@npm:7.10.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.9.0" - "@typescript-eslint/types": "npm:7.9.0" - "@typescript-eslint/typescript-estree": "npm:7.9.0" + "@typescript-eslint/scope-manager": "npm:7.10.0" + "@typescript-eslint/types": "npm:7.10.0" + "@typescript-eslint/typescript-estree": "npm:7.10.0" peerDependencies: eslint: ^8.56.0 - checksum: 10c0/cb99d6a950e7da0319bc7b923a82c52c0798a14e837afee51b2295cfbde02e0a2ac8e0b5904cd7bd01d1b376c7a6ad3739101b486feaf2517c8640024deb88c7 + checksum: 10c0/6724471f94f2788f59748f7efa2a3a53ea910099993bee2fa5746ab5acacecdc9fcb110c568b18099ddc946ea44919ed394bff2bd055ba81fc69f5e6297b73bf languageName: node linkType: hard @@ -5266,13 +5266,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.9.0": - version: 7.9.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.9.0" +"@typescript-eslint/visitor-keys@npm:7.10.0": + version: 7.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.10.0" dependencies: - "@typescript-eslint/types": "npm:7.9.0" + "@typescript-eslint/types": "npm:7.10.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/19181d8b9d2d7bc43d5c8884661cd9a86ac316392b8e590187cc507442093a1ba2bef0cc22181b8298d5dc9f455abb73cffa4663451bdf32b1b7fe12160c5c99 + checksum: 10c0/049e812bcd28869059d04c7bf3543bb55f5205f468b777439c4f120417fb856fb6024cb1d25291aa12556bd08e84f043a96d754ffb2cde37abb604d6f3c51634 languageName: node linkType: hard @@ -5860,14 +5860,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.7.1": - version: 1.7.1 - resolution: "axios@npm:1.7.1" +"axios@npm:^1.7.2": + version: 1.7.2 + resolution: "axios@npm:1.7.2" dependencies: follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/554395472f18f4ddb43b4be2900473bc1a4d589464a8ab16f6954c53d9cace4317d5c9e009d5bb05f098d9565b2fa45f152a5d4cecb87536c8f0c370c25a7770 + checksum: 10c0/cbd47ce380fe045313364e740bb03b936420b8b5558c7ea36a4563db1258c658f05e40feb5ddd41f6633fdd96d37ac2a76f884dad599c5b0224b4c451b3fa7ae languageName: node linkType: hard @@ -5895,7 +5895,7 @@ __metadata: "@sentry/react-native": "npm:^5.22.2" "@sharcoux/slider": "npm:^7.2.1" "@shopify/flash-list": "npm:^1.6.4" - "@shopify/react-native-skia": "npm:1.2.3" + "@shopify/react-native-skia": "npm:1.3.0" "@tsconfig/react-native": "npm:^3.0.5" "@types/base-64": "npm:^1.0.2" "@types/d3": "npm:^7.4.3" @@ -5910,11 +5910,11 @@ __metadata: "@types/react-native-video": "npm:^5.0.20" "@types/react-test-renderer": "npm:^18.3.0" "@types/uuid": "npm:^9.0.8" - "@typescript-eslint/eslint-plugin": "npm:^7.9.0" - "@typescript-eslint/parser": "npm:^7.9.0" + "@typescript-eslint/eslint-plugin": "npm:^7.10.0" + "@typescript-eslint/parser": "npm:^7.10.0" "@welldone-software/why-did-you-render": "npm:^8.0.1" argparse: "npm:^2.0.1" - axios: "npm:^1.7.1" + axios: "npm:^1.7.2" babel-jest: "npm:^29.7.0" babel-plugin-module-resolver: "npm:^5.0.2" babel-plugin-transform-remove-console: "npm:^6.9.4" @@ -5948,7 +5948,7 @@ __metadata: ffmpeg-kit-react-native: "npm:^6.0.2" gts: "npm:^5.3.0" he: "npm:^1.2.0" - i18next: "npm:^23.11.4" + i18next: "npm:^23.11.5" jest: "npm:^29.7.0" js-base64: "npm:^3.7.7" libmuse: "git+https://github.com/lovegaoshi/muse.git#apm-release" @@ -5991,7 +5991,7 @@ __metadata: react-native-track-player: "https://lovegaoshi@github.com/lovegaoshi/react-native-track-player.git#commit=826bd575a98b662750e043397ed9f8d5f05a6077" react-native-url-polyfill: "npm:^2.0.0" react-native-vector-icons: "npm:^10.1.0" - react-native-video: "npm:^6.0.0" + react-native-video: "npm:^6.1.0" react-native-webview: "npm:13.10.2" react-test-renderer: "npm:18.3.1" reactotron-react-native: "npm:^5.1.7" @@ -10278,12 +10278,12 @@ __metadata: languageName: node linkType: hard -"i18next@npm:^23.11.4": - version: 23.11.4 - resolution: "i18next@npm:23.11.4" +"i18next@npm:^23.11.5": + version: 23.11.5 + resolution: "i18next@npm:23.11.5" dependencies: "@babel/runtime": "npm:^7.23.2" - checksum: 10c0/e43d6f839f75a78f05503780bfc8b867825ed2f5a5c85f6abf5b88b76021df6e5865c93fc45b715fc1d1563be96ec3565d04684779bc01a9a9ea1d389b61044c + checksum: 10c0/b0bec64250a3e529d4c51e2fc511406a85c5dde3d005d3aabe919551ca31dfc0a8f5490bf6e44649822e895a1fa91a58092d112367669cd11b2eb89e6ba90d1a languageName: node linkType: hard @@ -14901,13 +14901,13 @@ __metadata: languageName: node linkType: hard -"react-native-video@npm:^6.0.0": - version: 6.0.0 - resolution: "react-native-video@npm:6.0.0" +"react-native-video@npm:^6.1.0": + version: 6.1.0 + resolution: "react-native-video@npm:6.1.0" peerDependencies: react: "*" react-native: "*" - checksum: 10c0/ba19476d92285fee0dbc1469c0efa13649677915f726d0a7093d615e08f8a6c0122fa130c8d1fb6f412004d52e06afeda15ff2b6b6e8b0ed605f7c96ace934b0 + checksum: 10c0/90fe8956d0248a6ac9d78e348d2fd0e4f02d9810daa5e60b7cc09beab1c8f12e1cf8747782934ac3d98ee451dcd483730027c5f27335d0a2b80a66f3068d70cb languageName: node linkType: hard