From 4defeefe7e5947aa00a2afb2a06577ec141cdc52 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 31 Jan 2024 16:33:50 +0600 Subject: [PATCH 01/59] feat: start radio support --- lib/collections/spotube_icons.dart | 1 + .../shared/track_tile/track_options.dart | 79 ++++++++++++- lib/l10n/app_en.arb | 5 +- lib/services/queries/search.dart | 70 +++++++---- untranslated_messages.json | 110 +++++++++++++++++- 5 files changed, 238 insertions(+), 27 deletions(-) diff --git a/lib/collections/spotube_icons.dart b/lib/collections/spotube_icons.dart index 65e6c1a0..c00643ce 100644 --- a/lib/collections/spotube_icons.dart +++ b/lib/collections/spotube_icons.dart @@ -111,4 +111,5 @@ abstract class SpotubeIcons { static const wikipedia = SimpleIcons.wikipedia; static const discord = SimpleIcons.discord; static const youtube = SimpleIcons.youtube; + static const radio = FeatherIcons.radio; } diff --git a/lib/components/shared/track_tile/track_options.dart b/lib/components/shared/track_tile/track_options.dart index 724bc029..515d42b5 100644 --- a/lib/components/shared/track_tile/track_options.dart +++ b/lib/components/shared/track_tile/track_options.dart @@ -1,6 +1,7 @@ import 'dart:io'; -import 'package:flutter/material.dart'; +import 'package:fl_query/fl_query.dart'; +import 'package:flutter/material.dart' hide Page; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; @@ -10,6 +11,7 @@ import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/library/user_local_tracks.dart'; import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart'; import 'package:spotube/components/shared/dialogs/playlist_add_track_dialog.dart'; +import 'package:spotube/components/shared/dialogs/prompt_dialog.dart'; import 'package:spotube/components/shared/dialogs/track_details_dialog.dart'; import 'package:spotube/components/shared/heart_button.dart'; import 'package:spotube/components/shared/image/universal_image.dart'; @@ -20,7 +22,9 @@ import 'package:spotube/provider/authentication_provider.dart'; import 'package:spotube/provider/blacklist_provider.dart'; import 'package:spotube/provider/download_manager_provider.dart'; import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; +import 'package:spotube/provider/spotify_provider.dart'; import 'package:spotube/services/mutations/mutations.dart'; +import 'package:spotube/services/queries/search.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; enum TrackOptionValue { @@ -36,6 +40,7 @@ enum TrackOptionValue { favorite, details, download, + startRadio, } class TrackOptions extends HookConsumerWidget { @@ -82,6 +87,67 @@ class TrackOptions extends HookConsumerWidget { ); } + void actionStartRadio( + BuildContext context, + WidgetRef ref, + Track track, + ) async { + final playback = ref.read(ProxyPlaylistNotifier.notifier); + final playlist = ref.read(ProxyPlaylistNotifier.provider); + final spotify = ref.read(spotifyProvider); + final pages = await QueryClient.of(context) + .fetchInfiniteQueryJob, dynamic, int, SearchParams>( + job: SearchQueries.queryJob(SearchType.playlist.name), + args: ( + spotify: spotify, + searchType: SearchType.playlist, + query: "${track.name} Radio" + ), + ) ?? + []; + + final radios = pages.expand((e) => e.items ?? []).toList(); + + final artists = track.artists!.map((e) => e.name); + + final radio = radios.firstWhere( + (e) => + e.name == "${track.name} Radio" && + artists.where((a) => e.name!.contains(a!)).length >= 2, + orElse: () => radios.first, + ); + + bool replaceQueue = false; + + if (context.mounted && playlist.tracks.isNotEmpty) { + replaceQueue = await showPromptDialog( + context: context, + title: context.l10n.how_to_start_radio, + message: context.l10n.replace_queue_question, + okText: context.l10n.replace, + cancelText: context.l10n.add_to_queue, + ); + } + + if (replaceQueue) { + await playback.stop(); + await playback.load([track], autoPlay: true); + } else { + await playback.addTrack(track); + } + + final tracks = + await spotify.playlists.getTracksByPlaylistId(radio.id!).all(); + + await playback.addTracks( + tracks.toList() + ..removeWhere((e) { + final isDuplicate = playlist.tracks.any((t) => t.id == e.id); + return e.id == track.id || isDuplicate; + }), + ); + } + @override Widget build(BuildContext context, ref) { final scaffoldMessenger = ScaffoldMessenger.of(context); @@ -207,6 +273,9 @@ class TrackOptions extends HookConsumerWidget { case TrackOptionValue.download: await downloadManager.addToQueue(track); break; + case TrackOptionValue.startRadio: + actionStartRadio(context, ref, track); + break; } }, icon: icon ?? const Icon(SpotubeIcons.moreHorizontal), @@ -287,12 +356,18 @@ class TrackOptions extends HookConsumerWidget { : context.l10n.save_as_favorite, ), ), - if (auth != null) + if (auth != null) ...[ + PopSheetEntry( + value: TrackOptionValue.startRadio, + leading: const Icon(SpotubeIcons.radio), + title: Text(context.l10n.start_a_radio), + ), PopSheetEntry( value: TrackOptionValue.addToPlaylist, leading: const Icon(SpotubeIcons.playlistAdd), title: Text(context.l10n.add_to_playlist), ), + ], if (userPlaylist && auth != null) PopSheetEntry( value: TrackOptionValue.removeFromPlaylist, diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 07df5f06..f79090ae 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -286,5 +286,8 @@ "genres": "Genres", "explore_genres": "Explore Genres", "friends": "Friends", - "no_lyrics_available": "Sorry, unable find lyrics for this track" + "no_lyrics_available": "Sorry, unable find lyrics for this track", + "start_a_radio": "Start a Radio", + "how_to_start_radio": "How do you want to start the radio?", + "replace_queue_question": "Do you want to replace the current queue or append to it?" } \ No newline at end of file diff --git a/lib/services/queries/search.dart b/lib/services/queries/search.dart index f11f4399..3c6ee064 100644 --- a/lib/services/queries/search.dart +++ b/lib/services/queries/search.dart @@ -1,36 +1,60 @@ import 'package:fl_query/fl_query.dart'; +import 'package:fl_query_hooks/fl_query_hooks.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/hooks/spotify/use_spotify_infinite_query.dart'; +import 'package:spotube/provider/spotify_provider.dart'; + +typedef SearchParams = ({ + SpotifyApi spotify, + SearchType searchType, + String query +}); class SearchQueries { const SearchQueries(); + + static final queryJob = + InfiniteQueryJob.withVariableKey, dynamic, int, SearchParams>( + baseQueryKey: "search-query", + task: (variableKey, page, args) => args!.spotify.search.get( + args.query, + types: [args.searchType], + ).getPage(10, page), + initialPage: 0, + nextPage: (lastPage, lastPageData) { + if (lastPageData.isEmpty) return null; + if ((lastPageData.first.isLast || + (lastPageData.first.items ?? []).length < 10)) { + return null; + } + return lastPageData.first.nextOffset; + }, + enabled: false, + ); + InfiniteQuery, dynamic, int> query( WidgetRef ref, - String query, + String queryStr, SearchType searchType, ) { - return useSpotifyInfiniteQuery, dynamic, int>( - "search-query/${searchType.name}", - (page, spotify) { - if (query.trim().isEmpty) return []; - final queryString = query; - return spotify.search.get( - queryString, - types: [searchType], - ).getPage(10, page); - }, - enabled: false, - ref: ref, - initialPage: 0, - nextPage: (lastPage, lastPageData) { - if (lastPageData.isEmpty) return null; - if ((lastPageData.first.isLast || - (lastPageData.first.items ?? []).length < 10)) { - return null; - } - return lastPageData.first.nextOffset; - }, + final spotify = ref.watch(spotifyProvider); + final query = useInfiniteQueryJob, dynamic, int, SearchParams>( + job: queryJob(searchType.name), + args: (spotify: spotify, searchType: searchType, query: queryStr), ); + + useEffect(() { + return ref.listenManual( + spotifyProvider, + (previous, next) { + if (previous != next) { + query.refreshAll(); + } + }, + ).close; + }, [query]); + + return query; } } diff --git a/untranslated_messages.json b/untranslated_messages.json index 9e26dfee..748a9906 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -1 +1,109 @@ -{} \ No newline at end of file +{ + "ar": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "bn": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "ca": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "de": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "es": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "fa": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "fr": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "hi": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "it": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "ja": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "ne": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "nl": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "pl": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "pt": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "ru": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "tr": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "uk": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ], + + "zh": [ + "start_a_radio", + "how_to_start_radio", + "replace_queue_question" + ] +} From 9dfd49ca04f0e915e333e205b17ac70456873f6e Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 31 Jan 2024 18:00:54 +0600 Subject: [PATCH 02/59] feat: add endless playback support #285 --- analysis_options.yaml | 4 +- .../shared/track_tile/track_options.dart | 21 +- .../configurators/use_endless_playback.dart | 102 +++ lib/l10n/app_en.arb | 3 +- lib/pages/root/root_app.dart | 3 + lib/pages/settings/sections/playback.dart | 6 + .../user_preferences_provider.dart | 4 + .../user_preferences_state.dart | 234 ++---- .../user_preferences_state.freezed.dart | 697 ++++++++++++++++++ .../user_preferences_state.g.dart | 69 +- pubspec.lock | 10 +- pubspec.yaml | 2 + untranslated_messages.json | 54 +- 13 files changed, 956 insertions(+), 253 deletions(-) create mode 100644 lib/hooks/configurators/use_endless_playback.dart create mode 100644 lib/provider/user_preferences/user_preferences_state.freezed.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 4f0718e4..5f2cbbe1 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -31,4 +31,6 @@ linter: analyzer: enable-experiment: - records - - patterns \ No newline at end of file + - patterns + errors: + invalid_annotation_target: ignore diff --git a/lib/components/shared/track_tile/track_options.dart b/lib/components/shared/track_tile/track_options.dart index 515d42b5..d0d081ff 100644 --- a/lib/components/shared/track_tile/track_options.dart +++ b/lib/components/shared/track_tile/track_options.dart @@ -106,14 +106,22 @@ class TrackOptions extends HookConsumerWidget { ) ?? []; - final radios = pages.expand((e) => e.items ?? []).toList(); + final radios = pages + .expand((e) => e.items?.toList() ?? []) + .toList() + .cast(); final artists = track.artists!.map((e) => e.name); final radio = radios.firstWhere( - (e) => - e.name == "${track.name} Radio" && - artists.where((a) => e.name!.contains(a!)).length >= 2, + (e) { + final validPlaylists = + artists.where((a) => e.description!.contains(a!)); + return e.name == "${track.name} Radio" && + (validPlaylists.length >= 2 || + validPlaylists.length == artists.length) && + e.owner?.displayName == "Spotify"; + }, orElse: () => radios.first, ); @@ -129,9 +137,12 @@ class TrackOptions extends HookConsumerWidget { ); } - if (replaceQueue) { + if (replaceQueue || playlist.tracks.isEmpty) { await playback.stop(); await playback.load([track], autoPlay: true); + + // we don't have to add those tracks as useEndlessPlayback will do it for us + return; } else { await playback.addTrack(track); } diff --git a/lib/hooks/configurators/use_endless_playback.dart b/lib/hooks/configurators/use_endless_playback.dart new file mode 100644 index 00000000..ffbb6991 --- /dev/null +++ b/lib/hooks/configurators/use_endless_playback.dart @@ -0,0 +1,102 @@ +import 'package:catcher_2/catcher_2.dart'; +import 'package:fl_query_hooks/fl_query_hooks.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:spotify/spotify.dart'; +import 'package:spotube/provider/authentication_provider.dart'; +import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; +import 'package:spotube/provider/spotify_provider.dart'; +import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; +import 'package:spotube/services/audio_player/audio_player.dart'; +import 'package:spotube/services/queries/search.dart'; + +void useEndlessPlayback(WidgetRef ref) { + final auth = ref.watch(AuthenticationNotifier.provider); + final playback = ref.watch(ProxyPlaylistNotifier.notifier); + final playlist = ref.watch(ProxyPlaylistNotifier.provider); + final spotify = ref.watch(spotifyProvider); + final endlessPlayback = + ref.watch(userPreferencesProvider.select((s) => s.endlessPlayback)); + + final queryClient = useQueryClient(); + + useEffect( + () { + if (!endlessPlayback || auth == null) return null; + + void listener(int index) async { + try { + final playlist = ref.read(ProxyPlaylistNotifier.provider); + if (index != playlist.tracks.length - 1) return; + + final track = playlist.tracks.last; + + final pages = await queryClient.fetchInfiniteQueryJob, + dynamic, int, SearchParams>( + job: SearchQueries.queryJob(SearchType.playlist.name), + args: ( + spotify: spotify, + searchType: SearchType.playlist, + query: "${track.name} Radio" + ), + ) ?? + []; + + final radios = pages + .expand((e) => e.items?.toList() ?? []) + .toList() + .cast(); + + final artists = track.artists!.map((e) => e.name); + + final radio = radios.firstWhere( + (e) { + final validPlaylists = + artists.where((a) => e.description!.contains(a!)); + return e.name == "${track.name} Radio" && + (validPlaylists.length >= 2 || + validPlaylists.length == artists.length) && + e.owner?.displayName != "Spotify"; + }, + orElse: () => radios.first, + ); + + final tracks = + await spotify.playlists.getTracksByPlaylistId(radio.id!).all(); + + await playback.addTracks( + tracks.toList() + ..removeWhere((e) { + final playlist = ref.read(ProxyPlaylistNotifier.provider); + final isDuplicate = playlist.tracks.any((t) => t.id == e.id); + return e.id == track.id || isDuplicate; + }), + ); + } catch (e, stack) { + Catcher2.reportCheckedError(e, stack); + } + } + + // Sometimes user can change settings for which the currentIndexChanged + // might not be called. So we need to check if the current track is the + // last track and if it is then we need to call the listener manually. + if (playlist.active == playlist.tracks.length - 1 && + audioPlayer.isPlaying) { + listener(playlist.active!); + } + + final subscription = + audioPlayer.currentIndexChangedStream.listen(listener); + + return subscription.cancel; + }, + [ + spotify, + playback, + queryClient, + playlist.tracks, + endlessPlayback, + auth, + ], + ); +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f79090ae..0628cc43 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -289,5 +289,6 @@ "no_lyrics_available": "Sorry, unable find lyrics for this track", "start_a_radio": "Start a Radio", "how_to_start_radio": "How do you want to start the radio?", - "replace_queue_question": "Do you want to replace the current queue or append to it?" + "replace_queue_question": "Do you want to replace the current queue or append to it?", + "endless_playback": "Endless Playback" } \ No newline at end of file diff --git a/lib/pages/root/root_app.dart b/lib/pages/root/root_app.dart index 87be587c..2ff49737 100644 --- a/lib/pages/root/root_app.dart +++ b/lib/pages/root/root_app.dart @@ -15,6 +15,7 @@ import 'package:spotube/components/root/bottom_player.dart'; import 'package:spotube/components/root/sidebar.dart'; import 'package:spotube/components/root/spotube_navigation_bar.dart'; import 'package:spotube/extensions/context.dart'; +import 'package:spotube/hooks/configurators/use_endless_playback.dart'; import 'package:spotube/hooks/configurators/use_update_checker.dart'; import 'package:spotube/provider/download_manager_provider.dart'; import 'package:spotube/utils/persisted_state_notifier.dart'; @@ -134,6 +135,8 @@ class RootApp extends HookConsumerWidget { // checks for latest version of the application useUpdateChecker(ref); + useEndlessPlayback(ref); + final backgroundColor = Theme.of(context).scaffoldBackgroundColor; useEffect(() { diff --git a/lib/pages/settings/sections/playback.dart b/lib/pages/settings/sections/playback.dart index d36e0713..bd2e33b9 100644 --- a/lib/pages/settings/sections/playback.dart +++ b/lib/pages/settings/sections/playback.dart @@ -221,6 +221,12 @@ class SettingsPlaybackSection extends HookConsumerWidget { preferencesNotifier.setDownloadMusicCodec(value); }, ), + SwitchListTile( + secondary: const Icon(SpotubeIcons.repeat), + title: Text(context.l10n.endless_playback), + value: preferences.endlessPlayback, + onChanged: preferencesNotifier.setEndlessPlayback, + ), ], ); } diff --git a/lib/provider/user_preferences/user_preferences_provider.dart b/lib/provider/user_preferences/user_preferences_provider.dart index 46569269..875f36cc 100644 --- a/lib/provider/user_preferences/user_preferences_provider.dart +++ b/lib/provider/user_preferences/user_preferences_provider.dart @@ -123,6 +123,10 @@ class UserPreferencesNotifier extends PersistedStateNotifier { audioPlayer.setAudioNormalization(normalize); } + void setEndlessPlayback(bool endless) { + state = state.copyWith(endlessPlayback: endless); + } + Future _getDefaultDownloadDirectory() async { if (kIsAndroid) return "/storage/emulated/0/Download/Spotube"; diff --git a/lib/provider/user_preferences/user_preferences_state.dart b/lib/provider/user_preferences/user_preferences_state.dart index 4244ca67..cf6c0597 100644 --- a/lib/provider/user_preferences/user_preferences_state.dart +++ b/lib/provider/user_preferences/user_preferences_state.dart @@ -1,12 +1,13 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:json_annotation/json_annotation.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/components/settings/color_scheme_picker_dialog.dart'; import 'package:spotube/services/sourced_track/enums.dart'; part 'user_preferences_state.g.dart'; +part 'user_preferences_state.freezed.dart'; @JsonEnum() enum LayoutMode { @@ -53,40 +54,48 @@ enum SearchMode { } } -@JsonSerializable() -final class UserPreferences { - @JsonKey( - defaultValue: SourceQualities.high, - unknownEnumValue: SourceQualities.high, - ) - final SourceQualities audioQuality; +@freezed +class UserPreferences with _$UserPreferences { + const factory UserPreferences({ + @Default(SourceQualities.high) SourceQualities audioQuality, + @Default(true) bool albumColorSync, + @Default(false) bool amoledDarkTheme, + @Default(true) bool checkUpdate, + @Default(false) bool normalizeAudio, + @Default(true) bool showSystemTrayIcon, + @Default(false) bool skipNonMusic, + @Default(false) bool systemTitleBar, + @Default(CloseBehavior.minimizeToTray) CloseBehavior closeBehavior, + @Default(SpotubeColor(0xFF2196F3, name: "Blue")) + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue, + ) + SpotubeColor accentColorScheme, + @Default(LayoutMode.adaptive) LayoutMode layoutMode, + @Default(Locale("system", "system")) + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue, + ) + Locale locale, + @Default(Market.US) Market recommendationMarket, + @Default(SearchMode.youtube) SearchMode searchMode, + @Default("") String downloadLocation, + @Default("https://pipedapi.kavin.rocks") String pipedInstance, + @Default(ThemeMode.system) ThemeMode themeMode, + @Default(AudioSource.youtube) AudioSource audioSource, + @Default(SourceCodecs.weba) SourceCodecs streamMusicCodec, + @Default(SourceCodecs.m4a) SourceCodecs downloadMusicCodec, + @Default(true) bool discordPresence, + @Default(true) bool endlessPlayback, + }) = _UserPreferences; + factory UserPreferences.fromJson(Map json) => + _$UserPreferencesFromJson(json); - @JsonKey(defaultValue: true) - final bool albumColorSync; - - @JsonKey(defaultValue: false) - final bool amoledDarkTheme; - - @JsonKey(defaultValue: true) - final bool checkUpdate; - - @JsonKey(defaultValue: false) - final bool normalizeAudio; - - @JsonKey(defaultValue: true) - final bool showSystemTrayIcon; - - @JsonKey(defaultValue: true) - final bool skipNonMusic; - - @JsonKey(defaultValue: false) - final bool systemTitleBar; - - @JsonKey( - defaultValue: CloseBehavior.minimizeToTray, - unknownEnumValue: CloseBehavior.minimizeToTray, - ) - final CloseBehavior closeBehavior; + factory UserPreferences.withDefaults() => UserPreferences.fromJson({}); static SpotubeColor _accentColorSchemeFromJson(Map json) { return SpotubeColor.fromString(json["color"]); @@ -105,23 +114,6 @@ final class UserPreferences { return {"color": color.toString()}; } - static SpotubeColor _defaultAccentColorScheme() => - const SpotubeColor(0xFF2196F3, name: "Blue"); - - @JsonKey( - defaultValue: UserPreferences._defaultAccentColorScheme, - fromJson: UserPreferences._accentColorSchemeFromJson, - toJson: UserPreferences._accentColorSchemeToJson, - readValue: UserPreferences._accentColorSchemeReadValue, - ) - final SpotubeColor accentColorScheme; - - @JsonKey( - defaultValue: LayoutMode.adaptive, - unknownEnumValue: LayoutMode.adaptive, - ) - final LayoutMode layoutMode; - static Locale _localeFromJson(Map json) { return Locale(json["languageCode"], json["countryCode"]); } @@ -145,144 +137,4 @@ final class UserPreferences { return json[key] as Map?; } - - static Locale _defaultLocaleValue() => const Locale("system", "system"); - - @JsonKey( - defaultValue: UserPreferences._defaultLocaleValue, - toJson: UserPreferences._localeToJson, - fromJson: UserPreferences._localeFromJson, - readValue: UserPreferences._localeReadValue, - ) - final Locale locale; - - @JsonKey( - defaultValue: Market.US, - unknownEnumValue: Market.US, - ) - final Market recommendationMarket; - - @JsonKey( - defaultValue: SearchMode.youtube, - unknownEnumValue: SearchMode.youtube, - ) - final SearchMode searchMode; - - @JsonKey(defaultValue: "") - final String downloadLocation; - - @JsonKey(defaultValue: "https://pipedapi.kavin.rocks") - final String pipedInstance; - - @JsonKey( - defaultValue: ThemeMode.system, - unknownEnumValue: ThemeMode.system, - ) - final ThemeMode themeMode; - - @JsonKey( - defaultValue: AudioSource.youtube, - unknownEnumValue: AudioSource.youtube, - ) - final AudioSource audioSource; - - @JsonKey( - defaultValue: SourceCodecs.weba, - unknownEnumValue: SourceCodecs.weba, - ) - final SourceCodecs streamMusicCodec; - - @JsonKey( - defaultValue: SourceCodecs.m4a, - unknownEnumValue: SourceCodecs.m4a, - ) - final SourceCodecs downloadMusicCodec; - - @JsonKey(defaultValue: true) - final bool discordPresence; - - UserPreferences({ - required this.audioQuality, - required this.albumColorSync, - required this.amoledDarkTheme, - required this.checkUpdate, - required this.normalizeAudio, - required this.showSystemTrayIcon, - required this.skipNonMusic, - required this.systemTitleBar, - required this.closeBehavior, - required this.accentColorScheme, - required this.layoutMode, - required this.locale, - required this.recommendationMarket, - required this.searchMode, - required this.downloadLocation, - required this.pipedInstance, - required this.themeMode, - required this.audioSource, - required this.streamMusicCodec, - required this.downloadMusicCodec, - required this.discordPresence, - }); - - factory UserPreferences.withDefaults() { - return UserPreferences.fromJson({}); - } - - factory UserPreferences.fromJson(Map json) { - return _$UserPreferencesFromJson(json); - } - - Map toJson() { - return _$UserPreferencesToJson(this); - } - - UserPreferences copyWith({ - ThemeMode? themeMode, - SpotubeColor? accentColorScheme, - bool? albumColorSync, - bool? checkUpdate, - SourceQualities? audioQuality, - String? downloadLocation, - LayoutMode? layoutMode, - CloseBehavior? closeBehavior, - bool? showSystemTrayIcon, - Locale? locale, - String? pipedInstance, - SearchMode? searchMode, - bool? skipNonMusic, - AudioSource? audioSource, - Market? recommendationMarket, - bool? saveTrackLyrics, - bool? amoledDarkTheme, - bool? normalizeAudio, - SourceCodecs? downloadMusicCodec, - SourceCodecs? streamMusicCodec, - bool? systemTitleBar, - bool? discordPresence, - }) { - return UserPreferences( - themeMode: themeMode ?? this.themeMode, - accentColorScheme: accentColorScheme ?? this.accentColorScheme, - albumColorSync: albumColorSync ?? this.albumColorSync, - checkUpdate: checkUpdate ?? this.checkUpdate, - audioQuality: audioQuality ?? this.audioQuality, - downloadLocation: downloadLocation ?? this.downloadLocation, - layoutMode: layoutMode ?? this.layoutMode, - closeBehavior: closeBehavior ?? this.closeBehavior, - showSystemTrayIcon: showSystemTrayIcon ?? this.showSystemTrayIcon, - locale: locale ?? this.locale, - pipedInstance: pipedInstance ?? this.pipedInstance, - searchMode: searchMode ?? this.searchMode, - skipNonMusic: skipNonMusic ?? this.skipNonMusic, - audioSource: audioSource ?? this.audioSource, - recommendationMarket: recommendationMarket ?? this.recommendationMarket, - amoledDarkTheme: amoledDarkTheme ?? this.amoledDarkTheme, - downloadMusicCodec: downloadMusicCodec ?? this.downloadMusicCodec, - normalizeAudio: normalizeAudio ?? this.normalizeAudio, - streamMusicCodec: streamMusicCodec ?? this.streamMusicCodec, - systemTitleBar: systemTitleBar ?? this.systemTitleBar, - discordPresence: discordPresence ?? this.discordPresence, - ); - } } diff --git a/lib/provider/user_preferences/user_preferences_state.freezed.dart b/lib/provider/user_preferences/user_preferences_state.freezed.dart new file mode 100644 index 00000000..4d08d1a9 --- /dev/null +++ b/lib/provider/user_preferences/user_preferences_state.freezed.dart @@ -0,0 +1,697 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'user_preferences_state.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +UserPreferences _$UserPreferencesFromJson(Map json) { + return _UserPreferences.fromJson(json); +} + +/// @nodoc +mixin _$UserPreferences { + SourceQualities get audioQuality => throw _privateConstructorUsedError; + bool get albumColorSync => throw _privateConstructorUsedError; + bool get amoledDarkTheme => throw _privateConstructorUsedError; + bool get checkUpdate => throw _privateConstructorUsedError; + bool get normalizeAudio => throw _privateConstructorUsedError; + bool get showSystemTrayIcon => throw _privateConstructorUsedError; + bool get skipNonMusic => throw _privateConstructorUsedError; + bool get systemTitleBar => throw _privateConstructorUsedError; + CloseBehavior get closeBehavior => throw _privateConstructorUsedError; + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + SpotubeColor get accentColorScheme => throw _privateConstructorUsedError; + LayoutMode get layoutMode => throw _privateConstructorUsedError; + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + Locale get locale => throw _privateConstructorUsedError; + Market get recommendationMarket => throw _privateConstructorUsedError; + SearchMode get searchMode => throw _privateConstructorUsedError; + String get downloadLocation => throw _privateConstructorUsedError; + String get pipedInstance => throw _privateConstructorUsedError; + ThemeMode get themeMode => throw _privateConstructorUsedError; + AudioSource get audioSource => throw _privateConstructorUsedError; + SourceCodecs get streamMusicCodec => throw _privateConstructorUsedError; + SourceCodecs get downloadMusicCodec => throw _privateConstructorUsedError; + bool get discordPresence => throw _privateConstructorUsedError; + bool get endlessPlayback => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $UserPreferencesCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $UserPreferencesCopyWith<$Res> { + factory $UserPreferencesCopyWith( + UserPreferences value, $Res Function(UserPreferences) then) = + _$UserPreferencesCopyWithImpl<$Res, UserPreferences>; + @useResult + $Res call( + {SourceQualities audioQuality, + bool albumColorSync, + bool amoledDarkTheme, + bool checkUpdate, + bool normalizeAudio, + bool showSystemTrayIcon, + bool skipNonMusic, + bool systemTitleBar, + CloseBehavior closeBehavior, + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + SpotubeColor accentColorScheme, + LayoutMode layoutMode, + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + Locale locale, + Market recommendationMarket, + SearchMode searchMode, + String downloadLocation, + String pipedInstance, + ThemeMode themeMode, + AudioSource audioSource, + SourceCodecs streamMusicCodec, + SourceCodecs downloadMusicCodec, + bool discordPresence, + bool endlessPlayback}); +} + +/// @nodoc +class _$UserPreferencesCopyWithImpl<$Res, $Val extends UserPreferences> + implements $UserPreferencesCopyWith<$Res> { + _$UserPreferencesCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? audioQuality = null, + Object? albumColorSync = null, + Object? amoledDarkTheme = null, + Object? checkUpdate = null, + Object? normalizeAudio = null, + Object? showSystemTrayIcon = null, + Object? skipNonMusic = null, + Object? systemTitleBar = null, + Object? closeBehavior = null, + Object? accentColorScheme = null, + Object? layoutMode = null, + Object? locale = null, + Object? recommendationMarket = null, + Object? searchMode = null, + Object? downloadLocation = null, + Object? pipedInstance = null, + Object? themeMode = null, + Object? audioSource = null, + Object? streamMusicCodec = null, + Object? downloadMusicCodec = null, + Object? discordPresence = null, + Object? endlessPlayback = null, + }) { + return _then(_value.copyWith( + audioQuality: null == audioQuality + ? _value.audioQuality + : audioQuality // ignore: cast_nullable_to_non_nullable + as SourceQualities, + albumColorSync: null == albumColorSync + ? _value.albumColorSync + : albumColorSync // ignore: cast_nullable_to_non_nullable + as bool, + amoledDarkTheme: null == amoledDarkTheme + ? _value.amoledDarkTheme + : amoledDarkTheme // ignore: cast_nullable_to_non_nullable + as bool, + checkUpdate: null == checkUpdate + ? _value.checkUpdate + : checkUpdate // ignore: cast_nullable_to_non_nullable + as bool, + normalizeAudio: null == normalizeAudio + ? _value.normalizeAudio + : normalizeAudio // ignore: cast_nullable_to_non_nullable + as bool, + showSystemTrayIcon: null == showSystemTrayIcon + ? _value.showSystemTrayIcon + : showSystemTrayIcon // ignore: cast_nullable_to_non_nullable + as bool, + skipNonMusic: null == skipNonMusic + ? _value.skipNonMusic + : skipNonMusic // ignore: cast_nullable_to_non_nullable + as bool, + systemTitleBar: null == systemTitleBar + ? _value.systemTitleBar + : systemTitleBar // ignore: cast_nullable_to_non_nullable + as bool, + closeBehavior: null == closeBehavior + ? _value.closeBehavior + : closeBehavior // ignore: cast_nullable_to_non_nullable + as CloseBehavior, + accentColorScheme: null == accentColorScheme + ? _value.accentColorScheme + : accentColorScheme // ignore: cast_nullable_to_non_nullable + as SpotubeColor, + layoutMode: null == layoutMode + ? _value.layoutMode + : layoutMode // ignore: cast_nullable_to_non_nullable + as LayoutMode, + locale: null == locale + ? _value.locale + : locale // ignore: cast_nullable_to_non_nullable + as Locale, + recommendationMarket: null == recommendationMarket + ? _value.recommendationMarket + : recommendationMarket // ignore: cast_nullable_to_non_nullable + as Market, + searchMode: null == searchMode + ? _value.searchMode + : searchMode // ignore: cast_nullable_to_non_nullable + as SearchMode, + downloadLocation: null == downloadLocation + ? _value.downloadLocation + : downloadLocation // ignore: cast_nullable_to_non_nullable + as String, + pipedInstance: null == pipedInstance + ? _value.pipedInstance + : pipedInstance // ignore: cast_nullable_to_non_nullable + as String, + themeMode: null == themeMode + ? _value.themeMode + : themeMode // ignore: cast_nullable_to_non_nullable + as ThemeMode, + audioSource: null == audioSource + ? _value.audioSource + : audioSource // ignore: cast_nullable_to_non_nullable + as AudioSource, + streamMusicCodec: null == streamMusicCodec + ? _value.streamMusicCodec + : streamMusicCodec // ignore: cast_nullable_to_non_nullable + as SourceCodecs, + downloadMusicCodec: null == downloadMusicCodec + ? _value.downloadMusicCodec + : downloadMusicCodec // ignore: cast_nullable_to_non_nullable + as SourceCodecs, + discordPresence: null == discordPresence + ? _value.discordPresence + : discordPresence // ignore: cast_nullable_to_non_nullable + as bool, + endlessPlayback: null == endlessPlayback + ? _value.endlessPlayback + : endlessPlayback // ignore: cast_nullable_to_non_nullable + as bool, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$UserPreferencesImplCopyWith<$Res> + implements $UserPreferencesCopyWith<$Res> { + factory _$$UserPreferencesImplCopyWith(_$UserPreferencesImpl value, + $Res Function(_$UserPreferencesImpl) then) = + __$$UserPreferencesImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {SourceQualities audioQuality, + bool albumColorSync, + bool amoledDarkTheme, + bool checkUpdate, + bool normalizeAudio, + bool showSystemTrayIcon, + bool skipNonMusic, + bool systemTitleBar, + CloseBehavior closeBehavior, + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + SpotubeColor accentColorScheme, + LayoutMode layoutMode, + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + Locale locale, + Market recommendationMarket, + SearchMode searchMode, + String downloadLocation, + String pipedInstance, + ThemeMode themeMode, + AudioSource audioSource, + SourceCodecs streamMusicCodec, + SourceCodecs downloadMusicCodec, + bool discordPresence, + bool endlessPlayback}); +} + +/// @nodoc +class __$$UserPreferencesImplCopyWithImpl<$Res> + extends _$UserPreferencesCopyWithImpl<$Res, _$UserPreferencesImpl> + implements _$$UserPreferencesImplCopyWith<$Res> { + __$$UserPreferencesImplCopyWithImpl( + _$UserPreferencesImpl _value, $Res Function(_$UserPreferencesImpl) _then) + : super(_value, _then); + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? audioQuality = null, + Object? albumColorSync = null, + Object? amoledDarkTheme = null, + Object? checkUpdate = null, + Object? normalizeAudio = null, + Object? showSystemTrayIcon = null, + Object? skipNonMusic = null, + Object? systemTitleBar = null, + Object? closeBehavior = null, + Object? accentColorScheme = null, + Object? layoutMode = null, + Object? locale = null, + Object? recommendationMarket = null, + Object? searchMode = null, + Object? downloadLocation = null, + Object? pipedInstance = null, + Object? themeMode = null, + Object? audioSource = null, + Object? streamMusicCodec = null, + Object? downloadMusicCodec = null, + Object? discordPresence = null, + Object? endlessPlayback = null, + }) { + return _then(_$UserPreferencesImpl( + audioQuality: null == audioQuality + ? _value.audioQuality + : audioQuality // ignore: cast_nullable_to_non_nullable + as SourceQualities, + albumColorSync: null == albumColorSync + ? _value.albumColorSync + : albumColorSync // ignore: cast_nullable_to_non_nullable + as bool, + amoledDarkTheme: null == amoledDarkTheme + ? _value.amoledDarkTheme + : amoledDarkTheme // ignore: cast_nullable_to_non_nullable + as bool, + checkUpdate: null == checkUpdate + ? _value.checkUpdate + : checkUpdate // ignore: cast_nullable_to_non_nullable + as bool, + normalizeAudio: null == normalizeAudio + ? _value.normalizeAudio + : normalizeAudio // ignore: cast_nullable_to_non_nullable + as bool, + showSystemTrayIcon: null == showSystemTrayIcon + ? _value.showSystemTrayIcon + : showSystemTrayIcon // ignore: cast_nullable_to_non_nullable + as bool, + skipNonMusic: null == skipNonMusic + ? _value.skipNonMusic + : skipNonMusic // ignore: cast_nullable_to_non_nullable + as bool, + systemTitleBar: null == systemTitleBar + ? _value.systemTitleBar + : systemTitleBar // ignore: cast_nullable_to_non_nullable + as bool, + closeBehavior: null == closeBehavior + ? _value.closeBehavior + : closeBehavior // ignore: cast_nullable_to_non_nullable + as CloseBehavior, + accentColorScheme: null == accentColorScheme + ? _value.accentColorScheme + : accentColorScheme // ignore: cast_nullable_to_non_nullable + as SpotubeColor, + layoutMode: null == layoutMode + ? _value.layoutMode + : layoutMode // ignore: cast_nullable_to_non_nullable + as LayoutMode, + locale: null == locale + ? _value.locale + : locale // ignore: cast_nullable_to_non_nullable + as Locale, + recommendationMarket: null == recommendationMarket + ? _value.recommendationMarket + : recommendationMarket // ignore: cast_nullable_to_non_nullable + as Market, + searchMode: null == searchMode + ? _value.searchMode + : searchMode // ignore: cast_nullable_to_non_nullable + as SearchMode, + downloadLocation: null == downloadLocation + ? _value.downloadLocation + : downloadLocation // ignore: cast_nullable_to_non_nullable + as String, + pipedInstance: null == pipedInstance + ? _value.pipedInstance + : pipedInstance // ignore: cast_nullable_to_non_nullable + as String, + themeMode: null == themeMode + ? _value.themeMode + : themeMode // ignore: cast_nullable_to_non_nullable + as ThemeMode, + audioSource: null == audioSource + ? _value.audioSource + : audioSource // ignore: cast_nullable_to_non_nullable + as AudioSource, + streamMusicCodec: null == streamMusicCodec + ? _value.streamMusicCodec + : streamMusicCodec // ignore: cast_nullable_to_non_nullable + as SourceCodecs, + downloadMusicCodec: null == downloadMusicCodec + ? _value.downloadMusicCodec + : downloadMusicCodec // ignore: cast_nullable_to_non_nullable + as SourceCodecs, + discordPresence: null == discordPresence + ? _value.discordPresence + : discordPresence // ignore: cast_nullable_to_non_nullable + as bool, + endlessPlayback: null == endlessPlayback + ? _value.endlessPlayback + : endlessPlayback // ignore: cast_nullable_to_non_nullable + as bool, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$UserPreferencesImpl implements _UserPreferences { + const _$UserPreferencesImpl( + {this.audioQuality = SourceQualities.high, + this.albumColorSync = true, + this.amoledDarkTheme = false, + this.checkUpdate = true, + this.normalizeAudio = false, + this.showSystemTrayIcon = true, + this.skipNonMusic = false, + this.systemTitleBar = false, + this.closeBehavior = CloseBehavior.minimizeToTray, + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + this.accentColorScheme = const SpotubeColor(0xFF2196F3, name: "Blue"), + this.layoutMode = LayoutMode.adaptive, + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + this.locale = const Locale("system", "system"), + this.recommendationMarket = Market.US, + this.searchMode = SearchMode.youtube, + this.downloadLocation = "", + this.pipedInstance = "https://pipedapi.kavin.rocks", + this.themeMode = ThemeMode.system, + this.audioSource = AudioSource.youtube, + this.streamMusicCodec = SourceCodecs.weba, + this.downloadMusicCodec = SourceCodecs.m4a, + this.discordPresence = true, + this.endlessPlayback = true}); + + factory _$UserPreferencesImpl.fromJson(Map json) => + _$$UserPreferencesImplFromJson(json); + + @override + @JsonKey() + final SourceQualities audioQuality; + @override + @JsonKey() + final bool albumColorSync; + @override + @JsonKey() + final bool amoledDarkTheme; + @override + @JsonKey() + final bool checkUpdate; + @override + @JsonKey() + final bool normalizeAudio; + @override + @JsonKey() + final bool showSystemTrayIcon; + @override + @JsonKey() + final bool skipNonMusic; + @override + @JsonKey() + final bool systemTitleBar; + @override + @JsonKey() + final CloseBehavior closeBehavior; + @override + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + final SpotubeColor accentColorScheme; + @override + @JsonKey() + final LayoutMode layoutMode; + @override + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + final Locale locale; + @override + @JsonKey() + final Market recommendationMarket; + @override + @JsonKey() + final SearchMode searchMode; + @override + @JsonKey() + final String downloadLocation; + @override + @JsonKey() + final String pipedInstance; + @override + @JsonKey() + final ThemeMode themeMode; + @override + @JsonKey() + final AudioSource audioSource; + @override + @JsonKey() + final SourceCodecs streamMusicCodec; + @override + @JsonKey() + final SourceCodecs downloadMusicCodec; + @override + @JsonKey() + final bool discordPresence; + @override + @JsonKey() + final bool endlessPlayback; + + @override + String toString() { + return 'UserPreferences(audioQuality: $audioQuality, albumColorSync: $albumColorSync, amoledDarkTheme: $amoledDarkTheme, checkUpdate: $checkUpdate, normalizeAudio: $normalizeAudio, showSystemTrayIcon: $showSystemTrayIcon, skipNonMusic: $skipNonMusic, systemTitleBar: $systemTitleBar, closeBehavior: $closeBehavior, accentColorScheme: $accentColorScheme, layoutMode: $layoutMode, locale: $locale, recommendationMarket: $recommendationMarket, searchMode: $searchMode, downloadLocation: $downloadLocation, pipedInstance: $pipedInstance, themeMode: $themeMode, audioSource: $audioSource, streamMusicCodec: $streamMusicCodec, downloadMusicCodec: $downloadMusicCodec, discordPresence: $discordPresence, endlessPlayback: $endlessPlayback)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$UserPreferencesImpl && + (identical(other.audioQuality, audioQuality) || + other.audioQuality == audioQuality) && + (identical(other.albumColorSync, albumColorSync) || + other.albumColorSync == albumColorSync) && + (identical(other.amoledDarkTheme, amoledDarkTheme) || + other.amoledDarkTheme == amoledDarkTheme) && + (identical(other.checkUpdate, checkUpdate) || + other.checkUpdate == checkUpdate) && + (identical(other.normalizeAudio, normalizeAudio) || + other.normalizeAudio == normalizeAudio) && + (identical(other.showSystemTrayIcon, showSystemTrayIcon) || + other.showSystemTrayIcon == showSystemTrayIcon) && + (identical(other.skipNonMusic, skipNonMusic) || + other.skipNonMusic == skipNonMusic) && + (identical(other.systemTitleBar, systemTitleBar) || + other.systemTitleBar == systemTitleBar) && + (identical(other.closeBehavior, closeBehavior) || + other.closeBehavior == closeBehavior) && + (identical(other.accentColorScheme, accentColorScheme) || + other.accentColorScheme == accentColorScheme) && + (identical(other.layoutMode, layoutMode) || + other.layoutMode == layoutMode) && + (identical(other.locale, locale) || other.locale == locale) && + (identical(other.recommendationMarket, recommendationMarket) || + other.recommendationMarket == recommendationMarket) && + (identical(other.searchMode, searchMode) || + other.searchMode == searchMode) && + (identical(other.downloadLocation, downloadLocation) || + other.downloadLocation == downloadLocation) && + (identical(other.pipedInstance, pipedInstance) || + other.pipedInstance == pipedInstance) && + (identical(other.themeMode, themeMode) || + other.themeMode == themeMode) && + (identical(other.audioSource, audioSource) || + other.audioSource == audioSource) && + (identical(other.streamMusicCodec, streamMusicCodec) || + other.streamMusicCodec == streamMusicCodec) && + (identical(other.downloadMusicCodec, downloadMusicCodec) || + other.downloadMusicCodec == downloadMusicCodec) && + (identical(other.discordPresence, discordPresence) || + other.discordPresence == discordPresence) && + (identical(other.endlessPlayback, endlessPlayback) || + other.endlessPlayback == endlessPlayback)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => Object.hashAll([ + runtimeType, + audioQuality, + albumColorSync, + amoledDarkTheme, + checkUpdate, + normalizeAudio, + showSystemTrayIcon, + skipNonMusic, + systemTitleBar, + closeBehavior, + accentColorScheme, + layoutMode, + locale, + recommendationMarket, + searchMode, + downloadLocation, + pipedInstance, + themeMode, + audioSource, + streamMusicCodec, + downloadMusicCodec, + discordPresence, + endlessPlayback + ]); + + @JsonKey(ignore: true) + @override + @pragma('vm:prefer-inline') + _$$UserPreferencesImplCopyWith<_$UserPreferencesImpl> get copyWith => + __$$UserPreferencesImplCopyWithImpl<_$UserPreferencesImpl>( + this, _$identity); + + @override + Map toJson() { + return _$$UserPreferencesImplToJson( + this, + ); + } +} + +abstract class _UserPreferences implements UserPreferences { + const factory _UserPreferences( + {final SourceQualities audioQuality, + final bool albumColorSync, + final bool amoledDarkTheme, + final bool checkUpdate, + final bool normalizeAudio, + final bool showSystemTrayIcon, + final bool skipNonMusic, + final bool systemTitleBar, + final CloseBehavior closeBehavior, + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + final SpotubeColor accentColorScheme, + final LayoutMode layoutMode, + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + final Locale locale, + final Market recommendationMarket, + final SearchMode searchMode, + final String downloadLocation, + final String pipedInstance, + final ThemeMode themeMode, + final AudioSource audioSource, + final SourceCodecs streamMusicCodec, + final SourceCodecs downloadMusicCodec, + final bool discordPresence, + final bool endlessPlayback}) = _$UserPreferencesImpl; + + factory _UserPreferences.fromJson(Map json) = + _$UserPreferencesImpl.fromJson; + + @override + SourceQualities get audioQuality; + @override + bool get albumColorSync; + @override + bool get amoledDarkTheme; + @override + bool get checkUpdate; + @override + bool get normalizeAudio; + @override + bool get showSystemTrayIcon; + @override + bool get skipNonMusic; + @override + bool get systemTitleBar; + @override + CloseBehavior get closeBehavior; + @override + @JsonKey( + fromJson: UserPreferences._accentColorSchemeFromJson, + toJson: UserPreferences._accentColorSchemeToJson, + readValue: UserPreferences._accentColorSchemeReadValue) + SpotubeColor get accentColorScheme; + @override + LayoutMode get layoutMode; + @override + @JsonKey( + fromJson: UserPreferences._localeFromJson, + toJson: UserPreferences._localeToJson, + readValue: UserPreferences._localeReadValue) + Locale get locale; + @override + Market get recommendationMarket; + @override + SearchMode get searchMode; + @override + String get downloadLocation; + @override + String get pipedInstance; + @override + ThemeMode get themeMode; + @override + AudioSource get audioSource; + @override + SourceCodecs get streamMusicCodec; + @override + SourceCodecs get downloadMusicCodec; + @override + bool get discordPresence; + @override + bool get endlessPlayback; + @override + @JsonKey(ignore: true) + _$$UserPreferencesImplCopyWith<_$UserPreferencesImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/provider/user_preferences/user_preferences_state.g.dart b/lib/provider/user_preferences/user_preferences_state.g.dart index 59043601..ce488247 100644 --- a/lib/provider/user_preferences/user_preferences_state.g.dart +++ b/lib/provider/user_preferences/user_preferences_state.g.dart @@ -6,67 +6,63 @@ part of 'user_preferences_state.dart'; // JsonSerializableGenerator // ************************************************************************** -UserPreferences _$UserPreferencesFromJson(Map json) => - UserPreferences( - audioQuality: $enumDecodeNullable( - _$SourceQualitiesEnumMap, json['audioQuality'], - unknownValue: SourceQualities.high) ?? - SourceQualities.high, +_$UserPreferencesImpl _$$UserPreferencesImplFromJson( + Map json) => + _$UserPreferencesImpl( + audioQuality: + $enumDecodeNullable(_$SourceQualitiesEnumMap, json['audioQuality']) ?? + SourceQualities.high, albumColorSync: json['albumColorSync'] as bool? ?? true, amoledDarkTheme: json['amoledDarkTheme'] as bool? ?? false, checkUpdate: json['checkUpdate'] as bool? ?? true, normalizeAudio: json['normalizeAudio'] as bool? ?? false, showSystemTrayIcon: json['showSystemTrayIcon'] as bool? ?? true, - skipNonMusic: json['skipNonMusic'] as bool? ?? true, + skipNonMusic: json['skipNonMusic'] as bool? ?? false, systemTitleBar: json['systemTitleBar'] as bool? ?? false, - closeBehavior: $enumDecodeNullable( - _$CloseBehaviorEnumMap, json['closeBehavior'], - unknownValue: CloseBehavior.minimizeToTray) ?? - CloseBehavior.minimizeToTray, + closeBehavior: + $enumDecodeNullable(_$CloseBehaviorEnumMap, json['closeBehavior']) ?? + CloseBehavior.minimizeToTray, accentColorScheme: UserPreferences._accentColorSchemeReadValue( json, 'accentColorScheme') == null - ? UserPreferences._defaultAccentColorScheme() + ? const SpotubeColor(0xFF2196F3, name: "Blue") : UserPreferences._accentColorSchemeFromJson( UserPreferences._accentColorSchemeReadValue( json, 'accentColorScheme') as Map), - layoutMode: $enumDecodeNullable(_$LayoutModeEnumMap, json['layoutMode'], - unknownValue: LayoutMode.adaptive) ?? - LayoutMode.adaptive, + layoutMode: + $enumDecodeNullable(_$LayoutModeEnumMap, json['layoutMode']) ?? + LayoutMode.adaptive, locale: UserPreferences._localeReadValue(json, 'locale') == null - ? UserPreferences._defaultLocaleValue() + ? const Locale("system", "system") : UserPreferences._localeFromJson( UserPreferences._localeReadValue(json, 'locale') as Map), - recommendationMarket: $enumDecodeNullable( - _$MarketEnumMap, json['recommendationMarket'], - unknownValue: Market.US) ?? - Market.US, - searchMode: $enumDecodeNullable(_$SearchModeEnumMap, json['searchMode'], - unknownValue: SearchMode.youtube) ?? - SearchMode.youtube, - downloadLocation: json['downloadLocation'] as String? ?? '', + recommendationMarket: + $enumDecodeNullable(_$MarketEnumMap, json['recommendationMarket']) ?? + Market.US, + searchMode: + $enumDecodeNullable(_$SearchModeEnumMap, json['searchMode']) ?? + SearchMode.youtube, + downloadLocation: json['downloadLocation'] as String? ?? "", pipedInstance: - json['pipedInstance'] as String? ?? 'https://pipedapi.kavin.rocks', - themeMode: $enumDecodeNullable(_$ThemeModeEnumMap, json['themeMode'], - unknownValue: ThemeMode.system) ?? + json['pipedInstance'] as String? ?? "https://pipedapi.kavin.rocks", + themeMode: $enumDecodeNullable(_$ThemeModeEnumMap, json['themeMode']) ?? ThemeMode.system, - audioSource: $enumDecodeNullable( - _$AudioSourceEnumMap, json['audioSource'], - unknownValue: AudioSource.youtube) ?? - AudioSource.youtube, + audioSource: + $enumDecodeNullable(_$AudioSourceEnumMap, json['audioSource']) ?? + AudioSource.youtube, streamMusicCodec: $enumDecodeNullable( - _$SourceCodecsEnumMap, json['streamMusicCodec'], - unknownValue: SourceCodecs.weba) ?? + _$SourceCodecsEnumMap, json['streamMusicCodec']) ?? SourceCodecs.weba, downloadMusicCodec: $enumDecodeNullable( - _$SourceCodecsEnumMap, json['downloadMusicCodec'], - unknownValue: SourceCodecs.m4a) ?? + _$SourceCodecsEnumMap, json['downloadMusicCodec']) ?? SourceCodecs.m4a, discordPresence: json['discordPresence'] as bool? ?? true, + endlessPlayback: json['endlessPlayback'] as bool? ?? true, ); -Map _$UserPreferencesToJson(UserPreferences instance) => +Map _$$UserPreferencesImplToJson( + _$UserPreferencesImpl instance) => { 'audioQuality': _$SourceQualitiesEnumMap[instance.audioQuality]!, 'albumColorSync': instance.albumColorSync, @@ -90,6 +86,7 @@ Map _$UserPreferencesToJson(UserPreferences instance) => 'streamMusicCodec': _$SourceCodecsEnumMap[instance.streamMusicCodec]!, 'downloadMusicCodec': _$SourceCodecsEnumMap[instance.downloadMusicCodec]!, 'discordPresence': instance.discordPresence, + 'endlessPlayback': instance.endlessPlayback, }; const _$SourceQualitiesEnumMap = { diff --git a/pubspec.lock b/pubspec.lock index 1a95f20e..0d1b2993 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -957,8 +957,16 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: "6c5031daae12c7072b3a87eff98983076434b4889ef2a44384d0cae3f82372ba" + url: "https://pub.dev" + source: hosted + version: "2.4.6" freezed_annotation: - dependency: transitive + dependency: "direct main" description: name: freezed_annotation sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d diff --git a/pubspec.yaml b/pubspec.yaml index 1b3d15b0..d3fb5630 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -122,6 +122,7 @@ dependencies: app_links: ^3.5.0 win32_registry: ^1.1.2 flutter_sharing_intent: ^1.1.0 + freezed_annotation: ^2.4.1 dev_dependencies: build_runner: ^2.3.2 @@ -138,6 +139,7 @@ dev_dependencies: json_serializable: ^6.6.2 pub_api_client: ^2.4.0 pubspec_parse: ^1.2.2 + freezed: ^2.4.6 dependency_overrides: http: ^1.1.0 diff --git a/untranslated_messages.json b/untranslated_messages.json index 748a9906..4240c8c0 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -2,108 +2,126 @@ "ar": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "bn": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "ca": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "de": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "es": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "fa": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "fr": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "hi": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "it": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "ja": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "ne": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "nl": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "pl": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "pt": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "ru": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "tr": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "uk": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ], "zh": [ "start_a_radio", "how_to_start_radio", - "replace_queue_question" + "replace_queue_question", + "endless_playback" ] } From 5ad5d16683b22d47d3967111b429588626696f91 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 31 Jan 2024 18:07:40 +0600 Subject: [PATCH 03/59] chore: use query as key name for endless playback radio search --- lib/components/shared/track_tile/track_options.dart | 5 +++-- lib/hooks/configurators/use_endless_playback.dart | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/components/shared/track_tile/track_options.dart b/lib/components/shared/track_tile/track_options.dart index d0d081ff..419f61a4 100644 --- a/lib/components/shared/track_tile/track_options.dart +++ b/lib/components/shared/track_tile/track_options.dart @@ -95,13 +95,14 @@ class TrackOptions extends HookConsumerWidget { final playback = ref.read(ProxyPlaylistNotifier.notifier); final playlist = ref.read(ProxyPlaylistNotifier.provider); final spotify = ref.read(spotifyProvider); + final query = "${track.name} Radio"; final pages = await QueryClient.of(context) .fetchInfiniteQueryJob, dynamic, int, SearchParams>( - job: SearchQueries.queryJob(SearchType.playlist.name), + job: SearchQueries.queryJob(query), args: ( spotify: spotify, searchType: SearchType.playlist, - query: "${track.name} Radio" + query: query, ), ) ?? []; diff --git a/lib/hooks/configurators/use_endless_playback.dart b/lib/hooks/configurators/use_endless_playback.dart index ffbb6991..f5d11829 100644 --- a/lib/hooks/configurators/use_endless_playback.dart +++ b/lib/hooks/configurators/use_endless_playback.dart @@ -31,13 +31,14 @@ void useEndlessPlayback(WidgetRef ref) { final track = playlist.tracks.last; + final query = "${track.name} Radio"; final pages = await queryClient.fetchInfiniteQueryJob, dynamic, int, SearchParams>( - job: SearchQueries.queryJob(SearchType.playlist.name), + job: SearchQueries.queryJob(query), args: ( spotify: spotify, searchType: SearchType.playlist, - query: "${track.name} Radio" + query: query ), ) ?? []; From 9b9822cc3c7321f069ead85251e2b836d1455a75 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Wed, 31 Jan 2024 21:56:47 +0600 Subject: [PATCH 04/59] chore: add ios development team --- ios/Runner.xcodeproj/project.pbxproj | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 6edf52e3..dbcdd7a6 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -1056,6 +1056,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1078,6 +1079,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1099,6 +1101,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1198,6 +1201,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1294,6 +1298,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1387,6 +1392,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1408,6 +1414,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1430,6 +1437,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1452,6 +1460,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1473,6 +1482,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1494,6 +1504,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1515,6 +1526,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1614,6 +1626,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1636,6 +1649,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1732,6 +1746,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1753,6 +1768,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1846,6 +1862,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1867,6 +1884,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1888,6 +1906,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1910,6 +1929,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1932,6 +1952,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1954,6 +1975,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1975,6 +1997,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1996,6 +2019,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2017,6 +2041,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2038,6 +2063,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2059,6 +2085,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2158,6 +2185,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2180,6 +2208,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2202,6 +2231,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2298,6 +2328,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2319,6 +2350,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2340,6 +2372,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2433,6 +2466,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "stable-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2454,6 +2488,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "dev-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2475,6 +2510,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-nightly"; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 88NVGSJ5N3; ENABLE_BITCODE = NO; INFOPLIST_FILE = "nightly-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( From 46830d212203de84b452eeae4a96475a41ed100f Mon Sep 17 00:00:00 2001 From: Vishwas Saini <85990875+VishwasSaini25@users.noreply.github.com> Date: Fri, 9 Feb 2024 09:25:27 +0530 Subject: [PATCH 05/59] website: Website enhancement (#1203) --- website/pages/index.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/pages/index.tsx b/website/pages/index.tsx index 770ffc41..b0032c18 100755 --- a/website/pages/index.tsx +++ b/website/pages/index.tsx @@ -32,7 +32,7 @@ const Root = () => { md: "transparent", }} > - + Spotube @@ -44,7 +44,7 @@ const Root = () => { {/* */} - + { /> { }} color="gray.800" > - Access all your Spotify Music & Playlists + Access all your Spotify Music & Playlists You can use all your Spotify tracks & playlists here. Everything will be in Sync & some action taken from Spotube will also @@ -111,7 +112,7 @@ const Root = () => { display: "block", height: "100%", width: "100%", - background: "url('/headline-2b.png') rgba(0, 0, 0, 0.9)", + background: "url('/headline-2b.png') rgba(0, 0, 0, 0)", bgSize: "contain", bgRepeat: "no-repeat", bgPos: "center", @@ -130,7 +131,7 @@ const Root = () => { From 8167963212eeb5dfb0b4fb2eadf81d466659a9f1 Mon Sep 17 00:00:00 2001 From: Stephan Paternotte Date: Fri, 9 Feb 2024 04:59:15 +0100 Subject: [PATCH 06/59] fix(translations): Update app_nl.arb (#1168) I made a couple of improvements to the Dutch translation, which I hope the original translator will appreciate. --- lib/l10n/app_nl.arb | 185 ++++++++++++++++++++++---------------------- 1 file changed, 92 insertions(+), 93 deletions(-) diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index bf819c57..3bece8be 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -1,107 +1,107 @@ { "guest": "Gast", "browse": "Bladeren", - "search": "Zoek op", + "search": "Zoeken", "library": "Bibliotheek", - "lyrics": "Liedteksten", + "lyrics": "Teksten", "settings": "Instellingen", - "genre_categories_filter": "Categorieën of genres filteren...", + "genre_categories_filter": "Categorieën of genres filteren…", "genre": "Genre", "personalized": "Gepersonaliseerd", "featured": "Aanbevolen", "new_releases": "Nieuwe uitgaves", "songs": "Liedjes", "playing_track": "{track} afspelen", - "queue_clear_alert": "Dit zal de huidige wachtrij wissen. {track_length} tracks worden verwijderd\nWilt u doorgaan?", + "queue_clear_alert": "Dit zal de huidige wachtrij wissen. {track_length} nummers worden verwijderd\nWil je doorgaan?", "load_more": "Meer laden", "playlists": "Afspeellijsten", - "artists": "Kunstenaars", + "artists": "Artiesten", "albums": "Albums", "tracks": "Nummers", "downloads": "Downloads", - "filter_playlists": "Filter uw afspeellijsten...", + "filter_playlists": "Afspeellijsten filteren…", "liked_tracks": "Geliefde tracks", "liked_tracks_description": "Al je favoriete nummers", - "create_playlist": "Afspeellijst maken", - "create_a_playlist": "Een afspeellijst maken", + "create_playlist": "Afspeellijst aanmaken", + "create_a_playlist": "Een afspeellijst aanmaken", "update_playlist": "Afspeellijst bijwerken", - "create": "Maak", + "create": "Aanmaken", "cancel": "Annuleren", "update": "Bijwerken", - "playlist_name": "Afspeellijstnaam", + "playlist_name": "Naam afspeellijst", "name_of_playlist": "Naam van de afspeellijst", "description": "Beschrijving", "public": "Openbaar", "collaborative": "Samenwerkend", - "search_local_tracks": "Lokale nummers zoeken...", - "play": "Speel", + "search_local_tracks": "Lokale nummers zoeken…", + "play": "Afspelen", "delete": "Wissen", "none": "Geen", "sort_a_z": "Sorteren op A-Z", "sort_z_a": "Sorteren op Z-A", - "sort_artist": "Sorteren op kunstenaar", + "sort_artist": "Sorteren op artiest", "sort_album": "Sorteren op album", "sort_tracks": "Nummers sorteren", "currently_downloading": "Momenteel aan het downloaden ({tracks_length})", "cancel_all": "Alle annuleren", - "filter_artist": "Kunstenaars filteren...", + "filter_artist": "Artiesten filteren…", "followers": "{followers} volgers", - "add_artist_to_blacklist": "Kunstenaar toevoegen aan zwarte lijst", + "add_artist_to_blacklist": "Artiest toevoegen aan zwarte lijst", "top_tracks": "Topsporen", "fans_also_like": "Liefhebbers willen ook", - "loading": "Aan het laden...", - "artist": "Kunstenaar", - "blacklisted": "Op de zwarte lijst", - "following": "Op volg", + "loading": "Laden…", + "artist": "Artiest", + "blacklisted": "Zwarte lijst", + "following": "Volgen", "follow": "Volgen", "artist_url_copied": "URL artiest gekopieerd naar klembord", - "added_to_queue": "{tracks} tracks toegevoegd aan wachtrij", - "filter_albums": "Albums filteren...", + "added_to_queue": "{tracks} nummers toegevoegd aan wachtrij", + "filter_albums": "Albums filteren…", "synced": "Gesynchroniseerd", "plain": "Eenvoudig", - "shuffle": "Schuifelen", - "search_tracks": "Zoek nummers...", - "released": "Vrijgegeven", + "shuffle": "Willekeurig", + "search_tracks": "Nummers zoeken…", + "released": "Uitgegeven", "error": "Fout {error}", "title": "Titel", "time": "Tijd", "more_actions": "Meer acties", "download_count": "({count}) downloads", - "add_count_to_playlist": "Voeg ({count}) toe aan afspeellijst", - "add_count_to_queue": "Voeg ({count}) toe aan wachtrij", - "play_count_next": "Speel ({count}) volgende", + "add_count_to_playlist": "({count}) aan afspeellijst toevoegen", + "add_count_to_queue": "({count}) aan wachtrij toevoegen", + "play_count_next": "Volgende ({count}) afspelen", "album": "Album", "copied_to_clipboard": "{data} naar klembord gekopieerd", - "add_to_following_playlists": "Voeg {track} toe aan volgende afspeellijsten", + "add_to_following_playlists": "{track} aan volgende afspeellijsten toevoegen", "add": "Toevoegen", - "added_track_to_queue": "{track} toegevoegd aan wachtrij", + "added_track_to_queue": "{track} aan wachtrij toegevoegd", "add_to_queue": "Toevoegen aan wachtrij", - "track_will_play_next": "{track} zal hierna spelen", + "track_will_play_next": "{track} wordt hierna afgespeeld", "play_next": "Volgende afspelen", - "removed_track_from_queue": "{track} uit wachtrij verwijderd", - "remove_from_queue": "Verwijderen uit wachtrij", - "remove_from_favorites": "Verwijderen uit favorieten", + "removed_track_from_queue": "{track} van wachtrij verwijderd", + "remove_from_queue": "Van wachtrij verwijderen", + "remove_from_favorites": "Van favorieten verwijderen", "save_as_favorite": "Opslaan als favoriet", - "add_to_playlist": "Toevoegen aan afspeellijst", - "remove_from_playlist": "Verwijderen uit afspeellijst", - "add_to_blacklist": "Toevoegen aan zwarte lijst", - "remove_from_blacklist": "Verwijderen uit zwarte lijst", + "add_to_playlist": "Aan afspeellijst toevoegen", + "remove_from_playlist": "Van afspeellijst verwijderen", + "add_to_blacklist": "Aan zwarte lijst toevoegen", + "remove_from_blacklist": "Van zwarte lijst verwijderen", "share": "Delen", "mini_player": "Minispeler", - "slide_to_seek": "Schuif om vooruit of achteruit te zoeken", + "slide_to_seek": "Schuiven om vooruit of achteruit te zoeken", "shuffle_playlist": "Afspeellijst schuifelen", "unshuffle_playlist": "Afspeellijst onschuifelen", "previous_track": "Vorige nummer", "next_track": "Volgende nummer", - "pause_playback": "Weergave pauzeren", - "resume_playback": "Weergave hervatten", - "loop_track": "Nummer loopen", + "pause_playback": "Afspelen pauzeren", + "resume_playback": "Afspelen hervatten", + "loop_track": "Nummer herhalen", "repeat_playlist": "Afspeellijst herhalen", "queue": "Wachtrij", "alternative_track_sources": "Alternatieve nummerbronnen", "download_track": "Nummer downloaden", - "tracks_in_queue": "{tracks} tracks in wachtrij", - "clear_all": "Wis alles", + "tracks_in_queue": "{tracks} nummers in wachtrij", + "clear_all": "Alles wissen", "show_hide_ui_on_hover": "UI tonen/verbergen bij zweven", "always_on_top": "Altijd bovenaan", "exit_mini_player": "Minispeler afsluiten", @@ -111,7 +111,7 @@ "connect_with_spotify": "Verbinden met Spotify", "logout": "Afmelden", "logout_of_this_account": "Afmelden van dit account", - "language_region": "Taal & Regio", + "language_region": "Taal & regio", "language": "Taal", "system_default": "Systeemstandaard", "market_place_region": "Marktplaats-regio", @@ -119,76 +119,78 @@ "appearance": "Uiterlijk", "layout_mode": "Opmaakmodus", "override_layout_settings": "Instellingen voor responsieve opmaakmodus opheffen", - "adaptive": "Aanpassingsgericht", + "adaptive": "Adaptief", "compact": "Compact", - "extended": "Uitgebreide", + "extended": "Uitgebreid", "theme": "Thema", "dark": "Donker", "light": "Licht", "system": "Systeem", "accent_color": "Accentkleur", "sync_album_color": "Albumkleur synchroniseren", - "sync_album_color_description": "Gebruikt de overheersende kleur van het albumartikel als accentkleur", + "sync_album_color_description": "Gebruikt de overheersende kleur van het album als accentkleur", "playback": "Weergave", "audio_quality": "Audiokwaliteit", "high": "Hoog", "low": "Laag", - "pre_download_play": "Vooraf downloaden en spelen", + "pre_download_play": "Vooraf downloaden en afspelen", "pre_download_play_description": "In plaats van audio te streamen, kun je bytes downloaden en afspelen (aanbevolen voor gebruikers met een hogere bandbreedte)", "skip_non_music": "Niet-muzieksegmenten overslaan (SponsorBlock)", "blacklist_description": "Nummers en artiesten op de zwarte lijst", "wait_for_download_to_finish": "Wacht tot de huidige download is voltooid", "desktop": "Bureaublad", "close_behavior": "Sluitgedrag", - "close": "Sluit af", - "minimize_to_tray": "Minimaliseren naar lade", + "close": "Afsluiten", + "minimize_to_tray": "Minimaliseren naar systeemvak", "show_tray_icon": "Systeemvakpictogram tonen", "about": "Over", - "u_love_spotube": "We weten dat jullie van Spotube houden", + "u_love_spotube": "We weten dat je van Spotube houd", "check_for_updates": "Controleren op updates", "about_spotube": "Over Spotube", "blacklist": "Zwarte lijst", "please_sponsor": "Sponsor/Doneer a.u.b.", "spotube_description": "Spotube, een lichtgewicht, cross-platform, vrij-voor-alles Spotify-client", "version": "Versie", - "build_number": "Beeldnummer", - "founder": "Stichter", + "build_number": "Bouwnummer", + "founder": "Grondlegger", "repository": "Opslagplaats", "bug_issues": "Bug+problemen", - "made_with": "Gemaakt met ❤️ in Bangladesh🇧🇩", + "made_with": "Met ❤️ gemaakt in Bangladesh🇧🇩", "kingkor_roy_tirtho": "Kingkor Roy Tirtho", "copyright": "© 2021-{current_year} Kingkor Roy Tirtho", "license": "Licentie", - "add_spotify_credentials": "Voeg je spotify-referenties toe om te beginnen", - "credentials_will_not_be_shared_disclaimer": "Maakt u geen zorgen, uw gegevens worden niet verzameld of gedeeld met anderen.", - "know_how_to_login": "Weet u niet hoe u dit moet doen?", - "follow_step_by_step_guide": "Volg de stap voor stap gids", + "add_spotify_credentials": "Voeg om te beginnen je spotify-aanmeldgegevens toe", + "credentials_will_not_be_shared_disclaimer": "Maak je geen zorgen, je gegevens worden niet verzameld of gedeeld met anderen.", + "know_how_to_login": "Weet je niet hoe je dit moet doen?", + "follow_step_by_step_guide": "Volg de stapsgewijze handleiding", "spotify_cookie": "Spotify {name} Cookie", "cookie_name_cookie": "{name} Cookie", "fill_in_all_fields": "Vul alle velden in a.u.b.", "submit": "Verzenden", - "exit": "Ga weg", + "exit": "Afronden", "previous": "Vorige", "next": "Volgende", "done": "Klaar", "step_1": "Stap 1", "first_go_to": "Ga eerst naar", - "login_if_not_logged_in": "en Inloggen/Aanmelden als u niet bent ingelogd", + "login_if_not_logged_in": "en Inloggen/Aanmelden als je niet bent ingelogd", "step_2": "Stap 2", "step_2_steps": "1. Zodra je bent aangemeld, druk je op F12 of klik je met de rechtermuisknop > Inspect om de Browser devtools te openen.\n2. Ga vervolgens naar het tabblad \"Toepassing\" (Chrome, Edge, Brave enz..) of naar het tabblad \"Opslag\" (Firefox, Palemoon enz..).\n3. Ga naar de sectie \"Cookies\" en vervolgens naar de subsectie \"https://accounts.spotify.com\".", "step_3": "Stap 3", + "step_3_steps": "De waarde van cookie \"sp_dc\" kopiëren", "success_emoji": "Succes🥳", - "success_message": "Je bent nu succesvol ingelogd met je Spotify account. Goed gedaan, maat!", + "success_message": "Je bent nu ingelogd met je Spotify account. Goed gedaan!", "step_4": "Stap 4", + "step_4_steps": "De gekopieerde waarde \"sp_dc\" plakken", "something_went_wrong": "Er ging iets mis", "piped_instance": "Piped-serverinstantie", - "piped_description": "De Piped-serverinstantie die moet worden gebruikt voor het matchen van sporen", + "piped_description": "De Piped-serverinstantie die moet worden gebruikt voor overeenkomstige nummers", "piped_warning": "Sommige werken misschien niet goed. Dus gebruik ze op eigen risico", "generate_playlist": "Afspeellijst genereren", "track_exists": "Nummer {track} bestaat al", "replace_downloaded_tracks": "Alle gedownloade nummers vervangen", "skip_download_tracks": "Downloaden van alle gedownloade nummers overslaan", - "do_you_want_to_replace": "Wil je de bestaande nummer vervangen?", + "do_you_want_to_replace": "Wil je het bestaande nummer vervangen?", "replace": "Vervangen", "skip": "Overslaan", "select_up_to_count_type": "Selecteer tot {count} {type}", @@ -196,13 +198,13 @@ "add_genres": "Genres toevoegen", "country": "Land", "number_of_tracks_generate": "Aantal nummers om te genereren", - "acousticness": "Akoesticiteit", + "acousticness": "Akoestiek", "danceability": "Dansbaarheid", "energy": "Energie", "instrumentalness": "Instrumentaliteit", "liveness": "Levendigheid", "loudness": "Luidheid", - "speechiness": "Sprakeligheid", + "speechiness": "Spraak", "valence": "Valentie", "popularity": "Populariteit", "key": "Sleutel", @@ -217,16 +219,16 @@ "max": "Max", "target": "Doel", "moderate": "Matig", - "deselect_all": "Alles deselecteren", + "deselect_all": "Selectie opheffen", "select_all": "Alles selecteren", "are_you_sure": "Weet je het zeker?", - "generating_playlist": "Je aangepaste afspeellijst genereren...", + "generating_playlist": "Aangepaste afspeellijst genereren…", "selected_count_tracks": "{count} nummers geselecteerd", - "download_warning": "Als je alle Tracks in bulk downloadt, ben je duidelijk bezig met muziekpiraterij en breng je schade toe aan de creatieve muziekmaatschappij. Ik hoop dat je je hiervan bewust bent. Probeer altijd het harde werk van artiesten te respecteren en te steunen.", - "download_ip_ban_warning": "BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken dan normaal. IP blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminste 2-3 maanden vanaf dat IP apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.", + "download_warning": "Als je alle nummers in bulk downloadt, ben je duidelijk bezig met muziekpiraterij en breng je schade toe aan de creatieve muziekmaatschappij. Ik hoop dat je je hiervan bewust bent. Probeer altijd het harde werk van artiesten te respecteren en te steunen.", + "download_ip_ban_warning": "BTW, je IP-adres kan worden geblokkeerd op YouTube als gevolg van buitensporige downloadverzoeken. IP-blokkering betekent dat je YouTube niet kunt gebruiken (zelfs als je ingelogd bent) voor tenminste 2-3 maanden vanaf dat IP-apparaat. Spotube is niet verantwoordelijk als dit ooit gebeurt.", "by_clicking_accept_terms": "Door op 'accepteren' te klikken ga je akkoord met de volgende voorwaarden:", - "download_agreement_1": "Ik weet dat ik muziek illegaal verveel. Ik ben en crimineel.", - "download_agreement_2": "Ik steun de kunstenaar waar ik kan en ik doe dit alleen omdat ik geen geld heb om hun kunst te kopen.", + "download_agreement_1": "Ik weet dat ik muziek illegaal donload. Ik ben slecht.", + "download_agreement_2": "Ik steun de artiest waar ik kan en ik doe dit alleen omdat ik geen geld heb om hun kunst te kopen.", "download_agreement_3": "Ik ben me er volledig van bewust dat mijn IP geblokkeerd kan worden op YouTube & ik houd Spotube of zijn eigenaars/contributeurs niet verantwoordelijk voor ongelukken die veroorzaakt worden door mijn huidige actie.", "decline": "Weigeren", "accept": "Accepteren", @@ -247,45 +249,42 @@ "custom_hours": "Aangepaste uren", "logs": "Logboeken", "developers": "Ontwikkelaars", - "not_logged_in": "U bent niet aangemeld", + "not_logged_in": "Je bent niet aangemeld", "search_mode": "Zoekmodus", "youtube_api_type": "API-type", "ok": "Oké", "failed_to_encrypt": "Versleuteling mislukt", - "encryption_failed_warning": "Spotube gebruikt encryptie om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, keepassxc etc) hebt geïnstalleerd.", - "querying_info": "Info opvragen...", + "encryption_failed_warning": "Spotube gebruikt versleuteling om je gegevens veilig op te slaan. Maar dat is niet gelukt. Dus zal het terugvallen op onveilige opslag.\nAls je linux gebruikt, zorg er dan voor dat je een geheim-dienst (gnome-keyring, kde-wallet, keepassxc etc) hebt geïnstalleerd.", + "querying_info": "Info opvragen…", "piped_api_down": "Piped API is uit", "piped_down_error_instructions": "De Piped-instantie {pipedInstance} is momenteel uitgevallen\n\nVerander de instantie of verander het 'API-type' naar de officiële YouTube API.\n\nZorg ervoor dat u de app herstart na de wijziging", - "you_are_offline": "U bent momenteel offline", - "connection_restored": "Uw internetverbinding is hersteld", + "you_are_offline": "Je bent momenteel offline", + "connection_restored": "Je internetverbinding is hersteld", "use_system_title_bar": "Systeemtitelbalk gebruiken", - "crunching_results": "Resultaten kraken...", - "search_to_get_results": "Zoek om resultaten te krijgen", + "crunching_results": "Resultaten verwerken…", + "search_to_get_results": "Zoeken naar resultaten", "use_amoled_mode": "Pikzwart donkerthema", "pitch_dark_theme": "AMOLED-modus", "normalize_audio": "Audio normaliseren", - "change_cover": "Dekking wijzigen", - "add_cover": "Dekking toevoegen", + "change_cover": "Hoes aanpassen", + "add_cover": "Hoes toevoegen", "restore_defaults": "Standaardwaarden herstellen", - "download_music_codec": "Muziek-codec downloaden", - "streaming_music_codec": "Muziek-codec streamen", - "login_with_lastfm": "Aanmelden met Last.fm", + "download_music_codec": "Download-codec", + "streaming_music_codec": "Streaming-codec", + "login_with_lastfm": "Inloggen met Last.fm", "connect": "Verbinden", "disconnect_lastfm": "Last.fm verbreken", - "disconnect": "Ontkoppelen", + "disconnect": "Verbeken", "username": "Gebruikersnaam", "password": "Wachtwoord", "login": "Inloggen", - "login_with_your_lastfm": "Inloggen met uw Last.fm account", - "scrobble_to_lastfm": "Scrobbel naar Last.fm", - "audio_source": "Audiobron", + "login_with_your_lastfm": "Inloggen met je Last.fm account", + "scrobble_to_lastfm": "Scrobbelen naar Last.fm", "go_to_album": "Ga naar album", "discord_rich_presence": "Discord Rich Presence", - "browse_all": "Alles bekijken", + "browse_all": "Alles doorbladeren", "genres": "Genres", - "explore_genres": "Verken genres", - "step_3_steps": "Kopieer de waarde van de \"sp_dc\"-cookie", - "step_4_steps": "Plak de gekopieerde waarde van \"sp_dc\"", + "explore_genres": "Genres verkennen", "friends": "Vrienden", - "no_lyrics_available": "Sorry, kan geen teksten vinden voor deze track" -} \ No newline at end of file + "no_lyrics_available": "Sorry, geen teksten gevonden voor dit nummer" +} From 0737a362d88e7d4d98e9b848d051b5e09bd455fc Mon Sep 17 00:00:00 2001 From: Stephan Paternotte Date: Fri, 9 Feb 2024 05:00:09 +0100 Subject: [PATCH 07/59] chore: Add 2nd dutch translator (#1170) 2nd Dutch translator added --- lib/l10n/l10n.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index 335be545..51d4ef7c 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -8,7 +8,7 @@ /// yuri-val@github => Ukrainian /// energywave@github, ncvescera@github, OpenCode@github => Italian /// mdksec@github => Turkish -/// SecularSteve@github => Dutch +/// Stephan-P@github, SecularSteve@github => Dutch import 'package:flutter/material.dart'; class L10n { From 8ed65bfa179000607397f3170c057d34afe37a56 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 13:45:54 +0600 Subject: [PATCH 08/59] chore: add folders to git ignore --- website/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/.gitignore b/website/.gitignore index 737d8721..ee4209a0 100755 --- a/website/.gitignore +++ b/website/.gitignore @@ -33,3 +33,6 @@ yarn-error.log* # typescript *.tsbuildinfo + +/.svelte-kit +/.netlify From cd669e22c12679ae328fdefdb460cc16dc2e88d0 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 13:48:27 +0600 Subject: [PATCH 09/59] website: new sveltekit based website (#1239) * feat: initialize website project * feat: add initial homepage with download links * feat: initial download page * fix: linux icon color * feat: add mobile nav and github star button * feat: add older and nightly downloads page * feat: add supporters and footer * feat: add author details in about page * feat: add darkmode toggle for website * feat: add playstore and flathub download buttons and contribution button * feat: add blogs support * feat: remove netlify deploy config and add cloudflare config and favicons + manifest * chore: add robots.txt * feat: add spotube logo in navbar and fix build errors * chore: add gap --- website/.eslintignore | 13 + website/.eslintrc.cjs | 31 + website/.eslintrc.json | 6 - website/.gitignore | 45 +- website/.node-version | 1 + website/.npmrc | 1 + website/.prettierignore | 4 + website/.prettierrc | 10 +- website/.vscode/settings.json | 120 + website/README.md | 50 +- website/components/AdDetector.tsx | 133 - website/components/ArticleCard.tsx | 138 - website/components/CodeBlock.tsx | 25 - website/components/DownloadButton.tsx | 118 - website/components/Footer.tsx | 88 - website/components/Navbar.tsx | 218 - website/components/UserDetailedCard.tsx | 153 - website/components/special.tsx | 72 - website/configurations/gtag.ts | 17 - website/configurations/ocotokit.ts | 3 - website/hooks/usePlatform.ts | 26 - website/misc/MarkdownComponentDefs.tsx | 43 - website/next-env.d.ts | 5 - website/next.config.js | 7 - website/package-lock.json | 6391 +++++++++++++++++ website/package.json | 92 +- website/pages/_app.tsx | 138 - website/pages/about/index.tsx | 68 - website/pages/blog/[slug].tsx | 119 - website/pages/blog/index.tsx | 66 - website/pages/index.tsx | 181 - website/pages/other-downloads/index.tsx | 109 - .../other-downloads/nightly-downloads.tsx | 118 - .../pages/other-downloads/package-manager.tsx | 117 - .../other-downloads/stable-downloads.tsx | 195 - website/playwright.config.ts | 12 + website/pnpm-lock.yaml | 4502 ------------ website/postcss.config.cjs | 6 + website/posts/getting-started-with-spotube.md | 84 - website/posts/images/.gitkeep | 0 website/posts/spotube-basics.md | 41 + website/public/android-chrome-192x192.png | Bin 25999 -> 0 bytes website/public/android-chrome-512x512.png | Bin 25999 -> 0 bytes website/public/apple-touch-icon.png | Bin 26572 -> 0 bytes website/public/favicon-16x16.png | Bin 1627 -> 0 bytes website/public/favicon-32x32.png | Bin 2682 -> 0 bytes website/public/favicon.ico | Bin 1150 -> 0 bytes website/public/google7d445d7199e703dc.html | 1 - website/public/headline-1.png | Bin 344416 -> 0 bytes website/public/headline-2a.svg | 1 - website/public/headline-2b.png | Bin 1167053 -> 0 bytes website/public/headline-3.svg | 1 - website/public/site.webmanifest | 1 - website/public/spotube-screenshot-web.jpg | Bin 330295 -> 0 bytes website/src/app.d.ts | 22 + website/src/app.html | 23 + website/src/app.postcss | 11 + .../downloads/download-items.svelte | 25 + .../src/lib/components/markdown/layout.svelte | 3 + .../components/navbar/darkmode-toggle.svelte | 32 + .../src/lib/components/navbar/navbar.svelte | 57 + .../lib/components/navdrawer/navdrawer.svelte | 37 + website/src/lib/index.ts | 61 + website/src/lib/persisted-store.ts | 106 + website/src/lib/posts.ts | 41 + website/src/routes/+layout.svelte | 71 + website/src/routes/+page.svelte | 110 + website/src/routes/+page.ts | 34 + website/src/routes/about/+page.svelte | 22 + website/src/routes/api/posts/+server.ts | 9 + website/src/routes/blog/+page.svelte | 32 + website/src/routes/blog/+page.ts | 11 + website/src/routes/blog/[slug]/+page.svelte | 26 + website/src/routes/blog/[slug]/+page.ts | 23 + website/src/routes/downloads/+page.svelte | 39 + .../src/routes/downloads/nightly/+page.svelte | 33 + .../src/routes/downloads/older/+page.svelte | 138 + website/src/routes/downloads/older/+page.ts | 14 + .../src/routes/downloads/packages/+page.svx | 70 + website/static/android-chrome-192x192.png | Bin 0 -> 12127 bytes website/static/android-chrome-512x512.png | Bin 0 -> 64675 bytes website/static/apple-touch-icon.png | Bin 0 -> 10898 bytes website/static/favicon-16x16.png | Bin 0 -> 390 bytes website/static/favicon-32x32.png | Bin 0 -> 777 bytes website/static/favicon.ico | Bin 0 -> 15406 bytes website/static/fonts/AbrilFatface.ttf | Bin 0 -> 58448 bytes website/static/images/spotube-logo.png | Bin 0 -> 91271 bytes .../images}/spotube-logo.svg | 0 website/static/manifest.json | 19 + website/static/robots.txt | 1 + website/styles/globals.css | 16 - website/svelte.config.js | 55 + website/tailwind.config.ts | 28 + website/tests/test.ts | 6 + website/tsconfig.json | 31 +- website/vite.config.ts | 22 + 96 files changed, 7913 insertions(+), 6885 deletions(-) create mode 100644 website/.eslintignore create mode 100644 website/.eslintrc.cjs delete mode 100755 website/.eslintrc.json mode change 100755 => 100644 website/.gitignore create mode 100644 website/.node-version create mode 100644 website/.npmrc create mode 100644 website/.prettierignore create mode 100644 website/.vscode/settings.json mode change 100755 => 100644 website/README.md delete mode 100644 website/components/AdDetector.tsx delete mode 100644 website/components/ArticleCard.tsx delete mode 100644 website/components/CodeBlock.tsx delete mode 100644 website/components/DownloadButton.tsx delete mode 100644 website/components/Footer.tsx delete mode 100644 website/components/Navbar.tsx delete mode 100644 website/components/UserDetailedCard.tsx delete mode 100644 website/components/special.tsx delete mode 100644 website/configurations/gtag.ts delete mode 100644 website/configurations/ocotokit.ts delete mode 100644 website/hooks/usePlatform.ts delete mode 100644 website/misc/MarkdownComponentDefs.tsx delete mode 100755 website/next-env.d.ts delete mode 100755 website/next.config.js create mode 100644 website/package-lock.json delete mode 100755 website/pages/_app.tsx delete mode 100644 website/pages/about/index.tsx delete mode 100644 website/pages/blog/[slug].tsx delete mode 100644 website/pages/blog/index.tsx delete mode 100755 website/pages/index.tsx delete mode 100644 website/pages/other-downloads/index.tsx delete mode 100644 website/pages/other-downloads/nightly-downloads.tsx delete mode 100644 website/pages/other-downloads/package-manager.tsx delete mode 100644 website/pages/other-downloads/stable-downloads.tsx create mode 100644 website/playwright.config.ts delete mode 100644 website/pnpm-lock.yaml create mode 100644 website/postcss.config.cjs delete mode 100644 website/posts/getting-started-with-spotube.md create mode 100644 website/posts/images/.gitkeep create mode 100644 website/posts/spotube-basics.md delete mode 100644 website/public/android-chrome-192x192.png delete mode 100644 website/public/android-chrome-512x512.png delete mode 100644 website/public/apple-touch-icon.png delete mode 100644 website/public/favicon-16x16.png delete mode 100644 website/public/favicon-32x32.png delete mode 100644 website/public/favicon.ico delete mode 100644 website/public/google7d445d7199e703dc.html delete mode 100644 website/public/headline-1.png delete mode 100644 website/public/headline-2a.svg delete mode 100644 website/public/headline-2b.png delete mode 100644 website/public/headline-3.svg delete mode 100644 website/public/site.webmanifest delete mode 100644 website/public/spotube-screenshot-web.jpg create mode 100644 website/src/app.d.ts create mode 100644 website/src/app.html create mode 100644 website/src/app.postcss create mode 100644 website/src/lib/components/downloads/download-items.svelte create mode 100644 website/src/lib/components/markdown/layout.svelte create mode 100644 website/src/lib/components/navbar/darkmode-toggle.svelte create mode 100644 website/src/lib/components/navbar/navbar.svelte create mode 100644 website/src/lib/components/navdrawer/navdrawer.svelte create mode 100644 website/src/lib/index.ts create mode 100644 website/src/lib/persisted-store.ts create mode 100644 website/src/lib/posts.ts create mode 100644 website/src/routes/+layout.svelte create mode 100644 website/src/routes/+page.svelte create mode 100644 website/src/routes/+page.ts create mode 100644 website/src/routes/about/+page.svelte create mode 100644 website/src/routes/api/posts/+server.ts create mode 100644 website/src/routes/blog/+page.svelte create mode 100644 website/src/routes/blog/+page.ts create mode 100644 website/src/routes/blog/[slug]/+page.svelte create mode 100644 website/src/routes/blog/[slug]/+page.ts create mode 100644 website/src/routes/downloads/+page.svelte create mode 100644 website/src/routes/downloads/nightly/+page.svelte create mode 100644 website/src/routes/downloads/older/+page.svelte create mode 100644 website/src/routes/downloads/older/+page.ts create mode 100644 website/src/routes/downloads/packages/+page.svx create mode 100644 website/static/android-chrome-192x192.png create mode 100644 website/static/android-chrome-512x512.png create mode 100644 website/static/apple-touch-icon.png create mode 100644 website/static/favicon-16x16.png create mode 100644 website/static/favicon-32x32.png create mode 100644 website/static/favicon.ico create mode 100644 website/static/fonts/AbrilFatface.ttf create mode 100644 website/static/images/spotube-logo.png rename website/{public => static/images}/spotube-logo.svg (100%) create mode 100644 website/static/manifest.json create mode 100644 website/static/robots.txt delete mode 100755 website/styles/globals.css create mode 100644 website/svelte.config.js create mode 100644 website/tailwind.config.ts create mode 100644 website/tests/test.ts mode change 100755 => 100644 website/tsconfig.json create mode 100644 website/vite.config.ts diff --git a/website/.eslintignore b/website/.eslintignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/website/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/website/.eslintrc.cjs b/website/.eslintrc.cjs new file mode 100644 index 00000000..0b757582 --- /dev/null +++ b/website/.eslintrc.cjs @@ -0,0 +1,31 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/website/.eslintrc.json b/website/.eslintrc.json deleted file mode 100755 index 22c30ebe..00000000 --- a/website/.eslintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": [ - "next/core-web-vitals", - "prettier" - ] -} \ No newline at end of file diff --git a/website/.gitignore b/website/.gitignore old mode 100755 new mode 100644 index ee4209a0..c1f6d69f --- a/website/.gitignore +++ b/website/.gitignore @@ -1,38 +1,11 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc .DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo - +node_modules +/build /.svelte-kit -/.netlify +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +.netlify diff --git a/website/.node-version b/website/.node-version new file mode 100644 index 00000000..18c28417 --- /dev/null +++ b/website/.node-version @@ -0,0 +1 @@ +20.11.0 \ No newline at end of file diff --git a/website/.npmrc b/website/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/website/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/website/.prettierignore b/website/.prettierignore new file mode 100644 index 00000000..cc41cea9 --- /dev/null +++ b/website/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/website/.prettierrc b/website/.prettierrc index 78760076..95730232 100644 --- a/website/.prettierrc +++ b/website/.prettierrc @@ -1,4 +1,8 @@ { - "singleQuote": false, - "useTabs": false -} \ No newline at end of file + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/website/.vscode/settings.json b/website/.vscode/settings.json new file mode 100644 index 00000000..e5c5673c --- /dev/null +++ b/website/.vscode/settings.json @@ -0,0 +1,120 @@ +{ + "prettier.documentSelectors": [ + "**/*.svelte" + ], + "tailwindCSS.classAttributes": [ + "class", + "accent", + "active", + "animIndeterminate", + "aspectRatio", + "background", + "badge", + "bgBackdrop", + "bgDark", + "bgDrawer", + "bgLight", + "blur", + "border", + "button", + "buttonAction", + "buttonBack", + "buttonClasses", + "buttonComplete", + "buttonDismiss", + "buttonNeutral", + "buttonNext", + "buttonPositive", + "buttonTextCancel", + "buttonTextConfirm", + "buttonTextFirst", + "buttonTextLast", + "buttonTextNext", + "buttonTextPrevious", + "buttonTextSubmit", + "caretClosed", + "caretOpen", + "chips", + "color", + "controlSeparator", + "controlVariant", + "cursor", + "display", + "element", + "fill", + "fillDark", + "fillLight", + "flex", + "flexDirection", + "gap", + "gridColumns", + "height", + "hover", + "inactive", + "indent", + "justify", + "meter", + "padding", + "position", + "regionAnchor", + "regionBackdrop", + "regionBody", + "regionCaption", + "regionCaret", + "regionCell", + "regionChildren", + "regionChipList", + "regionChipWrapper", + "regionCone", + "regionContent", + "regionControl", + "regionDefault", + "regionDrawer", + "regionFoot", + "regionFootCell", + "regionFooter", + "regionHead", + "regionHeadCell", + "regionHeader", + "regionIcon", + "regionInput", + "regionInterface", + "regionInterfaceText", + "regionLabel", + "regionLead", + "regionLegend", + "regionList", + "regionListItem", + "regionNavigation", + "regionPage", + "regionPanel", + "regionRowHeadline", + "regionRowMain", + "regionSummary", + "regionSymbol", + "regionTab", + "regionTrail", + "ring", + "rounded", + "select", + "shadow", + "slotDefault", + "slotFooter", + "slotHeader", + "slotLead", + "slotMessage", + "slotMeta", + "slotPageContent", + "slotPageFooter", + "slotPageHeader", + "slotSidebarLeft", + "slotSidebarRight", + "slotTrail", + "spacing", + "text", + "track", + "transition", + "width", + "zIndex" + ] +} \ No newline at end of file diff --git a/website/README.md b/website/README.md old mode 100755 new mode 100644 index c87e0421..5ce67661 --- a/website/README.md +++ b/website/README.md @@ -1,34 +1,38 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# create-svelte -## Getting Started +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). -First, run the development server: +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: ```bash npm run dev -# or -yarn dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +## Building -You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. +To create a production version of your app: -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. +```bash +npm run build +``` -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. +You can preview the production build with `npm run preview`. -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/website/components/AdDetector.tsx b/website/components/AdDetector.tsx deleted file mode 100644 index 33de86ec..00000000 --- a/website/components/AdDetector.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { - Button, - CloseButton, - Heading, - Modal, - ModalBody, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - Stack, - Text, - Tooltip, - useDisclosure, - VStack, -} from "@chakra-ui/react"; -import { FC, ReactNode, useEffect, useState } from "react"; - -const AdDetector: FC<{ children: ReactNode }> = ({ children }) => { - const [adBlockEnabled, setAdBlockEnabled] = useState(false); - const { isOpen, onOpen, onClose } = useDisclosure(); - const [joke, setJoke] = useState>({}); - - useEffect(() => { - (async () => { - const googleAdUrl = - "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"; - try { - await fetch(new Request(googleAdUrl)); - } catch (e) { - setAdBlockEnabled(true); - setJoke( - await ( - await fetch( - "https://v2.jokeapi.dev/joke/Any?blacklistFlags=racist,sexist" - ) - ).json() - ); - onOpen(); - } - })(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return ( - <> - - - - Support the Creator💚 - -

- Open source developers work really hard to provide the best, - secure & efficient software experience for you & people all around - the world. Most of the time we work without any wages at all but - we need minimum support to live & these Ads Helps Us earn - the minimum wage that we need to live.{" "} - - So, please support Spotube by disabling the AdBlocker on this - page or by sponsoring or donating to our collectives directly - -

-
- - - -
-
- {!adBlockEnabled ? ( - children - ) : ( - - - setAdBlockEnabled(false)} - /> - - - Here's something interesting: - - {joke.joke ?? ( - <> -

{joke.setup}

-

{joke.delivery}

- - )} -
-
- - - Be grateful for all the favors you get. But don't let it - become a pile of debt. Try returning them as soon as you can. - You'll feel relieved - - - - Kingkor Roy Tirtho - - -
- )} - - ); -}; - -export default AdDetector; diff --git a/website/components/ArticleCard.tsx b/website/components/ArticleCard.tsx deleted file mode 100644 index 0bef6f51..00000000 --- a/website/components/ArticleCard.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { Link, Flex, Box, chakra, Image, Button, Text } from "@chakra-ui/react"; -import { BlogPost } from "pages/blog"; -import { FC } from "react"; -import NavLink from "next/link"; - -const ArticleCard: FC = ({ - metadata: { - author, - author_avatar_url, - cover_image, - tags, - title, - summary, - date, - }, - slug, -}) => { - return ( - - Article - - - - {tags.map((tag, i) => { - return ( - - {tag} - - ); - })} - - - {title} - - - - {summary} - - - - - - - Avatar - - {author} - - - {date} - - - - - - - - - - ); -}; - -export default ArticleCard; diff --git a/website/components/CodeBlock.tsx b/website/components/CodeBlock.tsx deleted file mode 100644 index 111a2011..00000000 --- a/website/components/CodeBlock.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { chakra } from "@chakra-ui/react"; -import { FC, ReactNode } from "react"; - -type Props = { - children: ReactNode; -}; - -export const CodeBlock: FC = ({ children }) => { - return ( - - {children} - - ); -}; diff --git a/website/components/DownloadButton.tsx b/website/components/DownloadButton.tsx deleted file mode 100644 index 1aa43e70..00000000 --- a/website/components/DownloadButton.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { - Menu, - ButtonGroup, - Button, - MenuButton, - IconButton, - MenuList, - MenuItem, - Link as Anchor, -} from "@chakra-ui/react"; -import { Platform, usePlatform } from "hooks/usePlatform"; -import React from "react"; -import { - FaApple, - FaCaretDown, - FaUbuntu, - FaLinux, - FaWindows, - FaAndroid, -} from "react-icons/fa"; -import { MdOutlineFileDownload } from "react-icons/md"; - -const baseURL = "https://github.com/KRTirtho/spotube/releases/latest/download/"; - -const DownloadLinks = Object.freeze({ - [Platform.linux]: [ - { - name: "deb", - url: baseURL + "Spotube-linux-x86_64.deb", - icon: , - }, - { - name: "tar", - url: baseURL + "Spotube-linux-x86_64.tar.xz", - icon: , - }, - { - name: "AppImage", - url: baseURL + "Spotube-linux-x86_64.AppImage", - icon: , - }, - ], - [Platform.android]: [ - { - name: "apk", - url: baseURL + "Spotube-android-all-arch.apk", - icon: , - }, - ], - [Platform.mac]: [ - { - name: "dmg", - url: baseURL + "Spotube-macos-universal.dmg", - icon: , - }, - ], - [Platform.windows]: [ - { - name: "exe", - url: baseURL + "Spotube-windows-x86_64-setup.exe", - icon: , - }, - { - name: "nupkg", - url: baseURL + "Spotube-windows-x86_64.nupkg ", - icon: , - }, - ], -}); - -const DownloadButton = () => { - const platform = usePlatform(); - - const allPlatforms = Object.entries(Platform) - .map(([, value]) => { - return DownloadLinks[value].map((s) => ({ - ...s, - name: `${value} (.${s.name})`, - })); - }) - .flat(1); - - const currentPlatform = DownloadLinks[platform][0]; - return ( - - - - } - /> - - - {allPlatforms.map(({ name, url, icon }) => { - return ( - - {name} - - ); - })} - - - ); -}; - -export default DownloadButton; diff --git a/website/components/Footer.tsx b/website/components/Footer.tsx deleted file mode 100644 index a51cf0a2..00000000 --- a/website/components/Footer.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { Flex, chakra, Link, IconButton } from "@chakra-ui/react"; - -import { FaGithub, FaRedditAlien } from "react-icons/fa"; -import { FiTwitter } from "react-icons/fi"; - -const Footer = () => { - return ( - - - Spotube - - - - © {new Date().getFullYear()}, Spotube. All rights reserved - - - - } - variant="link" - /> - } - variant="link" - /> - } - variant="link" - /> - - - ); -}; - -export default Footer; diff --git a/website/components/Navbar.tsx b/website/components/Navbar.tsx deleted file mode 100644 index 7084b917..00000000 --- a/website/components/Navbar.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import { - Box, - Button, - chakra, - CloseButton, - Flex, - Heading, - HStack, - IconButton, - Link, - useColorMode, - useColorModeValue, - useDisclosure, - VisuallyHidden, - VStack, -} from "@chakra-ui/react"; -import NavLink from "next/link"; -import { GoLightBulb } from "react-icons/go"; -import { FiGithub, FiSun } from "react-icons/fi"; -import Image from "next/image"; -import React from "react"; -import { AiOutlineMenu } from "react-icons/ai"; -import { BsHeartFill } from "react-icons/bs"; - -const Navbar = () => { - const bg = useColorModeValue("white", "gray.800"); - const mobileNav = useDisclosure(); - const { colorMode, toggleColorMode } = useColorMode(); - return ( - - - - - - Logo - - Spotube - - - Spotube - - - - - - - - - - - - - - - - - - : } - aria-label="Dark Mode Toggle" - onClick={() => { - toggleColorMode(); - }} - /> - - } - onClick={mobileNav.onOpen} - /> - - - - - - - - - - - - - - - - - - - - ); -}; - -export default Navbar; diff --git a/website/components/UserDetailedCard.tsx b/website/components/UserDetailedCard.tsx deleted file mode 100644 index fee3bdbd..00000000 --- a/website/components/UserDetailedCard.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { - Flex, - Box, - Icon, - chakra, - Image, - HStack, - IconButton, - Link, - CircularProgress, -} from "@chakra-ui/react"; -import { MdEmail, MdLocationOn } from "react-icons/md"; -import { BsFillBriefcaseFill } from "react-icons/bs"; -import { FC } from "react"; -import { FaGithub } from "react-icons/fa"; -import { FiTwitter } from "react-icons/fi"; -import { octokit } from "configurations/ocotokit"; -import useSWR from "swr"; - -interface UserDetailedCardProps { - username: string; - emoji: string; -} - -const UserDetailedCard: FC = ({ username, emoji }) => { - const { data } = useSWR(`user-${username}}`, () => - octokit.users.getByUsername({ username }) - ); - - if (!data) { - return ; - } - - return ( - - avatar - - - {emoji} - - {data.data.name ?? data.data.login} - - - - - - {data.data.bio} - - - {data.data.company && ( - - - - - {data.data.company} - - - )} - - {data.data.location && ( - - - - - {data.data.location} - - - )} - {data.data.email && ( - - - - {data.data.email} - - - )} - - } - variant="link" - /> - {data.data.twitter_username && ( - } - variant="link" - /> - )} - - - - ); -}; - -export default UserDetailedCard; diff --git a/website/components/special.tsx b/website/components/special.tsx deleted file mode 100644 index 93b2d565..00000000 --- a/website/components/special.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import Script from "next/script"; -import { FC, useId } from "react"; - -type AdComponent = FC<{ - slot: string; -}>; - -export const DisplayAd: AdComponent = ({ slot }) => { - const id = useId(); - return ( - <> - - - - ); -}; - -export const GridMultiplexAd: AdComponent = ({ slot }) => { - const id = useId(); - return ( - <> - - - - ); -}; - -export const InFeedAd = () => { - const id = useId(); - return ( - <> - - - - ); -}; diff --git a/website/configurations/gtag.ts b/website/configurations/gtag.ts deleted file mode 100644 index 01dcba50..00000000 --- a/website/configurations/gtag.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const GA_TRACKING_ID = process.env.NEXT_PUBLIC_GA_ID; - -// https://developers.google.com/analytics/devguides/collection/gtagjs/pages -export const pageview = (url: any) => { - (window as any).gtag("config", GA_TRACKING_ID, { - page_path: url, - }); -}; - -// https://developers.google.com/analytics/devguides/collection/gtagjs/events -export const event = ({ action, category, label, value }: any) => { - (window as any).gtag("event", action, { - event_category: category, - event_label: label, - value: value, - }); -}; diff --git a/website/configurations/ocotokit.ts b/website/configurations/ocotokit.ts deleted file mode 100644 index b50fb197..00000000 --- a/website/configurations/ocotokit.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Octokit } from "@octokit/rest"; - -export const octokit: Octokit = new Octokit(); \ No newline at end of file diff --git a/website/hooks/usePlatform.ts b/website/hooks/usePlatform.ts deleted file mode 100644 index a502e4cd..00000000 --- a/website/hooks/usePlatform.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { useEffect, useState } from "react"; -import { detectOS } from "detect-browser"; - -export enum Platform { - linux = "Linux", - windows = "Windows", - mac = "Mac", - android = "Android", -} - -export function usePlatform(): Platform { - const [platform, setPlatform] = useState(Platform.linux); - - useEffect(() => { - const detectedPlatform = detectOS(navigator.userAgent)?.toLowerCase(); - - if (!detectedPlatform) return; - - if (detectedPlatform.includes("windows")) setPlatform(Platform.windows); - else if (detectedPlatform.includes("mac")) setPlatform(Platform.mac); - else if (detectedPlatform.includes("android")) - setPlatform(Platform.android); - }, []); - - return platform; -} diff --git a/website/misc/MarkdownComponentDefs.tsx b/website/misc/MarkdownComponentDefs.tsx deleted file mode 100644 index f3c901ca..00000000 --- a/website/misc/MarkdownComponentDefs.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { - Link as Anchor, - Heading, - Text, - chakra, - Code, - HStack, - Divider, - Box, -} from "@chakra-ui/react"; -import { Options } from "react-markdown"; - -export const MarkdownComponentDefs: Options["components"] = { - a: (props: any) => , - h1: (props: any) => , - h2: (props: any) => , - h3: (props: any) => , - h4: (props: any) => , - h5: (props: any) => , - h6: (props: any) => , - p: (props: any) => , - li: (props: any) => , - code: (props) => ( - - ), - blockquote: (props) => { - return ( - - - - {props.children} - - - - ); - }, -}; diff --git a/website/next-env.d.ts b/website/next-env.d.ts deleted file mode 100755 index 4f11a03d..00000000 --- a/website/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/website/next.config.js b/website/next.config.js deleted file mode 100755 index ae887958..00000000 --- a/website/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - reactStrictMode: true, - swcMinify: true, -} - -module.exports = nextConfig diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 00000000..89323983 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,6391 @@ +{ + "name": "website", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "website", + "version": "0.0.1", + "dependencies": { + "@floating-ui/dom": "1.6.1", + "@fortawesome/free-brands-svg-icons": "^6.5.1", + "@octokit/openapi-types": "^19.1.0", + "@octokit/rest": "^20.0.2", + "date-fns": "^3.3.1", + "highlight.js": "11.9.0", + "lucide-svelte": "^0.323.0", + "mdsvex-relative-images": "^1.0.3", + "rehype-autolink-headings": "^7.1.0", + "rehype-slug": "^6.0.0", + "remark-container": "^0.1.2", + "remark-external-links": "^9.0.1", + "remark-gfm": "^4.0.0", + "remark-github": "^12.0.0", + "remark-reading-time": "^1.0.1", + "svelte-fa": "^4.0.2", + "svelte-markdown": "^0.4.1" + }, + "devDependencies": { + "@playwright/test": "^1.28.1", + "@skeletonlabs/skeleton": "2.8.0", + "@skeletonlabs/tw-plugin": "0.3.1", + "@sveltejs/adapter-cloudflare": "^4.1.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/typography": "0.5.10", + "@types/eslint": "8.56.0", + "@types/node": "^20.11.16", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "autoprefixer": "10.4.17", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "mdsvex": "^0.11.0", + "postcss": "8.4.35", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tailwindcss": "3.4.1", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vite-plugin-tailwind-purgecss": "0.2.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@cloudflare/workers-types": { + "version": "4.20240208.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20240208.0.tgz", + "integrity": "sha512-MVGTTjZpJu4kJONvai5SdJzWIhOJbuweVZ3goI7FNyG+JdoQH41OoB+nMhLsX626vPLZVWGPIWsiSo/WZHzgQw==", + "dev": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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, + "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.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", + "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz", + "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.1.tgz", + "integrity": "sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", + "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", + "dependencies": { + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", + "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", + "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", + "dependencies": { + "@octokit/types": "^12.4.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz", + "integrity": "sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz", + "integrity": "sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==", + "dependencies": { + "@octokit/types": "^12.3.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/request": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", + "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "dependencies": { + "@octokit/types": "^12.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/rest": { + "version": "20.0.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.0.2.tgz", + "integrity": "sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==", + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", + "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", + "dependencies": { + "@octokit/openapi-types": "^19.1.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.41.2.tgz", + "integrity": "sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==", + "dev": true, + "dependencies": { + "playwright": "1.41.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@skeletonlabs/skeleton": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton/-/skeleton-2.8.0.tgz", + "integrity": "sha512-R6spSJSyW9MA6cnVQ8IV7uoYSXxHmP/oWJ9IHdGDU9epPZaZMmOXUHJSzA1gngccB2jFaA/6jXfS1O1CsIlGMg==", + "dev": true, + "dependencies": { + "esm-env": "1.0.0" + }, + "peerDependencies": { + "svelte": "^3.56.0 || ^4.0.0" + } + }, + "node_modules/@skeletonlabs/tw-plugin": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@skeletonlabs/tw-plugin/-/tw-plugin-0.3.1.tgz", + "integrity": "sha512-DjjeOHN3HhFQf6gYPT2MUZMkIdw1jeB9mbuKC8etQxUlOR4XitfC7hssRWFJ8RJsvrrN0myCBbdWkVG1JVA96g==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=3.0.0" + } + }, + "node_modules/@sveltejs/adapter-cloudflare": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-4.1.0.tgz", + "integrity": "sha512-AQQdZAZpcFDcBiMEmxbMYhn4yKZYoPZrKUrYpVejjbO+9obIGIuj/jWjVzAEkHqZMZuoRRqPbq+Zq+AWRm4x1Q==", + "dev": true, + "dependencies": { + "@cloudflare/workers-types": "^4.20231121.0", + "esbuild": "^0.19.11", + "worktop": "0.8.0-next.18" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.0.tgz", + "integrity": "sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^4.3.2", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.0.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^2.0.4", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.2.tgz", + "integrity": "sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz", + "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", + "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "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 + }, + "node_modules/@types/marked": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-5.0.2.tgz", + "integrity": "sha512-OucS4KMHhFzhz27KxmWg7J+kIYqyqoW5kdIEI319hqARQQUTqhao3M/F+uFnDXD0Rg72iDDZxZNxq5gvctmLlg==" + }, + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.11.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", + "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "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 + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/date-fns": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.3.1.tgz", + "integrity": "sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", + "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", + "dev": true + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.661", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.661.tgz", + "integrity": "sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-svelte": { + "version": "2.35.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz", + "integrity": "sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "debug": "^4.3.1", + "eslint-compat-utils": "^0.1.2", + "esutils": "^2.0.3", + "known-css-properties": "^0.29.0", + "postcss": "^8.4.5", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.11", + "semver": "^7.5.3", + "svelte-eslint-parser": ">=0.33.0 <1.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0-0", + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-svelte/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "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, + "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/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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 + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/just-camel-case": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/just-camel-case/-/just-camel-case-4.0.2.tgz", + "integrity": "sha512-df6QI/EIq+6uHe/wtaa9Qq7/pp4wr4pJC/r1+7XhVL6m5j03G6h9u9/rIZr8rDASX7CxwDPQnZjffCo2e6PRLw==" + }, + "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, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/known-css-properties": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lucide-svelte": { + "version": "0.323.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.323.0.tgz", + "integrity": "sha512-3GEFk1vCwB8BtHTHZTocFJfX6AtTLQw9a74JSuihAGx+MzhxqeWk8W1TkM4WUlvE0x9UdONM2rJGRyx9IyjkJg==", + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, + "node_modules/magic-string": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/mdsvex": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.11.0.tgz", + "integrity": "sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.3", + "prism-svelte": "^0.4.7", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + }, + "peerDependencies": { + "svelte": ">=3 <5" + } + }, + "node_modules/mdsvex-relative-images": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdsvex-relative-images/-/mdsvex-relative-images-1.0.3.tgz", + "integrity": "sha512-3XvpnaguRAhC5gchpqCH+A5Yl28xG9WDPylVla0+k90c5LT+QqSM+hwHd1v5C7gB2cAT0AIhuMsY/g6aCw+WDg==", + "dependencies": { + "just-camel-case": "^4.0.2", + "unist-util-visit": "^3.1.0" + } + }, + "node_modules/mdsvex-relative-images/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdsvex-relative-images/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdsvex-relative-images/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/playwright": { + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.2.tgz", + "integrity": "sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==", + "dev": true, + "dependencies": { + "playwright-core": "1.41.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.2.tgz", + "integrity": "sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/purgecss": { + "version": "6.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-6.0.0-alpha.0.tgz", + "integrity": "sha512-UC7d7uIyZsky+srEsSXny9BkbTcVn3ZtBCNX3rW3DsqJKhvUXFRpufA4ktcHzWF0+JLZgmsqjUm/8R82x9bHpw==", + "dev": true, + "dependencies": { + "commander": "^10.0.0", + "glob": "^8.0.3", + "postcss": "^8.4.4", + "postcss-selector-parser": "^6.0.7" + }, + "bin": { + "purgecss": "bin/purgecss.js" + } + }, + "node_modules/purgecss/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/purgecss/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/purgecss/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/regexparam": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", + "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rehype-autolink-headings": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz", + "integrity": "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-container": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/remark-container/-/remark-container-0.1.2.tgz", + "integrity": "sha512-E+G7dSALm3aMqyi15N4DxnRFQmBbHwxVc+9GrbijqwbdHzagUDvi2A3oI27y/PwLkSDRjwMfoc1rCIZayZ2PFg==" + }, + "node_modules/remark-external-links": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-9.0.1.tgz", + "integrity": "sha512-EYw+p8Zqy5oT5+W8iSKzInfRLY+zeKWHCf0ut+Q5SwnaSIDGXd2zzvp4SWqyAuVbinNmZ0zjMrDKaExWZnTYqQ==", + "dependencies": { + "@types/hast": "^2.3.2", + "@types/mdast": "^3.0.0", + "extend": "^3.0.0", + "is-absolute-url": "^4.0.0", + "mdast-util-definitions": "^5.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/remark-external-links/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/remark-external-links/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remark-external-links/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-github": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/remark-github/-/remark-github-12.0.0.tgz", + "integrity": "sha512-ByefQKFN184LeiGRCabfl7zUJsdlMYWEhiLX1gpmQ11yFg6xSuOTW7LVCv0oc1x+YvUMJW23NU36sJX2RWGgvg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "to-vfile": "^8.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-reading-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-1.0.1.tgz", + "integrity": "sha512-Z3yW1JSNgQcjpPavsKmWgY7wmqRQMXIKoh8r5RtvJdpDIWWf7O7MkhuFDZh+Ge/1Olv0tvD1pN4T7LEhwBQnUA==", + "dependencies": { + "reading-time": "^1.3.0", + "unist-util-visit": "^3.1.0" + } + }, + "node_modules/remark-reading-time/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-reading-time/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "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" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sander/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sorcery": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.10.tgz", + "integrity": "sha512-Ep06yCaCdgG1Mafb/Rx8sJ1QS3RW2I2BxGp2Ui9LBHSZ2/tO/aGLc5WqPjgiAP6KAnLJGaIr/zzwQlOo1b8MxA==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-check": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.3.tgz", + "integrity": "sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.1.0", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-eslint-parser": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", + "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", + "dev": true, + "dependencies": { + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "postcss": "^8.4.29", + "postcss-scss": "^4.0.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/svelte-fa": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/svelte-fa/-/svelte-fa-4.0.2.tgz", + "integrity": "sha512-lza8Jfii6jcpMQB73mBStONxaLfZsUS+rKJ/hH6WxsHUd+g68+oHIL9yQTk4a0uY9HQk78T/CPvQnED0msqJfg==", + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-markdown": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.4.1.tgz", + "integrity": "sha512-pOlLY6EruKJaWI9my/2bKX8PdTeP5CM0s4VMmwmC2prlOkjAf+AOmTM4wW/l19Y6WZ87YmP8+ZCJCCwBChWjYw==", + "dependencies": { + "@types/marked": "^5.0.1", + "marked": "^5.1.2" + }, + "peerDependencies": { + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz", + "integrity": "sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 16.0.0", + "pnpm": "^8.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-vfile": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-8.0.0.tgz", + "integrity": "sha512-IcmH1xB5576MJc9qcfEC/m/nQCFt3fzMHz45sSlgJyTWjRbKW1HAkJpuf3DgE57YzIlZcwcBZA5ENQbBo4aLkg==", + "dependencies": { + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/vfile/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.0.tgz", + "integrity": "sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-tailwind-purgecss": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-tailwind-purgecss/-/vite-plugin-tailwind-purgecss-0.2.0.tgz", + "integrity": "sha512-6Q+SaalUd0t3BOIIiCQPlbZQuYARVgjoC78X+fLbQJqIEy/9fC58aQgHMgi+CmYfVfZmJToA8YiLueSGEo2mng==", + "dev": true, + "dependencies": { + "estree-walker": "^3.0.3", + "purgecss": "6.0.0-alpha.0" + }, + "peerDependencies": { + "vite": "^4.1.1 || ^5.0.0" + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/worktop": { + "version": "0.8.0-next.18", + "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.18.tgz", + "integrity": "sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==", + "dev": true, + "dependencies": { + "mrmime": "^2.0.0", + "regexparam": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/website/package.json b/website/package.json index de3f7033..cab83dd1 100644 --- a/website/package.json +++ b/website/package.json @@ -1,43 +1,63 @@ { "name": "website", - "version": "0.1.0", + "version": "0.0.1", "private": true, + "type": "module", "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "@babel/core": "^7.18.6", - "@chakra-ui/react": "^2.2.4", - "@chakra-ui/system": "^2.2.2", - "@chakra-ui/theme-tools": "^2.0.5", - "@emotion/react": "^11", - "@emotion/styled": "^11", - "@octokit/rest": "^19.0.3", - "@types/progress": "^2.0.5", - "detect-browser": "^5.3.0", - "framer-motion": "^6", - "gray-matter": "^4.0.3", - "next": "12.2.2", - "nextjs-progressbar": "^0.0.14", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-icons": "^4.4.0", - "react-markdown": "^8.0.3", - "remark-gemoji": "^7.0.1", - "remark-gfm": "^3.0.1", - "swr": "^1.3.0" + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "test": "playwright test", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." }, "devDependencies": { - "@types/node": "18.0.5", - "@types/react": "18.0.15", - "@types/react-dom": "18.0.6", - "@types/react-syntax-highlighter": "^15.5.3", - "eslint": "8.20.0", - "eslint-config-next": "12.2.2", - "eslint-config-prettier": "^8.5.0", - "typescript": "4.7.4" + "@playwright/test": "^1.28.1", + "@skeletonlabs/skeleton": "2.8.0", + "@skeletonlabs/tw-plugin": "0.3.1", + "@sveltejs/adapter-cloudflare": "^4.1.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/typography": "0.5.10", + "@types/eslint": "8.56.0", + "@types/node": "^20.11.16", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "autoprefixer": "10.4.17", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "mdsvex": "^0.11.0", + "postcss": "8.4.35", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tailwindcss": "3.4.1", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vite-plugin-tailwind-purgecss": "0.2.0" + }, + "dependencies": { + "@floating-ui/dom": "1.6.1", + "@fortawesome/free-brands-svg-icons": "^6.5.1", + "@octokit/openapi-types": "^19.1.0", + "@octokit/rest": "^20.0.2", + "date-fns": "^3.3.1", + "highlight.js": "11.9.0", + "lucide-svelte": "^0.323.0", + "mdsvex-relative-images": "^1.0.3", + "rehype-autolink-headings": "^7.1.0", + "rehype-slug": "^6.0.0", + "remark-container": "^0.1.2", + "remark-external-links": "^9.0.1", + "remark-gfm": "^4.0.0", + "remark-github": "^12.0.0", + "remark-reading-time": "^1.0.1", + "svelte-fa": "^4.0.2", + "svelte-markdown": "^0.4.1" } -} +} \ No newline at end of file diff --git a/website/pages/_app.tsx b/website/pages/_app.tsx deleted file mode 100755 index 99163093..00000000 --- a/website/pages/_app.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import "../styles/globals.css"; -import type { AppProps } from "next/app"; -import { - ChakraProvider, - extendTheme, - withDefaultColorScheme, -} from "@chakra-ui/react"; -import Navbar from "components/Navbar"; -import { chakra } from "@chakra-ui/react"; -import { mode } from "@chakra-ui/theme-tools"; -import Head from "next/head"; -import { useRouter } from "next/router"; -// import Script from "next/script"; -// import * as gtag from "configurations/gtag"; -// import AdDetector from "components/AdDetector"; -import Footer from "components/Footer"; -import NextNProgress from "nextjs-progressbar"; - -const customTheme = extendTheme( - { - initialColorMode: 'system', - useSystemColorMode: true, - styles: { - global: (props: any) => ({ - body: { - bg: mode("white", "#171717")(props), - }, - }), - }, - colors: { - blue: { - 50: "#e6f2ff", - 100: "#e6f2ff", - 200: "#e6f2ff", - 300: "#1681bd", - 400: "#1681bd", - 500: "#3a4da5", - 600: "#2d3c7d", - 700: "#1f2b55", - 800: "#121c2e", - 900: "#080e18", - }, - components: { - Link: { - baseStyle: { - color: "blue", - }, - }, - }, - }, - }, - withDefaultColorScheme({ colorScheme: "blue" }) -); - -function MyApp({ Component, pageProps }: AppProps) { - const router = useRouter(); - // useEffect(() => { - // const handleRouteChange = (url: string) => { - // gtag.pageview(url); - // }; - // router.events.on("routeChangeComplete", handleRouteChange); - // router.events.on("hashChangeComplete", handleRouteChange); - // return () => { - // router.events.off("routeChangeComplete", handleRouteChange); - // router.events.off("hashChangeComplete", handleRouteChange); - // }; - // }, [router.events]); - - return ( - <> - {/* + +
+ {#each Object.entries(links) as link} + +
+ {#each link[1][1] as icon} + + {/each} +

+ {link[1][2]} +

+
+

{link[0]}

+
+ {/each} +
diff --git a/website/src/lib/components/markdown/layout.svelte b/website/src/lib/components/markdown/layout.svelte new file mode 100644 index 00000000..54426420 --- /dev/null +++ b/website/src/lib/components/markdown/layout.svelte @@ -0,0 +1,3 @@ +
+ +
diff --git a/website/src/lib/components/navbar/darkmode-toggle.svelte b/website/src/lib/components/navbar/darkmode-toggle.svelte new file mode 100644 index 00000000..ec4f757c --- /dev/null +++ b/website/src/lib/components/navbar/darkmode-toggle.svelte @@ -0,0 +1,32 @@ + + +
+ {#if label} + + {/if} + { + isDark.update((prev) => !prev); + }} + /> +
diff --git a/website/src/lib/components/navbar/navbar.svelte b/website/src/lib/components/navbar/navbar.svelte new file mode 100644 index 00000000..093fc09c --- /dev/null +++ b/website/src/lib/components/navbar/navbar.svelte @@ -0,0 +1,57 @@ + + +
+
+
+ +

+ + Spotube Logo + Spotube + +

+
+ + + +
+ +
diff --git a/website/src/lib/components/navdrawer/navdrawer.svelte b/website/src/lib/components/navdrawer/navdrawer.svelte new file mode 100644 index 00000000..68f53e06 --- /dev/null +++ b/website/src/lib/components/navdrawer/navdrawer.svelte @@ -0,0 +1,37 @@ + + + diff --git a/website/src/lib/index.ts b/website/src/lib/index.ts new file mode 100644 index 00000000..f0fb2ab8 --- /dev/null +++ b/website/src/lib/index.ts @@ -0,0 +1,61 @@ +import { + faAndroid, + faApple, + faDebian, + faFedora, + faOpensuse, + faUbuntu, + faWindows, + faRedhat +} from '@fortawesome/free-brands-svg-icons'; +import { type IconDefinition } from '@fortawesome/free-brands-svg-icons/index'; +import { Home, Newspaper, Download } from 'lucide-svelte'; + +export const routes: Record = { + '/': ['Home', Home], + '/blog': ['Blog', Newspaper], + '/downloads': ['Downloads', Download], + '/about': ['About', null] +}; + +const releasesUrl = 'https://github.com/KRTirtho/Spotube/releases/latest/download'; + +export const downloadLinks: Record = { + 'Android Apk': [`${releasesUrl}/Spotube-android-all-arch.apk`, [faAndroid]], + 'Windows Executable': [`${releasesUrl}/Spotube-windows-x86_64-setup.exe`, [faWindows]], + 'macOS Dmg': [`${releasesUrl}/Spotube-macos-universal.dmg`, [faApple]], + 'Ubuntu, Debian': [`${releasesUrl}/Spotube-linux-x86_64.deb`, [faUbuntu, faDebian]], + 'Fedora, Redhat, Opensuse': [ + `${releasesUrl}/Spotube-linux-x86_64.rpm`, + [faFedora, faRedhat, faOpensuse] + ], + 'iPhone Ipa': [`${releasesUrl}/Spotube-iOS.ipa`, [faApple]] +}; + +export const extendedDownloadLinks: Record = { + Android: [`${releasesUrl}/Spotube-android-all-arch.apk`, [faAndroid], 'apk'], + Windows: [`${releasesUrl}/Spotube-windows-x86_64-setup.exe`, [faWindows], 'exe'], + macOS: [`${releasesUrl}/Spotube-macos-universal.dmg`, [faApple], 'dmg'], + 'Ubuntu, Debian': [`${releasesUrl}/Spotube-linux-x86_64.deb`, [faUbuntu, faDebian], 'deb'], + 'Fedora, Redhat, Opensuse': [ + `${releasesUrl}/Spotube-linux-x86_64.rpm`, + [faFedora, faRedhat, faOpensuse], + 'rpm' + ], + iPhone: [`${releasesUrl}/Spotube-iOS.ipa`, [faApple], 'ipa'] +}; + +const nightlyReleaseUrl = 'https://github.com/KRTirtho/Spotube/releases/download/nightly'; + +export const extendedNightlyDownloadLinks: Record = { + Android: [`${nightlyReleaseUrl}/Spotube-android-all-arch.apk`, [faAndroid], 'apk'], + Windows: [`${nightlyReleaseUrl}/Spotube-windows-x86_64-setup.exe`, [faWindows], 'exe'], + macOS: [`${nightlyReleaseUrl}/Spotube-macos-universal.dmg`, [faApple], 'dmg'], + 'Ubuntu, Debian': [`${nightlyReleaseUrl}/Spotube-linux-x86_64.deb`, [faUbuntu, faDebian], 'deb'], + 'Fedora, Redhat, Opensuse': [ + `${nightlyReleaseUrl}/Spotube-linux-x86_64.rpm`, + [faFedora, faRedhat, faOpensuse], + 'rpm' + ], + iPhone: [`${nightlyReleaseUrl}/Spotube-iOS.ipa`, [faApple], 'ipa'] +}; diff --git a/website/src/lib/persisted-store.ts b/website/src/lib/persisted-store.ts new file mode 100644 index 00000000..0581fc1d --- /dev/null +++ b/website/src/lib/persisted-store.ts @@ -0,0 +1,106 @@ +import { writable as internal, type Writable } from 'svelte/store'; + +declare type Updater = (value: T) => T; +declare type StoreDict = { [key: string]: Writable }; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +interface Stores { + local: StoreDict; + session: StoreDict; +} + +const stores: Stores = { + local: {}, + session: {} +}; + +export interface Serializer { + parse(text: string): T; + stringify(object: T): string; +} + +export type StorageType = 'local' | 'session'; + +export interface Options { + serializer?: Serializer; + storage?: StorageType; + syncTabs?: boolean; + onError?: (e: unknown) => void; +} + +function getStorage(type: StorageType) { + return type === 'local' ? localStorage : sessionStorage; +} + +/** @deprecated `writable()` has been renamed to `persisted()` */ +export function writable(key: string, initialValue: T, options?: Options): Writable { + console.warn( + "writable() has been deprecated. Please use persisted() instead.\n\nchange:\n\nimport { writable } from 'svelte-persisted-store'\n\nto:\n\nimport { persisted } from 'svelte-persisted-store'" + ); + return persisted(key, initialValue, options); +} +export function persisted(key: string, initialValue: T, options?: Options): Writable { + const serializer = options?.serializer ?? JSON; + const storageType = options?.storage ?? 'local'; + const syncTabs = options?.syncTabs ?? true; + const onError = + options?.onError ?? + ((e) => + console.error(`Error when writing value from persisted store "${key}" to ${storageType}`, e)); + const browser = typeof window !== 'undefined' && typeof document !== 'undefined'; + const storage = browser ? getStorage(storageType) : null; + + function updateStorage(key: string, value: T) { + try { + storage?.setItem(key, serializer.stringify(value)); + } catch (e) { + onError(e); + } + } + + function maybeLoadInitial(): T { + const json = storage?.getItem(key); + + if (json) { + return serializer.parse(json); + } + + return initialValue; + } + + if (!stores[storageType][key]) { + const initial = maybeLoadInitial(); + const store = internal(initial, (set) => { + if (browser && storageType == 'local' && syncTabs) { + const handleStorage = (event: StorageEvent) => { + if (event.key === key) set(event.newValue ? serializer.parse(event.newValue) : null); + }; + + window.addEventListener('storage', handleStorage); + + return () => window.removeEventListener('storage', handleStorage); + } + }); + + const { subscribe, set } = store; + + stores[storageType][key] = { + set(value: T) { + set(value); + updateStorage(key, value); + }, + update(callback: Updater) { + return store.update((last) => { + const value = callback(last); + + updateStorage(key, value); + + return value; + }); + }, + subscribe + }; + } + + return stores[storageType][key]; +} diff --git a/website/src/lib/posts.ts b/website/src/lib/posts.ts new file mode 100644 index 00000000..02fa3d07 --- /dev/null +++ b/website/src/lib/posts.ts @@ -0,0 +1,41 @@ +export interface Post { + date: string; + title: string; + tags: string[]; + published: boolean; + author: string; + readingTime: { + text: string; + minutes: number; + time: number; + words: number; + }; + reading_time_text: string; + preview_html: string; + preview: string; + previewHtml: string; + slug: string | null; + path: string; +} + +export const getPosts = async () => { + // Fetch posts from local Markdown files + const posts: Post[] = await Promise.all( + Object.entries(import.meta.glob('../../posts/**/*.md')).map(async ([path, resolver]) => { + const resolved = (await resolver()) as { metadata: Post }; + const { metadata } = resolved; + const slug = path.split('/').pop()?.slice(0, -3) ?? ''; + return { ...metadata, slug }; + }) + ); + + let sortedPosts = posts.sort((a, b) => +new Date(b.date) - +new Date(a.date)); + + sortedPosts = sortedPosts.map((post) => ({ + ...post + })); + + return { + posts: sortedPosts + }; +}; diff --git a/website/src/routes/+layout.svelte b/website/src/routes/+layout.svelte new file mode 100644 index 00000000..6908b77a --- /dev/null +++ b/website/src/routes/+layout.svelte @@ -0,0 +1,71 @@ + + +
+ + {#if $drawerStore.id === 'navdrawer'} + + {/if} + + + +

+
+ diff --git a/website/src/routes/+page.svelte b/website/src/routes/+page.svelte new file mode 100644 index 00000000..8b78dbc5 --- /dev/null +++ b/website/src/routes/+page.svelte @@ -0,0 +1,110 @@ + + + + Spotube + + + + + + + + +
+
+

Spotube

+
+

+ An Open Source Spotify Client for every platform +
+ + + + +
+

+

+ And it's not + built with Electron (web technologies) +

+
+ +
+
+ + +

+ +

+ Supporters + +

+

+ We are grateful for the support of individuals and organizations who have made Spotube possible. +

+ +
+ + Open Collective + +
+ + +
diff --git a/website/src/routes/+page.ts b/website/src/routes/+page.ts new file mode 100644 index 00000000..5d50a467 --- /dev/null +++ b/website/src/routes/+page.ts @@ -0,0 +1,34 @@ +interface Member { + MemberId: number; + createdAt: string; + type: string; + role: string; + isActive: boolean; + totalAmountDonated: number; + currency?: string; + lastTransactionAt: string; + lastTransactionAmount: number; + profile: string; + name: string; + company?: string; + description?: string; + image?: string; + email?: string; + twitter?: string; + github?: string; + website?: string; + tier?: string; +} + +export const load = async () => { + const res = await fetch('https://opencollective.com/spotube/members/all.json'); + const members = (await res.json()) as Member[]; + + return { + props: { + members: members + .filter((m) => m.totalAmountDonated > 0) + .sort((a, b) => b.totalAmountDonated - a.totalAmountDonated) + } + }; +}; diff --git a/website/src/routes/about/+page.svelte b/website/src/routes/about/+page.svelte new file mode 100644 index 00000000..7f88ea46 --- /dev/null +++ b/website/src/routes/about/+page.svelte @@ -0,0 +1,22 @@ +
+

About

+ +

+ +

Author & Developer

+
+ + Author of Spotube +
+
Kingkor Roy Tirtho
+

Flutter developer

+
+
diff --git a/website/src/routes/api/posts/+server.ts b/website/src/routes/api/posts/+server.ts new file mode 100644 index 00000000..af78499b --- /dev/null +++ b/website/src/routes/api/posts/+server.ts @@ -0,0 +1,9 @@ +import { getPosts } from '$lib/posts'; +import type { RequestHandler } from '@sveltejs/kit'; +import { json } from '@sveltejs/kit'; + +export const GET: RequestHandler = async () => { + const { posts } = await getPosts(); + + return json(posts); +}; diff --git a/website/src/routes/blog/+page.svelte b/website/src/routes/blog/+page.svelte new file mode 100644 index 00000000..5ee98938 --- /dev/null +++ b/website/src/routes/blog/+page.svelte @@ -0,0 +1,32 @@ + + +
+

Blog Posts

+
+ +
diff --git a/website/src/routes/blog/+page.ts b/website/src/routes/blog/+page.ts new file mode 100644 index 00000000..c48ac87f --- /dev/null +++ b/website/src/routes/blog/+page.ts @@ -0,0 +1,11 @@ +import type { Post } from '$lib/posts.js'; + +export const load = async ({ fetch }) => { + const res = await fetch(`api/posts`); + if (res.ok) { + const posts: Post[] = await res.json(); + return { posts }; + } else { + return { posts: [] }; + } +}; diff --git a/website/src/routes/blog/[slug]/+page.svelte b/website/src/routes/blog/[slug]/+page.svelte new file mode 100644 index 00000000..1931a991 --- /dev/null +++ b/website/src/routes/blog/[slug]/+page.svelte @@ -0,0 +1,26 @@ + + + + Blog | {title} + + +
+

{title}

+
+
+

{new Date(date).toDateString()}

+

{readingTime?.text ?? ''}

+ + + +
+
diff --git a/website/src/routes/blog/[slug]/+page.ts b/website/src/routes/blog/[slug]/+page.ts new file mode 100644 index 00000000..6621dbab --- /dev/null +++ b/website/src/routes/blog/[slug]/+page.ts @@ -0,0 +1,23 @@ +import type { Post } from '$lib/posts.js'; + +export const load = async ({ params }) => { + const { slug } = params; + + try { + const post = await import(`../../../../posts/${slug}.md`); + return { + Content: post.default as ConstructorOfATypedSvelteComponent, + meta: { + ...post.metadata, + slug, + path: `/blog/${slug}` + } as Post + }; + } catch (err) { + console.error('Error loading the post:', err); + return { + status: 500, + error: `Could not load the post: ${(err as Error).message || err}` + }; + } +}; diff --git a/website/src/routes/downloads/+page.svelte b/website/src/routes/downloads/+page.svelte new file mode 100644 index 00000000..50d101ee --- /dev/null +++ b/website/src/routes/downloads/+page.svelte @@ -0,0 +1,39 @@ + + +
+

+ Download + +

+

+
Spotube is available for every platform
+
+ + + +


+ +

Other Downloads

+

+
+ {#each otherDownloads as download} + +
+ +
{download[1]}
+
+
+ {/each} +
+
diff --git a/website/src/routes/downloads/nightly/+page.svelte b/website/src/routes/downloads/nightly/+page.svelte new file mode 100644 index 00000000..279e6736 --- /dev/null +++ b/website/src/routes/downloads/nightly/+page.svelte @@ -0,0 +1,33 @@ + + +
+

+ Nightly Downloads + +

+

+ +
+ + +
diff --git a/website/src/routes/downloads/older/+page.svelte b/website/src/routes/downloads/older/+page.svelte new file mode 100644 index 00000000..9f535230 --- /dev/null +++ b/website/src/routes/downloads/older/+page.svelte @@ -0,0 +1,138 @@ + + +
+
+

Older versions

+ +
+

+ +
+ {#each data.releases as release} +

+ {release.tag_name} + + ({formatDistanceToNow(release.published_at ?? new Date(), { addSuffix: true })}) + +

+
+ {#each Object.entries(groupByOS(release.assets)) as [osName, assets]} +
+
+ + {osName} +
+ +
+ {/each} +
+ + + + + Release Notes & Changelogs + + + + + + +
+ {/each} +
+
+
diff --git a/website/src/routes/downloads/older/+page.ts b/website/src/routes/downloads/older/+page.ts new file mode 100644 index 00000000..e26a329c --- /dev/null +++ b/website/src/routes/downloads/older/+page.ts @@ -0,0 +1,14 @@ +import type { PageLoad } from './$types'; +import { Octokit } from '@octokit/rest'; + +const github = new Octokit(); +export const load: PageLoad = async () => { + const { data: releases } = await github.repos.listReleases({ + owner: 'KRTirtho', + repo: 'spotube' + }); + + return { + releases + }; +}; diff --git a/website/src/routes/downloads/packages/+page.svx b/website/src/routes/downloads/packages/+page.svx new file mode 100644 index 00000000..e7da4e74 --- /dev/null +++ b/website/src/routes/downloads/packages/+page.svx @@ -0,0 +1,70 @@ +--- +title: CLI Packages Managers +author: Kingkor Roy Tirtho +--- + + + +
+

Package Managers

+ + Spotube is available in various Package Managers supported by Platform + + ## Linux + +### Flatpak + +Make sure [Flatpak](https://flatpak.org) is installed in your Linux device & Run the following command in the terminal: + +```bash +$ flatpak install com.github.KRTirtho.Spotube +``` + +### Arch User Repository (AUR) + +If you're an Arch Linux user, you can also install Spotube from AUR. +Make sure you have `yay`/`pamac`/`paru` installed in your system. And Run the Following command in the Terminal: + +```bash +$ yay -Sy spotube-bin +``` + +```bash +$ pamac install spotube-bin +``` + +```bash +$ paru -Sy spotube-bin +``` + +## Windows + +### Chocolatey + +Spotube is available in [community.chocolatey.org](https://community.chocolatey.org) repo. If you have chocolatey install in your system just run following command in an Elevated Command Prompt or PowerShell: + +```powershell +$ choco install spotube +``` + +### WinGet + +Spotube is also available in the Official Windows PackageManager WinGet. Make sure you have WinGet installed in your Windows machine and run following in a Terminal: + +```powershell +$ winget install --id KRTirtho.Spotube +``` + +### Scoop + +Spotube is also available in [Scoop](https://scoop.sh) bucket. Make sure you have Scoop installed in your Windows machine and run following in a Terminal: + +```powershell +$ scoop bucket add extras +$ scoop install spotube +``` + +
diff --git a/website/static/android-chrome-192x192.png b/website/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef2f3e7ccee385755de9846c7df154518b1b0fb GIT binary patch literal 12127 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

a&RA|{>vspp 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 MlTZ+^{Aw8ZKlJOuh5!Hn literal 0 HcmV?d00001 diff --git a/website/static/apple-touch-icon.png b/website/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c171ce48479aa1b1bee546db6c61ba540be094f8 GIT binary patch literal 10898 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 Yc!|W47K!}p|KUO9KPpRCNty=z59y$sMF0Q* literal 0 HcmV?d00001 diff --git a/website/static/favicon-16x16.png b/website/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6c14fa3254b5f22e7c19355fd5d2552610d47c91 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&K$eK6tt~hFA!` zowU*Kuz`qczpRgDJi^scV{z zN)irE{yOjc#CKDVKE3LDl+XR$fom`BbAPMrR!D8nD~eq|{pXBLI#Tn^xV{|@=DWns zF3BG1^4B`-v--8uXC|9)g}u~WT6@s0Kg)slo#rLQqE9b4_Xy>_pYeUMz$Zy37CwQH z%4ccqGoCDooiLyO!u;TCi7cl&nOZxAza(|p?amNiV0M93wl0y$TT@%?o!*@__i{D& za0Gty(idCto}VdL!E9PzopM=IhTZK$u?POI?+IUYJ?QiUcDZw|pDP<)mxIE<)78&q Iol`;+08wCuU;qFB literal 0 HcmV?d00001 diff --git a/website/static/favicon-32x32.png b/website/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..8106368f759f00c71bf26a7b990482b9b213fe54 GIT binary patch literal 777 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07Sip>6gA}f5OZv>fz*Ow%;usRa z`8LEiJJ?ag*7&oX@9ZgFmn1d{noQ{3qEPzuy4RguV!zn$?D#PK2Ybw}kM0~?i}YN$ zShogDTD5ZJH`Qm0_1`BS`z=(d8}vKQ zLaxPpyJz=%I_zThdfN~eb#!0q!SC!Re(Oo)%L^WV?{{+MPw(#+PEWn4mbG{fTmE-n zE%Bgur_kNK*X~)*sFdB?@6UfySxR)#_OCo`vWxyEGp{N$7Ok8z#j9ZvpLH?Yh6=I6 z&x*CI@7+sm-Y4pPW4q*(3!3_tL7Xqv+;v=jyTy8aGi%AY)2}alaq2m@qw`Vg?+Xb* zeU0lj^FF_I_s4I~ZWqR&jDl66JKo19q_6~p@zu_sH+y1#;movTftuD$+!8bG?(~Mg z2sx*C<>b~Dk3B731)GXlGL~GO@?i^u?T!aZJ?Hfw2-){CS6C@03SCe)4b-)rDXbiL zU`Ld4K=XkTp#{|+T3b|^jB11?d4BN~4-ywtF( z&=&6F$aU-Ti=tyYLxiuYxjd46P}gAWC;jG{R)AguyPnN2@kVjy%@^ADPg%ZKac`5& zjb70k%u!`{n_-bu1>T1y38Kj75)u!z-$C$aXY*}NY2 x;=btRLIp7o*L)M|PY83VKYWrUg%1S(Fex+M{_nocdKD-cdb;|#taD0e0ssaeJXrt$ literal 0 HcmV?d00001 diff --git a/website/static/favicon.ico b/website/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e8e1c26b02efef5c96d1a88266a4de95943c5b8c GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/website/static/images/spotube-logo.png b/website/static/images/spotube-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b24a8c238dbd80e359026b114a0c097de9422823 GIT binary patch literal 91271 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 H-`)QM?;rZo literal 0 HcmV?d00001 diff --git a/website/public/spotube-logo.svg b/website/static/images/spotube-logo.svg similarity index 100% rename from website/public/spotube-logo.svg rename to website/static/images/spotube-logo.svg diff --git a/website/static/manifest.json b/website/static/manifest.json new file mode 100644 index 00000000..a6f8ee29 --- /dev/null +++ b/website/static/manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Spotube", + "short_name": "spotube", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/website/static/robots.txt b/website/static/robots.txt new file mode 100644 index 00000000..7d329b1d --- /dev/null +++ b/website/static/robots.txt @@ -0,0 +1 @@ +User-agent: * diff --git a/website/styles/globals.css b/website/styles/globals.css deleted file mode 100755 index e5e2dcc2..00000000 --- a/website/styles/globals.css +++ /dev/null @@ -1,16 +0,0 @@ -html, -body { - padding: 0; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; -} - -a { - color: inherit; - text-decoration: none; -} - -* { - box-sizing: border-box; -} diff --git a/website/svelte.config.js b/website/svelte.config.js new file mode 100644 index 00000000..b5717e39 --- /dev/null +++ b/website/svelte.config.js @@ -0,0 +1,55 @@ +import adapter from '@sveltejs/adapter-cloudflare'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; +import { mdsvex } from 'mdsvex'; +import readingTime from 'remark-reading-time'; +import remarkExternalLinks from 'remark-external-links'; +import slugPlugin from 'rehype-slug'; +import autolinkHeadings from 'rehype-autolink-headings'; +import relativeImages from 'mdsvex-relative-images'; +import remarkGfm from 'remark-gfm'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + extensions: ['.svelte', '.svx', '.md'], + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: [ + vitePreprocess(), + mdsvex({ + extensions: ['.svx', '.md'], + highlight: {}, + layout: './src/lib/components/markdown/layout.svelte', + smartypants: { + dashes: 'oldschool' + }, + + remarkPlugins: [ + remarkGfm, + // adds a `readingTime` frontmatter attribute + readingTime(), + relativeImages, + // external links open in a new tab + [remarkExternalLinks, { target: '_blank', rel: 'noopener' }] + ], + rehypePlugins: [ + slugPlugin, + [ + autolinkHeadings, + { + behavior: 'wrap' + } + ] + ] + }) + ], + vitePlugin: { + inspector: true + }, + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } +}; +export default config; diff --git a/website/tailwind.config.ts b/website/tailwind.config.ts new file mode 100644 index 00000000..77611a2e --- /dev/null +++ b/website/tailwind.config.ts @@ -0,0 +1,28 @@ +import { join } from 'path'; +import type { Config } from 'tailwindcss'; +import typography from '@tailwindcss/typography'; +import { skeleton } from '@skeletonlabs/tw-plugin'; + +export default { + darkMode: 'class', + content: [ + './src/**/*.{html,js,svelte,ts}', + join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}') + ], + theme: { + extend: {} + }, + plugins: [ + typography, + skeleton({ + themes: { + preset: [ + { + name: 'wintry', + enhancements: true + } + ] + } + }) + ] +} satisfies Config; diff --git a/website/tests/test.ts b/website/tests/test.ts new file mode 100644 index 00000000..5816be41 --- /dev/null +++ b/website/tests/test.ts @@ -0,0 +1,6 @@ +import { expect, test } from '@playwright/test'; + +test('index page has expected h1', async ({ page }) => { + await page.goto('/'); + await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); +}); diff --git a/website/tsconfig.json b/website/tsconfig.json old mode 100755 new mode 100644 index ace58477..8534dc99 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -1,23 +1,18 @@ { + "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, - "declaration": true, - "sourceMap": true, + "checkJs": true, "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "baseUrl": "." - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} \ No newline at end of file diff --git a/website/vite.config.ts b/website/vite.config.ts new file mode 100644 index 00000000..839d4507 --- /dev/null +++ b/website/vite.config.ts @@ -0,0 +1,22 @@ +import { purgeCss } from 'vite-plugin-tailwind-purgecss'; +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [ + sveltekit(), + purgeCss({ + safelist: { + // any selectors that begin with "hljs-" will not be purged + greedy: [/^hljs-/] + } + }) + ], + server: { + fs: { + // Allow serving files from one level up to the project root + // posts, copy + allow: ['..'] + } + } +}); From 90f7c531cdc8640afdbabf5a0592159715ea1e6f Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 21:33:09 +0600 Subject: [PATCH 10/59] fix: non-banger songs breaking the queue if sources not found Now fallbacks to another audio source if not found in one --- .../proxy_playlist_provider.dart | 3 +- lib/services/sourced_track/exceptions.dart | 11 ++++-- lib/services/sourced_track/sourced_track.dart | 38 +++++++++++++++++-- .../sourced_track/sources/jiosaavn.dart | 27 +++++++++++-- lib/services/sourced_track/sources/piped.dart | 9 +++-- .../sourced_track/sources/youtube.dart | 2 +- pubspec.lock | 4 +- pubspec.yaml | 2 +- untranslated_messages.json | 1 + 9 files changed, 79 insertions(+), 18 deletions(-) diff --git a/lib/provider/proxy_playlist/proxy_playlist_provider.dart b/lib/provider/proxy_playlist/proxy_playlist_provider.dart index ca0fb308..0811fe35 100644 --- a/lib/provider/proxy_playlist/proxy_playlist_provider.dart +++ b/lib/provider/proxy_playlist/proxy_playlist_provider.dart @@ -144,8 +144,7 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier } } catch (e, stackTrace) { // Removing tracks that were not found to avoid queue interruption - // TODO: Add a flag to enable/disable skip not found tracks - if (e is TrackNotFoundException) { + if (e is TrackNotFoundError) { final oldTrack = mapSourcesToTracks([audioPlayer.nextSource!]).firstOrNull; await removeTrack(oldTrack!.id!); diff --git a/lib/services/sourced_track/exceptions.dart b/lib/services/sourced_track/exceptions.dart index 517d6ba4..85bc5b27 100644 --- a/lib/services/sourced_track/exceptions.dart +++ b/lib/services/sourced_track/exceptions.dart @@ -1,7 +1,12 @@ import 'package:spotify/spotify.dart'; -class TrackNotFoundException implements Exception { - factory TrackNotFoundException(Track track) { - throw Exception("Failed to find any results for ${track.name}"); +class TrackNotFoundError extends Error { + final Track track; + + TrackNotFoundError(this.track); + + @override + String toString() { + return '[TrackNotFoundError] ${track.name} - ${track.artists?.map((e) => e.name).join(", ")}'; } } diff --git a/lib/services/sourced_track/sourced_track.dart b/lib/services/sourced_track/sourced_track.dart index 3ceafbf7..c73f3078 100644 --- a/lib/services/sourced_track/sourced_track.dart +++ b/lib/services/sourced_track/sourced_track.dart @@ -1,15 +1,21 @@ +import 'dart:io'; + +import 'package:http/http.dart'; import 'package:collection/collection.dart'; +import 'package:dio/dio.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; import 'package:spotube/provider/user_preferences/user_preferences_state.dart'; import 'package:spotube/services/sourced_track/enums.dart'; +import 'package:spotube/services/sourced_track/exceptions.dart'; import 'package:spotube/services/sourced_track/models/source_info.dart'; import 'package:spotube/services/sourced_track/models/source_map.dart'; import 'package:spotube/services/sourced_track/sources/jiosaavn.dart'; import 'package:spotube/services/sourced_track/sources/piped.dart'; import 'package:spotube/services/sourced_track/sources/youtube.dart'; import 'package:spotube/utils/service_utils.dart'; +import 'package:youtube_explode_dart/youtube_explode_dart.dart'; abstract class SourcedTrack extends Track { final SourceMap source; @@ -101,9 +107,8 @@ abstract class SourcedTrack extends Track { required Track track, required Ref ref, }) async { + final preferences = ref.read(userPreferencesProvider); try { - final preferences = ref.read(userPreferencesProvider); - return switch (preferences.audioSource) { AudioSource.piped => await PipedSourcedTrack.fetchFromTrack(track: track, ref: ref), @@ -112,8 +117,35 @@ abstract class SourcedTrack extends Track { AudioSource.jiosaavn => await JioSaavnSourcedTrack.fetchFromTrack(track: track, ref: ref), }; + } on TrackNotFoundError catch (_) { + return switch (preferences.audioSource) { + AudioSource.piped || + AudioSource.youtube => + await JioSaavnSourcedTrack.fetchFromTrack( + track: track, + ref: ref, + weakMatch: true, + ), + AudioSource.jiosaavn => + await PipedSourcedTrack.fetchFromTrack(track: track, ref: ref), + }; + } on HttpClientClosedException catch (_) { + return await PipedSourcedTrack.fetchFromTrack(track: track, ref: ref); } catch (e) { - return YoutubeSourcedTrack.fetchFromTrack(track: track, ref: ref); + if (e is DioException || e is ClientException || e is SocketException) { + if (preferences.audioSource == AudioSource.jiosaavn) { + return await JioSaavnSourcedTrack.fetchFromTrack( + track: track, + ref: ref, + weakMatch: true, + ); + } + return await JioSaavnSourcedTrack.fetchFromTrack( + track: track, + ref: ref, + ); + } + rethrow; } } diff --git a/lib/services/sourced_track/sources/jiosaavn.dart b/lib/services/sourced_track/sources/jiosaavn.dart index 7455f4d7..f731de6c 100644 --- a/lib/services/sourced_track/sources/jiosaavn.dart +++ b/lib/services/sourced_track/sources/jiosaavn.dart @@ -37,15 +37,17 @@ class JioSaavnSourcedTrack extends SourcedTrack { static Future fetchFromTrack({ required Track track, required Ref ref, + bool weakMatch = false, }) async { final cachedSource = await SourceMatch.box.get(track.id); if (cachedSource == null || cachedSource.sourceType != SourceType.jiosaavn) { - final siblings = await fetchSiblings(ref: ref, track: track); + final siblings = + await fetchSiblings(ref: ref, track: track, weakMatch: weakMatch); if (siblings.isEmpty) { - throw TrackNotFoundException(track); + throw TrackNotFoundError(track); } await SourceMatch.box.put( @@ -119,6 +121,7 @@ class JioSaavnSourcedTrack extends SourcedTrack { static Future> fetchSiblings({ required Track track, required Ref ref, + bool weakMatch = false, }) async { final query = SourcedTrack.getSearchTerm(track); @@ -126,9 +129,12 @@ class JioSaavnSourcedTrack extends SourcedTrack { await jiosaavnClient.search.songs(query, limit: 20); final trackArtistNames = track.artists?.map((ar) => ar.name).toList(); - return results + + final matchedResults = results .where( (s) { + s.name?.unescapeHtml().contains(track.name!) ?? false; + final sameName = s.name?.unescapeHtml() == track.name; final artistNames = [ s.primaryArtists, @@ -139,12 +145,27 @@ class JioSaavnSourcedTrack extends SourcedTrack { (artist) => trackArtistNames?.any((ar) => artist == ar) ?? false, ); + if (weakMatch) { + final containsName = + s.name?.unescapeHtml().contains(track.name!) ?? false; + final containsPrimaryArtist = s.primaryArtists + .unescapeHtml() + .contains(trackArtistNames?.first ?? ""); + + return containsName && containsPrimaryArtist; + } return sameName && sameArtists; }, ) .map(toSiblingType) .toList(); + + if (weakMatch && matchedResults.isEmpty) { + return results.map(toSiblingType).toList(); + } + + return matchedResults; } @override diff --git a/lib/services/sourced_track/sources/piped.dart b/lib/services/sourced_track/sources/piped.dart index 8a1ec1bc..1eec8549 100644 --- a/lib/services/sourced_track/sources/piped.dart +++ b/lib/services/sourced_track/sources/piped.dart @@ -55,7 +55,7 @@ class PipedSourcedTrack extends SourcedTrack { if (cachedSource == null) { final siblings = await fetchSiblings(ref: ref, track: track); if (siblings.isEmpty) { - throw TrackNotFoundException(track); + throw TrackNotFoundError(track); } await SourceMatch.box.put( @@ -160,13 +160,16 @@ class PipedSourcedTrack extends SourcedTrack { final query = SourcedTrack.getSearchTerm(track); final PipedSearchResult(items: searchResults) = await pipedClient.search( - "$query - Topic", + query, preference.searchMode == SearchMode.youtube ? PipedFilter.video : PipedFilter.musicSongs, ); - final isYouTubeMusic = preference.searchMode == SearchMode.youtubeMusic; + // when falling back to piped API make sure to use the YouTube mode + final isYouTubeMusic = preference.audioSource != AudioSource.piped + ? false + : preference.searchMode == SearchMode.youtubeMusic; if (isYouTubeMusic) { final artists = (track.artists ?? []) diff --git a/lib/services/sourced_track/sources/youtube.dart b/lib/services/sourced_track/sources/youtube.dart index f363937c..d27510e4 100644 --- a/lib/services/sourced_track/sources/youtube.dart +++ b/lib/services/sourced_track/sources/youtube.dart @@ -48,7 +48,7 @@ class YoutubeSourcedTrack extends SourcedTrack { if (cachedSource == null || cachedSource.sourceType != SourceType.youtube) { final siblings = await fetchSiblings(ref: ref, track: track); if (siblings.isEmpty) { - throw TrackNotFoundException(track); + throw TrackNotFoundError(track); } await SourceMatch.box.put( diff --git a/pubspec.lock b/pubspec.lock index 0d1b2993..0050a745 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1619,10 +1619,10 @@ packages: dependency: "direct main" description: name: piped_client - sha256: "8b96e1f9d8533c1da7eff7fbbd4bf188256fc76a20900d378b52be09418ea771" + sha256: "87b04b2ebf4e008cfbb0ac85e9920ab3741f5aa697be2dd44919658a3297a4bc" url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.1.1" platform: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d3fb5630..21175930 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -76,7 +76,7 @@ dependencies: path: ^1.8.0 path_provider: ^2.0.8 permission_handler: ^11.0.1 - piped_client: ^0.1.0 + piped_client: ^0.1.1 popover: ^0.2.6+3 scrobblenaut: git: diff --git a/untranslated_messages.json b/untranslated_messages.json index 4240c8c0..e4e45624 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -77,6 +77,7 @@ ], "nl": [ + "audio_source", "start_a_radio", "how_to_start_radio", "replace_queue_question", From badd52223af8dfd0d34714a76a5f6bd28dca2dca Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 22:07:32 +0600 Subject: [PATCH 11/59] chore: use piped_client git version to fix search issue --- lib/services/sourced_track/sources/piped.dart | 3 ++- pubspec.lock | 9 +++++---- pubspec.yaml | 4 +++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/services/sourced_track/sources/piped.dart b/lib/services/sourced_track/sources/piped.dart index 1eec8549..75f83125 100644 --- a/lib/services/sourced_track/sources/piped.dart +++ b/lib/services/sourced_track/sources/piped.dart @@ -157,12 +157,13 @@ class PipedSourcedTrack extends SourcedTrack { }) async { final pipedClient = ref.read(pipedProvider); final preference = ref.read(userPreferencesProvider); + final query = SourcedTrack.getSearchTerm(track); final PipedSearchResult(items: searchResults) = await pipedClient.search( query, preference.searchMode == SearchMode.youtube - ? PipedFilter.video + ? PipedFilter.videos : PipedFilter.musicSongs, ); diff --git a/pubspec.lock b/pubspec.lock index 0050a745..03ea66a1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1618,10 +1618,11 @@ packages: piped_client: dependency: "direct main" description: - name: piped_client - sha256: "87b04b2ebf4e008cfbb0ac85e9920ab3741f5aa697be2dd44919658a3297a4bc" - url: "https://pub.dev" - source: hosted + path: "." + ref: HEAD + resolved-ref: "64631732eefe3d93889756dc2e4ff5c8523ed763" + url: "https://github.com/KRTirtho/piped_client.git" + source: git version: "0.1.1" platform: dependency: transitive diff --git a/pubspec.yaml b/pubspec.yaml index 21175930..a9144845 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -76,7 +76,9 @@ dependencies: path: ^1.8.0 path_provider: ^2.0.8 permission_handler: ^11.0.1 - piped_client: ^0.1.1 + piped_client: + git: + url: https://github.com/KRTirtho/piped_client.git popover: ^0.2.6+3 scrobblenaut: git: From e964f61d38cb303e3d3fd60c866414f57207181c Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 22:22:00 +0600 Subject: [PATCH 12/59] fix: track loading when not found in Youtube --- .../sourced_track/sources/youtube.dart | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/services/sourced_track/sources/youtube.dart b/lib/services/sourced_track/sources/youtube.dart index d27510e4..5f75c4db 100644 --- a/lib/services/sourced_track/sources/youtube.dart +++ b/lib/services/sourced_track/sources/youtube.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/models/source_match.dart'; import 'package:spotube/services/sourced_track/enums.dart'; @@ -70,9 +71,14 @@ class YoutubeSourcedTrack extends SourcedTrack { ); } final item = await youtubeClient.videos.get(cachedSource.sourceId); - final manifest = await youtubeClient.videos.streamsClient.getManifest( - cachedSource.sourceId, - ); + final manifest = await youtubeClient.videos.streamsClient + .getManifest( + cachedSource.sourceId, + ) + .timeout( + const Duration(seconds: 5), + onTimeout: () => throw ClientException("Timeout"), + ); return YoutubeSourcedTrack( ref: ref, siblings: [], @@ -125,7 +131,10 @@ class YoutubeSourcedTrack extends SourcedTrack { SourceMap? sourceMap; if (index == 0) { final manifest = - await youtubeClient.videos.streamsClient.getManifest(item.id); + await youtubeClient.videos.streamsClient.getManifest(item.id).timeout( + const Duration(seconds: 5), + onTimeout: () => throw ClientException("Timeout"), + ); sourceMap = toSourceMap(manifest); } @@ -243,8 +252,12 @@ class YoutubeSourcedTrack extends SourcedTrack { final newSiblings = siblings.where((s) => s.id != sibling.id).toList() ..insert(0, sourceInfo); - final manifest = - await youtubeClient.videos.streamsClient.getManifest(newSourceInfo.id); + final manifest = await youtubeClient.videos.streamsClient + .getManifest(newSourceInfo.id) + .timeout( + const Duration(seconds: 5), + onTimeout: () => throw ClientException("Timeout"), + ); await SourceMatch.box.put( id!, From 9f9244062a39759aa0ce28d2d5f7c8fa53d73003 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 17 Feb 2024 23:01:14 +0600 Subject: [PATCH 13/59] feat(playlist): show confirmation before deleting user playlist #1222 --- .../sections/header/header_actions.dart | 6 +- .../shared/tracks_view/track_view_props.dart | 4 +- lib/l10n/app_en.arb | 4 +- lib/pages/playlist/playlist.dart | 20 +++++- untranslated_messages.json | 72 ++++++++++++++----- 5 files changed, 81 insertions(+), 25 deletions(-) diff --git a/lib/components/shared/tracks_view/sections/header/header_actions.dart b/lib/components/shared/tracks_view/sections/header/header_actions.dart index b050c199..75aa3f61 100644 --- a/lib/components/shared/tracks_view/sections/header/header_actions.dart +++ b/lib/components/shared/tracks_view/sections/header/header_actions.dart @@ -70,9 +70,9 @@ class TrackViewHeaderActions extends HookConsumerWidget { tooltip: props.isLiked ? context.l10n.remove_from_favorites : context.l10n.save_as_favorite, - onPressed: () { - props.onHeart?.call(); - if (isUserPlaylist) { + onPressed: () async { + final shouldPop = await props.onHeart?.call(); + if (isUserPlaylist && shouldPop == true && context.mounted) { context.pop(); } }, diff --git a/lib/components/shared/tracks_view/track_view_props.dart b/lib/components/shared/tracks_view/track_view_props.dart index 1c6c7647..21bbaec7 100644 --- a/lib/components/shared/tracks_view/track_view_props.dart +++ b/lib/components/shared/tracks_view/track_view_props.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:fl_query/fl_query.dart'; import 'package:flutter/material.dart' hide Page; import 'package:spotify/spotify.dart'; @@ -62,7 +64,7 @@ class InheritedTrackView extends InheritedWidget { final String shareUrl; // events - final VoidCallback? onHeart; // if null heart button will hidden + final FutureOr Function()? onHeart; // if null heart button will hidden const InheritedTrackView({ super.key, diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0628cc43..b1e8331f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -290,5 +290,7 @@ "start_a_radio": "Start a Radio", "how_to_start_radio": "How do you want to start the radio?", "replace_queue_question": "Do you want to replace the current queue or append to it?", - "endless_playback": "Endless Playback" + "endless_playback": "Endless Playback", + "delete_playlist": "Delete Playlist", + "delete_playlist_confirmation": "Are you sure you want to delete this playlist?" } \ No newline at end of file diff --git a/lib/pages/playlist/playlist.dart b/lib/pages/playlist/playlist.dart index 29601a09..89a279ab 100644 --- a/lib/pages/playlist/playlist.dart +++ b/lib/pages/playlist/playlist.dart @@ -2,8 +2,11 @@ import 'package:flutter/material.dart' hide Page; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/components/shared/dialogs/prompt_dialog.dart'; +import 'package:spotube/components/shared/tracks_view/sections/body/use_is_user_playlist.dart'; import 'package:spotube/components/shared/tracks_view/track_view.dart'; import 'package:spotube/components/shared/tracks_view/track_view_props.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/infinite_query.dart'; import 'package:spotube/provider/spotify_provider.dart'; import 'package:spotube/services/mutations/mutations.dart'; @@ -45,6 +48,8 @@ class PlaylistPage extends HookConsumerWidget { ], ); + final isUserPlaylist = useIsUserPlaylist(ref, playlist.id!); + return InheritedTrackView( collectionId: playlist.id!, image: TypeConversionUtils.image_X_UrlString( @@ -72,9 +77,20 @@ class PlaylistPage extends HookConsumerWidget { shareUrl: playlist.externalUrls?.spotify ?? "", onHeart: () async { if (!isLikedQuery.hasData || togglePlaylistLike.isMutating) { - return; + return false; } - await togglePlaylistLike.mutate(isLikedQuery.data!); + final confirmed = isUserPlaylist + ? await showPromptDialog( + context: context, + title: context.l10n.delete_playlist, + message: context.l10n.delete_playlist_confirmation, + ) + : true; + if (confirmed) { + await togglePlaylistLike.mutate(isLikedQuery.data!); + return isUserPlaylist; + } + return null; }, child: const TrackView(), ); diff --git a/untranslated_messages.json b/untranslated_messages.json index e4e45624..4525caeb 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -3,77 +3,99 @@ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "bn": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "ca": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "de": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "es": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "fa": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "fr": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "hi": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "it": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "ja": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "ne": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "nl": [ @@ -81,48 +103,62 @@ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "pl": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "pt": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "ru": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "tr": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "uk": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ], "zh": [ "start_a_radio", "how_to_start_radio", "replace_queue_question", - "endless_playback" + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation" ] } From 86123456f2ff577921cf62cffca180427dfe1dd5 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 18 Feb 2024 21:11:28 +0600 Subject: [PATCH 14/59] fix: cleanTitle removing feat and ft from words instead of whole words --- lib/utils/service_utils.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/utils/service_utils.dart b/lib/utils/service_utils.dart index 9e3b5893..4d9d1e67 100644 --- a/lib/utils/service_utils.dart +++ b/lib/utils/service_utils.dart @@ -53,9 +53,9 @@ abstract class ServiceUtils { return "$title ${artists.map((e) => e.replaceAll(",", " ")).join(", ")}" .toLowerCase() - .replaceAll(RegExp(" *\\[[^\\]]*]"), '') - .replaceAll(RegExp("feat.|ft."), '') - .replaceAll(RegExp("\\s+"), ' ') + .replaceAll(RegExp(r"\s*\[[^\]]*]"), ' ') + .replaceAll(RegExp(r"\sfeat\.|\sft\."), ' ') + .replaceAll(RegExp(r"\s+"), ' ') .trim(); } From c3289a0ba4e7de094a15246677ffcb940504ebde Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 18 Feb 2024 23:02:14 +0600 Subject: [PATCH 15/59] fix(android): pressing back button in any other tab other than home exits the app --- lib/pages/home/home.dart | 2 - lib/pages/root/root_app.dart | 73 ++++++++++++++++++++---------------- pubspec.lock | 4 +- pubspec.yaml | 2 +- 4 files changed, 44 insertions(+), 37 deletions(-) diff --git a/lib/pages/home/home.dart b/lib/pages/home/home.dart index dbec0564..312ca7f9 100644 --- a/lib/pages/home/home.dart +++ b/lib/pages/home/home.dart @@ -1,6 +1,4 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_desktop_tools/flutter_desktop_tools.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:gap/gap.dart'; diff --git a/lib/pages/root/root_app.dart b/lib/pages/root/root_app.dart index 2ff49737..aaf3e30a 100644 --- a/lib/pages/root/root_app.dart +++ b/lib/pages/root/root_app.dart @@ -162,38 +162,47 @@ class RootApp extends HookConsumerWidget { } } - return Scaffold( - body: Sidebar( - selectedIndex: rootPaths[location], - onSelectedIndexChanged: onSelectIndexChanged, - child: child, - ), - extendBody: true, - drawerScrimColor: Colors.transparent, - endDrawer: DesktopTools.platform.isDesktop - ? Container( - constraints: const BoxConstraints(maxWidth: 800), - decoration: BoxDecoration( - boxShadow: theme.brightness == Brightness.light - ? null - : kElevationToShadow[8], - ), - margin: const EdgeInsets.only( - top: 40, - bottom: 100, - ), - child: const PlayerQueue(floating: true), - ) - : null, - bottomNavigationBar: Column( - mainAxisSize: MainAxisSize.min, - children: [ - BottomPlayer(), - SpotubeNavigationBar( - selectedIndex: rootPaths[location], - onSelectedIndexChanged: onSelectIndexChanged, - ), - ], + return WillPopScope( + onWillPop: () async { + if (rootPaths[location] != 0) { + onSelectIndexChanged(0); + return false; + } + return true; + }, + child: Scaffold( + body: Sidebar( + selectedIndex: rootPaths[location], + onSelectedIndexChanged: onSelectIndexChanged, + child: child, + ), + extendBody: true, + drawerScrimColor: Colors.transparent, + endDrawer: DesktopTools.platform.isDesktop + ? Container( + constraints: const BoxConstraints(maxWidth: 800), + decoration: BoxDecoration( + boxShadow: theme.brightness == Brightness.light + ? null + : kElevationToShadow[8], + ), + margin: const EdgeInsets.only( + top: 40, + bottom: 100, + ), + child: const PlayerQueue(floating: true), + ) + : null, + bottomNavigationBar: Column( + mainAxisSize: MainAxisSize.min, + children: [ + BottomPlayer(), + SpotubeNavigationBar( + selectedIndex: rootPaths[location], + onSelectedIndexChanged: onSelectIndexChanged, + ), + ], + ), ), ); } diff --git a/pubspec.lock b/pubspec.lock index 03ea66a1..b9268b56 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1014,10 +1014,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: "3b40e751eaaa855179b416974d59d29669e750d2e50fcdb2b37f1cb0ca8c803a" + sha256: c5fa45fa502ee880839e3b2152d987c44abae26d064a2376d4aad434cf0f7b15 url: "https://pub.dev" source: hosted - version: "13.0.1" + version: "12.1.3" google_fonts: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index a9144845..82377d08 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -55,7 +55,7 @@ dependencies: flutter_svg: ^1.1.6 form_validator: ^2.1.1 fuzzywuzzy: ^1.1.6 - go_router: ^13.0.1 + go_router: 12.1.3 # Stuck on this https://github.com/flutter/flutter/issues/140869 google_fonts: ^6.1.0 hive: ^2.2.3 hive_flutter: ^1.1.0 From 3294f657fe8a03b18d9be8974968b6508465963d Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 18 Feb 2024 23:05:43 +0600 Subject: [PATCH 16/59] fix(android): system back button in player page exits the app --- lib/components/player/player.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/components/player/player.dart b/lib/components/player/player.dart index 33283c3e..298458b5 100644 --- a/lib/components/player/player.dart +++ b/lib/components/player/player.dart @@ -94,10 +94,10 @@ class PlayerView extends HookConsumerWidget { final topPadding = MediaQueryData.fromView(View.of(context)).padding.top; - return PopScope( - canPop: false, - onPopInvoked: (didPop) async { - panelController.close(); + return WillPopScope( + onWillPop: () async { + await panelController.close(); + return false; }, child: IconTheme( data: theme.iconTheme.copyWith(color: bodyTextColor), From 6f8271f5e9394cb4053e41dd222aa2844c34d609 Mon Sep 17 00:00:00 2001 From: Kuyumee <69566792+Kuyumee@users.noreply.github.com> Date: Mon, 19 Feb 2024 01:35:42 +0800 Subject: [PATCH 17/59] feat: Sort by Duration (#1238) --- lib/components/library/user_local_tracks.dart | 5 ++-- .../shared/sort_tracks_dropdown.dart | 5 ++++ lib/l10n/app_en.arb | 1 + lib/utils/service_utils.dart | 24 +++++++++---------- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/lib/components/library/user_local_tracks.dart b/lib/components/library/user_local_tracks.dart index f4e782d9..095e6e97 100644 --- a/lib/components/library/user_local_tracks.dart +++ b/lib/components/library/user_local_tracks.dart @@ -50,10 +50,11 @@ enum SortBy { none, ascending, descending, - artist, - album, newest, oldest, + duration, + artist, + album, } final localTracksProvider = FutureProvider>((ref) async { diff --git a/lib/components/shared/sort_tracks_dropdown.dart b/lib/components/shared/sort_tracks_dropdown.dart index 0547beb0..ab35b2e3 100644 --- a/lib/components/shared/sort_tracks_dropdown.dart +++ b/lib/components/shared/sort_tracks_dropdown.dart @@ -48,6 +48,11 @@ class SortTracksDropdown extends StatelessWidget { enabled: value != SortBy.oldest, title: Text(context.l10n.sort_oldest), ), + PopSheetEntry( + value: SortBy.duration, + enabled: value != SortBy.duration, + title: Text(context.l10n.sort_duration), + ), PopSheetEntry( value: SortBy.artist, enabled: value != SortBy.artist, diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index b1e8331f..244d75e2 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -41,6 +41,7 @@ "sort_z_a": "Sort by Z-A", "sort_artist": "Sort by Artist", "sort_album": "Sort by Album", + "sort_duration": "Sort by Duration", "sort_tracks": "Sort Tracks", "currently_downloading": "Currently Downloading ({tracks_length})", "cancel_all": "Cancel All", diff --git a/lib/utils/service_utils.dart b/lib/utils/service_utils.dart index 4d9d1e67..60c77e59 100644 --- a/lib/utils/service_utils.dart +++ b/lib/utils/service_utils.dart @@ -292,24 +292,24 @@ abstract class ServiceUtils { return List.from(tracks) ..sort((a, b) { switch (sortBy) { - case SortBy.album: - return a.album?.name?.compareTo(b.album?.name ?? "") ?? 0; - case SortBy.artist: - return a.artists?.first.name - ?.compareTo(b.artists?.first.name ?? "") ?? - 0; case SortBy.ascending: return a.name?.compareTo(b.name ?? "") ?? 0; - case SortBy.oldest: - final aDate = parseSpotifyAlbumDate(a.album); - final bDate = parseSpotifyAlbumDate(b.album); - return aDate.compareTo(bDate); + case SortBy.descending: + return b.name?.compareTo(a.name ?? "") ?? 0; case SortBy.newest: final aDate = parseSpotifyAlbumDate(a.album); final bDate = parseSpotifyAlbumDate(b.album); return bDate.compareTo(aDate); - case SortBy.descending: - return b.name?.compareTo(a.name ?? "") ?? 0; + case SortBy.oldest: + final aDate = parseSpotifyAlbumDate(a.album); + final bDate = parseSpotifyAlbumDate(b.album); + return aDate.compareTo(bDate); + case SortBy.duration: + return a.durationMs?.compareTo(b.durationMs ?? 0) ?? 0; + case SortBy.artist: + return a.artists?.first.name?.compareTo(b.artists?.first.name ?? "") ?? 0; + case SortBy.album: + return a.album?.name?.compareTo(b.album?.name ?? "") ?? 0; default: return 0; } From ba69496dcc9a1b7f6ea4e104e71764a854d27f1f Mon Sep 17 00:00:00 2001 From: olivier2 Date: Sun, 18 Feb 2024 13:47:10 -0500 Subject: [PATCH 18/59] feat(windows): Install Visual C++ 2015-2022 Redistributable if missing when installing --- Makefile | 1 + windows/packaging/exe/inno_setup.iss | 76 ++++++++++++++++++++++++++ windows/packaging/exe/make_config.yaml | 1 + 3 files changed, 78 insertions(+) create mode 100644 windows/packaging/exe/inno_setup.iss diff --git a/Makefile b/Makefile index c2678d2e..1add46b0 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ publishaur: innoinstall: powershell curl -o build\installer.exe http://files.jrsoftware.org/is/6/innosetup-${INNO_VERSION}.exe + powershell git clone https://github.com/DomGries/InnoDependencyInstaller.git build\inno-depend powershell build\installer.exe /verysilent /allusers /dir=build\iscc inno: diff --git a/windows/packaging/exe/inno_setup.iss b/windows/packaging/exe/inno_setup.iss new file mode 100644 index 00000000..64acc2b3 --- /dev/null +++ b/windows/packaging/exe/inno_setup.iss @@ -0,0 +1,76 @@ +; https://github.com/DomGries/InnoDependencyInstaller +; requires netcorecheck.exe and netcorecheck_x64.exe (see CodeDependencies.iss) +; path is relative to dist\{VERSION} directory +#define public Dependency_Path_NetCoreCheck "..\..\build\inno-depend\dependencies\" +#include "..\..\build\inno-depend\CodeDependencies.iss" + +[Setup] +AppId={{APP_ID}} +AppVersion={{APP_VERSION}} +AppName={{DISPLAY_NAME}} +AppPublisher={{PUBLISHER_NAME}} +AppPublisherURL={{PUBLISHER_URL}} +AppSupportURL={{PUBLISHER_URL}} +AppUpdatesURL={{PUBLISHER_URL}} +DefaultDirName={{INSTALL_DIR_NAME}} +DisableProgramGroupPage=yes +OutputDir=. +OutputBaseFilename={{OUTPUT_BASE_FILENAME}} +Compression=lzma +SolidCompression=yes +SetupIconFile={{SETUP_ICON_FILE}} +WizardStyle=modern +PrivilegesRequired={{PRIVILEGES_REQUIRED}} +ArchitecturesAllowed=x64 +ArchitecturesInstallIn64BitMode=x64 + +[Languages] +{% for locale in LOCALES %} +{% if locale == 'en' %}Name: "english"; MessagesFile: "compiler:Default.isl"{% endif %} +{% if locale == 'hy' %}Name: "armenian"; MessagesFile: "compiler:Languages\\Armenian.isl"{% endif %} +{% if locale == 'bg' %}Name: "bulgarian"; MessagesFile: "compiler:Languages\\Bulgarian.isl"{% endif %} +{% if locale == 'ca' %}Name: "catalan"; MessagesFile: "compiler:Languages\\Catalan.isl"{% endif %} +{% if locale == 'zh' %}Name: "chinesesimplified"; MessagesFile: "compiler:Languages\\ChineseSimplified.isl"{% endif %} +{% if locale == 'co' %}Name: "corsican"; MessagesFile: "compiler:Languages\\Corsican.isl"{% endif %} +{% if locale == 'cs' %}Name: "czech"; MessagesFile: "compiler:Languages\\Czech.isl"{% endif %} +{% if locale == 'da' %}Name: "danish"; MessagesFile: "compiler:Languages\\Danish.isl"{% endif %} +{% if locale == 'nl' %}Name: "dutch"; MessagesFile: "compiler:Languages\\Dutch.isl"{% endif %} +{% if locale == 'fi' %}Name: "finnish"; MessagesFile: "compiler:Languages\\Finnish.isl"{% endif %} +{% if locale == 'fr' %}Name: "french"; MessagesFile: "compiler:Languages\\French.isl"{% endif %} +{% if locale == 'de' %}Name: "german"; MessagesFile: "compiler:Languages\\German.isl"{% endif %} +{% if locale == 'he' %}Name: "hebrew"; MessagesFile: "compiler:Languages\\Hebrew.isl"{% endif %} +{% if locale == 'is' %}Name: "icelandic"; MessagesFile: "compiler:Languages\\Icelandic.isl"{% endif %} +{% if locale == 'it' %}Name: "italian"; MessagesFile: "compiler:Languages\\Italian.isl"{% endif %} +{% if locale == 'ja' %}Name: "japanese"; MessagesFile: "compiler:Languages\\Japanese.isl"{% endif %} +{% if locale == 'no' %}Name: "norwegian"; MessagesFile: "compiler:Languages\\Norwegian.isl"{% endif %} +{% if locale == 'pl' %}Name: "polish"; MessagesFile: "compiler:Languages\\Polish.isl"{% endif %} +{% if locale == 'pt' %}Name: "portuguese"; MessagesFile: "compiler:Languages\\Portuguese.isl"{% endif %} +{% if locale == 'ru' %}Name: "russian"; MessagesFile: "compiler:Languages\\Russian.isl"{% endif %} +{% if locale == 'sk' %}Name: "slovak"; MessagesFile: "compiler:Languages\\Slovak.isl"{% endif %} +{% if locale == 'sl' %}Name: "slovenian"; MessagesFile: "compiler:Languages\\Slovenian.isl"{% endif %} +{% if locale == 'es' %}Name: "spanish"; MessagesFile: "compiler:Languages\\Spanish.isl"{% endif %} +{% if locale == 'tr' %}Name: "turkish"; MessagesFile: "compiler:Languages\\Turkish.isl"{% endif %} +{% if locale == 'uk' %}Name: "ukrainian"; MessagesFile: "compiler:Languages\\Ukrainian.isl"{% endif %} +{% endfor %} + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if CREATE_DESKTOP_ICON != true %}unchecked{% else %}checkedonce{% endif %} +Name: "launchAtStartup"; Description: "{cm:AutoStartProgram,{{DISPLAY_NAME}}}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if LAUNCH_AT_STARTUP != true %}unchecked{% else %}checkedonce{% endif %} +[Files] +Source: "{{SOURCE_DIR}}\\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{autoprograms}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}" +Name: "{autodesktop}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}"; Tasks: desktopicon +Name: "{userstartup}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}"; WorkingDir: "{app}"; Tasks: launchAtStartup + +[Run] +Filename: "{app}\\{{EXECUTABLE_NAME}}"; Description: "{cm:LaunchProgram,{{DISPLAY_NAME}}}"; Flags: {% if PRIVILEGES_REQUIRED == 'admin' %}runascurrentuser{% endif %} nowait postinstall skipifsilent + +[Code] +function InitializeSetup: Boolean; +begin + Dependency_AddVC2015To2022; + Result := True; +end; \ No newline at end of file diff --git a/windows/packaging/exe/make_config.yaml b/windows/packaging/exe/make_config.yaml index 2f6b352a..97dcd87d 100644 --- a/windows/packaging/exe/make_config.yaml +++ b/windows/packaging/exe/make_config.yaml @@ -4,5 +4,6 @@ publisher_url: https://github.com/KRTirtho/spotube display_name: Spotube create_desktop_icon: true install_dir_name: Spotube +script_template: inno_setup.iss locales: - en From b6d42659b7540438067417f53fae81c6d12572ad Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 23 Feb 2024 20:57:35 +0600 Subject: [PATCH 19/59] chore: debug linux tar not getting updated --- .github/workflows/spotube-release-binary.yml | 2 +- macos/Podfile.lock | 2 +- untranslated_messages.json | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 3ef0ff61..bfe97328 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -190,7 +190,7 @@ jobs: dist/spotube-linux-${{ env.BUILD_VERSION }}-x86_64.tar.xz - name: Debug With SSH When fails - if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} + if: ${{ inputs.debug && inputs.channel == 'nightly' }} uses: mxschmitt/action-tmate@v3 with: limit-access-to-actor: true diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 65fe3535..566e8196 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -143,4 +143,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/untranslated_messages.json b/untranslated_messages.json index 4525caeb..70a2d0e6 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -1,5 +1,6 @@ { "ar": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -9,6 +10,7 @@ ], "bn": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -18,6 +20,7 @@ ], "ca": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -27,6 +30,7 @@ ], "de": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -36,6 +40,7 @@ ], "es": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -45,6 +50,7 @@ ], "fa": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -54,6 +60,7 @@ ], "fr": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -63,6 +70,7 @@ ], "hi": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -72,6 +80,7 @@ ], "it": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -81,6 +90,7 @@ ], "ja": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -90,6 +100,7 @@ ], "ne": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -99,6 +110,7 @@ ], "nl": [ + "sort_duration", "audio_source", "start_a_radio", "how_to_start_radio", @@ -109,6 +121,7 @@ ], "pl": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -118,6 +131,7 @@ ], "pt": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -127,6 +141,7 @@ ], "ru": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -136,6 +151,7 @@ ], "tr": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -145,6 +161,7 @@ ], "uk": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", @@ -154,6 +171,7 @@ ], "zh": [ + "sort_duration", "start_a_radio", "how_to_start_radio", "replace_queue_question", From ab08c82c8dd501263049f3adcbd48907ba13e3a9 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 24 Feb 2024 18:38:18 +0600 Subject: [PATCH 20/59] fix: friends list not scrollable with mouse drag --- .github/workflows/spotube-release-binary.yml | 2 +- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Podfile | 2 +- ios/Podfile.lock | 6 +-- ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- lib/components/home/sections/friends.dart | 40 ++++++++------ lib/l10n/app_en.arb | 3 +- lib/pages/library/library.dart | 2 +- untranslated_messages.json | 54 ++++++++++++------- 10 files changed, 71 insertions(+), 44 deletions(-) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index bfe97328..3ef0ff61 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -190,7 +190,7 @@ jobs: dist/spotube-linux-${{ env.BUILD_VERSION }}-x86_64.tar.xz - name: Debug With SSH When fails - if: ${{ inputs.debug && inputs.channel == 'nightly' }} + if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} uses: mxschmitt/action-tmate@v3 with: limit-access-to-actor: true diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9625e105..7c569640 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/ios/Podfile b/ios/Podfile index 5b0d5a2c..bc3dcaa6 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 35f3dc18..0b75217f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -196,7 +196,7 @@ SPEC CHECKSUMS: DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de file_selector_ios: 8c25d700d625e1dcdd6599f2d927072f2254647b - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_inappwebview: acd4fc0f012cefd09015000c241137d82f01ba62 flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 @@ -221,6 +221,6 @@ SPEC CHECKSUMS: Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 -PODFILE CHECKSUM: e36c7ad9836dfd8d22934c7680185432a658e28f +PODFILE CHECKSUM: 5129d2e80ab0dfc533f262cedf032011b1dfe4fd -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index dbcdd7a6..13f624a4 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -406,7 +406,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a6b826db..5e31d3d3 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ 0, diff --git a/untranslated_messages.json b/untranslated_messages.json index 70a2d0e6..41251435 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -6,7 +6,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "bn": [ @@ -16,7 +17,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "ca": [ @@ -26,7 +28,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "de": [ @@ -36,7 +39,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "es": [ @@ -46,7 +50,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "fa": [ @@ -56,7 +61,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "fr": [ @@ -66,7 +72,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "hi": [ @@ -76,7 +83,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "it": [ @@ -86,7 +94,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "ja": [ @@ -96,7 +105,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "ne": [ @@ -106,7 +116,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "nl": [ @@ -117,7 +128,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "pl": [ @@ -127,7 +139,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "pt": [ @@ -137,7 +150,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "ru": [ @@ -147,7 +161,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "tr": [ @@ -157,7 +172,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "uk": [ @@ -167,7 +183,8 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ], "zh": [ @@ -177,6 +194,7 @@ "replace_queue_question", "endless_playback", "delete_playlist", - "delete_playlist_confirmation" + "delete_playlist_confirmation", + "local_tracks" ] } From 846ae82084d2241982a52488253e3375bb505de0 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 24 Feb 2024 20:21:09 +0600 Subject: [PATCH 21/59] chore: upgrade flutter version --- .fvm/fvm_config.json | 2 +- .github/workflows/spotube-release-binary.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index f1f9ceed..7ca74200 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.16.0", + "flutterSdkVersion": "3.19.1", "flavors": {} } \ No newline at end of file diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 3ef0ff61..772c9fe2 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -26,7 +26,7 @@ on: default: true env: - FLUTTER_VERSION: '3.16.3' + FLUTTER_VERSION: '3.19.1' jobs: windows: From 095587ee84f7d867c69fcf4b09ed608d63478e1e Mon Sep 17 00:00:00 2001 From: powen Date: Sat, 24 Feb 2024 23:22:23 +0800 Subject: [PATCH 22/59] feat: Add iOS background play support (#1166) * Create build-iPA.yml * Update build-iPA.yml * update-iOS - Set AppIcon(same as Android) - Set to correct app name(Sptube -> Spotube) - * update iOS flavors * Update build-iPA.yml * Update spotube-release-binary.yml * rename release-bin iPA filename * update appicon * Update dev-Info.plist * Add iOS background play support https://github.com/KRTirtho/spotube/issues/1061 * background modes edit --- ios/Runner/Info.plist | 118 +++++++++++++++++++++-------------------- ios/dev-Info.plist | 4 ++ ios/nightly-Info.plist | 118 +++++++++++++++++++++-------------------- ios/stable-Info.plist | 118 +++++++++++++++++++++-------------------- pubspec.lock | 68 +++++++++--------------- 5 files changed, 213 insertions(+), 213 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 5ba9991f..e1db8f01 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -1,66 +1,70 @@ + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Spotube + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + spotube + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSAppTransportSecurity - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Spotube - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - spotube - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS + NSAllowsArbitraryLoads - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance + NSAllowsArbitraryLoadsForMedia - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSAllowsArbitraryLoadsForMedia - - - CADisableMinimumFrameDurationOnPhone - - UIStatusBarHidden - - NSPhotoLibraryUsageDescription - This app require access to the photo library - NSCameraUsageDescription - This app require access to the device camera - NSMicrophoneUsageDescription - This app does not require access to the device microphone - UIApplicationSupportsIndirectInputEvents + + NSCameraUsageDescription + This app require access to the device camera + NSMicrophoneUsageDescription + This app does not require access to the device microphone + NSPhotoLibraryUsageDescription + This app require access to the photo library + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + audio + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance diff --git a/ios/dev-Info.plist b/ios/dev-Info.plist index 022d5419..3581787b 100644 --- a/ios/dev-Info.plist +++ b/ios/dev-Info.plist @@ -41,6 +41,10 @@ This app require access to the photo library UIApplicationSupportsIndirectInputEvents + UIBackgroundModes + + audio + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile diff --git a/ios/nightly-Info.plist b/ios/nightly-Info.plist index 5ba9991f..e1db8f01 100644 --- a/ios/nightly-Info.plist +++ b/ios/nightly-Info.plist @@ -1,66 +1,70 @@ + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Spotube + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + spotube + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSAppTransportSecurity - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Spotube - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - spotube - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS + NSAllowsArbitraryLoads - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance + NSAllowsArbitraryLoadsForMedia - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSAllowsArbitraryLoadsForMedia - - - CADisableMinimumFrameDurationOnPhone - - UIStatusBarHidden - - NSPhotoLibraryUsageDescription - This app require access to the photo library - NSCameraUsageDescription - This app require access to the device camera - NSMicrophoneUsageDescription - This app does not require access to the device microphone - UIApplicationSupportsIndirectInputEvents + + NSCameraUsageDescription + This app require access to the device camera + NSMicrophoneUsageDescription + This app does not require access to the device microphone + NSPhotoLibraryUsageDescription + This app require access to the photo library + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + audio + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance diff --git a/ios/stable-Info.plist b/ios/stable-Info.plist index 5ba9991f..e1db8f01 100644 --- a/ios/stable-Info.plist +++ b/ios/stable-Info.plist @@ -1,66 +1,70 @@ + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Spotube + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + spotube + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSAppTransportSecurity - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Spotube - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - spotube - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS + NSAllowsArbitraryLoads - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance + NSAllowsArbitraryLoadsForMedia - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSAllowsArbitraryLoadsForMedia - - - CADisableMinimumFrameDurationOnPhone - - UIStatusBarHidden - - NSPhotoLibraryUsageDescription - This app require access to the photo library - NSCameraUsageDescription - This app require access to the device camera - NSMicrophoneUsageDescription - This app does not require access to the device microphone - UIApplicationSupportsIndirectInputEvents + + NSCameraUsageDescription + This app require access to the device camera + NSMicrophoneUsageDescription + This app does not require access to the device microphone + NSPhotoLibraryUsageDescription + This app require access to the photo library + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + audio + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance diff --git a/pubspec.lock b/pubspec.lock index b9268b56..c7ac5085 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -543,10 +543,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "6.1.4" file_picker: dependency: "direct main" description: @@ -1263,30 +1263,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.2" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" - url: "https://pub.dev" - source: hosted - version: "10.0.0" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 - url: "https://pub.dev" - source: hosted - version: "2.0.1" lints: dependency: transitive description: @@ -1331,18 +1307,18 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.5.0" media_kit: dependency: "direct main" description: @@ -1411,10 +1387,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.10.0" metadata_god: dependency: "direct main" description: @@ -1499,10 +1475,10 @@ packages: dependency: "direct main" description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.8.3" path_drawing: dependency: transitive description: @@ -1628,10 +1604,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: @@ -1668,10 +1644,10 @@ packages: dependency: transitive description: name: process - sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "4.2.4" provider: dependency: transitive description: @@ -2250,10 +2226,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "11.10.0" watcher: dependency: transitive description: @@ -2262,6 +2238,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -2274,10 +2258,10 @@ packages: dependency: transitive description: name: webdriver - sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.2" wikipedia_api: dependency: "direct main" description: From 87e203b8b4135985814f06c588eb50b242fa03ac Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 24 Feb 2024 21:50:10 +0600 Subject: [PATCH 23/59] chore: Minor typographical splash screen correction (English translation) #1256 --- .../drawable-hdpi-v31/android12branding.png | Bin 11057 -> 10655 bytes .../src/main/res/drawable-hdpi/branding.png | Bin 11057 -> 10655 bytes .../drawable-mdpi-v31/android12branding.png | Bin 4042 -> 3954 bytes .../src/main/res/drawable-mdpi/branding.png | Bin 4042 -> 3954 bytes .../android12branding.png | Bin 11057 -> 10655 bytes .../android12branding.png | Bin 4042 -> 3954 bytes .../android12branding.png | Bin 12793 -> 12389 bytes .../android12branding.png | Bin 33287 -> 31989 bytes .../android12branding.png | Bin 20728 -> 20612 bytes .../drawable-xhdpi-v31/android12branding.png | Bin 12793 -> 12389 bytes .../src/main/res/drawable-xhdpi/branding.png | Bin 12793 -> 12389 bytes .../drawable-xxhdpi-v31/android12branding.png | Bin 33287 -> 31989 bytes .../src/main/res/drawable-xxhdpi/branding.png | Bin 33287 -> 31989 bytes .../android12branding.png | Bin 20728 -> 20612 bytes .../main/res/drawable-xxxhdpi/branding.png | Bin 20728 -> 20612 bytes .../app/src/main/res/values-night/styles.xml | 4 + assets/branding.png | Bin 27368 -> 26973 bytes .../BrandingImage.imageset/BrandingImage.png | Bin 4042 -> 3954 bytes .../BrandingImage@2x.png | Bin 12793 -> 12389 bytes .../BrandingImage@3x.png | Bin 33287 -> 31989 bytes ios/Runner/Info.plist | 134 +++++++++--------- web/index.html | 78 +++++++++- web/splash/img/branding-1x.png | Bin 4042 -> 3954 bytes web/splash/img/branding-2x.png | Bin 12793 -> 12389 bytes web/splash/img/branding-3x.png | Bin 33287 -> 31989 bytes web/splash/img/branding-4x.png | Bin 20728 -> 20612 bytes web/splash/img/branding-dark-1x.png | Bin 4042 -> 3954 bytes web/splash/img/branding-dark-2x.png | Bin 12793 -> 12389 bytes web/splash/img/branding-dark-3x.png | Bin 33287 -> 31989 bytes web/splash/img/branding-dark-4x.png | Bin 20728 -> 20612 bytes 30 files changed, 144 insertions(+), 72 deletions(-) diff --git a/android/app/src/main/res/drawable-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-hdpi-v31/android12branding.png index 9e62c813076506454218bc984cc90033539443d4..fff3f1487b79953c1791418afde72094233927b5 100644 GIT binary patch literal 10655 zcmc(_RZyH=)U6vd5H!Kv-5dAd?g1Kiceen+-Q9z`I|K+0jk~)9C&8Wle*f*Rv-j0G zr!TswYM^?pcg-=!c;<>wR+K{dg#YQohYu(+(&DNgK0twhpGy$nfp;xQ7|IVH=*(rr zMZS4Lo#%Y?T=+&Xe0gq9x7Gmr&D<;;0h6{6hQ2T=P#RA(K}AGFS`qH5$;64=n!l4p%Ix0uHV#oh9oiBFou+{xqPkt;haGP+jhC-uPEKN{k z!-SU3VWk=$7dLe}k;Q#kfZ#tiH+QYx?9I!^XHLY}}o%6{06Elqh6vI!bX{&mVEN+4;e#J_-3g!HN+! z-2PZhXbBO}4~+pCj;FIF#ov0Fd5Vhm`TN6M`S|!O)oM3e`(n07FA@JxlV)fmzz@A#s8C-65*=2Fr@j1S|Jfem|%+q%x7ZCBpd)*HpDPi@|z{k&} zp|f4^rhX01;rMNf@2W!tLE^|>s@rz~SrmR-->)Y`d76$23JaygMusXyVREd`>PNJwLA|@?c3GC*c;~I?k-50iKQRYqe^yUy4W?qWUkIgEXhQ` zlqjD-V%&&8<;HGa*~rl}NL& zJ7sF#55h%9M;F(0foxI@PKhrr zE?%IzKbk3|o_j+OXVF`(nSDqQZ-In&fKVI*E#-&q5^3fB+k4>I)U*~&n%hg^Z7DG2 z4Pr=ib@_NS0|A}%FET}QwOtObZh~Z&14?)Wh%mjS(0c_iJCRK?bro|7H8!J#cL`s2R->} z{;PC9_?96{^_AVr!v{ost~>z?Cz0nCReGK74aIJT>AS(|h+6XU(X7hCCPT=V+*{w- zH?swfu=OdqnVBzc-OpEFZ7*6{?AEYR{;WS<{|V{6n){%kkWNLe@u7RG(PAns)wIp) z`taUS^jpErZXc@>qXv~JY=_Dv8Xm|LDR_K&FhkC68tYkrmevygmpKw1Y$XR{9_XqL zcwNlQ%p}3Uz)0z6*j)FzAJdhhFpl0cjat~)$X)N-3uJ1uMYq)Rk-50J<%CCdVZ@O2 zT5EkFCf-EqU1>C*z>kXZ|MGHBm!0+p5f$}~mYw}t3~Vt)HsQ4pX!f-#v`{Y9A`=?c zi5ixTa8nec!DKl0ajDio7~bu4u0SGcbh#Q*W@2UHH9I$_c5phv-w3P&2B@VxhAMA1 zVAoHAqkk07yU!FzD2R!PX%Y#22jj~pfYl&FD@=V1_c9umfDw-lXKbYq{1+@?7ppAt695APnnO{h^NzH zn{j%2YGWN4Y$7c^g0PQAhV<+(nn=~`b9>?@Le<4|l4e>UA4<0fE{;#&x;b09_F!B{ zcA5^Wu=WxV5J>IQqAy{)ou4-RrLFsXcW(9l#77SDd5-} zaRHf&QFLdIO%srcC0u#xLt;S?MvI7v@ns}0fh+5bxl0s^Nxt?gZEd{|+okC?pev~O zd{c8OIHSZ3wFBoj&p>qBK_l1t%@w0QIq1OjUnn#TjDaq2N`<`DqlFZ;e(Gu9gS76shWNsluU*csloH++ zDR1pR2KA_XA7AVlczBj!Vg-99)W6Rp$G3NOdZ2f$sHmuf6**d1SV#eVWXB}Ei;SFH6qlorEj~Ir8vgHW7(!Yaotin>?4PIEVA$R4_vg!=-oNn1E1^+_ zpE{_uuCCOtmMPHmf(;BK`ku&(dTQmvoNblgsq3PTJUr68Z%;UlZci4tFE+;1n)Zfb z2sZTn9uMS}ah?WLe1d0$x4XrCjTM^H67$8vm_y?yf;1ma)s&T$)xq>>m~Ji#va3$&GPvkzm9xthIL9T%Rn?3ku^(S)qqw4+FCl&96KjRcrvn`+ zqB$DBJK>zv=xl%gfVv!sY!JbxDVkEfzzJ|~3HiHV&}2D-SvAR|QZN7_#4+>uMq@u_ zs>2rdaRLEP(fEXX21}I2g}`flwpdOR9u^iscsm|GFd-NA09NlCI_R}XCh7ZdG#&=c z*di2-9&AUE+uO_al&*>F$TdwWe8YKj|C1-3zFnOcB$;lf*=7kf4GvEE5xp`LI7ou@ zhjTfCJ}quB_?#_c*SiIutH#8_P*bee+ngG}VOe0v3`uU?3H0Z}nsnD+nMaH-Gm*&j zc|svYIz4{A%%A)3?EC5Hkgnw9oE*mnsr{sqayK`v|l| z_sd_`lhF8IW8>o9)jH4x1O;s%;%5T0ieKBA>Z+lVVR2^cyidFjAXpU^SOYT~IgAO_ zjxIv}F`#Fi&B#CrbBf5qy4=*e>FKXLT1tV+w##)!FQZ8`7+ZeN=jGB_C~{or|GKsf zinRakkxjAL&lC(QAJZ_Q*W)?v8=&$AN<0uC4IEGrA~lFw4If|2b9HxjzpJGxkxQC5 zw$Um0U3T3cZ50NR()n+d2DEtZ)>)JFBhHXSy;Rmpks1?YV~Wg?>CZ+eiBO4nomRIx z`%1}Q4Gj&shf=((Akg?(4n|@X2OPeZ1S1#ye8`;r#0+}^y_iO`TyG*Z8H7+&O}1z@ zS)pEO+u?dl9-fqzrum0TF7+k!?>AdD*-dOY>?`n%Wy~E?lxfIph?dr;ux3?})L6eK za^3X0@0qS=%PQ%TAmf2>s|I&+k=DZ~wFk5^sMCllaUZtLxvzd?B#f4?fWJI8KuwP8 zzLrFjAv80?3TvTv2RFxaTF+Y&cj)knE&|>sinzBH=%xpM-W4ZB>C?&@Aco(pUX8Su@&i@G&u-N&lB8b?_M;TO{!e;w}~@=DxX% zFM^X!cjUIPAy!L|<4&J{L!IZST8%F6fiBO)MVJC%;wiP4^o?}I%3EWY!B|%~`AJ>9-xQ`zh95k>4_U7d9iW23=?9^@Rt;r}1kH4eIh5Ge9V`4v}5OBS~ z8jVenG_!wdxAyufc>J-KC89DTA|gTo$Rs|}ROQvO%M?Zre|IqIrY|om?ABTo9`?Qg z#`+jBPYdSXM>OJJQBi8zZlF|+0IkM5B&f;^HI*MN#-G9$kno`7`V?OJTQ;Yr97xw+ z5Hfi8T@Ruimy}^oR>Yq$Jgu!ygb&8jG%?r;q5~Xv6JD4JQ+I?NM^uqNll(XXf%KEb zw6!yJ;~5{L=6K~!%iKOqYsf>*1jo#A;C!dAfdMlx zyS=?_^v$nUze`^qkY`D-y0?LWfw!^MVkJ!3+*%odLL%iqK`1gcjCI}f*o&*yL}6Ce zzd_JvfieXJ1%AhXR^zJQ0`FqVTN!`-i+xyUQeEwt`}&G*!2Y2nSigOAG@@@fz+rcE zPS=MMoxV>uUZ~HVTKCF-tMR$Hxx<2kgI|z`bXGOSO}?^=N^VnHC1hk|FrjLDygr@Q z3U2va3gYvWdYN;OrNT1X0k+M-^cz8Mr{d7Ep~^>Vdxz*b#IGeX2TO$w;ccD}G5 zn3Wi35FD%@i&J;7`mgudV1f!^cKrPOQucOtkLuelHaxaA5Xt8HBOkxepbL7J+UIvA zC1EJ=K4__=UKOctc(}G^*Xp*5z7H4iY6gb?wxBxhY4QV+^{C-kqA@QWg12X&u1EkYshIvP5@`*4*Z+0R zp~v?r$76H!cQ*_AeU1=~X?cA41-k+dkf~iAJkM3S&xc9;bzd8&gbKrOs7bO(9T2WI zzjj}Nppx~eKwQ)n+BkBnK=T9V#E;UXRMZ0wztY-6752c35j7wS!J;7Gd|n-?$NQFk zVzqimXP`34lkwq34}#00@9&=LG1hlR5k~>=u)l=1+wL#bIRV_~HnUtH+>^#;NT0wMOU_+qD2 z`|Yb|Dd20VFwI`8;0z45_@@M}^ohd&{4GiV?_D?8b1BszD%y?jdvF_KR(e6OR z0^o`7F;}3cdRI%l+-`E$drF zS^%q0Z&Jc%8ylN7^wSi~HU9XF46Vt@$qQbw104oN)A1z9%r@L&5Ggkml|)){@;4kD z-2L(fPyT3LPX@Xk-@9moK=<&OrYc{fsm@m%E`(7JXu~| zZZfDhmWTjkWix=&1J6l)y!_*pc{aa?J^MgqCT0uJ!E5sK^TVtctIDOaf2Jc4)GpL8 z0E99fim?D&Lhs|3bo-5t4MDFf(^mlY5J$zuEqVF)RF+i3P`;O|m1>jLzK5a^ycE~v z3i{Lp#+zje`naC}G;y?PZ0M;p&YOf73wYv%&>hA&l)@e6RHU#1?*inSz^gl?2fYbp*_o< zy1a6LeBq+@G$2*c0lZWaPIoz@LEW3@FJ~%C@dt!iP8cl=Q!CjMXAcsjbMHcCnr!OO z-F*{NSXi6Q)7lRA>&);e zc3NUQyhj@VBaAh0Ozl^O9vVeaO|B21FZk8XKhgIawQc-}$MgA-kNDqT#)vcC?nBuu z)wt0|2cDmwE1+)Tz@t<4f{>Asb+33@O5y(J|KqD=c9@M}(*VN%jJbVz*;5*Rn*0$f zNQsn>?@5oRuwK4y9}y6h-M+rcoZDW}Apw=`-8@O`nATR0NKsfzcu{VIbx7YTHY6(0 zq!z(loM<(PhJk^B(CXK>hNrXT`hF4ly+96~o#KzEv*}rrM3T$E zctA+B*RG?Bi;JSPv?tLfTK(DSTC2mu%j0!VnEzl7zsJ+Q2XP9}#{@r&B*MWl%#Dn- z)Ys?Bw5F&>@@)V#*0tyr-HQ6Ro!lZ$s=B+odl!hE{gR+U3;>_4d^|jDbb*bDiHTp> zL7@5BFg`xM)y!qiN`QEK?Y24X!AJB>{e5E$VFK4}bMn+iY;YECur>$y^#P`hGCN^t zHl1E9ff`$}s@&DteydwSiQNGl|5iiwKNW~fAr{rRiuWHGkA(WaNy+~+RF6~tq?JUi zAPaDj8SdH3Tt2sxr!JrS$PU?%K9?!MQU*--crwG@}2gE4z`mU z>g#3r9Jjx!sw_##*>3)72cpT6gC&1XVPT;V)A=ZWH2_W<8XMDkk7c*i68#BDDJb@0 zySjWw3o5mGdxd5$2k9Y;$EWbet@az*@J^>{!RidE7h63&UvLa?avtn_>h+G0P;&-q zg;}Zp{`;3f{`mUx^2^xRxCPtHHxjz?GbsD_sH5!BmETTq6^`bU@;Xp@`nNYXx;4!# zm?J{YQZ;ohyF#mJ%z7OjfT@57FjBK;dXD+-#YGLj(=IHcMokb?3z9F1jY$|P(b<3Q zs5~{#You5%&HY=o_Cn4JDk|#mz7u+TN!{|%rIP#McRuM#a7g?PUr!Z=1oB2CmO>WS zIkWE&&f+qMj?S7h)};@f6UPjJu); zT&T~TKYa{C%q+~!C3nmh)cFp8ArAw2eHw|EEU0}B#YVId*Dv~iUH zccU@!nwy>VE-fm8?IVctjbKgX>iKEMztQd6>EY=3H~it@LDvJ}%;7`!(lk6f01xnL zQw?mB9O@|ZWBVso4gqI93W|SYO;#kQUX(!i@pFMaK4o81=+f5*i%&8$?T)qd>MU-E>q%Y2WBP-gCXQN z4QRqIjz9MefEGq$ZPnp^j*pFp=N0nOwk((2MojfN@Wp;jM3OO3E#HAF8S!FmUnR>h>iV z2gW=~THa61slq7q=a>=McxEnomM1^cwniF=wj46&~2iu8k~$yT5VUZ$oue>JBo^moDi}| zu_9W|V?*v*Kiz5apbEb|m`wEsePl^=z#dFE_>N(ugtsP)umnANd3suTH}NE3yV^w8 z07P-JE3V$V!{3k%IEJ)U*(Ct?4+BjXF)u(LSZuIj4xjH24$}o0f9{izTc0u#6!q+0 zZ>I9^O_$tlGTz2{?orQ)(SulvR{`|u6&xY&Ujp+|IWGyVH4(;To76S6criY|5TzzG zxF^I)Aosx({XIH5a)N?_!Wcnom64YpCy}=P*B<6B97N1IuQH-$d2Df znsUHK?^zMi^l~C(bTJCM?PVYFyuLkOHtuY#03N~%^Uu!CKjC2i*gbb?Lf4WTf8)>0 zfB$nHl>qlvqmoVb%w4RXkdrQaX%}a9Ol0cwn=x>>shczh1{5RtDut3;1hPsS^gN=E ze-^EKP7(hL6ou<9O|5!tM82B{&z09jdCtc^xPTY+!3OELU{+k@ z&Y1nAB?b1aD;8%m7}QkCRC`p{Is@O^1?BYs6VsWg{sKO_q36DQBxVZ|Kz@%rZYMEg z?B@yU;9++La$d+GE229`cN{<<{g~6{ienpI9PqFgmfe}?+8Sum@ERBxIJCQEm+9N&AwkK4Xj``I4rT-T>kOD+Z)V6l+=23|O=5Fk zXEz12GlA<;k+9kedB>=9+V!4BkyD$?pV%8+VSU$HvKZ49$*A*!Fm*!+1mXqV1$Ykr zl9P=FvoX|ydygg=otgKVaqGXSRA|E>lG}p4DzUUStk`4btFc+NR(HI+@-SRKd_}uQ zu7n=$KA#9Xb&@gVqCC2i(qpn>H#Ej3j-tDtAn4wSQKCfpd3zaPC%}#E?vcDq>q69IZsn#=`{xzq55tooS z_#!7W5ML6435?fTW)eyCaLWz|lb%h!5u67nn%H zB*q_$8>!SyD(5fNWZjhq*+t|E^Jd*gmDZVzVLOM4#zj{*yS^UVh*5;v zaAg;a7t@NU_My%cAMa9@8{MAG?PUH~yFeVV!BM(RmzEI(y27yaX^N=2qQh5&SIZaz z2gz-4ZKSiA*k{PXMDeVwtYi!koDVRk3vqDVNVv`^ERYR@{tE+I;l2Knvx}@>(ipG# zD+X{@oft$T`-KFYf$jVKnUN*l0^oa>?x&0A1ZL3dZU-J~;%2|_2FinZqb?A2zl%-7 zdD%AR1MZRmEZnvx86m>)U?)4WFYL$3TT?W)_0?{2+riVb&3=(_!GeX?iqyDfUv%K& z?RLq40^p~QNf~STWFPQ7$k~b_vO8mns1g`#NEJ7!GoOV`0N!^c)v*|C4*wKEjsx=6 z22KuFzVH$-l6XHR9+!a(&J;=&*BH3Fy58U%CL=Kz)$b37aEX7e_ScO|J_R%$PH%P0 zVlsOaOL0SYd#l>Dxxw;Y3!YTcbRX{!-c?DGW&5Sm9^r z2rKd?R+jj|t6P-{P)N4ejP>PzPmY(fc(B9Vb`6E@#>{{f^QO|R*46BXHTzOIXjFXEF0Z1|V@ zTAlhSUZr>K7TaT*$NRGt3N4an*M@fG22T?`&LCs}qcJl|7_EK?wq?u~5Dn!(D&}Z= zu#6Oq2gT3z~-!sDo@v(fHi(Qwf_r;{&->U0^z@h_yF7isp8*Z*iWA}VTZ=}|2ivpxQ^k&%%Z zFd$2#{AZ|{qBMl@8Py%=1=-h!ejgMN#JRlX9gsBBIb)+j^lczsDxCmDIbW*Q@kn^7 z{dFaa-SUX~i{D7y6`#kERFLX>M;#OAd_G^y#7-dcw-uIMDc#`r_>Wne^2SV|tub+N z2H$~#va`%Xb444vy#X5T6z@OF$PbW9sz`wpUm``g$m_pMp2?~rM+#PNkRXde{S6;NR zZg1nD*TQyt4s1DonMHHFji6)F8}r{^gF4PWR;kgw>50cA-M3< z=0|3_{fR3|@m{v83a|g{4#M7mf#0LqHJi!MSw1KzDCo2raN(YQ_wP=ISfX5jVCjHw z>h$k^GA!zT&dJHnCJYL~D$9H%n=ef>r%Q6F0^9}4G}DAko!{$|KOkwhC8eb_f(c_o za6g+aR89Q|G7RYKx%k-Yo12SYwc}o`^KzamiI0z{QNpI*XqANhULH>JzF$R!0u^vM}Xz^tuP%;biG1amiCrf&X1PAT-B{F!6@v&Qrw z-V*Ve+9{e`2XJ#J&#D-^@<~bWlA7H{o}LeRp%AtvyX1QKgSk^Pjze>U?(dHps=5HR z&*cYJ$n=HQsyj=Os~GkCKBBAZ)sroIwy4nFZYY+h6HT-PXD%LVT-2NyfFFH?RKVc* z3zarVO;vT=+X**yF%D?OK1ljm z9`wLigLsJsH&BZO!{*B=C`{b$j|>im96qEonJ?GIM!rH46~0akmgf0AOk~if* zko8O&8ma!u;bG8-8E}8+N&xk5rR3~%ug0rr4%uf=Nc$}X+1J%))2A%8nsgzhcG=Gu zr-m1r_nv{nQCA|B+yy8z(Fj)^9+hy}7Kpfc z{c8ao8M_3m{&SkL8r9lnSErPVKT1N7sV}LRzB5D^Rb>F;u~qNNc;bx-tMK3TLS%p% j{r_;W@P7j`f8JH|1rOLNyo!N~mmg##6vb;q4FmrdW&zeJ literal 11057 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 diff --git a/android/app/src/main/res/drawable-hdpi/branding.png b/android/app/src/main/res/drawable-hdpi/branding.png index 9e62c813076506454218bc984cc90033539443d4..fff3f1487b79953c1791418afde72094233927b5 100644 GIT binary patch literal 10655 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 literal 11057 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 diff --git a/android/app/src/main/res/drawable-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-mdpi-v31/android12branding.png index 80579983440f33182388472285e5e7106ca027e3..5a197da3c16283569e3797546269db62ec6a645e 100644 GIT binary patch literal 3954 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 delta 3819 zcmVbNCLq?yK-;9qOUh$f1r!TN zMQ~KW7pbG2;($OvJ4HYXIyf4`OO3514v7o4+U;(EUC__Lg;0Oe*L<~>OkO<`Q z^?$-{*j)BL_RIGq=Qp$2*V(gY@7*dz;!2B85tS zy)|tb*re)({o|3GjAVgbJEmz6e{zSxWc$Qvf?@tuAUX$;Hb_70Ah#DX>EbBxSYvFO zH*emjbLY}$Zpm_G|*$*MyDCAc`-jAw{$iCf}zM0r2qUSI(0HVa)+}!%*k-99h zI9j%dYdokPqv)xInnbGr%DU-M3}RCqR9~_r)95-3nQI(udlL?`%4G;l6C>mflarIv6O;1@CTC|$Rh5#y z!bu0(AJUxcJ2{La%a<>wqgB^H+cQmke>_Nkl(HhbBbnN6!h{J4&ZA?R8ev(Iz468yTM-=B{!U9V zYaOyJUFvnZ{^Dk*+xZEfzcBp6CBqoN4#O}8u){En0qiggV?b0mjNkA73{k4xkBO%2 z-Me>Dc6Rn%(3cSmeX#)DF@f=>n6|^V>W%2NpMnsWb=eVehry2ge*#et%kL;pA$mMB zGc%#2q@)(ca>xA|ylZAiD4FrtjdvgMGVq z@4k!D*j7V)7w@8AT!_>WrtbC=;Viz+ojbQhR2v~%8ijHL==+F9h2r)Zs9TC?sp!YA z_AANA$auZ9wDcP{e_f*eG=yEjw6UoW$tBr&nJ6wU&ZD?}`}Pk|Tvk?Ag!BYTWB(pU zlydCYvDqkFtSW%q;dbrXbwaWn^=oB&6{Y=isDDCf+Y4>~jbuFPUP0Y-wGHOuRb&Tb z##L5U-kp+?@|M$JAb*SQr~@4vq2qca&qAiPQvO$U%ywm7f5A4Sqjmw>?hs?xgZ{3C z&VA@V6JuPdh>t;eA8S9-R>&SgUAC^yI*z7B*d0ds57}InVMqL0Bp(oYx}Clwk~b(a zix4fg>H%{Qa)pit6F|tUK^Tkrd5E77<$HY>mLaDQ(oi=IWm8}iJ!X)Fvh-7@PCcEL zmNuT`-JHd3f2`o22scvx^y$+b+O%m?W*xI`JD4Ea?nc;wZjK`EfS7JSYG%<*+=P6C zepF{iT^6$6VtaIO8;7Z#u};_=2HTi!jlYS~9+xcSELjl!T(l?tf&A^7Wy#Za50feV z6Dv`4k58=Gk!~yN5G9DR{gj2X%x>ATWnx7|MYYSge`I}Kd$f^Dv^kVeBeqK2?8$>dFz!9Fpr zuCAV9e^)1+B_Scf+MnvY#{%tJJ|ZCcvEC#a2nT|oLvqTi;Q90CjsBT6Rln9iN>XMX{^fkJ!M7POgtB{cw5a^{GlTiP<@4|(PgF)#3#~$S#f;}&J+14J$ z(WHpTWo3Hfide!NqHJYl<#Wl&$&X^^RCzh-i1yWxuNHavJdO58JLn$={i`9e9-Q~EiN;yZ+F4vOzXk}jW55H@W`x=VoFQy&jQ$5iNY zI^Up2ynE8NM*Jay-7`gX;N0ej(>R(MA$J&T*dN)H*H6%tloWcY#bdfUyE3{2?9gWe zS?H%r%W8j)S9m-+tyV@YN3xBJjs_Poe=r|g+R1w8H{PS1Zo4hD$XK_v<2afUQE@L> zAc+5Vlhf1FSDrX=VumQ*5J{U%5x@C7gE8FeyKn`NCuWorvkn8!AQZq^3PhgP*uRXV zK>AhG7g~hhZ24lRFO~ zk-#s10Ct!d$M5&Q9TyjOn@E2_?}4K)mJJv%V5^k*50EcAw0_Y*d1F7l6!8e!-AVFD zm#Lq-(7nxu${{}h;`E098`QV|Q@J8q1DTzO{~+>DAm4r9z=4N!`h?B>5iO?AqM-N( z#4U7ohZ}a7%ak2J$vVE)m7JwluU=Q~*|Ud#UR@>MBsvt~O(gGh>jyGJgr53|Z0X-8 z^gbz)Pm1@-T{7uqJIK;^Ze9}U7RuX1Ya{t8Dt4I5l+S^Zb$jP>f^-%M=HzBf&P|5h zdj1N6nEXYECaC3>Poj)g($g`dM|}}~StC2lWy(*0uDmM@cxUnv!n5wC~+ku>I~&q+o}MeXc)# z{CKWN%cYmm*TT}%)8m~k2zUYF=b-0GFS4-rT|_;P9zE)2=L^0IpHz<;*kNKEn$)SO zsdaDtFE2087vH3``~04jx-XQSJb6-8o>0s0kS?oY!%L4R)Bz08GC66L!qwS$1-o&semzR?t+VUy#yp{p~Z3g|lRB&TWDT-uKG)vB$?)BRqpto8}JyV#A3z}z`N@vdFF z9_ZJv-+yw4{yQQ%YqcBY@hGdcv5VS#i!#4b7ANymui7m3Llw#zJU`g#8Z;wmV>pZ8ly3}JN>b97O1%u z(K}9kz^-nvt3<80^uGi}(-rvy$k)h9bzFk)AfKl6@s9GSbp3YOx^-(ixBX<Ha*LB3#`!b<1?a!>tH|GvH2wGMB4wnrs2i7dq}Yf)u@kD1 zO@G|9Y17D|Lx-+I`7Gq~G+nMjxJ&3f1KHFqTehf^hMeU~w7o|5<#lNQkpy8IO{z~f zZ{GZj)S=oB8-JrK7x`P=`muqW}9lgxr8%s*PzUP>h|qUd%%}vA@J&AUA&9x^=IN966F6b8QJb$#FKK{ARS< zEo81S7^)WN=wnw08~@Z;{VK4#Q1sc##+Dh7nU3To%Up66C*9;Mmi)9vnCf{yMSn9P zaTsivrPv@#knGh6HT3qAH!1P*%P%J(O(%wFLVv)Mdeo><^vp-x>eZ_g$BrF)9%*@t zdhbTq8Yth$WhrF>{EvFSN4XCI(9Ku~^*Kye(+1wD!Qq7Zw(Nq^X{ZumB=Yq3=1G`psU2!>4oGMN5Mnl!0ji1deK`%;=8a8?}l&(bU40i%MMJijR^I5*%$OZg+3M_`8fF% z;tV+s5#J$CmKAlhWORIQ7x*tiPtlHETQp4QRLkk4ovx16=q`EFxg5l*kZfk@e+uee zgu_t!=cqc4I9;_nj9g{C+J6OJL-KA9ZE0+Y)_(|6-{i@Yudvzv^h|VWFbCmANRKdb z@XtU0{C$Y_&73)Nr=4tmetz9L-YP>n(0)d4Ztf$<9);ZRAoG@JbIJN$lpXM3&;Ouj zi?tqg3(?mkWZ$Blq^ZBoZX7y$(BxXQxdl3BBbx-7DVp-OD9?r7MSuFObMb_k+8`=Z zZ4h?Nhpq>ar5`g#sBNv=#A;__^K!c&Sq{4n2$}xUMz{Th=1Fo~7M--8w&5K1oTY3f zbl1XnRwF%Dv$;Y>Sbm4W;9m70W9v*bk#v(ur`Ka&wlb*uJ%s@6)apg~`xLyEJ7Fh} z@_7`z*cI%&DBEe5_gb=_Y_^YEyRbS7!8czrF$0b$+Yt@06t4)U4bk8*t7grb^|weH z!9+h;kqyKVhL(Oq^YZfAV%|K9CE9o4v?1aSLq8@)+6E?efP>IdZztl2^dE7DVVGEg hlOGQ~k-!BO{twR6(XZ&Wj{g7v002ovPDHLkV1hiSgZ=;j diff --git a/android/app/src/main/res/drawable-mdpi/branding.png b/android/app/src/main/res/drawable-mdpi/branding.png index 80579983440f33182388472285e5e7106ca027e3..5a197da3c16283569e3797546269db62ec6a645e 100644 GIT binary patch literal 3954 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 delta 3819 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 diff --git a/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png index 9e62c813076506454218bc984cc90033539443d4..fff3f1487b79953c1791418afde72094233927b5 100644 GIT binary patch literal 10655 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 literal 11057 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 diff --git a/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png index 80579983440f33182388472285e5e7106ca027e3..5a197da3c16283569e3797546269db62ec6a645e 100644 GIT binary patch literal 3954 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 delta 3819 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 diff --git a/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png index 0bcf138d3e17cace5a37b4adb6a97afa76ae805e..efc7e6c8c995fb3d26927d09c6b0448b0ff1c42a 100644 GIT binary patch delta 11605 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 N002ovPDHLkV1jRz_$UAX diff --git a/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png index c7d0177681e63abe4a1d58e1b5cbf7325dbadfa0..593877e01266445699239227caa666a8ef43118d 100644 GIT binary patch delta 20410 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 delta 21718 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 diff --git a/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png index 0bcf138d3e17cace5a37b4adb6a97afa76ae805e..efc7e6c8c995fb3d26927d09c6b0448b0ff1c42a 100644 GIT binary patch delta 11605 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 N002ovPDHLkV1jRz_$UAX diff --git a/android/app/src/main/res/drawable-xhdpi/branding.png b/android/app/src/main/res/drawable-xhdpi/branding.png index 0bcf138d3e17cace5a37b4adb6a97afa76ae805e..efc7e6c8c995fb3d26927d09c6b0448b0ff1c42a 100644 GIT binary patch delta 11605 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 N002ovPDHLkV1jRz_$UAX diff --git a/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png index c7d0177681e63abe4a1d58e1b5cbf7325dbadfa0..593877e01266445699239227caa666a8ef43118d 100644 GIT binary patch delta 20410 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 delta 21718 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
CK#VCD;@I1#{hXJxKOv?1C9y~- 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 delta 21718 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 diff --git a/android/app/src/main/res/drawable-xxxhdpi/branding.png b/android/app/src/main/res/drawable-xxxhdpi/branding.png index 5477b799402ee040a54891c591185621526ad5d0..9d233302d7f782b2651e8842317004812aa5044d 100644 GIT binary patch literal 20612 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 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml index 3db14bb5..5eb2eda1 100644 --- a/android/app/src/main/res/values-night/styles.xml +++ b/android/app/src/main/res/values-night/styles.xml @@ -5,6 +5,10 @@ @drawable/launch_background + false + false + false + shortEdges diff --git a/web/splash/img/branding-1x.png b/web/splash/img/branding-1x.png index 80579983440f33182388472285e5e7106ca027e3..5a197da3c16283569e3797546269db62ec6a645e 100644 GIT binary patch literal 3954 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 delta 3819 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 diff --git a/web/splash/img/branding-2x.png b/web/splash/img/branding-2x.png index 0bcf138d3e17cace5a37b4adb6a97afa76ae805e..efc7e6c8c995fb3d26927d09c6b0448b0ff1c42a 100644 GIT binary patch delta 11605 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 N002ovPDHLkV1jRz_$UAX diff --git a/web/splash/img/branding-3x.png b/web/splash/img/branding-3x.png index c7d0177681e63abe4a1d58e1b5cbf7325dbadfa0..593877e01266445699239227caa666a8ef43118d 100644 GIT binary patch delta 20410 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 delta 21718 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
CK#VCD;@I1#{hXJxKOv?1C9y~- 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 diff --git a/web/splash/img/branding-dark-1x.png b/web/splash/img/branding-dark-1x.png index 80579983440f33182388472285e5e7106ca027e3..5a197da3c16283569e3797546269db62ec6a645e 100644 GIT binary patch literal 3954 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 delta 3819 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 diff --git a/web/splash/img/branding-dark-2x.png b/web/splash/img/branding-dark-2x.png index 0bcf138d3e17cace5a37b4adb6a97afa76ae805e..efc7e6c8c995fb3d26927d09c6b0448b0ff1c42a 100644 GIT binary patch delta 11605 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 N002ovPDHLkV1jRz_$UAX diff --git a/web/splash/img/branding-dark-3x.png b/web/splash/img/branding-dark-3x.png index c7d0177681e63abe4a1d58e1b5cbf7325dbadfa0..593877e01266445699239227caa666a8ef43118d 100644 GIT binary patch delta 20410 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 delta 21718 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
CK#VCD;@I1#{hXJxKOv?1C9y~- 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 From 6f71e52ea8a5712d2c3527f2a524af9fbb718bef Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 24 Feb 2024 22:53:30 +0600 Subject: [PATCH 24/59] fix: no draggable scrollbar in playlist/album page #1158 --- .../inter_scrollbar/inter_scrollbar.dart | 2 - .../shared/tracks_view/track_view.dart | 23 ++++--- pubspec.lock | 68 ++++++++++++------- 3 files changed, 57 insertions(+), 36 deletions(-) diff --git a/lib/components/shared/inter_scrollbar/inter_scrollbar.dart b/lib/components/shared/inter_scrollbar/inter_scrollbar.dart index 11f75829..2b3ce319 100644 --- a/lib/components/shared/inter_scrollbar/inter_scrollbar.dart +++ b/lib/components/shared/inter_scrollbar/inter_scrollbar.dart @@ -15,8 +15,6 @@ class InterScrollbar extends HookWidget { @override Widget build(BuildContext context) { - final theme = Theme.of(context); - if (DesktopTools.platform.isDesktop) return child; return DraggableScrollbar.semicircle( diff --git a/lib/components/shared/tracks_view/track_view.dart b/lib/components/shared/tracks_view/track_view.dart index a1a2d48b..4103573c 100644 --- a/lib/components/shared/tracks_view/track_view.dart +++ b/lib/components/shared/tracks_view/track_view.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_desktop_tools/flutter_desktop_tools.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:sliver_tools/sliver_tools.dart'; +import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/tracks_view/sections/header/flexible_header.dart'; import 'package:spotube/components/shared/tracks_view/sections/body/track_view_body.dart'; @@ -13,6 +15,7 @@ class TrackView extends HookConsumerWidget { @override Widget build(BuildContext context, ref) { final props = InheritedTrackView.of(context); + final controller = useScrollController(); return Scaffold( appBar: DesktopTools.platform.isDesktop @@ -29,14 +32,18 @@ class TrackView extends HookConsumerWidget { extendBodyBehindAppBar: true, body: RefreshIndicator( onRefresh: props.pagination.onRefresh, - child: const CustomScrollView( - slivers: [ - TrackViewFlexHeader(), - SliverAnimatedSwitcher( - duration: Duration(milliseconds: 500), - child: TrackViewBodySection(), - ), - ], + child: InterScrollbar( + controller: controller, + child: CustomScrollView( + controller: controller, + slivers: const [ + TrackViewFlexHeader(), + SliverAnimatedSwitcher( + duration: Duration(milliseconds: 500), + child: TrackViewBodySection(), + ), + ], + ), ), ), ); diff --git a/pubspec.lock b/pubspec.lock index c7ac5085..b9268b56 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -543,10 +543,10 @@ packages: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" file_picker: dependency: "direct main" description: @@ -1263,6 +1263,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" lints: dependency: transitive description: @@ -1307,18 +1331,18 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" media_kit: dependency: "direct main" description: @@ -1387,10 +1411,10 @@ packages: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" metadata_god: dependency: "direct main" description: @@ -1475,10 +1499,10 @@ packages: dependency: "direct main" description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_drawing: dependency: transitive description: @@ -1604,10 +1628,10 @@ packages: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: @@ -1644,10 +1668,10 @@ packages: dependency: transitive description: name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "5.0.2" provider: dependency: transitive description: @@ -2226,10 +2250,10 @@ packages: dependency: transitive description: name: vm_service - sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 url: "https://pub.dev" source: hosted - version: "11.10.0" + version: "13.0.0" watcher: dependency: transitive description: @@ -2238,14 +2262,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - web: - dependency: transitive - description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 - url: "https://pub.dev" - source: hosted - version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -2258,10 +2274,10 @@ packages: dependency: transitive description: name: webdriver - sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" wikipedia_api: dependency: "direct main" description: From 9095a8c8f849e42daabb7efcc20085cfb863c974 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 11:13:23 +0600 Subject: [PATCH 25/59] feat: add songlink based track matching for youtube and open song link button songlink.com will provide accurate match verified by community for most spotify tracks improving overall match accuracy for Youtube audio source --- assets/logos/songlink-transparent.png | Bin 0 -> 73176 bytes assets/logos/songlink.png | Bin 0 -> 88538 bytes lib/collections/assets.gen.dart | 16 + lib/components/player/player.dart | 16 + .../shared/track_tile/track_options.dart | 17 + lib/l10n/app_en.arb | 3 +- lib/services/song_link/model.dart | 19 ++ lib/services/song_link/song_link.dart | 47 +++ lib/services/song_link/song_link.freezed.dart | 320 ++++++++++++++++++ lib/services/song_link/song_link.g.dart | 33 ++ .../sourced_track/sources/youtube.dart | 15 + lib/songlink.dart | 43 +++ pubspec.yaml | 1 + untranslated_messages.json | 54 ++- 14 files changed, 565 insertions(+), 19 deletions(-) create mode 100644 assets/logos/songlink-transparent.png create mode 100644 assets/logos/songlink.png create mode 100644 lib/services/song_link/model.dart create mode 100644 lib/services/song_link/song_link.dart create mode 100644 lib/services/song_link/song_link.freezed.dart create mode 100644 lib/services/song_link/song_link.g.dart create mode 100644 lib/songlink.dart diff --git a/assets/logos/songlink-transparent.png b/assets/logos/songlink-transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7064c92fcb567ca37c040d637b53cb038211d6 GIT binary patch literal 73176 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 literal 0 HcmV?d00001 diff --git a/assets/logos/songlink.png b/assets/logos/songlink.png new file mode 100644 index 0000000000000000000000000000000000000000..43d823a587e26534ae0f57d7a2c527ed8a1b3bfa GIT binary patch literal 88538 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�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 z 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 V$Zxm?H0uBW002ovPDHLkV1lE`BG>=` literal 0 HcmV?d00001 diff --git a/lib/collections/assets.gen.dart b/lib/collections/assets.gen.dart index 2587800e..8a2950fb 100644 --- a/lib/collections/assets.gen.dart +++ b/lib/collections/assets.gen.dart @@ -9,6 +9,21 @@ import 'package:flutter/widgets.dart'; +class $AssetsLogosGen { + const $AssetsLogosGen(); + + /// File path: assets/logos/songlink-transparent.png + AssetGenImage get songlinkTransparent => + const AssetGenImage('assets/logos/songlink-transparent.png'); + + /// File path: assets/logos/songlink.png + AssetGenImage get songlink => + const AssetGenImage('assets/logos/songlink.png'); + + /// List of all assets + List get values => [songlinkTransparent, songlink]; +} + class $AssetsTutorialGen { const $AssetsTutorialGen(); @@ -37,6 +52,7 @@ class Assets { static const AssetGenImage jiosaavn = AssetGenImage('assets/jiosaavn.png'); static const AssetGenImage likedTracks = AssetGenImage('assets/liked-tracks.jpg'); + static const $AssetsLogosGen logos = $AssetsLogosGen(); static const AssetGenImage placeholder = AssetGenImage('assets/placeholder.png'); static const AssetGenImage spotubeHeroBanner = diff --git a/lib/components/player/player.dart b/lib/components/player/player.dart index 298458b5..a43fcbca 100644 --- a/lib/components/player/player.dart +++ b/lib/components/player/player.dart @@ -25,6 +25,7 @@ import 'package:spotube/pages/lyrics/lyrics.dart'; import 'package:spotube/provider/authentication_provider.dart'; import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; +import 'package:url_launcher/url_launcher_string.dart'; class PlayerView extends HookConsumerWidget { final PanelController panelController; @@ -137,6 +138,21 @@ class PlayerView extends HookConsumerWidget { onPressed: panelController.close, ), actions: [ + IconButton( + icon: Assets.logos.songlink.image( + width: 20, + height: 20, + ), + tooltip: context.l10n.song_link, + onPressed: currentTrack == null + ? null + : () { + final url = + "https://song.link/s/${currentTrack.id}"; + + launchUrlString(url); + }, + ), IconButton( icon: const Icon(SpotubeIcons.info, size: 18), tooltip: context.l10n.details, diff --git a/lib/components/shared/track_tile/track_options.dart b/lib/components/shared/track_tile/track_options.dart index 419f61a4..a094259d 100644 --- a/lib/components/shared/track_tile/track_options.dart +++ b/lib/components/shared/track_tile/track_options.dart @@ -7,6 +7,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/assets.gen.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/library/user_local_tracks.dart'; import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart'; @@ -26,10 +27,12 @@ import 'package:spotube/provider/spotify_provider.dart'; import 'package:spotube/services/mutations/mutations.dart'; import 'package:spotube/services/queries/search.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; +import 'package:url_launcher/url_launcher_string.dart'; enum TrackOptionValue { album, share, + songlink, addToPlaylist, addToQueue, removeFromPlaylist, @@ -165,6 +168,7 @@ class TrackOptions extends HookConsumerWidget { final scaffoldMessenger = ScaffoldMessenger.of(context); final mediaQuery = MediaQuery.of(context); final router = GoRouter.of(context); + final ThemeData(:colorScheme) = Theme.of(context); final playlist = ref.watch(ProxyPlaylistNotifier.provider); final playback = ref.watch(ProxyPlaylistNotifier.notifier); @@ -276,6 +280,10 @@ class TrackOptions extends HookConsumerWidget { case TrackOptionValue.share: actionShare(context, track); break; + case TrackOptionValue.songlink: + final url = "https://song.link/s/${track.id}"; + await launchUrlString(url); + break; case TrackOptionValue.details: showDialog( context: context, @@ -418,6 +426,15 @@ class TrackOptions extends HookConsumerWidget { leading: const Icon(SpotubeIcons.share), title: Text(context.l10n.share), ), + PopSheetEntry( + value: TrackOptionValue.songlink, + leading: Assets.logos.songlinkTransparent.image( + width: 22, + height: 22, + color: colorScheme.onSurface.withOpacity(0.5), + ), + title: Text(context.l10n.song_link), + ), PopSheetEntry( value: TrackOptionValue.details, leading: const Icon(SpotubeIcons.info), diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index a3c93546..6b684d48 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -294,5 +294,6 @@ "endless_playback": "Endless Playback", "delete_playlist": "Delete Playlist", "delete_playlist_confirmation": "Are you sure you want to delete this playlist?", - "local_tracks": "Local Tracks" + "local_tracks": "Local Tracks", + "song_link": "Song Link" } \ No newline at end of file diff --git a/lib/services/song_link/model.dart b/lib/services/song_link/model.dart new file mode 100644 index 00000000..ae9d3833 --- /dev/null +++ b/lib/services/song_link/model.dart @@ -0,0 +1,19 @@ +part of './song_link.dart'; + +@freezed +class SongLink with _$SongLink { + const factory SongLink({ + required String displayName, + required String linkId, + required String platform, + required bool show, + required String? uniqueId, + required String? country, + required String? url, + required String? nativeAppUriMobile, + required String? nativeAppUriDesktop, + }) = _SongLink; + + factory SongLink.fromJson(Map json) => + _$SongLinkFromJson(json); +} diff --git a/lib/services/song_link/song_link.dart b/lib/services/song_link/song_link.dart new file mode 100644 index 00000000..c3d73f23 --- /dev/null +++ b/lib/services/song_link/song_link.dart @@ -0,0 +1,47 @@ +library song_link; + +import 'dart:convert'; + +import 'package:dio/dio.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:html/parser.dart'; + +part 'model.dart'; + +part 'song_link.freezed.dart'; +part 'song_link.g.dart'; + +abstract class SongLinkService { + static Future> links(String spotifyId) async { + final dio = Dio(); + + final res = await dio.get( + "https://song.link/s/$spotifyId", + options: Options( + headers: { + "Accept": + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" + }, + responseType: ResponseType.plain, + ), + ); + + final document = parse(res.data); + + final script = document.getElementById("__NEXT_DATA__")?.text; + + if (script == null) { + return []; + } + + final pageProps = jsonDecode(script) as Map; + final songLinks = + pageProps["props"]["pageProps"]["pageData"]["sections"].firstWhere( + (section) => section["sectionId"] == "section|auto|links|listen", + )["links"] as List; + + return songLinks.map((link) => SongLink.fromJson(link)).toList(); + } +} diff --git a/lib/services/song_link/song_link.freezed.dart b/lib/services/song_link/song_link.freezed.dart new file mode 100644 index 00000000..a8230eeb --- /dev/null +++ b/lib/services/song_link/song_link.freezed.dart @@ -0,0 +1,320 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'song_link.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +SongLink _$SongLinkFromJson(Map json) { + return _SongLink.fromJson(json); +} + +/// @nodoc +mixin _$SongLink { + String get displayName => throw _privateConstructorUsedError; + String get linkId => throw _privateConstructorUsedError; + String get platform => throw _privateConstructorUsedError; + bool get show => throw _privateConstructorUsedError; + String? get uniqueId => throw _privateConstructorUsedError; + String? get country => throw _privateConstructorUsedError; + String? get url => throw _privateConstructorUsedError; + String? get nativeAppUriMobile => throw _privateConstructorUsedError; + String? get nativeAppUriDesktop => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $SongLinkCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SongLinkCopyWith<$Res> { + factory $SongLinkCopyWith(SongLink value, $Res Function(SongLink) then) = + _$SongLinkCopyWithImpl<$Res, SongLink>; + @useResult + $Res call( + {String displayName, + String linkId, + String platform, + bool show, + String? uniqueId, + String? country, + String? url, + String? nativeAppUriMobile, + String? nativeAppUriDesktop}); +} + +/// @nodoc +class _$SongLinkCopyWithImpl<$Res, $Val extends SongLink> + implements $SongLinkCopyWith<$Res> { + _$SongLinkCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? displayName = null, + Object? linkId = null, + Object? platform = null, + Object? show = null, + Object? uniqueId = freezed, + Object? country = freezed, + Object? url = freezed, + Object? nativeAppUriMobile = freezed, + Object? nativeAppUriDesktop = freezed, + }) { + return _then(_value.copyWith( + displayName: null == displayName + ? _value.displayName + : displayName // ignore: cast_nullable_to_non_nullable + as String, + linkId: null == linkId + ? _value.linkId + : linkId // ignore: cast_nullable_to_non_nullable + as String, + platform: null == platform + ? _value.platform + : platform // ignore: cast_nullable_to_non_nullable + as String, + show: null == show + ? _value.show + : show // ignore: cast_nullable_to_non_nullable + as bool, + uniqueId: freezed == uniqueId + ? _value.uniqueId + : uniqueId // ignore: cast_nullable_to_non_nullable + as String?, + country: freezed == country + ? _value.country + : country // ignore: cast_nullable_to_non_nullable + as String?, + url: freezed == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String?, + nativeAppUriMobile: freezed == nativeAppUriMobile + ? _value.nativeAppUriMobile + : nativeAppUriMobile // ignore: cast_nullable_to_non_nullable + as String?, + nativeAppUriDesktop: freezed == nativeAppUriDesktop + ? _value.nativeAppUriDesktop + : nativeAppUriDesktop // ignore: cast_nullable_to_non_nullable + as String?, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$SongLinkImplCopyWith<$Res> + implements $SongLinkCopyWith<$Res> { + factory _$$SongLinkImplCopyWith( + _$SongLinkImpl value, $Res Function(_$SongLinkImpl) then) = + __$$SongLinkImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {String displayName, + String linkId, + String platform, + bool show, + String? uniqueId, + String? country, + String? url, + String? nativeAppUriMobile, + String? nativeAppUriDesktop}); +} + +/// @nodoc +class __$$SongLinkImplCopyWithImpl<$Res> + extends _$SongLinkCopyWithImpl<$Res, _$SongLinkImpl> + implements _$$SongLinkImplCopyWith<$Res> { + __$$SongLinkImplCopyWithImpl( + _$SongLinkImpl _value, $Res Function(_$SongLinkImpl) _then) + : super(_value, _then); + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? displayName = null, + Object? linkId = null, + Object? platform = null, + Object? show = null, + Object? uniqueId = freezed, + Object? country = freezed, + Object? url = freezed, + Object? nativeAppUriMobile = freezed, + Object? nativeAppUriDesktop = freezed, + }) { + return _then(_$SongLinkImpl( + displayName: null == displayName + ? _value.displayName + : displayName // ignore: cast_nullable_to_non_nullable + as String, + linkId: null == linkId + ? _value.linkId + : linkId // ignore: cast_nullable_to_non_nullable + as String, + platform: null == platform + ? _value.platform + : platform // ignore: cast_nullable_to_non_nullable + as String, + show: null == show + ? _value.show + : show // ignore: cast_nullable_to_non_nullable + as bool, + uniqueId: freezed == uniqueId + ? _value.uniqueId + : uniqueId // ignore: cast_nullable_to_non_nullable + as String?, + country: freezed == country + ? _value.country + : country // ignore: cast_nullable_to_non_nullable + as String?, + url: freezed == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String?, + nativeAppUriMobile: freezed == nativeAppUriMobile + ? _value.nativeAppUriMobile + : nativeAppUriMobile // ignore: cast_nullable_to_non_nullable + as String?, + nativeAppUriDesktop: freezed == nativeAppUriDesktop + ? _value.nativeAppUriDesktop + : nativeAppUriDesktop // ignore: cast_nullable_to_non_nullable + as String?, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$SongLinkImpl implements _SongLink { + const _$SongLinkImpl( + {required this.displayName, + required this.linkId, + required this.platform, + required this.show, + required this.uniqueId, + required this.country, + required this.url, + required this.nativeAppUriMobile, + required this.nativeAppUriDesktop}); + + factory _$SongLinkImpl.fromJson(Map json) => + _$$SongLinkImplFromJson(json); + + @override + final String displayName; + @override + final String linkId; + @override + final String platform; + @override + final bool show; + @override + final String? uniqueId; + @override + final String? country; + @override + final String? url; + @override + final String? nativeAppUriMobile; + @override + final String? nativeAppUriDesktop; + + @override + String toString() { + return 'SongLink(displayName: $displayName, linkId: $linkId, platform: $platform, show: $show, uniqueId: $uniqueId, country: $country, url: $url, nativeAppUriMobile: $nativeAppUriMobile, nativeAppUriDesktop: $nativeAppUriDesktop)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SongLinkImpl && + (identical(other.displayName, displayName) || + other.displayName == displayName) && + (identical(other.linkId, linkId) || other.linkId == linkId) && + (identical(other.platform, platform) || + other.platform == platform) && + (identical(other.show, show) || other.show == show) && + (identical(other.uniqueId, uniqueId) || + other.uniqueId == uniqueId) && + (identical(other.country, country) || other.country == country) && + (identical(other.url, url) || other.url == url) && + (identical(other.nativeAppUriMobile, nativeAppUriMobile) || + other.nativeAppUriMobile == nativeAppUriMobile) && + (identical(other.nativeAppUriDesktop, nativeAppUriDesktop) || + other.nativeAppUriDesktop == nativeAppUriDesktop)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => Object.hash(runtimeType, displayName, linkId, platform, + show, uniqueId, country, url, nativeAppUriMobile, nativeAppUriDesktop); + + @JsonKey(ignore: true) + @override + @pragma('vm:prefer-inline') + _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => + __$$SongLinkImplCopyWithImpl<_$SongLinkImpl>(this, _$identity); + + @override + Map toJson() { + return _$$SongLinkImplToJson( + this, + ); + } +} + +abstract class _SongLink implements SongLink { + const factory _SongLink( + {required final String displayName, + required final String linkId, + required final String platform, + required final bool show, + required final String? uniqueId, + required final String? country, + required final String? url, + required final String? nativeAppUriMobile, + required final String? nativeAppUriDesktop}) = _$SongLinkImpl; + + factory _SongLink.fromJson(Map json) = + _$SongLinkImpl.fromJson; + + @override + String get displayName; + @override + String get linkId; + @override + String get platform; + @override + bool get show; + @override + String? get uniqueId; + @override + String? get country; + @override + String? get url; + @override + String? get nativeAppUriMobile; + @override + String? get nativeAppUriDesktop; + @override + @JsonKey(ignore: true) + _$$SongLinkImplCopyWith<_$SongLinkImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/services/song_link/song_link.g.dart b/lib/services/song_link/song_link.g.dart new file mode 100644 index 00000000..911849e3 --- /dev/null +++ b/lib/services/song_link/song_link.g.dart @@ -0,0 +1,33 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'song_link.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$SongLinkImpl _$$SongLinkImplFromJson(Map json) => + _$SongLinkImpl( + displayName: json['displayName'] as String, + linkId: json['linkId'] as String, + platform: json['platform'] as String, + show: json['show'] as bool, + uniqueId: json['uniqueId'] as String?, + country: json['country'] as String?, + url: json['url'] as String?, + nativeAppUriMobile: json['nativeAppUriMobile'] as String?, + nativeAppUriDesktop: json['nativeAppUriDesktop'] as String?, + ); + +Map _$$SongLinkImplToJson(_$SongLinkImpl instance) => + { + 'displayName': instance.displayName, + 'linkId': instance.linkId, + 'platform': instance.platform, + 'show': instance.show, + 'uniqueId': instance.uniqueId, + 'country': instance.country, + 'url': instance.url, + 'nativeAppUriMobile': instance.nativeAppUriMobile, + 'nativeAppUriDesktop': instance.nativeAppUriDesktop, + }; diff --git a/lib/services/sourced_track/sources/youtube.dart b/lib/services/sourced_track/sources/youtube.dart index 5f75c4db..3fc78f0b 100644 --- a/lib/services/sourced_track/sources/youtube.dart +++ b/lib/services/sourced_track/sources/youtube.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/models/source_match.dart'; +import 'package:spotube/services/song_link/song_link.dart'; import 'package:spotube/services/sourced_track/enums.dart'; import 'package:spotube/services/sourced_track/exceptions.dart'; import 'package:spotube/services/sourced_track/models/source_info.dart'; @@ -216,6 +217,20 @@ class YoutubeSourcedTrack extends SourcedTrack { required Track track, required Ref ref, }) async { + final links = await SongLinkService.links(track.id!); + final ytLink = links.firstWhereOrNull((link) => link.platform == "youtube"); + + if (ytLink?.url != null) { + return [ + await toSiblingType( + 0, + YoutubeVideoInfo.fromVideo( + await youtubeClient.videos.get(ytLink!.url!), + ), + ) + ]; + } + final query = SourcedTrack.getSearchTerm(track); final searchResults = await youtubeClient.search.search( diff --git a/lib/songlink.dart b/lib/songlink.dart new file mode 100644 index 00000000..65aae7e3 --- /dev/null +++ b/lib/songlink.dart @@ -0,0 +1,43 @@ +import 'dart:convert'; + +import 'package:html/parser.dart'; +import 'package:dio/dio.dart'; + +void main(List args) async { + final dio = Dio(); + + final spotifyId = args[0]; + + print("Fetching song link for $spotifyId"); + + final res = await dio.get( + "https://song.link/s/$spotifyId", + options: Options( + headers: { + "Accept": + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" + }, + responseType: ResponseType.plain, + ), + ); + + final document = parse(res.data); + + final script = document.getElementById("__NEXT_DATA__")?.text; + + if (script == null) { + throw Exception("Could not find __NEXT_DATA__ script tag."); + } + + final pageProps = jsonDecode(script) as Map; + final songLinks = + pageProps["props"]["pageProps"]["pageData"]["sections"].firstWhere( + (section) => section["sectionId"] == "section|auto|links|listen", + )["links"]; + + for (final link in songLinks) { + print("${link["platform"]} - ${link["url"]}"); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 82377d08..9bacf6dd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -153,6 +153,7 @@ flutter: assets: - assets/ - assets/tutorial/ + - assets/logos/ - LICENSE flutter_launcher_icons: diff --git a/untranslated_messages.json b/untranslated_messages.json index 41251435..cc14528c 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -7,7 +7,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "bn": [ @@ -18,7 +19,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "ca": [ @@ -29,7 +31,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "de": [ @@ -40,7 +43,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "es": [ @@ -51,7 +55,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "fa": [ @@ -62,7 +67,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "fr": [ @@ -73,7 +79,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "hi": [ @@ -84,7 +91,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "it": [ @@ -95,7 +103,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "ja": [ @@ -106,7 +115,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "ne": [ @@ -117,7 +127,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "nl": [ @@ -129,7 +140,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "pl": [ @@ -140,7 +152,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "pt": [ @@ -151,7 +164,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "ru": [ @@ -162,7 +176,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "tr": [ @@ -173,7 +188,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "uk": [ @@ -184,7 +200,8 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ], "zh": [ @@ -195,6 +212,7 @@ "endless_playback", "delete_playlist", "delete_playlist_confirmation", - "local_tracks" + "local_tracks", + "song_link" ] } From ca7140650512d88743f7fe2f8d8596b8f757e3b9 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 11:14:00 +0600 Subject: [PATCH 26/59] chore: remove residual files --- lib/songlink.dart | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 lib/songlink.dart diff --git a/lib/songlink.dart b/lib/songlink.dart deleted file mode 100644 index 65aae7e3..00000000 --- a/lib/songlink.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'dart:convert'; - -import 'package:html/parser.dart'; -import 'package:dio/dio.dart'; - -void main(List args) async { - final dio = Dio(); - - final spotifyId = args[0]; - - print("Fetching song link for $spotifyId"); - - final res = await dio.get( - "https://song.link/s/$spotifyId", - options: Options( - headers: { - "Accept": - "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", - "User-Agent": - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" - }, - responseType: ResponseType.plain, - ), - ); - - final document = parse(res.data); - - final script = document.getElementById("__NEXT_DATA__")?.text; - - if (script == null) { - throw Exception("Could not find __NEXT_DATA__ script tag."); - } - - final pageProps = jsonDecode(script) as Map; - final songLinks = - pageProps["props"]["pageProps"]["pageData"]["sections"].firstWhere( - (section) => section["sectionId"] == "section|auto|links|listen", - )["links"]; - - for (final link in songLinks) { - print("${link["platform"]} - ${link["url"]}"); - } -} From 96a2a1f5a622cb3c580041417d5023e37fa69716 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 22:01:38 +0600 Subject: [PATCH 27/59] feat: add getting started page --- lib/collections/intents.dart | 3 +- lib/collections/language_codes.dart | 5 + lib/collections/routes.dart | 313 ++++++++++-------- lib/collections/spotube_icons.dart | 3 + lib/components/getting_started/blur_card.dart | 31 ++ lib/hooks/configurators/use_deep_linking.dart | 2 + lib/main.dart | 5 + .../getting_started/getting_started.dart | 93 ++++++ .../getting_started/sections/greeting.dart | 54 +++ .../getting_started/sections/playback.dart | 154 +++++++++ .../getting_started/sections/region.dart | 129 ++++++++ .../getting_started/sections/support.dart | 131 ++++++++ lib/pages/settings/sections/appearance.dart | 179 +++++----- lib/services/kv_store/kv_store.dart | 15 + lib/utils/persisted_state_notifier.dart | 4 +- 15 files changed, 896 insertions(+), 225 deletions(-) create mode 100644 lib/components/getting_started/blur_card.dart create mode 100644 lib/pages/getting_started/getting_started.dart create mode 100644 lib/pages/getting_started/sections/greeting.dart create mode 100644 lib/pages/getting_started/sections/playback.dart create mode 100644 lib/pages/getting_started/sections/region.dart create mode 100644 lib/pages/getting_started/sections/support.dart create mode 100644 lib/services/kv_store/kv_store.dart diff --git a/lib/collections/intents.dart b/lib/collections/intents.dart index abccb3ad..6f42113c 100644 --- a/lib/collections/intents.dart +++ b/lib/collections/intents.dart @@ -4,8 +4,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; -import 'package:spotube/components/player/player_controls.dart'; import 'package:spotube/collections/routes.dart'; +import 'package:spotube/components/player/player_controls.dart'; import 'package:spotube/models/logger.dart'; import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; import 'package:spotube/services/audio_player/audio_player.dart'; @@ -64,6 +64,7 @@ class HomeTabIntent extends Intent { class HomeTabAction extends Action { @override invoke(intent) { + final router = intent.ref.read(routerProvider); switch (intent.tab) { case HomeTabs.browse: router.go("/"); diff --git a/lib/collections/language_codes.dart b/lib/collections/language_codes.dart index 4554de63..e3b71d3f 100644 --- a/lib/collections/language_codes.dart +++ b/lib/collections/language_codes.dart @@ -6,6 +6,11 @@ class ISOLanguageName { required this.name, required this.nativeName, }); + + @override + String toString() { + return "$name ($nativeName)"; + } } // Uncomment the languages as we add support for them diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart index 3e2c42e0..7b0d836d 100644 --- a/lib/collections/routes.dart +++ b/lib/collections/routes.dart @@ -2,8 +2,10 @@ import 'package:catcher_2/catcher_2.dart'; import 'package:flutter/foundation.dart' hide Category; import 'package:flutter/widgets.dart'; import 'package:go_router/go_router.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart' hide Search; import 'package:spotube/pages/album/album.dart'; +import 'package:spotube/pages/getting_started/getting_started.dart'; import 'package:spotube/pages/home/genres/genre_playlists.dart'; import 'package:spotube/pages/home/genres/genres.dart'; import 'package:spotube/pages/home/home.dart'; @@ -18,6 +20,8 @@ import 'package:spotube/pages/settings/blacklist.dart'; import 'package:spotube/pages/settings/about.dart'; import 'package:spotube/pages/settings/logs.dart'; import 'package:spotube/pages/track/track.dart'; +import 'package:spotube/provider/authentication_provider.dart'; +import 'package:spotube/services/kv_store/kv_store.dart'; import 'package:spotube/utils/platform.dart'; import 'package:spotube/components/shared/spotube_page_route.dart'; import 'package:spotube/pages/artist/artist.dart'; @@ -31,157 +35,180 @@ import 'package:spotube/pages/mobile_login/mobile_login.dart'; final rootNavigatorKey = Catcher2.navigatorKey; final shellRouteNavigatorKey = GlobalKey(); -final router = GoRouter( - navigatorKey: rootNavigatorKey, - routes: [ - ShellRoute( - navigatorKey: shellRouteNavigatorKey, - builder: (context, state, child) => RootApp(child: child), - routes: [ - GoRoute( - path: "/", - pageBuilder: (context, state) => const SpotubePage(child: HomePage()), - routes: [ - GoRoute( - path: "genres", - pageBuilder: (context, state) => - const SpotubePage(child: GenrePage()), - ), - GoRoute( - path: "genre/:categoryId", - pageBuilder: (context, state) => SpotubePage( - child: GenrePlaylistsPage( - category: state.extra as Category, - ), - ), - ), - ], - ), - GoRoute( - path: "/search", - name: "Search", - pageBuilder: (context, state) => - const SpotubePage(child: SearchPage()), - ), - GoRoute( - path: "/library", - name: "Library", +final routerProvider = Provider((ref) { + return GoRouter( + navigatorKey: rootNavigatorKey, + routes: [ + ShellRoute( + navigatorKey: shellRouteNavigatorKey, + builder: (context, state, child) => RootApp(child: child), + routes: [ + GoRoute( + path: "/", + redirect: (context, state) async { + final authNotifier = + ref.read(AuthenticationNotifier.provider.notifier); + final json = await authNotifier.box.get(authNotifier.cacheKey); + + if (json["cookie"] == null && + !KVStoreService.doneGettingStarted) { + return "/getting-started"; + } + + return null; + }, pageBuilder: (context, state) => - const SpotubePage(child: LibraryPage()), + const SpotubePage(child: HomePage()), routes: [ GoRoute( - path: "generate", - pageBuilder: (context, state) => - const SpotubePage(child: PlaylistGeneratorPage()), - routes: [ - GoRoute( - path: "result", - pageBuilder: (context, state) => SpotubePage( - child: PlaylistGenerateResultPage( - state: - state.extra as PlaylistGenerateResultRouteState, - ), - ), - ), - ]), - ]), - GoRoute( - path: "/lyrics", - name: "Lyrics", - pageBuilder: (context, state) => - const SpotubePage(child: LyricsPage()), - ), - GoRoute( - path: "/settings", - pageBuilder: (context, state) => const SpotubePage( - child: SettingsPage(), - ), - routes: [ - GoRoute( - path: "blacklist", - pageBuilder: (context, state) => SpotubeSlidePage( - child: const BlackListPage(), + path: "genres", + pageBuilder: (context, state) => + const SpotubePage(child: GenrePage()), ), - ), - if (!kIsWeb) GoRoute( - path: "logs", - pageBuilder: (context, state) => SpotubeSlidePage( - child: const LogsPage(), + path: "genre/:categoryId", + pageBuilder: (context, state) => SpotubePage( + child: GenrePlaylistsPage( + category: state.extra as Category, + ), ), ), - GoRoute( - path: "about", - pageBuilder: (context, state) => SpotubeSlidePage( - child: const AboutSpotube(), - ), + ], + ), + GoRoute( + path: "/search", + name: "Search", + pageBuilder: (context, state) => + const SpotubePage(child: SearchPage()), + ), + GoRoute( + path: "/library", + name: "Library", + pageBuilder: (context, state) => + const SpotubePage(child: LibraryPage()), + routes: [ + GoRoute( + path: "generate", + pageBuilder: (context, state) => + const SpotubePage(child: PlaylistGeneratorPage()), + routes: [ + GoRoute( + path: "result", + pageBuilder: (context, state) => SpotubePage( + child: PlaylistGenerateResultPage( + state: + state.extra as PlaylistGenerateResultRouteState, + ), + ), + ), + ]), + ]), + GoRoute( + path: "/lyrics", + name: "Lyrics", + pageBuilder: (context, state) => + const SpotubePage(child: LyricsPage()), + ), + GoRoute( + path: "/settings", + pageBuilder: (context, state) => const SpotubePage( + child: SettingsPage(), ), - ], - ), - GoRoute( - path: "/album/:id", - pageBuilder: (context, state) { - assert(state.extra is AlbumSimple); - return SpotubePage( - child: AlbumPage(album: state.extra as AlbumSimple), - ); - }, - ), - GoRoute( - path: "/artist/:id", - pageBuilder: (context, state) { - assert(state.pathParameters["id"] != null); - return SpotubePage(child: ArtistPage(state.pathParameters["id"]!)); - }, - ), - GoRoute( - path: "/playlist/:id", - pageBuilder: (context, state) { - assert(state.extra is PlaylistSimple); - return SpotubePage( - child: state.pathParameters["id"] == "user-liked-tracks" - ? LikedPlaylistPage(playlist: state.extra as PlaylistSimple) - : PlaylistPage(playlist: state.extra as PlaylistSimple), - ); - }, - ), - GoRoute( - path: "/track/:id", - pageBuilder: (context, state) { - final id = state.pathParameters["id"]!; - return SpotubePage( - child: TrackPage(trackId: id), - ); - }, - ), - ], - ), - GoRoute( - path: "/mini-player", - parentNavigatorKey: rootNavigatorKey, - pageBuilder: (context, state) => SpotubePage( - child: MiniLyricsPage(prevSize: state.extra as Size), + routes: [ + GoRoute( + path: "blacklist", + pageBuilder: (context, state) => SpotubeSlidePage( + child: const BlackListPage(), + ), + ), + if (!kIsWeb) + GoRoute( + path: "logs", + pageBuilder: (context, state) => SpotubeSlidePage( + child: const LogsPage(), + ), + ), + GoRoute( + path: "about", + pageBuilder: (context, state) => SpotubeSlidePage( + child: const AboutSpotube(), + ), + ), + ], + ), + GoRoute( + path: "/album/:id", + pageBuilder: (context, state) { + assert(state.extra is AlbumSimple); + return SpotubePage( + child: AlbumPage(album: state.extra as AlbumSimple), + ); + }, + ), + GoRoute( + path: "/artist/:id", + pageBuilder: (context, state) { + assert(state.pathParameters["id"] != null); + return SpotubePage( + child: ArtistPage(state.pathParameters["id"]!)); + }, + ), + GoRoute( + path: "/playlist/:id", + pageBuilder: (context, state) { + assert(state.extra is PlaylistSimple); + return SpotubePage( + child: state.pathParameters["id"] == "user-liked-tracks" + ? LikedPlaylistPage(playlist: state.extra as PlaylistSimple) + : PlaylistPage(playlist: state.extra as PlaylistSimple), + ); + }, + ), + GoRoute( + path: "/track/:id", + pageBuilder: (context, state) { + final id = state.pathParameters["id"]!; + return SpotubePage( + child: TrackPage(trackId: id), + ); + }, + ), + ], ), - ), - GoRoute( - path: "/login", - parentNavigatorKey: rootNavigatorKey, - pageBuilder: (context, state) => SpotubePage( - child: kIsMobile ? const WebViewLogin() : const DesktopLoginPage(), + GoRoute( + path: "/mini-player", + parentNavigatorKey: rootNavigatorKey, + pageBuilder: (context, state) => SpotubePage( + child: MiniLyricsPage(prevSize: state.extra as Size), + ), ), - ), - GoRoute( - path: "/login-tutorial", - parentNavigatorKey: rootNavigatorKey, - pageBuilder: (context, state) => const SpotubePage( - child: LoginTutorial(), + GoRoute( + path: "/getting-started", + parentNavigatorKey: rootNavigatorKey, + pageBuilder: (context, state) => const SpotubePage( + child: GettingStarting(), + ), ), - ), - GoRoute( - path: "/lastfm-login", - parentNavigatorKey: rootNavigatorKey, - pageBuilder: (context, state) => - const SpotubePage(child: LastFMLoginPage()), - ), - ], -); + GoRoute( + path: "/login", + parentNavigatorKey: rootNavigatorKey, + pageBuilder: (context, state) => SpotubePage( + child: kIsMobile ? const WebViewLogin() : const DesktopLoginPage(), + ), + ), + GoRoute( + path: "/login-tutorial", + parentNavigatorKey: rootNavigatorKey, + pageBuilder: (context, state) => const SpotubePage( + child: LoginTutorial(), + ), + ), + GoRoute( + path: "/lastfm-login", + parentNavigatorKey: rootNavigatorKey, + pageBuilder: (context, state) => + const SpotubePage(child: LastFMLoginPage()), + ), + ], + ); +}); diff --git a/lib/collections/spotube_icons.dart b/lib/collections/spotube_icons.dart index c00643ce..6cf92085 100644 --- a/lib/collections/spotube_icons.dart +++ b/lib/collections/spotube_icons.dart @@ -112,4 +112,7 @@ abstract class SpotubeIcons { static const discord = SimpleIcons.discord; static const youtube = SimpleIcons.youtube; static const radio = FeatherIcons.radio; + static const github = SimpleIcons.github; + static const openCollective = SimpleIcons.opencollective; + static const anonymous = FeatherIcons.user; } diff --git a/lib/components/getting_started/blur_card.dart b/lib/components/getting_started/blur_card.dart new file mode 100644 index 00000000..db887013 --- /dev/null +++ b/lib/components/getting_started/blur_card.dart @@ -0,0 +1,31 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +class BlurCard extends HookConsumerWidget { + final Widget child; + const BlurCard({super.key, required this.child}); + + @override + Widget build(BuildContext context, ref) { + return Container( + margin: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + ), + constraints: const BoxConstraints(maxWidth: 400), + clipBehavior: Clip.antiAlias, + child: SizedBox( + width: double.infinity, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: child, + ), + ), + ), + ); + } +} diff --git a/lib/hooks/configurators/use_deep_linking.dart b/lib/hooks/configurators/use_deep_linking.dart index 3b7ec3f3..f11a1cff 100644 --- a/lib/hooks/configurators/use_deep_linking.dart +++ b/lib/hooks/configurators/use_deep_linking.dart @@ -19,6 +19,8 @@ void useDeepLinking(WidgetRef ref) { final spotify = ref.watch(spotifyProvider); final queryClient = useQueryClient(); + final router = ref.watch(routerProvider); + useEffect(() { void uriListener(List files) async { for (final file in files) { diff --git a/lib/main.dart b/lib/main.dart index b6afa85c..31c1da57 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,6 +29,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart import 'package:spotube/services/audio_player/audio_player.dart'; import 'package:spotube/services/cli/cli.dart'; import 'package:spotube/services/connectivity_adapter.dart'; +import 'package:spotube/services/kv_store/kv_store.dart'; import 'package:spotube/themes/theme.dart'; import 'package:spotube/utils/persisted_state_notifier.dart'; import 'package:system_theme/system_theme.dart'; @@ -68,6 +69,9 @@ Future main(List rawArgs) async { DiscordRPC.initialize(); } + await KVStoreService.initialize(); + KVStoreService.doneGettingStarted = false; + final hiveCacheDir = kIsWeb ? null : (await getApplicationSupportDirectory()).path; @@ -184,6 +188,7 @@ class SpotubeState extends ConsumerState { final locale = ref.watch(userPreferencesProvider.select((s) => s.locale)); final paletteColor = ref.watch(paletteProvider.select((s) => s?.dominantColor?.color)); + final router = ref.watch(routerProvider); useDisableBatteryOptimizations(); useInitSysTray(ref); diff --git a/lib/pages/getting_started/getting_started.dart b/lib/pages/getting_started/getting_started.dart new file mode 100644 index 00000000..47cfda03 --- /dev/null +++ b/lib/pages/getting_started/getting_started.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:spotube/collections/assets.gen.dart'; +import 'package:spotube/components/shared/page_window_title_bar.dart'; +import 'package:spotube/pages/getting_started/sections/greeting.dart'; +import 'package:spotube/pages/getting_started/sections/playback.dart'; +import 'package:spotube/pages/getting_started/sections/region.dart'; +import 'package:spotube/pages/getting_started/sections/support.dart'; + +class GettingStarting extends HookConsumerWidget { + const GettingStarting({super.key}); + + @override + Widget build(BuildContext context, ref) { + final ThemeData(:colorScheme) = Theme.of(context); + final pageController = usePageController(); + + final onNext = useCallback(() { + pageController.nextPage( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + }, [pageController]); + + final onPrevious = useCallback(() { + pageController.previousPage( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + }, [pageController]); + + return Scaffold( + appBar: PageWindowTitleBar( + backgroundColor: Colors.transparent, + actions: [ + ListenableBuilder( + listenable: pageController, + builder: (context, _) { + return AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + child: pageController.hasClients && + (pageController.page == 0 || pageController.page == 3) + ? const SizedBox() + : TextButton( + onPressed: () { + pageController.animateToPage( + 3, + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + }, + child: Text( + "Skip this nonsense", + style: TextStyle( + decoration: TextDecoration.underline, + decorationColor: colorScheme.primary, + ), + ), + ), + ); + }, + ), + ], + ), + extendBodyBehindAppBar: true, + body: DecoratedBox( + decoration: BoxDecoration( + image: DecorationImage( + image: Assets.bengaliPatternsBg.provider(), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + colorScheme.background.withOpacity(0.2), + BlendMode.srcOver, + ), + ), + ), + child: PageView( + controller: pageController, + children: [ + GettingStartedPageGreetingSection(onNext: onNext), + GettingStartedPageLanguageRegionSection(onNext: onNext), + GettingStartedPagePlaybackSection( + onNext: onNext, + onPrevious: onPrevious, + ), + const GettingStartedScreenSupportSection(), + ], + ), + ), + ); + } +} diff --git a/lib/pages/getting_started/sections/greeting.dart b/lib/pages/getting_started/sections/greeting.dart new file mode 100644 index 00000000..459500e3 --- /dev/null +++ b/lib/pages/getting_started/sections/greeting.dart @@ -0,0 +1,54 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:spotube/collections/assets.gen.dart'; +import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/utils/platform.dart'; + +class GettingStartedPageGreetingSection extends HookConsumerWidget { + final VoidCallback onNext; + const GettingStartedPageGreetingSection({super.key, required this.onNext}); + + @override + Widget build(BuildContext context, ref) { + final ThemeData(:textTheme) = Theme.of(context); + + return Center( + child: BlurCard( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Assets.spotubeLogoPng.image(height: 200), + const Gap(24), + Text( + "Spotube", + style: + textTheme.titleLarge?.copyWith(fontWeight: FontWeight.bold), + ), + const Gap(4), + Text( + "“Freedom of music${kIsMobile ? "in the palm of your hands" : ""}”", + textAlign: TextAlign.center, + style: textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w300, + fontStyle: FontStyle.italic, + ), + ), + const Gap(84), + Directionality( + textDirection: TextDirection.rtl, + child: FilledButton.icon( + onPressed: onNext, + icon: const Icon(SpotubeIcons.angleRight), + label: const Text("Let's get started"), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/getting_started/sections/playback.dart b/lib/pages/getting_started/sections/playback.dart new file mode 100644 index 00000000..03d11f9b --- /dev/null +++ b/lib/pages/getting_started/sections/playback.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:spotube/collections/assets.gen.dart'; +import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/extensions/context.dart'; +import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; +import 'package:spotube/provider/user_preferences/user_preferences_state.dart'; + +final audioSourceToIconMap = { + AudioSource.youtube: const Icon( + SpotubeIcons.youtube, + color: Colors.red, + size: 30, + ), + AudioSource.piped: const Icon(SpotubeIcons.piped, size: 30), + AudioSource.jiosaavn: Assets.jiosaavn.image(width: 48, height: 48), +}; + +final audioSourceToDescription = { + AudioSource.youtube: + "Recommended and works best.\nHighest quality: 148kbps mp4, 128kbps opus", + AudioSource.piped: "Feeling free? Same as YouTube but a lot free", + AudioSource.jiosaavn: + "Best for South Asian region.\nHighest quality: 320kbps mp4", +}; + +class GettingStartedPagePlaybackSection extends HookConsumerWidget { + final VoidCallback onNext; + final VoidCallback onPrevious; + + const GettingStartedPagePlaybackSection({ + super.key, + required this.onNext, + required this.onPrevious, + }); + + @override + Widget build(BuildContext context, ref) { + final ThemeData(:textTheme, :colorScheme, :dividerColor) = + Theme.of(context); + final preferences = ref.watch(userPreferencesProvider); + final preferencesNotifier = ref.read(userPreferencesProvider.notifier); + + return Center( + child: BlurCard( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + const Icon(SpotubeIcons.album, size: 16), + const Gap(8), + Text(context.l10n.playback, style: textTheme.titleMedium), + ], + ), + const Gap(16), + ListTile( + title: Text("Select Audio Source", style: textTheme.titleMedium), + ), + const Gap(16), + ToggleButtons( + isSelected: [ + for (final source in AudioSource.values) + preferences.audioSource == source, + ], + onPressed: (index) { + preferencesNotifier.setAudioSource(AudioSource.values[index]); + }, + borderRadius: BorderRadius.circular(8), + children: [ + for (final source in AudioSource.values) + SizedBox.square( + dimension: 84, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + audioSourceToIconMap[source]!, + const Gap(8), + Text( + source.name, + style: textTheme.bodySmall!.copyWith( + color: preferences.audioSource == source + ? colorScheme.primary + : null, + ), + ), + ], + ), + ), + ], + ), + ListTile( + title: Align( + alignment: switch (preferences.audioSource) { + AudioSource.youtube => Alignment.centerLeft, + AudioSource.piped => Alignment.center, + AudioSource.jiosaavn => Alignment.centerRight, + }, + child: Text( + audioSourceToDescription[preferences.audioSource]!, + style: textTheme.bodySmall?.copyWith( + color: dividerColor, + ), + ), + ), + ), + const Gap(16), + ListTile( + title: Text(context.l10n.endless_playback), + subtitle: Text( + "Automatically append new songs\nto the end of the queue", + style: textTheme.bodySmall?.copyWith( + color: dividerColor, + ), + ), + onTap: () { + preferencesNotifier + .setEndlessPlayback(!preferences.endlessPlayback); + }, + trailing: Switch( + value: preferences.endlessPlayback, + onChanged: (value) { + preferencesNotifier.setEndlessPlayback(value); + }, + ), + ), + const Gap(34), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + FilledButton.icon( + icon: const Icon(SpotubeIcons.angleLeft), + label: Text(context.l10n.previous), + onPressed: onPrevious, + ), + Directionality( + textDirection: TextDirection.rtl, + child: FilledButton.icon( + icon: const Icon(SpotubeIcons.angleRight), + label: Text(context.l10n.next), + onPressed: onNext, + ), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/getting_started/sections/region.dart b/lib/pages/getting_started/sections/region.dart new file mode 100644 index 00000000..23885d50 --- /dev/null +++ b/lib/pages/getting_started/sections/region.dart @@ -0,0 +1,129 @@ +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:spotube/collections/language_codes.dart'; +import 'package:spotube/collections/spotify_markets.dart'; +import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/extensions/context.dart'; +import 'package:spotube/l10n/l10n.dart'; +import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; + +class GettingStartedPageLanguageRegionSection extends HookConsumerWidget { + final void Function() onNext; + const GettingStartedPageLanguageRegionSection( + {super.key, required this.onNext}); + + @override + Widget build(BuildContext context, ref) { + final ThemeData(:textTheme, :dividerColor) = Theme.of(context); + final preferences = ref.watch(userPreferencesProvider); + + return SafeArea( + child: Center( + child: BlurCard( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + const Icon( + SpotubeIcons.language, + size: 16, + ), + const SizedBox(width: 8), + Text( + "Language and Region", + style: textTheme.titleMedium, + ), + ], + ), + const Gap(48), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Choose your region", + style: textTheme.titleSmall, + ), + Text( + "This will help us show you the right content\nfor your location.", + style: textTheme.bodySmall?.copyWith( + color: dividerColor, + ), + ), + const Gap(16), + DropdownMenu( + initialSelection: preferences.recommendationMarket, + onSelected: (value) { + if (value == null) return; + ref + .read(userPreferencesProvider.notifier) + .setRecommendationMarket(value); + }, + hintText: preferences.recommendationMarket.name, + label: Text(context.l10n.market_place_region), + inputDecorationTheme: + const InputDecorationTheme(isDense: true), + dropdownMenuEntries: [ + for (final market in spotifyMarkets) + DropdownMenuEntry( + value: market.$1, + label: market.$2, + ), + ], + ), + const Gap(36), + Text( + "Choose your language", + style: textTheme.titleSmall, + ), + const Gap(16), + DropdownMenu( + initialSelection: preferences.locale, + onSelected: (locale) { + if (locale == null) return; + ref + .read(userPreferencesProvider.notifier) + .setLocale(locale); + }, + hintText: context.l10n.system_default, + label: Text(context.l10n.language), + inputDecorationTheme: + const InputDecorationTheme(isDense: true), + dropdownMenuEntries: [ + DropdownMenuEntry( + value: const Locale("system", "system"), + label: context.l10n.system_default, + ), + for (final locale in L10n.all) + DropdownMenuEntry( + value: locale, + label: LanguageLocals.getDisplayLanguage( + locale.languageCode) + .toString(), + ), + ], + ), + ], + ), + const Gap(48), + Align( + alignment: Alignment.centerRight, + child: Directionality( + textDirection: TextDirection.rtl, + child: FilledButton.icon( + icon: const Icon(SpotubeIcons.angleRight), + label: Text(context.l10n.next), + onPressed: onNext, + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/getting_started/sections/support.dart b/lib/pages/getting_started/sections/support.dart new file mode 100644 index 00000000..9b798f56 --- /dev/null +++ b/lib/pages/getting_started/sections/support.dart @@ -0,0 +1,131 @@ +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:go_router/go_router.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:spotube/collections/spotube_icons.dart'; +import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/services/kv_store/kv_store.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +class GettingStartedScreenSupportSection extends HookConsumerWidget { + const GettingStartedScreenSupportSection({super.key}); + + @override + Widget build(BuildContext context, ref) { + final ThemeData(:textTheme, :colorScheme) = Theme.of(context); + + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + BlurCard( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(SpotubeIcons.heartFilled, color: Colors.pink), + const SizedBox(width: 8), + Text( + "Help this project grow", + style: + textTheme.titleMedium?.copyWith(color: Colors.pink), + ), + ], + ), + const Gap(16), + const Text( + "Spotube is an open-source project. You can help this project grow by contributing to the project, reporting bugs, or suggesting new features.", + ), + const Gap(16), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FilledButton.icon( + icon: const Icon(SpotubeIcons.github), + label: const Text("Contribute on GitHub"), + style: FilledButton.styleFrom( + backgroundColor: Colors.black, + foregroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + onPressed: () async { + await launchUrlString( + "https://github.com/KRTirtho/spotube", + mode: LaunchMode.externalApplication, + ); + }, + ), + const Gap(16), + FilledButton.icon( + icon: const Icon(SpotubeIcons.openCollective), + label: const Text("Donate on Open Collective"), + style: FilledButton.styleFrom( + backgroundColor: const Color(0xff4cb7f6), + foregroundColor: Colors.white, + ), + onPressed: () async { + await launchUrlString( + "https://opencollective.com/spotube", + mode: LaunchMode.externalApplication, + ); + }, + ), + ], + ), + ], + ), + ), + const Gap(48), + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 250), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + DecoratedBox( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + gradient: LinearGradient( + colors: [ + colorScheme.primary, + colorScheme.secondary, + ], + ), + ), + child: TextButton.icon( + icon: const Icon(SpotubeIcons.anonymous), + label: const Text("Browse anonymously"), + style: TextButton.styleFrom( + foregroundColor: Colors.white, + ), + onPressed: () { + KVStoreService.doneGettingStarted = true; + context.go("/"); + }, + ), + ), + const Gap(16), + FilledButton.icon( + icon: const Icon(SpotubeIcons.spotify), + label: const Text("Connect Spotify Account"), + style: FilledButton.styleFrom( + backgroundColor: const Color(0xff1db954), + foregroundColor: Colors.white, + ), + onPressed: () { + KVStoreService.doneGettingStarted = true; + context.push("/login"); + }, + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/settings/sections/appearance.dart b/lib/pages/settings/sections/appearance.dart index 5de36c63..3d941212 100644 --- a/lib/pages/settings/sections/appearance.dart +++ b/lib/pages/settings/sections/appearance.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:gap/gap.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/settings/color_scheme_picker_dialog.dart'; @@ -10,7 +11,11 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart import 'package:spotube/provider/user_preferences/user_preferences_state.dart'; class SettingsAppearanceSection extends HookConsumerWidget { - const SettingsAppearanceSection({Key? key}) : super(key: key); + final bool isGettingStarted; + const SettingsAppearanceSection({ + Key? key, + this.isGettingStarted = false, + }) : super(key: key); @override Widget build(BuildContext context, ref) { @@ -24,87 +29,101 @@ class SettingsAppearanceSection extends HookConsumerWidget { }); }, []); + final children = [ + AdaptiveSelectTile( + secondary: const Icon(SpotubeIcons.dashboard), + title: Text(context.l10n.layout_mode), + subtitle: Text(context.l10n.override_layout_settings), + value: preferences.layoutMode, + onChanged: (value) { + if (value != null) { + preferencesNotifier.setLayoutMode(value); + } + }, + options: [ + DropdownMenuItem( + value: LayoutMode.adaptive, + child: Text(context.l10n.adaptive), + ), + DropdownMenuItem( + value: LayoutMode.compact, + child: Text(context.l10n.compact), + ), + DropdownMenuItem( + value: LayoutMode.extended, + child: Text(context.l10n.extended), + ), + ], + ), + AdaptiveSelectTile( + secondary: const Icon(SpotubeIcons.darkMode), + title: Text(context.l10n.theme), + value: preferences.themeMode, + options: [ + DropdownMenuItem( + value: ThemeMode.dark, + child: Text(context.l10n.dark), + ), + DropdownMenuItem( + value: ThemeMode.light, + child: Text(context.l10n.light), + ), + DropdownMenuItem( + value: ThemeMode.system, + child: Text(context.l10n.system), + ), + ], + onChanged: (value) { + if (value != null) { + preferencesNotifier.setThemeMode(value); + } + }, + ), + SwitchListTile( + secondary: const Icon(SpotubeIcons.amoled), + title: Text(context.l10n.use_amoled_mode), + subtitle: Text(context.l10n.pitch_dark_theme), + value: preferences.amoledDarkTheme, + onChanged: preferencesNotifier.setAmoledDarkTheme, + ), + ListTile( + leading: const Icon(SpotubeIcons.palette), + title: Text(context.l10n.accent_color), + contentPadding: const EdgeInsets.symmetric( + horizontal: 15, + vertical: 5, + ), + trailing: ColorTile.compact( + color: preferences.accentColorScheme, + onPressed: pickColorScheme(), + isActive: true, + ), + onTap: pickColorScheme(), + ), + SwitchListTile( + secondary: const Icon(SpotubeIcons.colorSync), + title: Text(context.l10n.sync_album_color), + subtitle: Text(context.l10n.sync_album_color_description), + value: preferences.albumColorSync, + onChanged: preferencesNotifier.setAlbumColorSync, + ), + ]; + + if (isGettingStarted) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + for (final child in children) ...[ + child, + const Gap(16), + ], + ], + ); + } + return SectionCardWithHeading( heading: context.l10n.appearance, - children: [ - AdaptiveSelectTile( - secondary: const Icon(SpotubeIcons.dashboard), - title: Text(context.l10n.layout_mode), - subtitle: Text(context.l10n.override_layout_settings), - value: preferences.layoutMode, - onChanged: (value) { - if (value != null) { - preferencesNotifier.setLayoutMode(value); - } - }, - options: [ - DropdownMenuItem( - value: LayoutMode.adaptive, - child: Text(context.l10n.adaptive), - ), - DropdownMenuItem( - value: LayoutMode.compact, - child: Text(context.l10n.compact), - ), - DropdownMenuItem( - value: LayoutMode.extended, - child: Text(context.l10n.extended), - ), - ], - ), - AdaptiveSelectTile( - secondary: const Icon(SpotubeIcons.darkMode), - title: Text(context.l10n.theme), - value: preferences.themeMode, - options: [ - DropdownMenuItem( - value: ThemeMode.dark, - child: Text(context.l10n.dark), - ), - DropdownMenuItem( - value: ThemeMode.light, - child: Text(context.l10n.light), - ), - DropdownMenuItem( - value: ThemeMode.system, - child: Text(context.l10n.system), - ), - ], - onChanged: (value) { - if (value != null) { - preferencesNotifier.setThemeMode(value); - } - }, - ), - SwitchListTile( - secondary: const Icon(SpotubeIcons.amoled), - title: Text(context.l10n.use_amoled_mode), - subtitle: Text(context.l10n.pitch_dark_theme), - value: preferences.amoledDarkTheme, - onChanged: preferencesNotifier.setAmoledDarkTheme, - ), - ListTile( - leading: const Icon(SpotubeIcons.palette), - title: Text(context.l10n.accent_color), - contentPadding: const EdgeInsets.symmetric( - horizontal: 15, - vertical: 5, - ), - trailing: ColorTile.compact( - color: preferences.accentColorScheme, - onPressed: pickColorScheme(), - isActive: true, - ), - onTap: pickColorScheme(), - ), - SwitchListTile( - secondary: const Icon(SpotubeIcons.colorSync), - title: Text(context.l10n.sync_album_color), - subtitle: Text(context.l10n.sync_album_color_description), - value: preferences.albumColorSync, - onChanged: preferencesNotifier.setAlbumColorSync, - ), - ], + children: children, ); } } diff --git a/lib/services/kv_store/kv_store.dart b/lib/services/kv_store/kv_store.dart new file mode 100644 index 00000000..6f6807e0 --- /dev/null +++ b/lib/services/kv_store/kv_store.dart @@ -0,0 +1,15 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +abstract class KVStoreService { + static SharedPreferences? _sharedPreferences; + static SharedPreferences get sharedPreferences => _sharedPreferences!; + + static Future initialize() async { + _sharedPreferences = await SharedPreferences.getInstance(); + } + + static bool get doneGettingStarted => + sharedPreferences.getBool('doneGettingStarted') ?? false; + static set doneGettingStarted(bool value) => + sharedPreferences.setBool('doneGettingStarted', value); +} diff --git a/lib/utils/persisted_state_notifier.dart b/lib/utils/persisted_state_notifier.dart index 218cd64a..60f7b96e 100644 --- a/lib/utils/persisted_state_notifier.dart +++ b/lib/utils/persisted_state_notifier.dart @@ -119,7 +119,9 @@ abstract class PersistedStateNotifier extends StateNotifier { Future _load() async { final json = await box.get(cacheKey); - if (json != null) { + if (json != null || + (json is Map && json.entries.isNotEmpty) || + (json is List && json.isNotEmpty)) { state = await fromJson(castNestedJson(json)); } } From a850ed270b9412a69fb4717cc0ce6368e59e1c65 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 22:06:47 +0600 Subject: [PATCH 28/59] chore: add error handling in song link --- lib/services/song_link/song_link.dart | 55 +++++++++++++++------------ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/lib/services/song_link/song_link.dart b/lib/services/song_link/song_link.dart index c3d73f23..b02f60cb 100644 --- a/lib/services/song_link/song_link.dart +++ b/lib/services/song_link/song_link.dart @@ -2,6 +2,7 @@ library song_link; import 'dart:convert'; +import 'package:catcher_2/catcher_2.dart'; import 'package:dio/dio.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:html/parser.dart'; @@ -12,36 +13,42 @@ part 'song_link.freezed.dart'; part 'song_link.g.dart'; abstract class SongLinkService { + static final dio = Dio(); static Future> links(String spotifyId) async { - final dio = Dio(); + try { + final res = await dio.get( + "https://song.link/s/$spotifyId", + options: Options( + headers: { + "Accept": + "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" + }, + responseType: ResponseType.plain, + ), + ); - final res = await dio.get( - "https://song.link/s/$spotifyId", - options: Options( - headers: { - "Accept": - "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", - "User-Agent": - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" - }, - responseType: ResponseType.plain, - ), - ); + final document = parse(res.data); - final document = parse(res.data); + final script = document.getElementById("__NEXT_DATA__")?.text; - final script = document.getElementById("__NEXT_DATA__")?.text; + if (script == null) { + return []; + } - if (script == null) { + final pageProps = jsonDecode(script) as Map; + final songLinks = pageProps["props"]?["pageProps"]?["pageData"] + ?["sections"] + ?.firstWhere( + (section) => section?["sectionId"] == "section|auto|links|listen", + )?["links"] as List?; + + return songLinks?.map((link) => SongLink.fromJson(link)).toList() ?? + []; + } catch (e, stackTrace) { + Catcher2.reportCheckedError(e, stackTrace); return []; } - - final pageProps = jsonDecode(script) as Map; - final songLinks = - pageProps["props"]["pageProps"]["pageData"]["sections"].firstWhere( - (section) => section["sectionId"] == "section|auto|links|listen", - )["links"] as List; - - return songLinks.map((link) => SongLink.fromJson(link)).toList(); } } From 17105a640bf5107bd5d333b9b4d097c14a3949a2 Mon Sep 17 00:00:00 2001 From: olivier2 Date: Sun, 25 Feb 2024 11:26:06 -0500 Subject: [PATCH 29/59] fix(android): audio issue when screen is off and broadcast audio session id (#1221 & #1247) * this change fixes the garbled audio on my Pixel 6a while the screen is off. Not familiar with libmpv, but seems to favor audiotrack audio output over opensles. KRTirtho/spotube#571 * get audio session id, send it to AudioTrack in libmpv, broadcast it to other apps. Fixes KRTirtho/spotube#1221 --------- Co-authored-by: Kingkor Roy Tirtho --- .../audio_player/mk_state_player.dart | 46 ++++++++++++++++++- pubspec.yaml | 1 + 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/lib/services/audio_player/mk_state_player.dart b/lib/services/audio_player/mk_state_player.dart index a556afec..04df7111 100644 --- a/lib/services/audio_player/mk_state_player.dart +++ b/lib/services/audio_player/mk_state_player.dart @@ -1,8 +1,11 @@ import 'dart:async'; - +import 'package:flutter_desktop_tools/flutter_desktop_tools.dart'; import 'package:catcher_2/catcher_2.dart'; import 'package:collection/collection.dart'; import 'package:media_kit/media_kit.dart'; +import 'package:flutter_broadcasts/flutter_broadcasts.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:audio_session/audio_session.dart'; // ignore: implementation_imports import 'package:spotube/services/audio_player/playback_state.dart'; @@ -14,6 +17,13 @@ class MkPlayerWithState extends Player { final StreamController _shuffleStream; final StreamController _loopModeStream; + static const String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME"; + static const String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION"; + static const String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = + "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"; + static const String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = + "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION"; + late final List _subscriptions; bool _shuffled; @@ -21,6 +31,9 @@ class MkPlayerWithState extends Player { Playlist? _playlist; List? _tempMedias; + int _androidAudioSessionId = 0; + String _packageName = ""; + AndroidAudioManager? _androidAudioManager; MkPlayerWithState({super.configuration}) : _playerStateStream = StreamController.broadcast(), @@ -64,6 +77,34 @@ class MkPlayerWithState extends Player { Catcher2.reportCheckedError('[MediaKitError] \n$event', null); }), ]; + PackageInfo.fromPlatform().then((packageInfo) { + _packageName = packageInfo.packageName; + }); + if (DesktopTools.platform.isAndroid) { + _androidAudioManager = AndroidAudioManager(); + AudioSession.instance.then((s) async { + _androidAudioSessionId = + await _androidAudioManager!.generateAudioSessionId(); + notifyAudioSessionUpdate(true); + + nativePlayer.setProperty( + "audiotrack-session-id", _androidAudioSessionId.toString()); + nativePlayer.setProperty("ao", "audiotrack,opensles,"); + }); + } + } + + Future notifyAudioSessionUpdate(bool active) async { + if (DesktopTools.platform.isAndroid) { + sendBroadcast(BroadcastMessage( + name: active + ? ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION + : ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION, + data: { + EXTRA_AUDIO_SESSION: _androidAudioSessionId, + EXTRA_PACKAGE_NAME: _packageName + })); + } } bool get shuffled => _shuffled; @@ -140,10 +181,11 @@ class MkPlayerWithState extends Player { } @override - Future dispose() { + Future dispose() async { for (var element in _subscriptions) { element.cancel(); } + await notifyAudioSessionUpdate(false); return super.dispose(); } diff --git a/pubspec.yaml b/pubspec.yaml index 9bacf6dd..53da7ba7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -124,6 +124,7 @@ dependencies: app_links: ^3.5.0 win32_registry: ^1.1.2 flutter_sharing_intent: ^1.1.0 + flutter_broadcasts: ^0.4.0 freezed_annotation: ^2.4.1 dev_dependencies: From 4d6af8c0a7c685840b5c28ff95a0f4aec4b9e0c3 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 22:48:27 +0600 Subject: [PATCH 30/59] chore: add translations for getting started screen --- lib/l10n/app_en.arb | 20 +- .../getting_started/getting_started.dart | 3 +- .../getting_started/sections/greeting.dart | 9 +- .../getting_started/sections/playback.dart | 27 +- .../getting_started/sections/region.dart | 8 +- .../getting_started/sections/support.dart | 15 +- untranslated_messages.json | 360 +++++++++++++++++- 7 files changed, 396 insertions(+), 46 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 6b684d48..8257eac9 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -295,5 +295,23 @@ "delete_playlist": "Delete Playlist", "delete_playlist_confirmation": "Are you sure you want to delete this playlist?", "local_tracks": "Local Tracks", - "song_link": "Song Link" + "song_link": "Song Link", + "skip_this_nonsense": "Skip this nonsense", + "freedom_of_music": "“Freedom of Music”", + "freedom_of_music_palm": "“Freedom of Music in the palm of your hand”", + "get_started": "Let's get started", + "youtube_source_description": "Recommended and works best.", + "piped_source_description": "Feeling free? Same as YouTube but a lot free.", + "jiosaavn_source_description": "Best for South Asian region.", + "highest_quality": "Highest Quality: {quality}", + "select_audio_source": "Select Audio Source", + "endless_playback_description": "Automatically append new songs\nto the end of the queue", + "choose_your_region": "Choose your region", + "choose_your_region_description": "This will help Spotube show you the right content\nfor your location.", + "choose_your_language": "Choose your language", + "help_project_grow": "Help this project grow", + "help_project_grow_description": "Spotube is an open-source project. You can help this project grow by contributing to the project, reporting bugs, or suggesting new features.", + "contribute_on_github": "Contribute on GitHub", + "donate_on_open_collective": "Donate on Open Collective", + "browse_anonymously": "Browse Anonymously" } \ No newline at end of file diff --git a/lib/pages/getting_started/getting_started.dart b/lib/pages/getting_started/getting_started.dart index 47cfda03..724fb346 100644 --- a/lib/pages/getting_started/getting_started.dart +++ b/lib/pages/getting_started/getting_started.dart @@ -3,6 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/collections/assets.gen.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/pages/getting_started/sections/greeting.dart'; import 'package:spotube/pages/getting_started/sections/playback.dart'; import 'package:spotube/pages/getting_started/sections/region.dart'; @@ -51,7 +52,7 @@ class GettingStarting extends HookConsumerWidget { ); }, child: Text( - "Skip this nonsense", + context.l10n.skip_this_nonsense, style: TextStyle( decoration: TextDecoration.underline, decorationColor: colorScheme.primary, diff --git a/lib/pages/getting_started/sections/greeting.dart b/lib/pages/getting_started/sections/greeting.dart index 459500e3..563e43de 100644 --- a/lib/pages/getting_started/sections/greeting.dart +++ b/lib/pages/getting_started/sections/greeting.dart @@ -1,11 +1,10 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/collections/assets.gen.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/utils/platform.dart'; class GettingStartedPageGreetingSection extends HookConsumerWidget { @@ -30,7 +29,9 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget { ), const Gap(4), Text( - "“Freedom of music${kIsMobile ? "in the palm of your hands" : ""}”", + kIsMobile + ? context.l10n.freedom_of_music_palm + : context.l10n.freedom_of_music, textAlign: TextAlign.center, style: textTheme.titleMedium?.copyWith( fontWeight: FontWeight.w300, @@ -43,7 +44,7 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget { child: FilledButton.icon( onPressed: onNext, icon: const Icon(SpotubeIcons.angleRight), - label: const Text("Let's get started"), + label: Text(context.l10n.get_started), ), ), ], diff --git a/lib/pages/getting_started/sections/playback.dart b/lib/pages/getting_started/sections/playback.dart index 03d11f9b..e94a06cc 100644 --- a/lib/pages/getting_started/sections/playback.dart +++ b/lib/pages/getting_started/sections/playback.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:gap/gap.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/collections/assets.gen.dart'; @@ -18,14 +19,6 @@ final audioSourceToIconMap = { AudioSource.jiosaavn: Assets.jiosaavn.image(width: 48, height: 48), }; -final audioSourceToDescription = { - AudioSource.youtube: - "Recommended and works best.\nHighest quality: 148kbps mp4, 128kbps opus", - AudioSource.piped: "Feeling free? Same as YouTube but a lot free", - AudioSource.jiosaavn: - "Best for South Asian region.\nHighest quality: 320kbps mp4", -}; - class GettingStartedPagePlaybackSection extends HookConsumerWidget { final VoidCallback onNext; final VoidCallback onPrevious; @@ -43,6 +36,17 @@ class GettingStartedPagePlaybackSection extends HookConsumerWidget { final preferences = ref.watch(userPreferencesProvider); final preferencesNotifier = ref.read(userPreferencesProvider.notifier); + final audioSourceToDescription = useMemoized( + () => { + AudioSource.youtube: "${context.l10n.youtube_source_description}\n" + "${context.l10n.highest_quality("148kbps mp4, 128kbps opus")}", + AudioSource.piped: context.l10n.piped_source_description, + AudioSource.jiosaavn: + "${context.l10n.jiosaavn_source_description}\n" + "${context.l10n.highest_quality("320kbps mp")}", + }, + []); + return Center( child: BlurCard( child: Column( @@ -57,7 +61,10 @@ class GettingStartedPagePlaybackSection extends HookConsumerWidget { ), const Gap(16), ListTile( - title: Text("Select Audio Source", style: textTheme.titleMedium), + title: Text( + context.l10n.select_audio_source, + style: textTheme.titleMedium, + ), ), const Gap(16), ToggleButtons( @@ -111,7 +118,7 @@ class GettingStartedPagePlaybackSection extends HookConsumerWidget { ListTile( title: Text(context.l10n.endless_playback), subtitle: Text( - "Automatically append new songs\nto the end of the queue", + context.l10n.endless_playback_description, style: textTheme.bodySmall?.copyWith( color: dividerColor, ), diff --git a/lib/pages/getting_started/sections/region.dart b/lib/pages/getting_started/sections/region.dart index 23885d50..9303392c 100644 --- a/lib/pages/getting_started/sections/region.dart +++ b/lib/pages/getting_started/sections/region.dart @@ -33,7 +33,7 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget { ), const SizedBox(width: 8), Text( - "Language and Region", + context.l10n.language_region, style: textTheme.titleMedium, ), ], @@ -44,11 +44,11 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget { mainAxisSize: MainAxisSize.min, children: [ Text( - "Choose your region", + context.l10n.choose_your_region, style: textTheme.titleSmall, ), Text( - "This will help us show you the right content\nfor your location.", + context.l10n.choose_your_region_description, style: textTheme.bodySmall?.copyWith( color: dividerColor, ), @@ -76,7 +76,7 @@ class GettingStartedPageLanguageRegionSection extends HookConsumerWidget { ), const Gap(36), Text( - "Choose your language", + context.l10n.choose_your_language, style: textTheme.titleSmall, ), const Gap(16), diff --git a/lib/pages/getting_started/sections/support.dart b/lib/pages/getting_started/sections/support.dart index 9b798f56..1be7ca34 100644 --- a/lib/pages/getting_started/sections/support.dart +++ b/lib/pages/getting_started/sections/support.dart @@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/getting_started/blur_card.dart'; +import 'package:spotube/extensions/context.dart'; import 'package:spotube/services/kv_store/kv_store.dart'; import 'package:url_launcher/url_launcher_string.dart'; @@ -28,16 +29,14 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { const Icon(SpotubeIcons.heartFilled, color: Colors.pink), const SizedBox(width: 8), Text( - "Help this project grow", + context.l10n.help_project_grow, style: textTheme.titleMedium?.copyWith(color: Colors.pink), ), ], ), const Gap(16), - const Text( - "Spotube is an open-source project. You can help this project grow by contributing to the project, reporting bugs, or suggesting new features.", - ), + Text(context.l10n.help_project_grow_description), const Gap(16), Column( mainAxisSize: MainAxisSize.min, @@ -45,7 +44,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { children: [ FilledButton.icon( icon: const Icon(SpotubeIcons.github), - label: const Text("Contribute on GitHub"), + label: Text(context.l10n.contribute_on_github), style: FilledButton.styleFrom( backgroundColor: Colors.black, foregroundColor: Colors.white, @@ -63,7 +62,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { const Gap(16), FilledButton.icon( icon: const Icon(SpotubeIcons.openCollective), - label: const Text("Donate on Open Collective"), + label: Text(context.l10n.donate_on_open_collective), style: FilledButton.styleFrom( backgroundColor: const Color(0xff4cb7f6), foregroundColor: Colors.white, @@ -98,7 +97,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { ), child: TextButton.icon( icon: const Icon(SpotubeIcons.anonymous), - label: const Text("Browse anonymously"), + label: Text(context.l10n.browse_anonymously), style: TextButton.styleFrom( foregroundColor: Colors.white, ), @@ -111,7 +110,7 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { const Gap(16), FilledButton.icon( icon: const Icon(SpotubeIcons.spotify), - label: const Text("Connect Spotify Account"), + label: Text(context.l10n.connect_with_spotify), style: FilledButton.styleFrom( backgroundColor: const Color(0xff1db954), foregroundColor: Colors.white, diff --git a/untranslated_messages.json b/untranslated_messages.json index cc14528c..3ff7a2f1 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -8,7 +8,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "bn": [ @@ -20,7 +38,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "ca": [ @@ -32,7 +68,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "de": [ @@ -44,7 +98,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "es": [ @@ -56,7 +128,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "fa": [ @@ -68,7 +158,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "fr": [ @@ -80,7 +188,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "hi": [ @@ -92,7 +218,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "it": [ @@ -104,7 +248,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "ja": [ @@ -116,7 +278,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "ne": [ @@ -128,7 +308,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "nl": [ @@ -141,7 +339,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "pl": [ @@ -153,7 +369,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "pt": [ @@ -165,7 +399,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "ru": [ @@ -177,7 +429,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "tr": [ @@ -189,7 +459,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "uk": [ @@ -201,7 +489,25 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ], "zh": [ @@ -213,6 +519,24 @@ "delete_playlist", "delete_playlist_confirmation", "local_tracks", - "song_link" + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" ] } From 1fa6d1f8199b3029b2a90e399bc9eeed522c3a64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:50:08 +0600 Subject: [PATCH 31/59] chore(deps): bump dio from 5.3.3 to 5.4.1 (#1243) Bumps [dio](https://github.com/cfug/dio) from 5.3.3 to 5.4.1. - [Release notes](https://github.com/cfug/dio/releases) - [Commits](https://github.com/cfug/dio/compare/dio_v5.3.3...dio_v5.4.1) --- updated-dependencies: - dependency-name: dio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pubspec.lock | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index b9268b56..eb410177 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -470,10 +470,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7" + sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8" url: "https://pub.dev" source: hosted - version: "5.3.3" + version: "5.4.1" disable_battery_optimization: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 53da7ba7..e953f442 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -27,7 +27,7 @@ dependencies: dbus: ^0.7.8 device_info_plus: ^9.0.3 device_preview: ^1.1.0 - dio: ^5.3.2 + dio: ^5.4.1 disable_battery_optimization: ^1.1.0+1 duration: ^3.0.12 envied: ^0.3.0 From 59a819be9cf07b9d4c0f1cd0b30a04df878bacdd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:50:40 +0600 Subject: [PATCH 32/59] chore(deps): bump flutter_riverpod from 2.4.3 to 2.4.10 (#1212) Bumps [flutter_riverpod](https://github.com/rrousselGit/riverpod) from 2.4.3 to 2.4.10. - [Commits](https://github.com/rrousselGit/riverpod/compare/flutter_riverpod-v2.4.3...flutter_riverpod-v2.4.10) --- updated-dependencies: - dependency-name: flutter_riverpod dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pubspec.lock | 80 +++++++++++++++++++++------------------------------- pubspec.yaml | 2 +- 2 files changed, 33 insertions(+), 49 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index eb410177..c31f6dec 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -543,10 +543,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "6.1.4" file_picker: dependency: "direct main" description: @@ -855,10 +855,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: e667e406a74d67715f1fa0bd941d9ded49aff72f3a9f4440a36aece4e8d457a7 + sha256: "4bce556b7ecbfea26109638d5237684538d4abc509d253e6c5c4c5733b360098" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.10" flutter_rust_bridge: dependency: transitive description: @@ -1078,10 +1078,10 @@ packages: dependency: "direct main" description: name: hooks_riverpod - sha256: "69dcb88acbc68c81fc27ec15a89a4e24b7812c83c13a6307a1a9366ada758541" + sha256: "758b07eba336e3cbacbd81dba481f2228a14102083fdde07045e8514e8054c49" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.10" html: dependency: "direct main" description: @@ -1263,30 +1263,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.2" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" - url: "https://pub.dev" - source: hosted - version: "10.0.0" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 - url: "https://pub.dev" - source: hosted - version: "2.0.1" lints: dependency: transitive description: @@ -1331,18 +1307,18 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.5.0" media_kit: dependency: "direct main" description: @@ -1411,10 +1387,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.10.0" metadata_god: dependency: "direct main" description: @@ -1499,10 +1475,10 @@ packages: dependency: "direct main" description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.8.3" path_drawing: dependency: transitive description: @@ -1628,10 +1604,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: @@ -1668,10 +1644,10 @@ packages: dependency: transitive description: name: process - sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "4.2.4" provider: dependency: transitive description: @@ -1732,10 +1708,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "494bf2cfb4df30000273d3052bdb1cc1de738574c6b678f0beb146ea56f5e208" + sha256: "548e2192eb7aeb826eb89387f814edb76594f3363e2c0bb99dd733d795ba3589" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.5.0" rxdart: dependency: transitive description: @@ -2250,10 +2226,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "11.10.0" watcher: dependency: transitive description: @@ -2262,6 +2238,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -2274,10 +2258,10 @@ packages: dependency: transitive description: name: webdriver - sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.2" wikipedia_api: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index e953f442..86366aa7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,7 +50,7 @@ dependencies: flutter_localizations: sdk: flutter flutter_native_splash: ^2.3.3 - flutter_riverpod: ^2.4.3 + flutter_riverpod: ^2.4.10 flutter_secure_storage: ^9.0.0 flutter_svg: ^1.1.6 form_validator: ^2.1.1 From 920d4219f04e43a28172fa84a24525adc6d9a5e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:53:25 +0600 Subject: [PATCH 33/59] chore(deps): bump flutter_native_splash from 2.3.3 to 2.3.10 (#1176) Bumps [flutter_native_splash](https://github.com/jonbhanson/flutter_native_splash) from 2.3.3 to 2.3.10. - [Release notes](https://github.com/jonbhanson/flutter_native_splash/releases) - [Changelog](https://github.com/jonbhanson/flutter_native_splash/blob/master/CHANGELOG.md) - [Commits](https://github.com/jonbhanson/flutter_native_splash/commits) --- updated-dependencies: - dependency-name: flutter_native_splash dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kingkor Roy Tirtho --- pubspec.lock | 24 ++++++++++++++++-------- pubspec.yaml | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index c31f6dec..0c42b3ef 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.13.0" + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" + url: "https://pub.dev" + source: hosted + version: "2.0.2" app_links: dependency: "direct main" description: @@ -839,10 +847,10 @@ packages: dependency: "direct main" description: name: flutter_native_splash - sha256: "91004565166dbbc7a85e7e99b84124a287839830ca957cfe45004793fe6fe69f" + sha256: "558f10070f03ee71f850a78f7136ab239a67636a294a44a06b6b7345178edb1e" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.10" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -1587,10 +1595,10 @@ packages: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "6.0.2" piped_client: dependency: "direct main" description: @@ -1692,10 +1700,10 @@ packages: dependency: transitive description: name: puppeteer - sha256: "59e723cc5b69537159a7c34efd645dc08a6a1ac4647d7d7823606802c0f93cdb" + sha256: eedeaae6ec5d2e54f9ae22ab4d6b3dda2e8791c356cc783046d06c287ffe11d8 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.6.0" quiver: dependency: transitive description: @@ -2315,10 +2323,10 @@ packages: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.5.0" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 86366aa7..5802b341 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,7 +49,7 @@ dependencies: flutter_inappwebview: ^5.7.2+3 flutter_localizations: sdk: flutter - flutter_native_splash: ^2.3.3 + flutter_native_splash: ^2.3.10 flutter_riverpod: ^2.4.10 flutter_secure_storage: ^9.0.0 flutter_svg: ^1.1.6 From befaf59f0c173b3a60637c1ce49e2e935f77fbed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:53:47 +0600 Subject: [PATCH 34/59] chore(deps): bump flutter_lints from 2.0.3 to 3.0.1 (#1147) Bumps [flutter_lints](https://github.com/flutter/packages/tree/main/packages) from 2.0.3 to 3.0.1. - [Release notes](https://github.com/flutter/packages/releases) - [Commits](https://github.com/flutter/packages/commits/flutter_lints-v3.0.1/packages) --- updated-dependencies: - dependency-name: flutter_lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pubspec.lock | 8 ++++---- pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 0c42b3ef..1a0278a2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -826,10 +826,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7 url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "3.0.1" flutter_localizations: dependency: "direct main" description: flutter @@ -1275,10 +1275,10 @@ packages: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "3.0.0" local_notifier: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5802b341..5c05ed1c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -133,7 +133,7 @@ dev_dependencies: flutter_distributor: ^0.0.2 flutter_gen_runner: ^5.1.0+1 flutter_launcher_icons: ^0.13.1 - flutter_lints: ^2.0.1 + flutter_lints: ^3.0.1 flutter_test: sdk: flutter integration_test: From 27e7d532f0c758670d4b7ac21437511e91ee96c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:54:11 +0600 Subject: [PATCH 35/59] chore(deps): bump audio_session from 0.1.16 to 0.1.18 (#1146) Bumps [audio_session](https://github.com/ryanheise/audio_session) from 0.1.16 to 0.1.18. - [Release notes](https://github.com/ryanheise/audio_session/releases) - [Changelog](https://github.com/ryanheise/audio_session/blob/master/CHANGELOG.md) - [Commits](https://github.com/ryanheise/audio_session/compare/v0.1.16...v0.1.18) --- updated-dependencies: - dependency-name: audio_session dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pubspec.lock | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 1a0278a2..fdc8d627 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -157,10 +157,10 @@ packages: dependency: "direct main" description: name: audio_session - sha256: "8a2bc5e30520e18f3fb0e366793d78057fb64cd5287862c76af0c8771f2a52ad" + sha256: "6fdf255ed3af86535c96452c33ecff1245990bb25a605bfb1958661ccc3d467f" url: "https://pub.dev" source: hosted - version: "0.1.16" + version: "0.1.18" auto_size_text: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 5c05ed1c..a434a2f0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: args: ^2.3.2 async: ^2.9.0 audio_service: ^0.18.9 - audio_session: ^0.1.13 + audio_session: ^0.1.18 auto_size_text: ^3.0.0 buttons_tabbar: ^1.3.6 cached_network_image: ^3.3.0 From 0ae6af61c97de6e06e69fd9638544349622c5962 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sun, 25 Feb 2024 23:06:40 +0600 Subject: [PATCH 36/59] chore: untranslated messages --- .../settings/sections/language_region.dart | 2 +- pubspec.lock | 76 ++++++++++++------- untranslated_messages.json | 32 ++++++++ 3 files changed, 83 insertions(+), 27 deletions(-) diff --git a/lib/pages/settings/sections/language_region.dart b/lib/pages/settings/sections/language_region.dart index 9465feb3..fbfe1030 100644 --- a/lib/pages/settings/sections/language_region.dart +++ b/lib/pages/settings/sections/language_region.dart @@ -12,7 +12,7 @@ import 'package:spotube/l10n/l10n.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; class SettingsLanguageRegionSection extends HookConsumerWidget { - const SettingsLanguageRegionSection({Key? key}) : super(key: key); + const SettingsLanguageRegionSection({super.key}); @override Widget build(BuildContext context, ref) { diff --git a/pubspec.lock b/pubspec.lock index fdc8d627..fbdb19fc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -551,10 +551,10 @@ packages: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" file_picker: dependency: "direct main" description: @@ -688,6 +688,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.9" + flutter_broadcasts: + dependency: "direct main" + description: + name: flutter_broadcasts + sha256: "9e76eeeda4a9faef63e3b08af5664c79219a2eabffc8ce95296858ea70423b1e" + url: "https://pub.dev" + source: hosted + version: "0.4.0" flutter_cache_manager: dependency: "direct main" description: @@ -1271,6 +1279,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.2" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" lints: dependency: transitive description: @@ -1315,18 +1347,18 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" media_kit: dependency: "direct main" description: @@ -1395,10 +1427,10 @@ packages: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" metadata_god: dependency: "direct main" description: @@ -1483,10 +1515,10 @@ packages: dependency: "direct main" description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_drawing: dependency: transitive description: @@ -1612,10 +1644,10 @@ packages: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: @@ -1652,10 +1684,10 @@ packages: dependency: transitive description: name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "5.0.2" provider: dependency: transitive description: @@ -2234,10 +2266,10 @@ packages: dependency: transitive description: name: vm_service - sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 url: "https://pub.dev" source: hosted - version: "11.10.0" + version: "13.0.0" watcher: dependency: transitive description: @@ -2246,14 +2278,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - web: - dependency: transitive - description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 - url: "https://pub.dev" - source: hosted - version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -2266,10 +2290,10 @@ packages: dependency: transitive description: name: webdriver - sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" wikipedia_api: dependency: "direct main" description: diff --git a/untranslated_messages.json b/untranslated_messages.json index 3ff7a2f1..14eead0f 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -510,6 +510,38 @@ "browse_anonymously" ], + "vi": [ + "sort_duration", + "friends", + "no_lyrics_available", + "start_a_radio", + "how_to_start_radio", + "replace_queue_question", + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation", + "local_tracks", + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" + ], + "zh": [ "sort_duration", "start_a_radio", From e6a20b5a1674b6af25121fafaefffa55d5557342 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 26 Feb 2024 10:05:50 +0600 Subject: [PATCH 37/59] chore: fix add null check before accessing auth cookie from hive box #1264 --- lib/collections/routes.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart index 7b0d836d..43d0cf2e 100644 --- a/lib/collections/routes.dart +++ b/lib/collections/routes.dart @@ -50,7 +50,7 @@ final routerProvider = Provider((ref) { ref.read(AuthenticationNotifier.provider.notifier); final json = await authNotifier.box.get(authNotifier.cacheKey); - if (json["cookie"] == null && + if (json?["cookie"] == null && !KVStoreService.doneGettingStarted) { return "/getting-started"; } From a9a1d4c9dc24aaf3181dc4090d1822ebfe755991 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 1 Mar 2024 18:55:33 +0600 Subject: [PATCH 38/59] fix: album, artist page not loading #1282 --- lib/pages/album/album.dart | 9 +-- .../spotify_endpoints.dart | 55 ------------------- lib/services/queries/artist.dart | 7 +-- pubspec.lock | 25 ++++++--- pubspec.yaml | 8 ++- 5 files changed, 29 insertions(+), 75 deletions(-) diff --git a/lib/pages/album/album.dart b/lib/pages/album/album.dart index 72f9a9af..4578aea2 100644 --- a/lib/pages/album/album.dart +++ b/lib/pages/album/album.dart @@ -15,9 +15,9 @@ import 'package:spotube/utils/type_conversion_utils.dart'; class AlbumPage extends HookConsumerWidget { final AlbumSimple album; const AlbumPage({ - Key? key, + super.key, required this.album, - }) : super(key: key); + }); @override Widget build(BuildContext context, ref) { @@ -69,8 +69,9 @@ class AlbumPage extends HookConsumerWidget { shareUrl: album.externalUrls!.spotify!, isLiked: isLiked, onHeart: albumIsSaved.hasData - ? () { - toggleAlbumLike.mutate(isLiked); + ? () async { + await toggleAlbumLike.mutate(isLiked); + return null; } : null, child: const TrackView(), diff --git a/lib/services/custom_spotify_endpoints/spotify_endpoints.dart b/lib/services/custom_spotify_endpoints/spotify_endpoints.dart index e27b701b..d1c078a7 100644 --- a/lib/services/custom_spotify_endpoints/spotify_endpoints.dart +++ b/lib/services/custom_spotify_endpoints/spotify_endpoints.dart @@ -175,59 +175,4 @@ class CustomSpotifyEndpoints { ); return SpotifyFriends.fromJson(jsonDecode(res.body)); } - - Future artist({required String id}) async { - final pathQuery = "$_baseUrl/artists/$id"; - - final res = await _client.get( - Uri.parse(pathQuery), - headers: { - "content-type": "application/json", - if (accessToken.isNotEmpty) "authorization": "Bearer $accessToken", - "accept": "application/json", - }, - ); - final data = jsonDecode(res.body); - - return Artist.fromJson(_purifyArtistResponse(data)); - } - - Future> relatedArtists({required String id}) async { - final pathQuery = "$_baseUrl/artists/$id/related-artists"; - - final res = await _client.get( - Uri.parse(pathQuery), - headers: { - "content-type": "application/json", - if (accessToken.isNotEmpty) "authorization": "Bearer $accessToken", - "accept": "application/json", - }, - ); - - final data = jsonDecode(res.body); - - return List.castFrom( - data["artists"] - .map((artist) => Artist.fromJson(_purifyArtistResponse(artist))) - .toList(), - ); - } - - Map _purifyArtistResponse(Map data) { - if (data["popularity"] != null) { - data["popularity"] = data["popularity"].toInt(); - } - if (data["followers"]?["total"] != null) { - data["followers"]["total"] = data["followers"]["total"].toInt(); - } - if (data["images"] != null) { - data["images"] = data["images"].map((e) { - e["height"] = e["height"].toInt(); - e["width"] = e["width"].toInt(); - return e; - }).toList(); - } - - return data; - } } diff --git a/lib/services/queries/artist.dart b/lib/services/queries/artist.dart index 5ccc4955..1b939c82 100644 --- a/lib/services/queries/artist.dart +++ b/lib/services/queries/artist.dart @@ -4,7 +4,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/hooks/spotify/use_spotify_infinite_query.dart'; import 'package:spotube/hooks/spotify/use_spotify_query.dart'; -import 'package:spotube/provider/custom_spotify_endpoint_provider.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; import 'package:spotube/services/wikipedia/wikipedia.dart'; import 'package:wikipedia_api/wikipedia_api.dart'; @@ -16,10 +15,9 @@ class ArtistQueries { WidgetRef ref, String artist, ) { - final customSpotify = ref.watch(customSpotifyEndpointProvider); return useSpotifyQuery( "artist-profile/$artist", - (spotify) => customSpotify.artist(id: artist), + (spotify) => spotify.artists.get(artist), ref: ref, ); } @@ -127,11 +125,10 @@ class ArtistQueries { WidgetRef ref, String artist, ) { - final customSpotify = ref.watch(customSpotifyEndpointProvider); return useSpotifyQuery, dynamic>( "artist-related-artist-query/$artist", (spotify) { - return customSpotify.relatedArtists(id: artist); + return spotify.artists.relatedArtists(artist); }, ref: ref, ); diff --git a/pubspec.lock b/pubspec.lock index fbdb19fc..b3658253 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1118,10 +1118,10 @@ packages: dependency: "direct main" description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.1" http_multi_server: dependency: transitive description: @@ -1961,11 +1961,12 @@ packages: spotify: dependency: "direct main" description: - name: spotify - sha256: e967c5e295792e9d38f4c5e9e60d7c2868ed9cb2a8fac2a67c75303f8395e374 - url: "https://pub.dev" - source: hosted - version: "0.12.0" + path: "." + ref: fix-spotify-precision + resolved-ref: "1ddea720130203021a815253e37ebe5c06845dd2" + url: "https://github.com/KRTirtho/spotify-dart.git" + source: git + version: "0.13.1" sqflite: dependency: transitive description: @@ -2278,6 +2279,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: "1d9158c616048c38f712a6646e317a3426da10e884447626167240d45209cbad" + url: "https://pub.dev" + source: hosted + version: "0.5.0" web_socket_channel: dependency: transitive description: @@ -2368,5 +2377,5 @@ packages: source: hosted version: "2.0.2" sdks: - dart: ">=3.2.0 <4.0.0" + dart: ">=3.3.0 <4.0.0" flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index a434a2f0..6fbfa8b7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,7 +61,7 @@ dependencies: hive_flutter: ^1.1.0 hooks_riverpod: ^2.4.3 html: ^0.15.1 - http: ^1.1.0 + http: ^1.2.0 image_picker: ^1.0.4 intl: ^0.18.0 introduction_screen: ^3.0.2 @@ -89,7 +89,10 @@ dependencies: shared_preferences: ^2.2.2 skeleton_text: ^3.0.1 smtc_windows: ^0.1.1 - spotify: ^0.12.0 + spotify: + git: + url: https://github.com/KRTirtho/spotify-dart.git + ref: fix-spotify-precision stroke_text: ^0.0.2 system_theme: ^2.1.0 titlebar_buttons: ^1.0.0 @@ -145,7 +148,6 @@ dev_dependencies: freezed: ^2.4.6 dependency_overrides: - http: ^1.1.0 system_tray: 2.0.2 flutter: From b0970090b1bcc941d51603f4fc34e3a400decd40 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 1 Mar 2024 19:16:52 +0600 Subject: [PATCH 39/59] chore: add song link text in player view shortcut --- lib/components/player/player.dart | 14 +- lib/pages/album/album.dart | 1 + lib/pages/home/genres/genre_playlists.dart | 212 ++++++++++----------- lib/pages/home/genres/genres.dart | 2 +- 4 files changed, 115 insertions(+), 114 deletions(-) diff --git a/lib/components/player/player.dart b/lib/components/player/player.dart index a43fcbca..01e38670 100644 --- a/lib/components/player/player.dart +++ b/lib/components/player/player.dart @@ -138,12 +138,17 @@ class PlayerView extends HookConsumerWidget { onPressed: panelController.close, ), actions: [ - IconButton( - icon: Assets.logos.songlink.image( + TextButton.icon( + icon: Assets.logos.songlinkTransparent.image( width: 20, height: 20, + color: bodyTextColor, + ), + label: Text(context.l10n.song_link), + style: TextButton.styleFrom( + foregroundColor: bodyTextColor, + padding: EdgeInsets.zero, ), - tooltip: context.l10n.song_link, onPressed: currentTrack == null ? null : () { @@ -157,7 +162,8 @@ class PlayerView extends HookConsumerWidget { icon: const Icon(SpotubeIcons.info, size: 18), tooltip: context.l10n.details, style: IconButton.styleFrom( - foregroundColor: bodyTextColor), + foregroundColor: bodyTextColor, + ), onPressed: currentTrack == null ? null : () { diff --git a/lib/pages/album/album.dart b/lib/pages/album/album.dart index 4578aea2..6cba99f6 100644 --- a/lib/pages/album/album.dart +++ b/lib/pages/album/album.dart @@ -47,6 +47,7 @@ class AlbumPage extends HookConsumerWidget { image: TypeConversionUtils.image_X_UrlString( album.images, placeholder: ImagePlaceholder.albumArt, + index: 0, ), title: album.name!, description: diff --git a/lib/pages/home/genres/genre_playlists.dart b/lib/pages/home/genres/genre_playlists.dart index 78f32245..bfb0843c 100644 --- a/lib/pages/home/genres/genre_playlists.dart +++ b/lib/pages/home/genres/genre_playlists.dart @@ -18,8 +18,7 @@ import 'package:flutter_desktop_tools/flutter_desktop_tools.dart'; class GenrePlaylistsPage extends HookConsumerWidget { final Category category; - const GenrePlaylistsPage({Key? key, required this.category}) - : super(key: key); + const GenrePlaylistsPage({super.key, required this.category}); @override Widget build(BuildContext context, ref) { @@ -51,123 +50,118 @@ class GenrePlaylistsPage extends HookConsumerWidget { ) : null, extendBodyBehindAppBar: true, - body: CustomScrollView( - controller: scrollController, - slivers: [ - SliverAppBar( - automaticallyImplyLeading: DesktopTools.platform.isMobile, - expandedHeight: mediaQuery.mdAndDown ? 200 : 150, - pinned: true, - floating: false, - title: const Text(""), - backgroundColor: Colors.brown.withOpacity(0.7), - flexibleSpace: FlexibleSpaceBar( - stretchModes: const [ - StretchMode.zoomBackground, - StretchMode.blurBackground, - ], - background: DecoratedBox( - decoration: BoxDecoration( - image: DecorationImage( - image: UniversalImage.imageProvider( - category.icons!.first.url!, - ), - fit: BoxFit.cover, + body: DecoratedBox( + decoration: BoxDecoration( + image: DecorationImage( + image: UniversalImage.imageProvider(category.icons!.first.url!), + alignment: Alignment.topCenter, + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.black.withOpacity(0.5), + BlendMode.darken, + ), + repeat: ImageRepeat.noRepeat, + matchTextDirection: true, + ), + ), + child: CustomScrollView( + controller: scrollController, + slivers: [ + SliverAppBar( + automaticallyImplyLeading: DesktopTools.platform.isMobile, + expandedHeight: mediaQuery.mdAndDown ? 200 : 150, + title: const Text(""), + backgroundColor: Colors.transparent, + flexibleSpace: FlexibleSpaceBar( + centerTitle: DesktopTools.platform.isDesktop, + title: Text( + category.name!, + style: Theme.of(context).textTheme.headlineMedium?.copyWith( + color: Colors.white, + letterSpacing: 3, + shadows: [ + const Shadow( + offset: Offset(-1.5, -1.5), + color: Colors.black54, + ), + const Shadow( + offset: Offset(1.5, -1.5), + color: Colors.black54, + ), + const Shadow( + offset: Offset(1.5, 1.5), + color: Colors.black54, + ), + const Shadow( + offset: Offset(-1.5, 1.5), + color: Colors.black54, + ), + ], ), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), - child: const ColoredBox(color: Colors.transparent), - ), + collapseMode: CollapseMode.parallax, ), - centerTitle: DesktopTools.platform.isDesktop, - title: Text( - category.name!, - style: Theme.of(context).textTheme.headlineMedium?.copyWith( - color: Colors.white, - letterSpacing: 3, - shadows: [ - const Shadow( - offset: Offset(-1.5, -1.5), - color: Colors.black54, - ), - const Shadow( - offset: Offset(1.5, -1.5), - color: Colors.black54, - ), - const Shadow( - offset: Offset(1.5, 1.5), - color: Colors.black54, - ), - const Shadow( - offset: Offset(-1.5, 1.5), - color: Colors.black54, - ), - ], - ), - ), - collapseMode: CollapseMode.parallax, ), - ), - const SliverGap(20), - SliverSafeArea( - top: false, - sliver: SliverPadding( - padding: EdgeInsets.symmetric( - horizontal: mediaQuery.mdAndDown ? 12 : 24, - ), - sliver: playlists.isEmpty - ? Skeletonizer.sliver( - child: SliverToBoxAdapter( - child: Wrap( - spacing: 12, - runSpacing: 12, - children: List.generate( - 6, - (index) => PlaylistCard(FakeData.playlist), + const SliverGap(20), + SliverSafeArea( + top: false, + sliver: SliverPadding( + padding: EdgeInsets.symmetric( + horizontal: mediaQuery.mdAndDown ? 12 : 24, + ), + sliver: playlists.isEmpty + ? Skeletonizer.sliver( + child: SliverToBoxAdapter( + child: Wrap( + spacing: 12, + runSpacing: 12, + children: List.generate( + 6, + (index) => PlaylistCard(FakeData.playlist), + ), ), ), - ), - ) - : SliverGrid.builder( - gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( - maxCrossAxisExtent: 190, - mainAxisExtent: mediaQuery.mdAndDown ? 225 : 250, - crossAxisSpacing: 12, - mainAxisSpacing: 12, - ), - itemCount: playlists.length + 1, - itemBuilder: (context, index) { - final playlist = playlists.elementAtOrNull(index); + ) + : SliverGrid.builder( + gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 190, + mainAxisExtent: mediaQuery.mdAndDown ? 225 : 250, + crossAxisSpacing: 12, + mainAxisSpacing: 12, + ), + itemCount: playlists.length + 1, + itemBuilder: (context, index) { + final playlist = playlists.elementAtOrNull(index); - if (playlist == null) { - if (!playlistsQuery.hasNextPage) { - return const SizedBox.shrink(); + if (playlist == null) { + if (!playlistsQuery.hasNextPage) { + return const SizedBox.shrink(); + } + return Skeletonizer( + enabled: true, + child: Waypoint( + controller: scrollController, + isGrid: true, + onTouchEdge: () async { + if (playlistsQuery.hasNextPage) { + await playlistsQuery.fetchNext(); + } + }, + child: PlaylistCard(FakeData.playlist), + ), + ); } - return Skeletonizer( - enabled: true, - child: Waypoint( - controller: scrollController, - isGrid: true, - onTouchEdge: () async { - if (playlistsQuery.hasNextPage) { - await playlistsQuery.fetchNext(); - } - }, - child: PlaylistCard(FakeData.playlist), - ), - ); - } - return Skeleton.keep( - child: PlaylistCard(playlist), - ); - }, - ), + return Skeleton.keep( + child: PlaylistCard(playlist), + ); + }, + ), + ), ), - ), - const SliverGap(20), - ], + const SliverGap(20), + ], + ), ), ); } diff --git a/lib/pages/home/genres/genres.dart b/lib/pages/home/genres/genres.dart index dc165fe4..17a67beb 100644 --- a/lib/pages/home/genres/genres.dart +++ b/lib/pages/home/genres/genres.dart @@ -15,7 +15,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart import 'package:spotube/services/queries/queries.dart'; class GenrePage extends HookConsumerWidget { - const GenrePage({Key? key}) : super(key: key); + const GenrePage({super.key}); @override Widget build(BuildContext context, ref) { From 09fac66d26adc61d34ce15344eb1f0121ac8a3da Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 4 Mar 2024 09:47:45 +0600 Subject: [PATCH 40/59] cd: debug upload artifact --- .github/workflows/spotube-release-binary.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 772c9fe2..25fcda31 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -424,6 +424,11 @@ jobs: RELEASE.md5sum RELEASE.sha256sum + - name: Debug With SSH + uses: mxschmitt/action-tmate@v3 + with: + limit-access-to-actor: true + - name: Upload Release Binaries (stable) if: ${{ !inputs.dry_run && inputs.channel == 'stable' }} uses: ncipollo/release-action@v1 From f09ab004bf6b9c6f16622a4e9f7a920a48fb8b9b Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 4 Mar 2024 10:51:41 +0600 Subject: [PATCH 41/59] cd: fix nightly linux tar not getting updated --- .github/workflows/spotube-release-binary.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 25fcda31..aca07c4e 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -181,6 +181,7 @@ jobs: - uses: actions/upload-artifact@v3 + if: ${{ inputs.channel = 'release' }} with: if-no-files-found: error name: Spotube-Release-Binaries @@ -188,6 +189,16 @@ jobs: dist/Spotube-linux-x86_64.deb dist/Spotube-linux-x86_64.rpm dist/spotube-linux-${{ env.BUILD_VERSION }}-x86_64.tar.xz + + - uses: actions/upload-artifact@v3 + if: ${{ inputs.channel = 'nightly' }} + with: + if-no-files-found: error + name: Spotube-Release-Binaries + path: | + dist/Spotube-linux-x86_64.deb + dist/Spotube-linux-x86_64.rpm + dist/spotube-linux-nightly-x86_64.tar.xz - name: Debug With SSH When fails if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} From 2c0b1a57e5a2103ef54c5b45e5a870e0613fc5ff Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Mon, 4 Mar 2024 10:53:00 +0600 Subject: [PATCH 42/59] cd: fix syntax error --- .github/workflows/spotube-release-binary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index aca07c4e..adb99003 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -181,7 +181,7 @@ jobs: - uses: actions/upload-artifact@v3 - if: ${{ inputs.channel = 'release' }} + if: ${{ inputs.channel == 'release' }} with: if-no-files-found: error name: Spotube-Release-Binaries @@ -191,7 +191,7 @@ jobs: dist/spotube-linux-${{ env.BUILD_VERSION }}-x86_64.tar.xz - uses: actions/upload-artifact@v3 - if: ${{ inputs.channel = 'nightly' }} + if: ${{ inputs.channel == 'nightly' }} with: if-no-files-found: error name: Spotube-Release-Binaries From 649d6acfe2d88cceb34eaecd7b5a164aae31cde3 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 18:24:16 +0600 Subject: [PATCH 43/59] chore(macos): enable macos hardened runtime and use spotify from pub --- macos/Runner.xcodeproj/project.pbxproj | 1 + pubspec.lock | 11 +++++------ pubspec.yaml | 5 +---- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index e2e72334..0ee2c9fa 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -582,6 +582,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 88NVGSJ5N3; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Spotube; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; diff --git a/pubspec.lock b/pubspec.lock index b3658253..cc69663d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1961,12 +1961,11 @@ packages: spotify: dependency: "direct main" description: - path: "." - ref: fix-spotify-precision - resolved-ref: "1ddea720130203021a815253e37ebe5c06845dd2" - url: "https://github.com/KRTirtho/spotify-dart.git" - source: git - version: "0.13.1" + name: spotify + sha256: "2308a84511c18ec1e72515a57e28abb1467389549d571c460732b4538c2e34de" + url: "https://pub.dev" + source: hosted + version: "0.13.3" sqflite: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6fbfa8b7..5ccc5bb1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -89,10 +89,6 @@ dependencies: shared_preferences: ^2.2.2 skeleton_text: ^3.0.1 smtc_windows: ^0.1.1 - spotify: - git: - url: https://github.com/KRTirtho/spotify-dart.git - ref: fix-spotify-precision stroke_text: ^0.0.2 system_theme: ^2.1.0 titlebar_buttons: ^1.0.0 @@ -129,6 +125,7 @@ dependencies: flutter_sharing_intent: ^1.1.0 flutter_broadcasts: ^0.4.0 freezed_annotation: ^2.4.1 + spotify: ^0.13.3 dev_dependencies: build_runner: ^2.3.2 From af1ce932a19ea061caf8085f3e78cd6b03a99193 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 18:36:46 +0600 Subject: [PATCH 44/59] docs: add hacker news link in both website and readme --- README.md | 2 ++ website/src/routes/+page.svelte | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 18eb55aa..c59240b2 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Btw it's not just another Electron app 😉 Support me on Patron Buy me a Coffee +[![HackerNews](https://hackerbadge.vercel.app/api?id=39066136&type=dark)](https://news.ycombinator.com/item?id=39066136) + Donate to our Open Collective --- diff --git a/website/src/routes/+page.svelte b/website/src/routes/+page.svelte index 8b78dbc5..7fe0a36f 100644 --- a/website/src/routes/+page.svelte +++ b/website/src/routes/+page.svelte @@ -62,8 +62,12 @@ Download on Flathub +
+ + HackerNews + -
+
Download From fdea9307bbfb8f3f62cfb795bfb3ca58c38c33d9 Mon Sep 17 00:00:00 2001 From: TAE-IN Sappho KIM Date: Tue, 5 Mar 2024 23:52:48 +0900 Subject: [PATCH 45/59] feat(translations): add Korean translation (#1275) * Create Korean translation * More natrual translation on Korean * Add credit of Korean translation --- lib/collections/language_codes.dart | 8 +- lib/l10n/app_ko.arb | 291 ++++++++++++++++++++++++++++ lib/l10n/l10n.dart | 2 + 3 files changed, 297 insertions(+), 4 deletions(-) create mode 100644 lib/l10n/app_ko.arb diff --git a/lib/collections/language_codes.dart b/lib/collections/language_codes.dart index 4754de46..4b7a3a90 100644 --- a/lib/collections/language_codes.dart +++ b/lib/collections/language_codes.dart @@ -353,10 +353,10 @@ abstract class LanguageLocals { // name: "Kongo", // nativeName: "KiKongo", // ), - // "ko": const ISOLanguageName( - // name: "Korean", - // nativeName: "한국어 (韓國語), 조선말 (朝鮮語)", - // ), + "ko": const ISOLanguageName( + name: "Korean", + nativeName: "한국어 (韓國語), 조선말 (朝鮮語)", + ), // "ku": const ISOLanguageName( // name: "Kurdish", // nativeName: "Kurdî, كوردی‎", diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb new file mode 100644 index 00000000..dac5b72a --- /dev/null +++ b/lib/l10n/app_ko.arb @@ -0,0 +1,291 @@ +{ + "guest": "게스트", + "browse": "찾아보기", + "search": "검색", + "library": "라이브러리", + "lyrics": "가사", + "settings": "설정", + "genre_categories_filter": "카테고리 혹은 장르별로 불러오기", + "genre": "장르", + "personalized": "맞춤 추천", + "featured": "인기", + "new_releases": "신곡", + "songs": "노래", + "playing_track": "{track} 을 재생", + "queue_clear_alert": "현재 재생 대기열을 없앱니다。{track_length} 곡이 제거됩니다。\n계속 진행할까요?", + "load_more": "더 불러오기", + "playlists": "플레이리스트", + "artists": "아티스트", + "albums": "앨범", + "tracks": "곡", + "downloads": "다운로드한 곡", + "filter_playlists": "플레이리스트를 필터링", + "liked_tracks": "좋아하는 곡", + "liked_tracks_description": "좋아요를 남긴 곡들", + "create_playlist": "플레이리스트 생성", + "create_a_playlist": "플레이리스트를 생성", + "create": "생성", + "cancel": "취소", + "playlist_name": "플레이리스트명", + "name_of_playlist": "플레이리스트의 이름", + "description": "설명", + "public": "공개", + "collaborative": "공유 플레이리스트", + "search_local_tracks": "기기에 저장된 곡을 검색하기", + "play": "재생", + "delete": "삭제", + "none": "없음", + "sort_a_z": "A-Z 순으로 정렬", + "sort_z_a": "Z-A 순으로 정렬", + "sort_artist": "아티스트 순으로 정렬", + "sort_album": "앨범 순으로 정렬", + "sort_tracks": "곡명 순으로 정렬", + "currently_downloading": "현재 ({tracks_length}) 곡 다운로드 중", + "cancel_all": "모두 취소", + "filter_artist": "아티스트 필터링", + "followers": "{followers} 팔로워", + "add_artist_to_blacklist": "이 아티스트를 블랙리스트에 추가", + "top_tracks": "인기곡", + "fans_also_like": "애청자들이 좋아하는 곡", + "loading": "불러오는 중...", + "artist": "아티스트", + "blacklisted": "블랙리스트", + "following": "팔로우 중", + "follow": "팔로우하기", + "artist_url_copied": "아티스트의 URL 주소를 클립보드에 복사함", + "added_to_queue": "{tracks} 곡을 대기열에 추가함", + "filter_albums": "앨범 필터링", + "synced": "동기화됨", + "plain": "그대로", + "shuffle": "셔플", + "search_tracks": "곡 검색하기", + "released": "공개일", + "error": "에러", + "title": "타이틀", + "time": "길이", + "more_actions": "다른 작업", + "download_count": "({count}) 곡 다운로드", + "add_count_to_playlist": "플레이리스트에 ({count}) 곡을 추가", + "add_count_to_queue": "대기열에 ({count}) 곡을 추가", + "play_count_next": "이 다음에 ({count}) 곡을 재생", + "album": "앨범", + "copied_to_clipboard": "{data} 를 클립보드에 복사함", + "add_to_following_playlists": "{track} 을 이 플레이리스트에 추가", + "add": "추가", + "added_track_to_queue": "대기열에 {track} 을 추가함", + "add_to_queue": "대기열에 추가", + "track_will_play_next": "{track} 을 이 다음에 재생", + "play_next": "이 다음에 재생", + "removed_track_from_queue": "대기열에서 {track} 를 제거함", + "remove_from_queue": "대기열에서 제거", + "remove_from_favorites": "즐겨찾기에서 제거", + "save_as_favorite": "즐겨찾기에 추가", + "add_to_playlist": "플레이리스트에 추가", + "remove_from_playlist": "플레이리스트에서 제거", + "add_to_blacklist": "블랙리스트에 추가", + "remove_from_blacklist": "블랙리스트에서 제거", + "share": "공유", + "mini_player": "미니 플레이어", + "slide_to_seek": "앞뒤로 슬라이드하여 탐색", + "shuffle_playlist": "플레이리스트를 섞기", + "unshuffle_playlist": "플레이리스트를 섞지 않기", + "previous_track": "이전 곡", + "next_track": "다음 곡", + "pause_playback": "일시정지", + "resume_playback": "재개", + "loop_track": "반복 재생", + "repeat_playlist": "플레이리스트 반복", + "queue": "재생 대기열", + "alternative_track_sources": "대체가능한 음악 서버", + "download_track": "곡 다운로드", + "tracks_in_queue": "대기열에 {tracks} 곡이 있음", + "clear_all": "모두 제거", + "show_hide_ui_on_hover": "마우스를 올리면 UI를 표시/숨김", + "always_on_top": "항상 위에 표시", + "exit_mini_player": "미니 플레이어 닫기", + "download_location": "다운로드 경로", + "account": "계정", + "login_with_spotify": "Spotify 계정으로 로그인", + "connect_with_spotify": "Spotify에 연결", + "logout": "로그아웃", + "logout_of_this_account": "이 계정에서 로그아웃", + "language_region": "언어 & 지역", + "language": "언어", + "system_default": "시스템 기본설정", + "market_place_region": "마켓플레이스 지역", + "recommendation_country": "추천 국가", + "appearance": "디자인", + "layout_mode": "레이아웃 모드", + "override_layout_settings": "반응형 레이아웃 모드 설정 덮어씌우기", + "adaptive": "적응형", + "compact": "컴팩트", + "extended": "확장", + "theme": "테마", + "dark": "다크", + "light": "라이트", + "system": "시스템과 동일", + "accent_color": "보조색", + "sync_album_color": "앨범 색상", + "sync_album_color_description": "앨범아트의 주요 색상을 보조색으로 사용", + "playback": "재생", + "audio_quality": "음질", + "high": "높음", + "low": "낮음", + "pre_download_play": "재생할 곡을 미리 다운로드", + "pre_download_play_description": "스트리밍 방식을 쓰는 대신 파일 단위로 다운로드 받고 재생 (인터넷 대역폭이 높은 환경에서 추천)", + "skip_non_music": "음악이 아닌 부분을 스킵 (SponsorBlock)", + "blacklist_description": "블랙리스트에 추가된 곡과 아티스트", + "wait_for_download_to_finish": "현재 진행중인 다운로드가 끝날 때까지 기다려주세요", + "desktop": "데스크톱", + "close_behavior": "닫을 때의 동작", + "close": "닫기", + "minimize_to_tray": "트레이로 최소화", + "show_tray_icon": "시스템 트레이 아이콘 표시", + "about": "앱 정보", + "u_love_spotube": "Spotube... 사랑하시죠?", + "check_for_updates": "업데이트 확인", + "about_spotube": "Spotube에 관해", + "blacklist": "블랙리스트", + "please_sponsor": "후원해주시면 감사하겠습니다.", + "spotube_description": "Spotube는, 경량에 크로스플랫폼인데다 무료이기까지한 스포티파이 클라이언트입니다", + "version": "버전", + "build_number": "빌드 번호", + "founder": "창시자", + "repository": "리포지토리", + "bug_issues": "버그 및 이슈", + "made_with": "❤️을 담아 방글라데시에서 만듦", + "kingkor_roy_tirtho": "Kingkor Roy Tirtho", + "copyright": "© 2021-{current_year} Kingkor Roy Tirtho", + "license": "라이선스", + "add_spotify_credentials": "먼저 Spotify의 로그인정보를 추가하기", + "credentials_will_not_be_shared_disclaimer": "걱정마세요. 개인정보를 수집하거나 공유하지 않습니다.", + "know_how_to_login": "어떻게 하는건지 모르겠나요?", + "follow_step_by_step_guide": "사용법 확인하기", + "spotify_cookie": "Spotify {name} Cookies", + "cookie_name_cookie": "{name} Cookies", + "fill_in_all_fields": "모든 필드에 정보를 입력해주세요", + "submit": "제출", + "exit": "종료", + "previous": "이전으로", + "next": "다음으로", + "done": "완료", + "step_1": "1단계", + "first_go_to": "가장 먼저 먼저 들어갈 곳은 ", + "login_if_not_logged_in": "그리고 로그인을 하지 않았다면 로그인해주세요", + "step_2": "2단계", + "step_2_steps": "1. 로그인에 성공하면、F12나 마우스 우클릭 > 검사(Inspect)을 눌러 브라우저의 개발자 도구(devtools)를 열어주세요.\n2. 애플리케이션 (Application) 탭 (Chrome, Edge, Brave 등) 또는 스토리지 탭 (Firefox, Palemoon 등)을 열어주세요.\n3. 쿠키 (Cookies) 섹션으로 들어가서, https://accounts.spotify.com 서브섹션으로 들어가주세요.", + "step_3": "3단계", + "success_emoji": "성공🥳", + "success_message": "성공적으로 스포티파이 게정으로 로그인했습니다. 잘했어요!", + "step_4": "4단계", + "something_went_wrong": "알 수 없는 이유로 동작에 실패했습니다.", + "piped_instance": "Piped 서버의 인스턴스", + "piped_description": "곡 탐색에 사용할 Piped 서버 인스턴스", + "piped_warning": "몇몇 서버는 제대로 동작하지 않을 수 있습니다. 본인 책임 하에 이용해주세요.", + "generate_playlist": "플레이리스트 생성", + "track_exists": "곡 {track} 은 이미 리스트에 있습니다", + "replace_downloaded_tracks": "다운로드한 모든 곡을 교체", + "skip_download_tracks": "다운로드가 끝난 곡을 모두 건너뛰기", + "do_you_want_to_replace": "현재 곡을 교체하시겠습니까?", + "replace": "교체", + "skip": "건너뛰기", + "select_up_to_count_type": "{type}을 {count}개까지 선택", + "select_genres": "장르 선택", + "add_genres": "장르 추가", + "country": "국가", + "number_of_tracks_generate": "생성할 곡 수", + "acousticness": "반주 구간 (Acousticness)", + "danceability": "흥겨운 정도 (Danceability)", + "energy": "에너지 (Energy)", + "instrumentalness": "기악성 (Instrumentalness)", + "liveness": "생동감 (Liveness)", + "loudness": "라우드니스 (Loudness)", + "speechiness": "회화성 (Speechniss)", + "valence": "감정가 (Valence)", + "popularity": "인기도 (Popularity)", + "key": "조성 (키)", + "duration": "길이 (초)", + "tempo": "템포 (BPM)", + "mode": "장조", + "time_signature": "박자", + "short": "짧음", + "medium": "중간", + "long": "긺", + "min": "최소", + "max": "최대", + "target": "목표", + "moderate": "보통", + "deselect_all": "모두 선택해제", + "select_all": "모두 선택", + "are_you_sure": "괜찮겠습니까?", + "generating_playlist": "커스텀 플레이리스트를 생성하는 중...", + "selected_count_tracks": "{count} 곡이 선택되었습니다.", + "download_warning": "모든 트랙을 대량으로 다운로드하는 것은 명백한 불법 복제이며 음악 창작 사회에 피해를 입히는 행위입니다. 이 점을 알아주셨으면 합니다. 항상 아티스트의 노력을 존중하고 응원해 주세요.", + "download_ip_ban_warning": "참고로, 평소보다 과도한 다운로드 요청으로 인해 YouTube에서 IP가 차단될 수 있습니다. IP 차단은 해당 IP 기기에서 최소 2~3개월 동안 (로그인한 상태에서도) YouTube를 사용할 수 없음을 의미합니다. 그리고 이런 일이 발생하더라도 스포튜브는 어떠한 책임도 지지 않습니다.", + "by_clicking_accept_terms": "'동의'를 클릭하면 다음 약관에 동의하는 것입니다:", + "download_agreement_1": "알고 있습니다. 전 나쁜 사람입니다.", + "download_agreement_2": "제가 할 수 있는 모든 곳에서 아티스트를 지원할 것이며, 저는 그들의 작품을 살 돈이 없기 때문에 이렇게 하는 것뿐입니다.", + "download_agreement_3": "본인은 YouTube에서 내 IP가 차단될 수 있음을 완전히 알고 있으며, 현재 내 행동으로 인해 발생하는 사고에 대해 Spotube 또는 그 소유자/기여자에게 책임을 묻지 않습니다.", + "decline": "거절", + "accept": "동의", + "details": "상세", + "youtube": "YouTube", + "channel": "채널", + "likes": "좋아요", + "dislikes": "싫어요", + "views": "조회수", + "streamUrl": "스트림 URL", + "stop": "중지", + "sort_newest": "최근에 추가된 순으로 정렬", + "sort_oldest": "예전에 추가된 순으로 정렬", + "sleep_timer": "취침 타이머", + "mins": "{minutes} 분", + "hours": "{hours} 시간", + "hour": "{hours} 시간", + "custom_hours": "시간 설정", + "logs": "로그", + "developers": "개발", + "not_logged_in": "로그인하지 않았습니다", + "search_mode": "검색 모드", + "audio_source": "오디오 출처", + "ok": "알겠습니다", + "failed_to_encrypt": "암호화에 실패했습니다", + "encryption_failed_warning": "Spotube는 암호화를 사용하여 데이터를 안전하게 저장합니다. 하지만 그렇게 하지 못했습니다. 따라서 안전하지 않은 저장소로 대체됩니다.\n리눅스를 사용하는 경우, 비밀 서비스(gnome-keyring, kde-wallet, keepassxc 등)가 설치되어 있는지 확인하세요.", + "querying_info": "정보를 얻는 중...", + "piped_api_down": "Piped API가 응답하지 않습니다", + "piped_down_error_instructions": "Piped 인스턴스 {pipedInstance}가 현재 다운되었습니다.\n\n인스턴스를 변경하거나 'API 유형'을 공식 YouTube API로 변경하세요.\n\n변경 후 앱을 다시 시작해야 합니다.", + "you_are_offline": "현재 오프라인입니다", + "connection_restored": "인터넷에 다시 연결되었습니다", + "use_system_title_bar": "시스템 타이틀바를 사용", + "update_playlist": "플레이리스트를 업데이트", + "update": "업데이트", + "crunching_results": "결과를 처리하는 중...", + "search_to_get_results": "결과를 얻으려면 검색해주세요", + "use_amoled_mode": "AMOLED모드를 사용", + "pitch_dark_theme": "검정색 기반의 어두운 테마", + "normalize_audio": "오디오 노멀라이즈", + "change_cover": "커버 변경", + "add_cover": "커버 추가", + "restore_defaults": "기본값으로 복원", + "download_music_codec": "다운로드 음악 코덱", + "streaming_music_codec": "스트리밍 음악 코덱", + "login_with_lastfm": "Last.fm에 로그인", + "connect": "연결", + "disconnect_lastfm": "Last.fm에서 연결 해제", + "disconnect": "연결 해제", + "username": "사용자명", + "password": "비밀번호", + "login": "로그인", + "login_with_your_lastfm": "내 Last.fm 계정으로로그인", + "scrobble_to_lastfm": "Scrobble to Last.fm", + "go_to_album": "앨범으로 이동", + "discord_rich_presence": "Discord Rich Presence", + "browse_all": "모두 탐색", + "genres": "장르", + "explore_genres": "장르 탐색", + "step_3_steps": "\"sp_dc\" 쿠키의 값을 복사", + "step_4_steps": "복사한 \"sp_dc\"값을 붙여넣기", + "friends": "친구", + "no_lyrics_available": "죄송하지만 이 곡의 가사를 찾지 못했습니다", + "@@locale": "ko" +} diff --git a/lib/l10n/l10n.dart b/lib/l10n/l10n.dart index 364e542a..7aec682a 100644 --- a/lib/l10n/l10n.dart +++ b/lib/l10n/l10n.dart @@ -10,6 +10,7 @@ /// mdksec@github => Turkish /// Stephan-P@github, SecularSteve@github => Dutch /// doannc2212@github => Vietnamese +/// sappho192@github => Korean import 'package:flutter/material.dart'; class L10n { @@ -26,6 +27,7 @@ class L10n { const Locale('hi', 'IN'), const Locale('it', 'IT'), const Locale('ja', 'JP'), + const Locale('ko', 'KR'), const Locale('nl', 'NL'), const Locale('pl', 'PL'), const Locale('pt', 'PT'), From 88c6822555822998f744d76d235a772acf4ee40c Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 22:09:52 +0600 Subject: [PATCH 46/59] chore: add test macos cask definition --- Casks/spotube.rb | 22 ++++++++++++++++++++++ linux/spotube.desktop | 1 + 2 files changed, 23 insertions(+) create mode 100644 Casks/spotube.rb diff --git a/Casks/spotube.rb b/Casks/spotube.rb new file mode 100644 index 00000000..32a92802 --- /dev/null +++ b/Casks/spotube.rb @@ -0,0 +1,22 @@ +cask "spotube" do + version "3.4.1" + sha256 "5686cb0b1b261399062250c36b7bf9c481e4c36c76615d787e01c77036fe6cba" + + url "https://github.com/KRTirtho/spotube/releases/download/v#{version}/Spotube-macos-universal.dmg", + verified: "github.com/KRTirtho/spotube/" + name "Spotube" + desc "🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile!" + homepage "https://spotube.krtirtho.dev/" + + livecheck do + url :url + strategy :github_latest + end + + app "spotube.app" + + zap trash: [ + "~/Library/Application Scripts/oss.krtirtho.spotube", + "~/Library/Containers/oss.krtirtho.spotube", + ] +end \ No newline at end of file diff --git a/linux/spotube.desktop b/linux/spotube.desktop index 0bda851f..53f381e1 100644 --- a/linux/spotube.desktop +++ b/linux/spotube.desktop @@ -6,3 +6,4 @@ Icon=/usr/share/icons/spotube/spotube-logo.png Comment=A music streaming app combining the power of Spotify & YouTube Terminal=false Categories=Audio;Music;Player;AudioVideo; +MimeType=x-scheme-handler/spotify; \ No newline at end of file From 06a7ecf393ff382900e904fff7b42b2b3737a321 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 22:17:56 +0600 Subject: [PATCH 47/59] chore: remove casks --- Casks/spotube.rb | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 Casks/spotube.rb diff --git a/Casks/spotube.rb b/Casks/spotube.rb deleted file mode 100644 index 32a92802..00000000 --- a/Casks/spotube.rb +++ /dev/null @@ -1,22 +0,0 @@ -cask "spotube" do - version "3.4.1" - sha256 "5686cb0b1b261399062250c36b7bf9c481e4c36c76615d787e01c77036fe6cba" - - url "https://github.com/KRTirtho/spotube/releases/download/v#{version}/Spotube-macos-universal.dmg", - verified: "github.com/KRTirtho/spotube/" - name "Spotube" - desc "🎧 Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile!" - homepage "https://spotube.krtirtho.dev/" - - livecheck do - url :url - strategy :github_latest - end - - app "spotube.app" - - zap trash: [ - "~/Library/Application Scripts/oss.krtirtho.spotube", - "~/Library/Containers/oss.krtirtho.spotube", - ] -end \ No newline at end of file From 0742e898e3b5ca93597d19b0606524f9c43f5c56 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 22:45:06 +0600 Subject: [PATCH 48/59] docs: add installation through homebrew instruction in README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index c59240b2..469d03ac 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,15 @@ This handy table lists all the methods you can use to install Spotube: + + Macos - Homebrew + +
+brew tap krtirtho/apps
+brew install --cask spotube
+
+ + Windows - Chocolatey From 60f2911eb9ffcda9df45ca3bfc6444242bc1834b Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 5 Mar 2024 22:55:33 +0600 Subject: [PATCH 49/59] website: add homebrew instructions --- .../src/routes/downloads/packages/+page.svx | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/website/src/routes/downloads/packages/+page.svx b/website/src/routes/downloads/packages/+page.svx index e7da4e74..0ab570c2 100644 --- a/website/src/routes/downloads/packages/+page.svx +++ b/website/src/routes/downloads/packages/+page.svx @@ -4,7 +4,7 @@ author: Kingkor Roy Tirtho --- @@ -15,7 +15,7 @@ author: Kingkor Roy Tirtho ## Linux -### Flatpak +### Flatpak📦 Make sure [Flatpak](https://flatpak.org) is installed in your Linux device & Run the following command in the terminal: @@ -23,7 +23,7 @@ Make sure [Flatpak](https://flatpak.org) is installed in your Linux device & Run $ flatpak install com.github.KRTirtho.Spotube ``` -### Arch User Repository (AUR) +### Arch User Repository (AUR)♾️ If you're an Arch Linux user, you can also install Spotube from AUR. Make sure you have `yay`/`pamac`/`paru` installed in your system. And Run the Following command in the Terminal: @@ -40,9 +40,20 @@ $ pamac install spotube-bin $ paru -Sy spotube-bin ``` +## MacOS + +### Homebrew🍻 + +Spotube can be installed through Homebrew. We host our own cask definition thus you'll need to add our tap first: + +```bash +$ brew tap krtirtho/apps +$ brew install --cask spotube +``` + ## Windows -### Chocolatey +### Chocolatey🍫 Spotube is available in [community.chocolatey.org](https://community.chocolatey.org) repo. If you have chocolatey install in your system just run following command in an Elevated Command Prompt or PowerShell: @@ -50,7 +61,7 @@ Spotube is available in [community.chocolatey.org](https://community.chocolatey. $ choco install spotube ``` -### WinGet +### WinGet💫 Spotube is also available in the Official Windows PackageManager WinGet. Make sure you have WinGet installed in your Windows machine and run following in a Terminal: @@ -58,7 +69,7 @@ Spotube is also available in the Official Windows PackageManager WinGet. Make su $ winget install --id KRTirtho.Spotube ``` -### Scoop +### Scoop🥄 Spotube is also available in [Scoop](https://scoop.sh) bucket. Make sure you have Scoop installed in your Windows machine and run following in a Terminal: From ca76a39910b1a5af91aa7882a0d33c9d71db58a2 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 19:10:33 +0600 Subject: [PATCH 50/59] fix: album images are small in certain places --- lib/components/album/album_card.dart | 4 ++-- lib/pages/album/album.dart | 1 - lib/utils/type_conversion_utils.dart | 9 +++++++-- untranslated_messages.json | 30 ++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/lib/components/album/album_card.dart b/lib/components/album/album_card.dart index c7ae2f9a..4d2e12d6 100644 --- a/lib/components/album/album_card.dart +++ b/lib/components/album/album_card.dart @@ -21,8 +21,8 @@ class AlbumCard extends HookConsumerWidget { final AlbumSimple album; const AlbumCard( this.album, { - Key? key, - }) : super(key: key); + super.key, + }); @override Widget build(BuildContext context, ref) { diff --git a/lib/pages/album/album.dart b/lib/pages/album/album.dart index 6cba99f6..4578aea2 100644 --- a/lib/pages/album/album.dart +++ b/lib/pages/album/album.dart @@ -47,7 +47,6 @@ class AlbumPage extends HookConsumerWidget { image: TypeConversionUtils.image_X_UrlString( album.images, placeholder: ImagePlaceholder.albumArt, - index: 0, ), title: album.name!, description: diff --git a/lib/utils/type_conversion_utils.dart b/lib/utils/type_conversion_utils.dart index 662b611c..cd594a2a 100644 --- a/lib/utils/type_conversion_utils.dart +++ b/lib/utils/type_conversion_utils.dart @@ -2,6 +2,7 @@ import 'dart:io'; +import 'package:collection/collection.dart'; import 'package:flutter/widgets.dart' hide Image; import 'package:metadata_god/metadata_god.dart'; import 'package:path/path.dart'; @@ -32,8 +33,12 @@ abstract class TypeConversionUtils { "https://avatars.dicebear.com/api/bottts/${PrimitiveUtils.uuid.v4()}.png", }[placeholder]!; - return images != null && images.isNotEmpty - ? images[index > images.length - 1 ? images.length - 1 : index].url! + final sortedImage = images?.sorted((a, b) => a.width!.compareTo(b.width!)); + + return sortedImage != null && sortedImage.isNotEmpty + ? sortedImage[ + index > sortedImage.length - 1 ? sortedImage.length - 1 : index] + .url! : placeholderUrl; } diff --git a/untranslated_messages.json b/untranslated_messages.json index 14eead0f..a6724f2b 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -299,6 +299,36 @@ "browse_anonymously" ], + "ko": [ + "sort_duration", + "start_a_radio", + "how_to_start_radio", + "replace_queue_question", + "endless_playback", + "delete_playlist", + "delete_playlist_confirmation", + "local_tracks", + "song_link", + "skip_this_nonsense", + "freedom_of_music", + "freedom_of_music_palm", + "get_started", + "youtube_source_description", + "piped_source_description", + "jiosaavn_source_description", + "highest_quality", + "select_audio_source", + "endless_playback_description", + "choose_your_region", + "choose_your_region_description", + "choose_your_language", + "help_project_grow", + "help_project_grow_description", + "contribute_on_github", + "donate_on_open_collective", + "browse_anonymously" + ], + "ne": [ "sort_duration", "start_a_radio", From b354f57d4e6eb0a471ae23cd4e3dcbb9e7e9a0cd Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 19:12:40 +0600 Subject: [PATCH 51/59] chore: hide songlink when not youtube track --- lib/components/player/player.dart | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/components/player/player.dart b/lib/components/player/player.dart index 01e38670..458676e3 100644 --- a/lib/components/player/player.dart +++ b/lib/components/player/player.dart @@ -24,6 +24,7 @@ import 'package:spotube/models/local_track.dart'; import 'package:spotube/pages/lyrics/lyrics.dart'; import 'package:spotube/provider/authentication_provider.dart'; import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; +import 'package:spotube/services/sourced_track/sources/youtube.dart'; import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:url_launcher/url_launcher_string.dart'; @@ -138,26 +139,25 @@ class PlayerView extends HookConsumerWidget { onPressed: panelController.close, ), actions: [ - TextButton.icon( - icon: Assets.logos.songlinkTransparent.image( - width: 20, - height: 20, - color: bodyTextColor, - ), - label: Text(context.l10n.song_link), - style: TextButton.styleFrom( - foregroundColor: bodyTextColor, - padding: EdgeInsets.zero, - ), - onPressed: currentTrack == null - ? null - : () { - final url = - "https://song.link/s/${currentTrack.id}"; + if (currentTrack is YoutubeSourcedTrack) + TextButton.icon( + icon: Assets.logos.songlinkTransparent.image( + width: 20, + height: 20, + color: bodyTextColor, + ), + label: Text(context.l10n.song_link), + style: TextButton.styleFrom( + foregroundColor: bodyTextColor, + padding: EdgeInsets.zero, + ), + onPressed: () { + final url = + "https://song.link/s/${currentTrack.id}"; - launchUrlString(url); - }, - ), + launchUrlString(url); + }, + ), IconButton( icon: const Icon(SpotubeIcons.info, size: 18), tooltip: context.l10n.details, From 5019c14c443908f1245c07a84b38adc8b2caf257 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 19:50:57 +0600 Subject: [PATCH 52/59] chore: fix getting started screen theme and bump version and generate changelogs --- CHANGELOG.md | 31 +++++ lib/extensions/string.dart | 6 + .../getting_started/getting_started.dart | 116 ++++++++++-------- .../getting_started/sections/playback.dart | 3 +- .../audio_player/mk_state_player.dart | 30 +++-- pubspec.yaml | 2 +- 6 files changed, 117 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f48b39e..02624a7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,37 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [3.5.0](https://github.com/krtirtho/spotube/compare/v3.4.1...v3.5.0) (2024-03-08) + + +### Features + +* add endless playback support [#285](https://github.com/krtirtho/spotube/issues/285) ([9dfd49c](https://github.com/krtirtho/spotube/commit/9dfd49ca04f0e915e333e205b17ac70456873f6e)) +* add getting started page ([96a2a1f](https://github.com/krtirtho/spotube/commit/96a2a1f5a622cb3c580041417d5023e37fa69716)) +* Add iOS background play support ([#1166](https://github.com/krtirtho/spotube/issues/1166)) ([095587e](https://github.com/krtirtho/spotube/commit/095587ee84f7d867c69fcf4b09ed608d63478e1e)) +* add songlink based track matching for youtube and open song link button ([9095a8c](https://github.com/krtirtho/spotube/commit/9095a8c8f849e42daabb7efcc20085cfb863c974)) +* **playlist:** show confirmation before deleting user playlist [#1222](https://github.com/krtirtho/spotube/issues/1222) ([9f92440](https://github.com/krtirtho/spotube/commit/9f9244062a39759aa0ce28d2d5f7c8fa53d73003)) +* Sort by Duration ([#1238](https://github.com/krtirtho/spotube/issues/1238)) ([6f8271f](https://github.com/krtirtho/spotube/commit/6f8271f5e9394cb4053e41dd222aa2844c34d609)) +* start radio support ([4defeef](https://github.com/krtirtho/spotube/commit/4defeefe7e5947aa00a2afb2a06577ec141cdc52)) +* **translations:** add Korean translation ([#1275](https://github.com/krtirtho/spotube/issues/1275)) ([fdea930](https://github.com/krtirtho/spotube/commit/fdea9307bbfb8f3f62cfb795bfb3ca58c38c33d9)) +* **translations:** Added Vietnamese ([#1135](https://github.com/krtirtho/spotube/issues/1135)) ([019ba86](https://github.com/krtirtho/spotube/commit/019ba865e20a8b54ea3490c01e47158eaf3a4c8d)) +* **windows:** Install Visual C++ 2015-2022 Redistributable if missing when installing ([ba69496](https://github.com/krtirtho/spotube/commit/ba69496dcc9a1b7f6ea4e104e71764a854d27f1f)) + + +### Bug Fixes + +* album images are small in certain places ([ca76a39](https://github.com/krtirtho/spotube/commit/ca76a39910b1a5af91aa7882a0d33c9d71db58a2)) +* album, artist page not loading [#1282](https://github.com/krtirtho/spotube/issues/1282) ([a9a1d4c](https://github.com/krtirtho/spotube/commit/a9a1d4c9dc24aaf3181dc4090d1822ebfe755991)) +* **android:** audio issue when screen is off and broadcast audio session id ([#1221](https://github.com/krtirtho/spotube/issues/1221) & [#1247](https://github.com/krtirtho/spotube/issues/1247)) ([17105a6](https://github.com/krtirtho/spotube/commit/17105a640bf5107bd5d333b9b4d097c14a3949a2)), closes [KRTirtho/spotube#571](https://github.com/KRTirtho/spotube/issues/571) +* **android:** pressing back button in any other tab other than home exits the app ([c3289a0](https://github.com/krtirtho/spotube/commit/c3289a0ba4e7de094a15246677ffcb940504ebde)) +* **android:** system back button in player page exits the app ([3294f65](https://github.com/krtirtho/spotube/commit/3294f657fe8a03b18d9be8974968b6508465963d)) +* cleanTitle removing feat and ft from words instead of whole words ([8612345](https://github.com/krtirtho/spotube/commit/86123456f2ff577921cf62cffca180427dfe1dd5)) +* friends list not scrollable with mouse drag ([ab08c82](https://github.com/krtirtho/spotube/commit/ab08c82c8dd501263049f3adcbd48907ba13e3a9)) +* no draggable scrollbar in playlist/album page [#1158](https://github.com/krtirtho/spotube/issues/1158) ([6f71e52](https://github.com/krtirtho/spotube/commit/6f71e52ea8a5712d2c3527f2a524af9fbb718bef)) +* non-banger songs breaking the queue if sources not found ([90f7c53](https://github.com/krtirtho/spotube/commit/90f7c531cdc8640afdbabf5a0592159715ea1e6f)) +* track loading when not found in Youtube ([e964f61](https://github.com/krtirtho/spotube/commit/e964f61d38cb303e3d3fd60c866414f57207181c)) +* **translations:** Update app_nl.arb ([#1168](https://github.com/krtirtho/spotube/issues/1168)) ([8167963](https://github.com/krtirtho/spotube/commit/8167963212eeb5dfb0b4fb2eadf81d466659a9f1)) + ## [3.4.1](https://personal.github.com/krtirtho/spotube/compare/v3.4.0...v3.4.1) (2024-01-27) diff --git a/lib/extensions/string.dart b/lib/extensions/string.dart index b7ab7514..0aa41dc6 100644 --- a/lib/extensions/string.dart +++ b/lib/extensions/string.dart @@ -9,3 +9,9 @@ extension UnescapeHtml on String { extension NullableUnescapeHtml on String? { String? unescapeHtml() => this == null ? null : htmlEscape.convert(this!); } + +extension StringExtension on String { + String capitalize() { + return "${this[0].toUpperCase()}${substring(1)}"; + } +} diff --git a/lib/pages/getting_started/getting_started.dart b/lib/pages/getting_started/getting_started.dart index 724fb346..cbab03b9 100644 --- a/lib/pages/getting_started/getting_started.dart +++ b/lib/pages/getting_started/getting_started.dart @@ -8,13 +8,20 @@ import 'package:spotube/pages/getting_started/sections/greeting.dart'; import 'package:spotube/pages/getting_started/sections/playback.dart'; import 'package:spotube/pages/getting_started/sections/region.dart'; import 'package:spotube/pages/getting_started/sections/support.dart'; +import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; +import 'package:spotube/themes/theme.dart'; class GettingStarting extends HookConsumerWidget { const GettingStarting({super.key}); @override Widget build(BuildContext context, ref) { - final ThemeData(:colorScheme) = Theme.of(context); + final preferences = ref.watch(userPreferencesProvider); + final themeData = theme( + preferences.accentColorScheme, + Brightness.dark, + preferences.amoledDarkTheme, + ); final pageController = usePageController(); final onNext = useCallback(() { @@ -31,63 +38,66 @@ class GettingStarting extends HookConsumerWidget { ); }, [pageController]); - return Scaffold( - appBar: PageWindowTitleBar( - backgroundColor: Colors.transparent, - actions: [ - ListenableBuilder( - listenable: pageController, - builder: (context, _) { - return AnimatedSwitcher( - duration: const Duration(milliseconds: 300), - child: pageController.hasClients && - (pageController.page == 0 || pageController.page == 3) - ? const SizedBox() - : TextButton( - onPressed: () { - pageController.animateToPage( - 3, - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - ); - }, - child: Text( - context.l10n.skip_this_nonsense, - style: TextStyle( - decoration: TextDecoration.underline, - decorationColor: colorScheme.primary, + return Theme( + data: themeData, + child: Scaffold( + appBar: PageWindowTitleBar( + backgroundColor: Colors.transparent, + actions: [ + ListenableBuilder( + listenable: pageController, + builder: (context, _) { + return AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + child: pageController.hasClients && + (pageController.page == 0 || pageController.page == 3) + ? const SizedBox() + : TextButton( + onPressed: () { + pageController.animateToPage( + 3, + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + }, + child: Text( + context.l10n.skip_this_nonsense, + style: TextStyle( + decoration: TextDecoration.underline, + decorationColor: themeData.colorScheme.primary, + ), ), ), - ), - ); - }, - ), - ], - ), - extendBodyBehindAppBar: true, - body: DecoratedBox( - decoration: BoxDecoration( - image: DecorationImage( - image: Assets.bengaliPatternsBg.provider(), - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - colorScheme.background.withOpacity(0.2), - BlendMode.srcOver, + ); + }, ), - ), - ), - child: PageView( - controller: pageController, - children: [ - GettingStartedPageGreetingSection(onNext: onNext), - GettingStartedPageLanguageRegionSection(onNext: onNext), - GettingStartedPagePlaybackSection( - onNext: onNext, - onPrevious: onPrevious, - ), - const GettingStartedScreenSupportSection(), ], ), + extendBodyBehindAppBar: true, + body: DecoratedBox( + decoration: BoxDecoration( + image: DecorationImage( + image: Assets.bengaliPatternsBg.provider(), + fit: BoxFit.cover, + colorFilter: const ColorFilter.mode( + Colors.black38, + BlendMode.srcOver, + ), + ), + ), + child: PageView( + controller: pageController, + children: [ + GettingStartedPageGreetingSection(onNext: onNext), + GettingStartedPageLanguageRegionSection(onNext: onNext), + GettingStartedPagePlaybackSection( + onNext: onNext, + onPrevious: onPrevious, + ), + const GettingStartedScreenSupportSection(), + ], + ), + ), ), ); } diff --git a/lib/pages/getting_started/sections/playback.dart b/lib/pages/getting_started/sections/playback.dart index e94a06cc..298cf839 100644 --- a/lib/pages/getting_started/sections/playback.dart +++ b/lib/pages/getting_started/sections/playback.dart @@ -6,6 +6,7 @@ import 'package:spotube/collections/assets.gen.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/getting_started/blur_card.dart'; import 'package:spotube/extensions/context.dart'; +import 'package:spotube/extensions/string.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; import 'package:spotube/provider/user_preferences/user_preferences_state.dart'; @@ -87,7 +88,7 @@ class GettingStartedPagePlaybackSection extends HookConsumerWidget { audioSourceToIconMap[source]!, const Gap(8), Text( - source.name, + source.name.capitalize(), style: textTheme.bodySmall!.copyWith( color: preferences.audioSource == source ? colorScheme.primary diff --git a/lib/services/audio_player/mk_state_player.dart b/lib/services/audio_player/mk_state_player.dart index 04df7111..8b796d66 100644 --- a/lib/services/audio_player/mk_state_player.dart +++ b/lib/services/audio_player/mk_state_player.dart @@ -17,13 +17,6 @@ class MkPlayerWithState extends Player { final StreamController _shuffleStream; final StreamController _loopModeStream; - static const String EXTRA_PACKAGE_NAME = "android.media.extra.PACKAGE_NAME"; - static const String EXTRA_AUDIO_SESSION = "android.media.extra.AUDIO_SESSION"; - static const String ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION = - "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"; - static const String ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION = - "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION"; - late final List _subscriptions; bool _shuffled; @@ -87,23 +80,28 @@ class MkPlayerWithState extends Player { await _androidAudioManager!.generateAudioSessionId(); notifyAudioSessionUpdate(true); - nativePlayer.setProperty( - "audiotrack-session-id", _androidAudioSessionId.toString()); - nativePlayer.setProperty("ao", "audiotrack,opensles,"); + await nativePlayer.setProperty( + "audiotrack-session-id", + _androidAudioSessionId.toString(), + ); + await nativePlayer.setProperty("ao", "audiotrack,opensles,"); }); } } Future notifyAudioSessionUpdate(bool active) async { if (DesktopTools.platform.isAndroid) { - sendBroadcast(BroadcastMessage( + sendBroadcast( + BroadcastMessage( name: active - ? ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION - : ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION, + ? "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION" + : "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION", data: { - EXTRA_AUDIO_SESSION: _androidAudioSessionId, - EXTRA_PACKAGE_NAME: _packageName - })); + "android.media.extra.AUDIO_SESSION": _androidAudioSessionId, + "android.media.extra.PACKAGE_NAME": _packageName + }, + ), + ); } } diff --git a/pubspec.yaml b/pubspec.yaml index 5ccc5bb1..04d3f1a4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Open source Spotify client that doesn't require Premium nor uses El publish_to: "none" -version: 3.4.1+28 +version: 3.5.0+29 homepage: https://spotube.krtirtho.dev repository: https://github.com/KRTirtho/spotube From a6164c5791eef6f66b9b7585a0b3ab9a8749835b Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 20:53:04 +0600 Subject: [PATCH 53/59] chore: add untranslated messages --- bin/translated_messages.dart | 26 ++++++++++++++++++++++++++ lib/l10n/app_ar.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_bn.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_ca.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_de.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_es.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_fa.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_fr.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_hi.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_it.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_ja.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_ko.arb | 31 +++++++++++++++++++++++++++++-- lib/l10n/app_ne.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_nl.arb | 32 ++++++++++++++++++++++++++++++-- lib/l10n/app_pl.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_pt.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_ru.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_tr.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_uk.arb | 29 ++++++++++++++++++++++++++++- lib/l10n/app_vi.arb | 31 +++++++++++++++++++++++++++++-- lib/l10n/app_zh.arb | 29 ++++++++++++++++++++++++++++- 21 files changed, 590 insertions(+), 23 deletions(-) create mode 100644 bin/translated_messages.dart diff --git a/bin/translated_messages.dart b/bin/translated_messages.dart new file mode 100644 index 00000000..0de398df --- /dev/null +++ b/bin/translated_messages.dart @@ -0,0 +1,26 @@ +import 'dart:convert'; +import 'dart:io'; + +void main(List args) async { + final translatedFile = + jsonDecode(await File('tm.json').readAsString()) as Map; + + for (final MapEntry(:key, :value) in translatedFile.entries) { + print('Updating locale: $key'); + final file = File('lib/l10n/app_$key.arb'); + + final fileContent = + jsonDecode(await file.readAsString()) as Map; + + final newContent = { + ...fileContent, + ...value, + }; + + await file.writeAsString( + const JsonEncoder.withIndent(' ').convert(newContent), + ); + + print('✅ Updated locale: $key'); + } +} diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index eebede99..41fab083 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -286,5 +286,32 @@ "step_3_steps": "انسخ قيمة الكوكي \"sp_dc\"", "step_4_steps": "الصق قيمة \"sp_dc\" المنسوخة", "friends": "أصدقاء", - "no_lyrics_available": "عذرًا، تعذر العثور على كلمات الأغنية لهذه العنصر" + "no_lyrics_available": "عذرًا، تعذر العثور على كلمات الأغنية لهذه العنصر", + "sort_duration": "ترتيب حسب المدة", + "start_a_radio": "بدء راديو", + "how_to_start_radio": "كيف تريد بدء الراديو؟", + "replace_queue_question": "هل تريد استبدال قائمة التشغيل الحالية أم إضافة إليها؟", + "endless_playback": "تشغيل بلا نهاية", + "delete_playlist": "حذف قائمة التشغيل", + "delete_playlist_confirmation": "هل أنت متأكد أنك تريد حذف هذه قائمة التشغيل؟", + "local_tracks": "المسارات المحلية", + "song_link": "رابط الأغنية", + "skip_this_nonsense": "تخطي هذه الهراء", + "freedom_of_music": "“حرية الموسيقى”", + "freedom_of_music_palm": "“حرية الموسيقى في متناول يدك”", + "get_started": "لنبدأ", + "youtube_source_description": "موصى به ويعمل بشكل أفضل.", + "piped_source_description": "تشعر بالحرية؟ نفس يوتيوب ولكن أكثر حرية.", + "jiosaavn_source_description": "الأفضل لمنطقة جنوب آسيا.", + "highest_quality": "أعلى جودة: {quality}", + "select_audio_source": "اختر مصدر الصوت", + "endless_playback_description": "إلحاق الأغاني الجديدة تلقائيًا\nإلى نهاية قائمة التشغيل", + "choose_your_region": "اختر منطقتك", + "choose_your_region_description": "سيساعدك هذا في عرض المحتوى المناسب\nلموقعك.", + "choose_your_language": "اختر لغتك", + "help_project_grow": "ساعد في نمو هذا المشروع", + "help_project_grow_description": "Spotube هو مشروع مفتوح المصدر. يمكنك مساعدة هذا المشروع في النمو عن طريق المساهمة في المشروع، أو الإبلاغ عن الأخطاء، أو اقتراح ميزات جديدة.", + "contribute_on_github": "المساهمة على GitHub", + "donate_on_open_collective": "التبرع على Open Collective", + "browse_anonymously": "تصفح بشكل مجهول" } \ No newline at end of file diff --git a/lib/l10n/app_bn.arb b/lib/l10n/app_bn.arb index 2711f8d2..353ca617 100644 --- a/lib/l10n/app_bn.arb +++ b/lib/l10n/app_bn.arb @@ -286,5 +286,32 @@ "step_3_steps": "কুকি \"sp_dc\" এর মানটি কপি করুন", "step_4_steps": "কপি করা \"sp_dc\" মানটি পেস্ট করুন", "friends": "বন্ধু", - "no_lyrics_available": "দুঃখিত, এই ট্র্যাকের জন্য কথা খুঁজে পাওয়া গেলনা" + "no_lyrics_available": "দুঃখিত, এই ট্র্যাকের জন্য কথা খুঁজে পাওয়া গেলনা", + "sort_duration": "দৈর্ঘ্য অনুযায়ী বাছাই করুন", + "start_a_radio": "রেডিও শুরু করুন", + "how_to_start_radio": "রেডিও কিভাবে শুরু করতে চান?", + "replace_queue_question": "আপনি বর্তমান কিউটি প্রতিস্থাপন করতে চান কিনা বা এর সাথে যুক্ত করতে চান?", + "endless_playback": "অবিরাম প্রচার", + "delete_playlist": "প্লেলিস্ট মুছুন", + "delete_playlist_confirmation": "আপনি কি নিশ্চিত যে আপনি এই প্লেলিস্টটি মুছতে চান?", + "local_tracks": "স্থানীয় ট্র্যাক", + "song_link": "গানের লিংক", + "skip_this_nonsense": "এই বাকবাস পালান", + "freedom_of_music": "“সংগীতের স্বাধীনতা”", + "freedom_of_music_palm": "“তোমার হাতের কাছে সংগীতের স্বাধীনতা”", + "get_started": "শুরু করা যাক", + "youtube_source_description": "প্রস্তাবিত এবং সেরা কাজ করে।", + "piped_source_description": "মন খারাপ? ইউটিউবের মতো আবার ফ্রি।", + "jiosaavn_source_description": "দক্ষিণ এশিয়ান অঞ্চলের জন্য সেরা।", + "highest_quality": "সর্বোচ্চ গুণগতি: {quality}", + "select_audio_source": "অডিও উৎস নির্বাচন করুন", + "endless_playback_description": "নতুন গান নিজে নিজে প্লেলিস্টের শেষে\nসংযুক্ত করুন", + "choose_your_region": "আপনার অঞ্চল নির্বাচন করুন", + "choose_your_region_description": "এটি স্পটুবে আপনাকে আপনার অবস্থানের জন্য ঠিক কন্টেন্ট দেখানোর সাহায্য করবে।", + "choose_your_language": "আপনার ভাষা নির্বাচন করুন", + "help_project_grow": "এই প্রকল্পের বৃদ্ধি করুন", + "help_project_grow_description": "স্পটুব একটি ওপেন সোর্স প্রকল্প। আপনি প্রকল্পে অবদান রাখেন, বাগ রিপোর্ট করেন, বা নতুন বৈশিষ্ট্যগুলি সুপারিশ করেন।", + "contribute_on_github": "গিটহাবে অবদান রাখুন", + "donate_on_open_collective": "ওপেন কলেক্টিভে অনুদান করুন", + "browse_anonymously": "অজানে ব্রাউজ করুন" } \ No newline at end of file diff --git a/lib/l10n/app_ca.arb b/lib/l10n/app_ca.arb index f46cfae4..9848954a 100644 --- a/lib/l10n/app_ca.arb +++ b/lib/l10n/app_ca.arb @@ -286,5 +286,32 @@ "step_3_steps": "Copia el valor de la cookie \"sp_dc\"", "step_4_steps": "Pega el valor copiado de \"sp_dc\"", "friends": "Amics", - "no_lyrics_available": "Ho sentim, no es poden trobar les lletres d'aquesta pista" + "no_lyrics_available": "Ho sentim, no es poden trobar les lletres d'aquesta pista", + "sort_duration": "Ordenar per Durada", + "start_a_radio": "Inicia una ràdio", + "how_to_start_radio": "Com vols començar la ràdio?", + "replace_queue_question": "Voleu substituir la cua actual o afegir-hi?", + "endless_playback": "Reproducció infinita", + "delete_playlist": "Suprimeix la llista de reproducció", + "delete_playlist_confirmation": "Esteu segur que voleu suprimir aquesta llista de reproducció?", + "local_tracks": "Pistes locals", + "song_link": "Enllaç de la cançó", + "skip_this_nonsense": "Omet aquesta tonteria", + "freedom_of_music": "“Llibertat de la música”", + "freedom_of_music_palm": "“Llibertat de la música a la palma de la mà”", + "get_started": "Comencem", + "youtube_source_description": "Recomanat i funciona millor.", + "piped_source_description": "Et sents lliure? El mateix que YouTube però més lliure.", + "jiosaavn_source_description": "El millor per a la regió del sud d'Àsia.", + "highest_quality": "Qualitat més alta: {quality}", + "select_audio_source": "Seleccioneu la font d'àudio", + "endless_playback_description": "Afegiu automàticament noves cançons\nal final de la cua", + "choose_your_region": "Trieu la vostra regió", + "choose_your_region_description": "Això ajudarà a Spotube a mostrar-vos el contingut adequat\nper a la vostra ubicació.", + "choose_your_language": "Trieu el vostre idioma", + "help_project_grow": "Ajuda a fer créixer aquest projecte", + "help_project_grow_description": "Spotube és un projecte de codi obert. Podeu ajudar a fer créixer aquest projecte contribuint al projecte, informant d'errors o suggerint noves funcionalitats.", + "contribute_on_github": "Contribueix a GitHub", + "donate_on_open_collective": "Fes una donació a Open Collective", + "browse_anonymously": "Navega de manera anònima" } \ No newline at end of file diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index ebaa0329..b058d41a 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -286,5 +286,32 @@ "step_3_steps": "Kopiere den Wert des Cookies \"sp_dc\"", "step_4_steps": "Füge den kopierten Wert von \"sp_dc\" ein", "friends": "Freunde", - "no_lyrics_available": "Entschuldigung, Texte für diesen Track konnten nicht gefunden werden" + "no_lyrics_available": "Entschuldigung, Texte für diesen Track konnten nicht gefunden werden", + "sort_duration": "Nach Dauer sortieren", + "start_a_radio": "Radio starten", + "how_to_start_radio": "Wie möchten Sie das Radio starten?", + "replace_queue_question": "Möchten Sie die aktuelle Wiedergabeliste ersetzen oder hinzufügen?", + "endless_playback": "Endlose Wiedergabe", + "delete_playlist": "Wiedergabeliste löschen", + "delete_playlist_confirmation": "Sind Sie sicher, dass Sie diese Wiedergabeliste löschen möchten?", + "local_tracks": "Lokale Titel", + "song_link": "Lied-Link", + "skip_this_nonsense": "Diesen Unsinn überspringen", + "freedom_of_music": "“Freiheit der Musik”", + "freedom_of_music_palm": "“Freiheit der Musik in Ihrer Handfläche”", + "get_started": "Lass uns anfangen", + "youtube_source_description": "Empfohlen und funktioniert am besten.", + "piped_source_description": "Fühlen Sie sich frei? Wie YouTube, aber viel freier.", + "jiosaavn_source_description": "Am besten für die südasiatische Region.", + "highest_quality": "Höchste Qualität: {quality}", + "select_audio_source": "Audioquelle auswählen", + "endless_playback_description": "Neue Lieder automatisch\nam Ende der Wiedergabeliste hinzufügen", + "choose_your_region": "Wählen Sie Ihre Region", + "choose_your_region_description": "Dies wird Spotube helfen, Ihnen den richtigen Inhalt\nfür Ihren Standort anzuzeigen.", + "choose_your_language": "Wählen Sie Ihre Sprache", + "help_project_grow": "Helfen Sie diesem Projekt zu wachsen", + "help_project_grow_description": "Spotube ist ein Open-Source-Projekt. Sie können diesem Projekt helfen, indem Sie zum Projekt beitragen, Fehler melden oder neue Funktionen vorschlagen.", + "contribute_on_github": "Auf GitHub beitragen", + "donate_on_open_collective": "Auf Open Collective spenden", + "browse_anonymously": "Anonym durchsuchen" } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 476056cb..0b4cbb2a 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -286,5 +286,32 @@ "step_3_steps": "Copia el valor de la cookie \"sp_dc\"", "step_4_steps": "Pega el valor copiado de \"sp_dc\"", "friends": "Amigos", - "no_lyrics_available": "Lo siento, no se pueden encontrar las letras de esta pista" + "no_lyrics_available": "Lo siento, no se pueden encontrar las letras de esta pista", + "sort_duration": "Ordenar por Duración", + "start_a_radio": "Iniciar una Radio", + "how_to_start_radio": "¿Cómo quieres iniciar la radio?", + "replace_queue_question": "¿Quieres reemplazar la lista de reproducción actual o añadir a ella?", + "endless_playback": "Reproducción Infinita", + "delete_playlist": "Eliminar Lista de Reproducción", + "delete_playlist_confirmation": "¿Estás seguro de que quieres eliminar esta lista de reproducción?", + "local_tracks": "Pistas Locales", + "song_link": "Enlace de la Canción", + "skip_this_nonsense": "Saltar esta tontería", + "freedom_of_music": "“Libertad de la Música”", + "freedom_of_music_palm": "“Libertad de la Música en la palma de tu mano”", + "get_started": "Empecemos", + "youtube_source_description": "Recomendado y funciona mejor.", + "piped_source_description": "¿Te sientes libre? Igual que YouTube pero más libre.", + "jiosaavn_source_description": "Lo mejor para la región del sur de Asia.", + "highest_quality": "Mayor Calidad: {quality}", + "select_audio_source": "Seleccionar Fuente de Audio", + "endless_playback_description": "Añadir automáticamente nuevas canciones\nal final de la cola de reproducción", + "choose_your_region": "Elige tu región", + "choose_your_region_description": "Esto ayudará a Spotube a mostrarte el contenido adecuado\npara tu ubicación.", + "choose_your_language": "Elige tu idioma", + "help_project_grow": "Ayuda a que este proyecto crezca", + "help_project_grow_description": "Spotube es un proyecto de código abierto. Puedes ayudar a que este proyecto crezca contribuyendo al proyecto, informando errores o sugiriendo nuevas funciones.", + "contribute_on_github": "Contribuir en GitHub", + "donate_on_open_collective": "Donar en Open Collective", + "browse_anonymously": "Navegar Anónimamente" } \ No newline at end of file diff --git a/lib/l10n/app_fa.arb b/lib/l10n/app_fa.arb index 3a2bcb4b..629238cc 100644 --- a/lib/l10n/app_fa.arb +++ b/lib/l10n/app_fa.arb @@ -286,5 +286,32 @@ "step_3_steps": "مقدار کوکی \"sp_dc\" را کپی کنید", "step_4_steps": "مقدار کپی شده \"sp_dc\" را الصاق کنید", "friends": "دوستان", - "no_lyrics_available": "متاسفیم، قادر به یافتن متن این قطعه نیستیم" + "no_lyrics_available": "متاسفیم، قادر به یافتن متن این قطعه نیستیم", + "sort_duration": "مرتب کردن بر اساس مدت زمان", + "start_a_radio": "شروع یک رادیو", + "how_to_start_radio": "چگونه می‌خواهید رادیو را شروع کنید؟", + "replace_queue_question": "آیا می‌خواهید لیست پخش فعلی را جایگزین کنید یا به آن اضافه کنید؟", + "endless_playback": "پخش بی‌پایان", + "delete_playlist": "حذف لیست پخش", + "delete_playlist_confirmation": "آیا مطمئن هستید که می‌خواهید این لیست پخش را حذف کنید؟", + "local_tracks": "موسیقی‌های محلی", + "song_link": "پیوند آهنگ", + "skip_this_nonsense": "این احمقانه را بگذرانید", + "freedom_of_music": "“آزادی موسیقی”", + "freedom_of_music_palm": "“آزادی موسیقی در دستان شما”", + "get_started": "بیایید شروع کنیم", + "youtube_source_description": "پیشنهاد شده و بهترین عمل می‌کند.", + "piped_source_description": "احساس آزادی می‌کنید؟ مانند یوتیوب اما بیشتر آزاد.", + "jiosaavn_source_description": "بهترین برای منطقه جنوب آسیا.", + "highest_quality": "بالاترین کیفیت: {quality}", + "select_audio_source": "انتخاب منبع صوتی", + "endless_playback_description": "خودکار اضافه کردن آهنگ‌های جدید\nبه انتهای صف", + "choose_your_region": "منطقه خود را انتخاب کنید", + "choose_your_region_description": "این به Spotube کمک می‌کند تا محتوای مناسبی را برای موقعیت شما نشان دهد.", + "choose_your_language": "زبان خود را انتخاب کنید", + "help_project_grow": "کمک به رشد این پروژه", + "help_project_grow_description": "Spotube یک پروژه متن باز است. شما می‌توانید با به پروژه کمک کردن، گزارش دادن اشکالات یا پیشنهاد ویژگی‌های جدید، به این پروژه کمک کنید.", + "contribute_on_github": "مشارکت در GitHub", + "donate_on_open_collective": "کمک مالی در Open Collective", + "browse_anonymously": "مرور به صورت ناشناس" } \ No newline at end of file diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 5c24d0fe..69b2bb69 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -286,5 +286,32 @@ "step_3_steps": "Copiez la valeur du cookie \"sp_dc\"", "step_4_steps": "Collez la valeur copiée de \"sp_dc\"", "friends": "Amis", - "no_lyrics_available": "Désolé, impossible de trouver les paroles de cette piste" + "no_lyrics_available": "Désolé, impossible de trouver les paroles de cette piste", + "sort_duration": "Trier par durée", + "start_a_radio": "Démarrer une radio", + "how_to_start_radio": "Comment voulez-vous démarrer la radio ?", + "replace_queue_question": "Voulez-vous remplacer la file d'attente actuelle ou y ajouter ?", + "endless_playback": "Lecture sans fin", + "delete_playlist": "Supprimer la playlist", + "delete_playlist_confirmation": "Êtes-vous sûr de vouloir supprimer cette playlist ?", + "local_tracks": "Titres locaux", + "song_link": "Lien de la chanson", + "skip_this_nonsense": "Passer cette absurdité", + "freedom_of_music": "“Liberté de la musique”", + "freedom_of_music_palm": "“Liberté de la musique dans la paume de votre main”", + "get_started": "Commençons", + "youtube_source_description": "Recommandé et fonctionne mieux.", + "piped_source_description": "Vous vous sentez libre ? Comme YouTube mais beaucoup plus gratuit.", + "jiosaavn_source_description": "Le meilleur pour la région d'Asie du Sud.", + "highest_quality": "Meilleure qualité : {quality}", + "select_audio_source": "Sélectionner la source audio", + "endless_playback_description": "Ajouter automatiquement de nouvelles chansons à la fin de la file d'attente", + "choose_your_region": "Choisissez votre région", + "choose_your_region_description": "Cela aidera Spotube à vous montrer le bon contenu pour votre emplacement.", + "choose_your_language": "Choisissez votre langue", + "help_project_grow": "Aidez ce projet à grandir", + "help_project_grow_description": "Spotube est un projet open-source. Vous pouvez aider ce projet à grandir en contribuant au projet, en signalant des bugs ou en suggérant de nouvelles fonctionnalités.", + "contribute_on_github": "Contribuer sur GitHub", + "donate_on_open_collective": "Faire un don sur Open Collective", + "browse_anonymously": "Naviguer anonymement" } \ No newline at end of file diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index 1cf62398..b442da37 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -286,5 +286,32 @@ "step_3_steps": "\"sp_dc\" कुकी का मूल्य कॉपी करें", "step_4_steps": "कॉपी किए गए \"sp_dc\" मूल्य को पेस्ट करें", "friends": "दोस्त", - "no_lyrics_available": "क्षमा करें, इस ट्रैक के लिए गाने नहीं मिल सके" + "no_lyrics_available": "क्षमा करें, इस ट्रैक के लिए गाने नहीं मिल सके", + "sort_duration": "समय के आधार पर क्रमबद्ध करें", + "start_a_radio": "रेडियो शुरू करें", + "how_to_start_radio": "रेडियो कैसे शुरू करना चाहते हैं?", + "replace_queue_question": "क्या आप वर्तमान कतार को बदलना चाहते हैं या इसे जोड़ना चाहते हैं?", + "endless_playback": "अंतहीन प्लेबैक", + "delete_playlist": "प्लेलिस्ट हटाएं", + "delete_playlist_confirmation": "क्या आप वाकई इस प्लेलिस्ट को हटाना चाहते हैं?", + "local_tracks": "स्थानीय ट्रैक्स", + "song_link": "गाने का लिंक", + "skip_this_nonsense": "इस माया को छोड़ें", + "freedom_of_music": "“संगीत की स्वतंत्रता”", + "freedom_of_music_palm": "“हाथ में संगीत की स्वतंत्रता”", + "get_started": "आइए शुरू करें", + "youtube_source_description": "सिफारिश किया गया और सबसे अच्छा काम करता है।", + "piped_source_description": "मुफ्त महसूस कर रहे हैं? YouTube के समान लेकिन काफी अधिक मुफ्त।", + "jiosaavn_source_description": "दक्षिण एशियाई क्षेत्र के लिए सर्वोत्तम।", + "highest_quality": "सर्वोत्तम गुणवत्ता: {quality}", + "select_audio_source": "ऑडियो स्रोत चुनें", + "endless_playback_description": "क्रमबद्ध कतार के अंत में नए गाने स्वचालित रूप से जोड़ें", + "choose_your_region": "अपना क्षेत्र चुनें", + "choose_your_region_description": "यह Spotube को आपके स्थान के लिए सही सामग्री दिखाने में मदद करेगा।", + "choose_your_language": "अपनी भाषा चुनें", + "help_project_grow": "इस परियोजना को बढ़ावा दें", + "help_project_grow_description": "Spotube एक ओपन सोर्स परियोजना है। आप इस परियोजना को योगदान देकर, बग रिपोर्ट करके या नई विशेषताओं का सुझाव देकर इस परियोजना को बढ़ा सकते हैं।", + "contribute_on_github": "GitHub पर योगदान करें", + "donate_on_open_collective": "ओपन कलेक्टिव पर दान करें", + "browse_anonymously": "बिना नाम के ब्राउज़ करें" } \ No newline at end of file diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index ec76b914..f8440cd0 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -287,5 +287,32 @@ "step_3_steps": "Copia il valore del cookie \"sp_dc\"", "step_4_steps": "Incolla il valore copiato di \"sp_dc\"", "friends": "Amici", - "no_lyrics_available": "Spiacente, impossibile trovare il testo di questa traccia" + "no_lyrics_available": "Spiacente, impossibile trovare il testo di questa traccia", + "sort_duration": "Ordina per Durata", + "start_a_radio": "Avvia una Radio", + "how_to_start_radio": "Come vuoi avviare la radio?", + "replace_queue_question": "Vuoi sostituire la coda attuale o aggiungerla?", + "endless_playback": "Riproduzione Infinita", + "delete_playlist": "Elimina Playlist", + "delete_playlist_confirmation": "Sei sicuro di voler eliminare questa playlist?", + "local_tracks": "Tracce Locali", + "song_link": "Link della Canzone", + "skip_this_nonsense": "Salta questa sciocchezza", + "freedom_of_music": "“Libertà della Musica”", + "freedom_of_music_palm": "“Libertà della Musica nel palmo della tua mano”", + "get_started": "Cominciamo", + "youtube_source_description": "Consigliato e funziona meglio.", + "piped_source_description": "Ti senti libero? Come YouTube ma molto più gratuito.", + "jiosaavn_source_description": "Il migliore per la regione dell'Asia meridionale.", + "highest_quality": "Massima Qualità: {quality}", + "select_audio_source": "Seleziona Sorgente Audio", + "endless_playback_description": "Aggiungi automaticamente nuove canzoni alla fine della coda", + "choose_your_region": "Scegli la tua regione", + "choose_your_region_description": "Questo aiuterà Spotube a mostrarti il contenuto giusto per la tua posizione.", + "choose_your_language": "Scegli la tua lingua", + "help_project_grow": "Aiuta questo progetto a crescere", + "help_project_grow_description": "Spotube è un progetto open-source. Puoi aiutare questo progetto a crescere contribuendo al progetto, segnalando bug o suggerendo nuove funzionalità.", + "contribute_on_github": "Contribuisci su GitHub", + "donate_on_open_collective": "Dona su Open Collective", + "browse_anonymously": "Naviga in modo anonimo" } \ No newline at end of file diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index d16708d7..ecdc77a2 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -286,5 +286,32 @@ "step_3_steps": "\"sp_dc\" Cookieの値をコピー", "step_4_steps": "コピーした\"sp_dc\"の値を貼り付け", "friends": "友達", - "no_lyrics_available": "申し訳ありませんが、このトラックの歌詞を見つけることができません" + "no_lyrics_available": "申し訳ありませんが、このトラックの歌詞を見つけることができません", + "sort_duration": "時間で並べ替え", + "start_a_radio": "ラジオを開始", + "how_to_start_radio": "ラジオをどのように開始しますか?", + "replace_queue_question": "現在のキューを置き換えるか、追加しますか?", + "endless_playback": "エンドレス再生", + "delete_playlist": "プレイリストを削除", + "delete_playlist_confirmation": "このプレイリストを削除してもよろしいですか?", + "local_tracks": "ローカルトラック", + "song_link": "曲のリンク", + "skip_this_nonsense": "この愚かなことをスキップ", + "freedom_of_music": "“音楽の自由”", + "freedom_of_music_palm": "“手のひらの中の音楽の自由”", + "get_started": "さあ始めましょう", + "youtube_source_description": "推奨され、最適に機能します。", + "piped_source_description": "自由に感じますか? YouTubeと同じですが、はるかに無料です。", + "jiosaavn_source_description": "南アジア地域向けの最適です。", + "highest_quality": "最高品質:{quality}", + "select_audio_source": "オーディオソースを選択", + "endless_playback_description": "新しい曲をキューの最後に自動的に追加", + "choose_your_region": "地域を選択", + "choose_your_region_description": "これにより、Spotubeがあなたの場所に適したコンテンツを表示できます。", + "choose_your_language": "言語を選択してください", + "help_project_grow": "このプロジェクトの成長を支援する", + "help_project_grow_description": "Spotubeはオープンソースプロジェクトです。プロジェクトに貢献したり、バグを報告したり、新しい機能を提案することで、このプロジェクトの成長に貢献できます。", + "contribute_on_github": "GitHubで貢献する", + "donate_on_open_collective": "Open Collectiveで寄付する", + "browse_anonymously": "匿名で閲覧する" } \ No newline at end of file diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index dac5b72a..5a3ee8bc 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -287,5 +287,32 @@ "step_4_steps": "복사한 \"sp_dc\"값을 붙여넣기", "friends": "친구", "no_lyrics_available": "죄송하지만 이 곡의 가사를 찾지 못했습니다", - "@@locale": "ko" -} + "@@locale": "ko", + "sort_duration": "시간순 정렬", + "start_a_radio": "라디오 시작", + "how_to_start_radio": "라디오를 어떻게 시작하시겠습니까?", + "replace_queue_question": "현재 큐를 대체하시겠습니까 아니면 추가하시겠습니까?", + "endless_playback": "끝없는 재생", + "delete_playlist": "재생 목록 삭제", + "delete_playlist_confirmation": "이 재생 목록을 삭제하시겠습니까?", + "local_tracks": "로컬 트랙", + "song_link": "곡 링크", + "skip_this_nonsense": "이 허튼소리 건너뛰기", + "freedom_of_music": "“음악의 자유”", + "freedom_of_music_palm": "“손바닥 안의 음악의 자유”", + "get_started": "시작합시다", + "youtube_source_description": "추천되며 가장 잘 작동합니다.", + "piped_source_description": "자유로운 기분이 듭니까? YouTube와 같지만 훨씬 더 무료합니다.", + "jiosaavn_source_description": "남아시아 지역에 최적입니다.", + "highest_quality": "최고 품질: {quality}", + "select_audio_source": "오디오 소스 선택", + "endless_playback_description": "자동으로 새로운 노래를 대기열의 끝에 추가", + "choose_your_region": "지역 선택", + "choose_your_region_description": "이것은 Spotube가 위치에 맞는 콘텐츠를 표시하는 데 도움이 됩니다.", + "choose_your_language": "언어 선택", + "help_project_grow": "이 프로젝트 성장에 도움을 주세요", + "help_project_grow_description": "Spotube는 오픈 소스 프로젝트입니다. 프로젝트에 기여하거나 버그를 보고하거나 새로운 기능을 제안하여이 프로젝트의 성장에 도움을 줄 수 있습니다.", + "contribute_on_github": "GitHub에서 기여하기", + "donate_on_open_collective": "Open Collective에 기부하기", + "browse_anonymously": "익명으로 둘러보기" +} \ No newline at end of file diff --git a/lib/l10n/app_ne.arb b/lib/l10n/app_ne.arb index 2d20fc9c..d921f3ba 100644 --- a/lib/l10n/app_ne.arb +++ b/lib/l10n/app_ne.arb @@ -286,5 +286,32 @@ "genres": "शैलीहरू", "explore_genres": "शैलीहरू अन्वेषण गर्नुहोस्", "friends": "साथीहरू", - "no_lyrics_available": "क्षमा गर्दैछौं, यस ट्र्याकका लागि गीतका शब्दहरू फेला परेन" + "no_lyrics_available": "क्षमा गर्दैछौं, यस ट्र्याकका लागि गीतका शब्दहरू फेला परेन", + "sort_duration": "अवधिको अनुसार क्रमबद्ध गर्नुहोस्", + "start_a_radio": "रेडियो सुरु गर्नुहोस्", + "how_to_start_radio": "तपाईं रेडियो कसरी सुरु गर्न चाहानुहुन्छ?", + "replace_queue_question": "के तपाईं वर्तमान कताक्ष कोट बदल्न चाहानुहुन्छ वा यसलाई थप्नुहुन्छ?", + "endless_playback": "अनन्त प्लेब्याक", + "delete_playlist": "प्लेलिस्ट मेटाउनुहोस्", + "delete_playlist_confirmation": "के तपाईं यो प्लेलिस्ट मेटाउन निश्चित हुनुहुन्छ?", + "local_tracks": "स्थानिय ट्र्याकहरू", + "song_link": "गीत लिंक", + "skip_this_nonsense": "यस अबश्यकता छोड्नुहोस्", + "freedom_of_music": "“संगीतको स्वतन्त्रता”", + "freedom_of_music_palm": "“तपाईंको हातमा संगीतको स्वतन्त्रता”", + "get_started": "आइयाँ प्रारम्भ गरौं", + "youtube_source_description": "सिफारिस गरिएको र बेस्ट काम गर्दछ।", + "piped_source_description": "मुक्त सुस्त? YouTube जस्तै तर धेरै मुक्त।", + "jiosaavn_source_description": "दक्षिण एशियाली क्षेत्रको लागि सर्वोत्तम।", + "highest_quality": "उच्चतम गुणस्तर: {quality}", + "select_audio_source": "आडियो स्रोत चयन गर्नुहोस्", + "endless_playback_description": "नयाँ गीतहरूलाई स्वचालित रूपमा कताक्षको अन्तमा जोड्नुहोस्", + "choose_your_region": "तपाईंको क्षेत्र छनौट गर्नुहोस्", + "choose_your_region_description": "यो Spotubeलाई तपाईंको स्थानका लागि सहि सामग्री देखाउने मद्दत गर्नेछ।", + "choose_your_language": "तपाईंको भाषा छनौट गर्नुहोस्", + "help_project_grow": "यस परियोजनामा वृद्धि गराउनुहोस्", + "help_project_grow_description": "Spotube एक खुला स्रोतको परियोजना हो। तपाईं परियोजनामा योगदान गरेर, त्रुटिहरू सूचिकै, वा नयाँ सुविधाहरू सुझाव दिएर यस परियोजनामा वृद्धि गर्न सक्नुहुन्छ।", + "contribute_on_github": "GitHubमा योगदान गर्नुहोस्", + "donate_on_open_collective": "खुला संगठनमा दान गर्नुहोस्", + "browse_anonymously": "अनामित रूपमा ब्राउज़ गर्नुहोस्" } \ No newline at end of file diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index 3bece8be..33e94a2e 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -286,5 +286,33 @@ "genres": "Genres", "explore_genres": "Genres verkennen", "friends": "Vrienden", - "no_lyrics_available": "Sorry, geen teksten gevonden voor dit nummer" -} + "no_lyrics_available": "Sorry, geen teksten gevonden voor dit nummer", + "sort_duration": "Sorteer op Duur", + "audio_source": "Audiobron", + "start_a_radio": "Start een Radio", + "how_to_start_radio": "Hoe wilt u de radio starten?", + "replace_queue_question": "Wilt u de huidige wachtrij vervangen of eraan toevoegen?", + "endless_playback": "Eindeloze Afspelen", + "delete_playlist": "Verwijder Afspeellijst", + "delete_playlist_confirmation": "Weet u zeker dat u deze afspeellijst wilt verwijderen?", + "local_tracks": "Lokale Nummers", + "song_link": "Nummer Link", + "skip_this_nonsense": "Sla deze onzin over", + "freedom_of_music": "“Vrijheid van Muziek”", + "freedom_of_music_palm": "“Vrijheid van Muziek in de palm van je hand”", + "get_started": "Laten we beginnen", + "youtube_source_description": "Aanbevolen en werkt het beste.", + "piped_source_description": "Voel je vrij? Hetzelfde als YouTube maar veel gratis.", + "jiosaavn_source_description": "Het beste voor de Zuid-Aziatische regio.", + "highest_quality": "Hoogste Kwaliteit: {quality}", + "select_audio_source": "Selecteer Audiobron", + "endless_playback_description": "Voeg automatisch nieuwe nummers toe aan het einde van de wachtrij", + "choose_your_region": "Kies uw regio", + "choose_your_region_description": "Dit zal Spotube helpen om de juiste inhoud voor uw locatie te tonen.", + "choose_your_language": "Kies uw taal", + "help_project_grow": "Help dit project groeien", + "help_project_grow_description": "Spotube is een open-source project. U kunt dit project helpen groeien door bij te dragen aan het project, bugs te melden of nieuwe functies voor te stellen.", + "contribute_on_github": "Bijdragen op GitHub", + "donate_on_open_collective": "Doneren op Open Collective", + "browse_anonymously": "Anoniem Bladeren" +} \ No newline at end of file diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index b7ce8923..a1bc5de6 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -286,5 +286,32 @@ "step_3_steps": "Skopiuj wartość ciasteczka \"sp_dc\"", "step_4_steps": "Wklej skopiowaną wartość \"sp_dc\"", "friends": "Przyjaciele", - "no_lyrics_available": "Przepraszamy, nie można znaleźć tekstu dla tego utworu" + "no_lyrics_available": "Przepraszamy, nie można znaleźć tekstu dla tego utworu", + "sort_duration": "Sortuj według Czasu Trwania", + "start_a_radio": "Uruchom radio", + "how_to_start_radio": "Jak chcesz uruchomić radio?", + "replace_queue_question": "Czy chcesz zastąpić bieżącą kolejkę czy dodać do niej?", + "endless_playback": "Nieskończona Odtwarzanie", + "delete_playlist": "Usuń Playlistę", + "delete_playlist_confirmation": "Czy na pewno chcesz usunąć tę listę odtwarzania?", + "local_tracks": "Lokalne Utwory", + "song_link": "Link do Utworu", + "skip_this_nonsense": "Pomiń tę bzdurę", + "freedom_of_music": "“Wolność Muzyki”", + "freedom_of_music_palm": "“Wolność Muzyki w Twojej dłoni”", + "get_started": "Zacznijmy", + "youtube_source_description": "Polecane i działa najlepiej.", + "piped_source_description": "Czujesz się wolny? To samo co YouTube, ale dużo za darmo.", + "jiosaavn_source_description": "Najlepszy dla regionu Azji Południowej.", + "highest_quality": "Najwyższa Jakość: {quality}", + "select_audio_source": "Wybierz Źródło Audio", + "endless_playback_description": "Automatycznie dodaj nowe utwory na koniec kolejki", + "choose_your_region": "Wybierz swoją region", + "choose_your_region_description": "To pomoże Spotube pokazać Ci odpowiednią treść dla Twojej lokalizacji.", + "choose_your_language": "Wybierz swój język", + "help_project_grow": "Pomóż temu projektowi rosnąć", + "help_project_grow_description": "Spotube to projekt open-source. Możesz pomóc temu projektowi rosnąć, przyczyniając się do projektu, zgłaszając błędy lub sugerując nowe funkcje.", + "contribute_on_github": "Przyczyniaj się na GitHubie", + "donate_on_open_collective": "Dotuj na Open Collective", + "browse_anonymously": "Przeglądaj Anonimowo" } \ No newline at end of file diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 1c75f734..7f290a1d 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -286,5 +286,32 @@ "step_3_steps": "Copie o valor do cookie \"sp_dc\"", "step_4_steps": "Cole o valor copiado de \"sp_dc\"", "friends": "Amigos", - "no_lyrics_available": "Desculpe, não foi possível encontrar a letra desta faixa" + "no_lyrics_available": "Desculpe, não foi possível encontrar a letra desta faixa", + "sort_duration": "Ordenar por Duração", + "start_a_radio": "Iniciar uma Rádio", + "how_to_start_radio": "Como você deseja iniciar a rádio?", + "replace_queue_question": "Você deseja substituir a fila atual ou acrescentar a ela?", + "endless_playback": "Reprodução sem fim", + "delete_playlist": "Excluir Lista de Reprodução", + "delete_playlist_confirmation": "Tem certeza de que deseja excluir esta lista de reprodução?", + "local_tracks": "Faixas Locais", + "song_link": "Link da Música", + "skip_this_nonsense": "Pular essa bobagem", + "freedom_of_music": "“Liberdade da Música”", + "freedom_of_music_palm": "“Liberdade da Música na palma da sua mão”", + "get_started": "Vamos começar", + "youtube_source_description": "Recomendado e funciona melhor.", + "piped_source_description": "Sentindo-se livre? Igual ao YouTube, mas muito mais grátis.", + "jiosaavn_source_description": "Melhor para a região da Ásia do Sul.", + "highest_quality": "Melhor Qualidade: {quality}", + "select_audio_source": "Selecionar Fonte de Áudio", + "endless_playback_description": "Adicionar automaticamente novas músicas\nao final da fila", + "choose_your_region": "Escolha sua região", + "choose_your_region_description": "Isso ajudará o Spotube a mostrar o conteúdo certo\npara sua localização.", + "choose_your_language": "Escolha seu idioma", + "help_project_grow": "Ajude este projeto a crescer", + "help_project_grow_description": "Spotube é um projeto de código aberto. Você pode ajudar este projeto a crescer contribuindo para o projeto, relatando bugs ou sugerindo novos recursos.", + "contribute_on_github": "Contribuir no GitHub", + "donate_on_open_collective": "Doar no Open Collective", + "browse_anonymously": "Navegar Anonimamente" } \ No newline at end of file diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 7ed67f4f..c9139a90 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -286,5 +286,32 @@ "step_3_steps": "Скопируйте значение файла cookie \"sp_dc\"", "step_4_steps": "Вставьте скопированное значение \"sp_dc\"", "friends": "Друзья", - "no_lyrics_available": "Извините, не удается найти текст для этого трека" + "no_lyrics_available": "Извините, не удается найти текст для этого трека", + "sort_duration": "Сортировка по Длительности", + "start_a_radio": "Запустить радио", + "how_to_start_radio": "Как вы хотите запустить радио?", + "replace_queue_question": "Хотите заменить текущую очередь или добавить к ней?", + "endless_playback": "Бесконечное воспроизведение", + "delete_playlist": "Удалить плейлист", + "delete_playlist_confirmation": "Вы уверены, что хотите удалить этот плейлист?", + "local_tracks": "Локальные треки", + "song_link": "Ссылка на песню", + "skip_this_nonsense": "Пропустить этот бред", + "freedom_of_music": "“Свобода музыки”", + "freedom_of_music_palm": "“Свобода музыки в вашей ладони”", + "get_started": "Начнем", + "youtube_source_description": "Рекомендуется и лучше всего работает.", + "piped_source_description": "Чувствуете себя свободно? То же самое, что и YouTube, но намного бесплатно.", + "jiosaavn_source_description": "Лучший для Южно-Азиатского региона.", + "highest_quality": "Наивысшее качество: {quality}", + "select_audio_source": "Выберите аудиоисточник", + "endless_playback_description": "Автоматически добавляйте новые песни\nв конец очереди", + "choose_your_region": "Выберите ваш регион", + "choose_your_region_description": "Это поможет Spotube показать вам правильный контент\nдля вашего местоположения.", + "choose_your_language": "Выберите ваш язык", + "help_project_grow": "Помогите этому проекту расти", + "help_project_grow_description": "Spotube - это проект с открытым исходным кодом. Вы можете помочь этому проекту развиваться, внося вклад в проект, сообщая ошибках или предлагая новые функции.", + "contribute_on_github": "Внести вклад на GitHub", + "donate_on_open_collective": "Пожертвовать на Open Collective", + "browse_anonymously": "Анонимно просматривать" } \ No newline at end of file diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index 4d9066fd..94800023 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -286,5 +286,32 @@ "step_3_steps": "\"sp_dc\" Çerezinin değerini kopyala", "step_4_steps": "Kopyalanan \"sp_dc\" değerini yapıştır", "friends": "Arkadaşlar", - "no_lyrics_available": "Üzgünüz, bu parça için şarkı sözleri bulunamıyor" + "no_lyrics_available": "Üzgünüz, bu parça için şarkı sözleri bulunamıyor", + "sort_duration": "Süreye Göre Sırala", + "start_a_radio": "Radyo Başlat", + "how_to_start_radio": "Radyoyu nasıl başlatmak istersiniz?", + "replace_queue_question": "Mevcut kuyruğu değiştirmek mi yoksa eklemek mi istersiniz?", + "endless_playback": "Sonsuz Çalma", + "delete_playlist": "Çalma Listesini Sil", + "delete_playlist_confirmation": "Bu çalma listesini silmek istediğinizden emin misiniz?", + "local_tracks": "Yerel Parçalar", + "song_link": "Şarkı Bağlantısı", + "skip_this_nonsense": "Bu saçmalığı atla", + "freedom_of_music": "“Müziğin Özgürlüğü”", + "freedom_of_music_palm": "“Müziğin Özgürlüğü avucunuzun içinde”", + "get_started": "Başlayalım", + "youtube_source_description": "Tavsiye edilir ve en iyi çalışır.", + "piped_source_description": "Özgür hissediyor musunuz? YouTube ile aynı ama çok daha fazla ücretsiz.", + "jiosaavn_source_description": "Güney Asya bölgesi için en iyisi.", + "highest_quality": "En Yüksek Kalite: {quality}", + "select_audio_source": "Ses Kaynağını Seç", + "endless_playback_description": "Yeni şarkıları otomatik olarak sıraya ekle\nsonuna", + "choose_your_region": "Bölgenizi Seçin", + "choose_your_region_description": "Bu, Spotube'un konumunuza uygun doğru içeriği göstermesine yardımcı olacaktır.", + "choose_your_language": "Dilinizi Seçin", + "help_project_grow": "Bu projenin büyümesine yardımcı olun", + "help_project_grow_description": "Spotube açık kaynaklı bir projedir. Bu projenin büyümesine, projeye katkıda bulunarak, hataları raporlayarak veya yeni özellikler önererek yardımcı olabilirsiniz.", + "contribute_on_github": "GitHub'da Katkıda Bulun", + "donate_on_open_collective": "Açık Topluluğa Bağış Yapın", + "browse_anonymously": "Anonim Olarak Göz At" } \ No newline at end of file diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index a4586a5e..fe57e617 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -286,5 +286,32 @@ "step_3_steps": "Скопіюйте значення cookie \"sp_dc\"", "step_4_steps": "Вставте скопійоване значення \"sp_dc\"", "friends": "Друзі", - "no_lyrics_available": "Вибачте, не вдалося знайти текст для цього треку" + "no_lyrics_available": "Вибачте, не вдалося знайти текст для цього треку", + "sort_duration": "Сортувати за тривалістю", + "start_a_radio": "Запустити радіо", + "how_to_start_radio": "Як ви хочете запустити радіо?", + "replace_queue_question": "Ви хочете замінити поточну чергу чи додати до неї?", + "endless_playback": "Безкінечне відтворення", + "delete_playlist": "Видалити плейлист", + "delete_playlist_confirmation": "Ви впевнені, що хочете видалити цей плейлист?", + "local_tracks": "Місцеві треки", + "song_link": "Посилання на пісню", + "skip_this_nonsense": "Пропустити цей бред", + "freedom_of_music": "“Свобода музики”", + "freedom_of_music_palm": "“Свобода музики у вашій долоні”", + "get_started": "Давайте почнемо", + "youtube_source_description": "Рекомендовано та працює краще за все.", + "piped_source_description": "Чи почуваєте себе вільно? Те саме, що і на YouTube, але набагато безкоштовно.", + "jiosaavn_source_description": "Найкраще для регіону Південної Азії.", + "highest_quality": "Найвища якість: {quality}", + "select_audio_source": "Виберіть джерело аудіо", + "endless_playback_description": "Автоматично додавати нові пісні\nв кінець черги", + "choose_your_region": "Виберіть ваш регіон", + "choose_your_region_description": "Це допоможе Spotube показати вам правильний контент\nдля вашого місцезнаходження.", + "choose_your_language": "Виберіть свою мову", + "help_project_grow": "Допоможіть цьому проекту рости", + "help_project_grow_description": "Spotube - це проект з відкритим кодом. Ви можете допомогти цьому проекту зростати, вносячи свій внесок у проект, повідомляючи про помилки або пропонуючи нові функції.", + "contribute_on_github": "Долучайтесь на GitHub", + "donate_on_open_collective": "Пожертвуйте на Open Collective", + "browse_anonymously": "Анонімно переглядати" } \ No newline at end of file diff --git a/lib/l10n/app_vi.arb b/lib/l10n/app_vi.arb index d8d337c2..0e9b0b7c 100644 --- a/lib/l10n/app_vi.arb +++ b/lib/l10n/app_vi.arb @@ -284,5 +284,32 @@ "discord_rich_presence": "Hiển thị trạng thái Discord", "browse_all": "Duyệt tất cả", "genres": "Thể loại", - "explore_genres": "Khám phá Thể loại" -} + "explore_genres": "Khám phá Thể loại", + "sort_duration": "Sắp xếp theo Thời lượng", + "start_a_radio": "Bắt đầu Một Đài phát thanh", + "how_to_start_radio": "Bạn muốn bắt đầu đài phát thanh như thế nào?", + "replace_queue_question": "Bạn muốn thay thế hàng đợi hiện tại hay thêm vào?", + "endless_playback": "Phát không giới hạn", + "delete_playlist": "Xóa Danh sách phát", + "delete_playlist_confirmation": "Bạn có chắc chắn muốn xóa danh sách phát này không?", + "local_tracks": "Bài hát Địa phương", + "song_link": "Liên kết Bài hát", + "skip_this_nonsense": "Bỏ qua bớt rối này", + "freedom_of_music": "“Sự Tự do của Âm nhạc”", + "freedom_of_music_palm": "“Sự Tự do của Âm nhạc trong lòng bàn tay của bạn”", + "get_started": "Bắt đầu thôi", + "youtube_source_description": "Được đề xuất và hoạt động tốt nhất.", + "piped_source_description": "Cảm thấy tự do? Giống như YouTube nhưng miễn phí hơn rất nhiều.", + "jiosaavn_source_description": "Tốt nhất cho khu vực Nam Á.", + "highest_quality": "Chất lượng Tốt nhất: {quality}", + "select_audio_source": "Chọn Nguồn Âm thanh", + "endless_playback_description": "Tự động thêm các bài hát mới\nvào cuối hàng đợi", + "choose_your_region": "Chọn khu vực của bạn", + "choose_your_region_description": "Điều này sẽ giúp Spotube hiển thị nội dung phù hợp cho vị trí của bạn.", + "choose_your_language": "Chọn ngôn ngữ của bạn", + "help_project_grow": "Hãy giúp dự án này phát triển", + "help_project_grow_description": "Spotube là một dự án mã nguồn mở. Bạn có thể giúp dự án này phát triển bằng cách đóng góp vào dự án, báo cáo lỗi hoặc đề xuất tính năng mới.", + "contribute_on_github": "Đóng góp trên GitHub", + "donate_on_open_collective": "Quyên góp trên Open Collective", + "browse_anonymously": "Duyệt Anonymously" +} \ No newline at end of file diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 20fdb329..506661f0 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -286,5 +286,32 @@ "step_3_steps": "复制\"sp_dc\" Cookie的值", "step_4_steps": "粘贴复制的\"sp_dc\"值", "friends": "朋友", - "no_lyrics_available": "抱歉,无法找到此曲的歌词" + "no_lyrics_available": "抱歉,无法找到此曲的歌词", + "sort_duration": "按时长排序", + "start_a_radio": "开始收听电台", + "how_to_start_radio": "您想如何开始收听电台?", + "replace_queue_question": "您想要替换当前队列还是追加到队列?", + "endless_playback": "无尽播放", + "delete_playlist": "删除播放列表", + "delete_playlist_confirmation": "您确定要删除此播放列表吗?", + "local_tracks": "本地音轨", + "song_link": "歌曲链接", + "skip_this_nonsense": "跳过此无聊内容", + "freedom_of_music": "“音乐的自由”", + "freedom_of_music_palm": "“音乐的自由掌握在您手中”", + "get_started": "让我们开始吧", + "youtube_source_description": "推荐并且效果最佳。", + "piped_source_description": "感觉自由?与YouTube一样但更自由。", + "jiosaavn_source_description": "最适合南亚地区。", + "highest_quality": "最高音质:{quality}", + "select_audio_source": "选择音频源", + "endless_playback_description": "自动将新歌曲添加到队列的末尾", + "choose_your_region": "选择您的地区", + "choose_your_region_description": "这将帮助Spotube为您的位置显示正确的内容。", + "choose_your_language": "选择您的语言", + "help_project_grow": "帮助这个项目成长", + "help_project_grow_description": "Spotube是一个开源项目。您可以通过为项目做出贡献、报告错误或建议新功能来帮助该项目成长。", + "contribute_on_github": "在GitHub上做出贡献", + "donate_on_open_collective": "在Open Collective上捐款", + "browse_anonymously": "匿名浏览" } \ No newline at end of file From 389a4fc704fef509c8321502150d5dfdf0295796 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 21:08:38 +0600 Subject: [PATCH 54/59] cd: remove debug step in upload task --- .github/workflows/spotube-release-binary.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index adb99003..14aeafa4 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -435,11 +435,6 @@ jobs: RELEASE.md5sum RELEASE.sha256sum - - name: Debug With SSH - uses: mxschmitt/action-tmate@v3 - with: - limit-access-to-actor: true - - name: Upload Release Binaries (stable) if: ${{ !inputs.dry_run && inputs.channel == 'stable' }} uses: ncipollo/release-action@v1 From 4a044498a40c070cb70b050f9a46e5fbb7b6ab95 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 23:03:56 +0600 Subject: [PATCH 55/59] chore: fix macos disable hardened runtime --- macos/Runner.xcodeproj/project.pbxproj | 4 +- macos/Runner/DebugProfile.entitlements | 2 - macos/Runner/RunnerDebug.entitlements | 2 - untranslated_messages.json | 600 +------------------------ 4 files changed, 4 insertions(+), 604 deletions(-) diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 0ee2c9fa..a2dd74c4 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -428,6 +428,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 88NVGSJ5N3; + ENABLE_HARDENED_RUNTIME = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Spotube; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; @@ -558,6 +559,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 88NVGSJ5N3; + ENABLE_HARDENED_RUNTIME = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Spotube; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; @@ -582,7 +584,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 88NVGSJ5N3; - ENABLE_HARDENED_RUNTIME = YES; + ENABLE_HARDENED_RUNTIME = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Spotube; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music"; diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index e9de2261..f05277de 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -6,8 +6,6 @@ com.apple.security.assets.music.read-write - com.apple.security.cs.allow-jit - com.apple.security.files.downloads.read-write com.apple.security.files.user-selected.read-write diff --git a/macos/Runner/RunnerDebug.entitlements b/macos/Runner/RunnerDebug.entitlements index e9de2261..f05277de 100644 --- a/macos/Runner/RunnerDebug.entitlements +++ b/macos/Runner/RunnerDebug.entitlements @@ -6,8 +6,6 @@ com.apple.security.assets.music.read-write - com.apple.security.cs.allow-jit - com.apple.security.files.downloads.read-write com.apple.security.files.user-selected.read-write diff --git a/untranslated_messages.json b/untranslated_messages.json index a6724f2b..4275f461 100644 --- a/untranslated_messages.json +++ b/untranslated_messages.json @@ -1,604 +1,6 @@ { - "ar": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "bn": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "ca": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "de": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "es": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "fa": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "fr": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "hi": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "it": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "ja": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "ko": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "ne": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "nl": [ - "sort_duration", - "audio_source", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "pl": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "pt": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "ru": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "tr": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "uk": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - "vi": [ - "sort_duration", "friends", - "no_lyrics_available", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" - ], - - "zh": [ - "sort_duration", - "start_a_radio", - "how_to_start_radio", - "replace_queue_question", - "endless_playback", - "delete_playlist", - "delete_playlist_confirmation", - "local_tracks", - "song_link", - "skip_this_nonsense", - "freedom_of_music", - "freedom_of_music_palm", - "get_started", - "youtube_source_description", - "piped_source_description", - "jiosaavn_source_description", - "highest_quality", - "select_audio_source", - "endless_playback_description", - "choose_your_region", - "choose_your_region_description", - "choose_your_language", - "help_project_grow", - "help_project_grow_description", - "contribute_on_github", - "donate_on_open_collective", - "browse_anonymously" + "no_lyrics_available" ] } From a248a4b48c1fd5d46e2f3dedb9330efa25de571f Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 8 Mar 2024 23:07:55 +0600 Subject: [PATCH 56/59] chore: fix getting started showing up everytime --- lib/main.dart | 1 - lib/pages/getting_started/sections/support.dart | 16 ++++++++++------ lib/services/kv_store/kv_store.dart | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 31c1da57..01e418dd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -70,7 +70,6 @@ Future main(List rawArgs) async { } await KVStoreService.initialize(); - KVStoreService.doneGettingStarted = false; final hiveCacheDir = kIsWeb ? null : (await getApplicationSupportDirectory()).path; diff --git a/lib/pages/getting_started/sections/support.dart b/lib/pages/getting_started/sections/support.dart index 1be7ca34..46823425 100644 --- a/lib/pages/getting_started/sections/support.dart +++ b/lib/pages/getting_started/sections/support.dart @@ -101,9 +101,11 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { style: TextButton.styleFrom( foregroundColor: Colors.white, ), - onPressed: () { - KVStoreService.doneGettingStarted = true; - context.go("/"); + onPressed: () async { + await KVStoreService.setDoneGettingStarted(true); + if (context.mounted) { + context.go("/"); + } }, ), ), @@ -115,9 +117,11 @@ class GettingStartedScreenSupportSection extends HookConsumerWidget { backgroundColor: const Color(0xff1db954), foregroundColor: Colors.white, ), - onPressed: () { - KVStoreService.doneGettingStarted = true; - context.push("/login"); + onPressed: () async { + await KVStoreService.setDoneGettingStarted(true); + if (context.mounted) { + context.push("/login"); + } }, ), ], diff --git a/lib/services/kv_store/kv_store.dart b/lib/services/kv_store/kv_store.dart index 6f6807e0..c1275612 100644 --- a/lib/services/kv_store/kv_store.dart +++ b/lib/services/kv_store/kv_store.dart @@ -10,6 +10,6 @@ abstract class KVStoreService { static bool get doneGettingStarted => sharedPreferences.getBool('doneGettingStarted') ?? false; - static set doneGettingStarted(bool value) => - sharedPreferences.setBool('doneGettingStarted', value); + static Future setDoneGettingStarted(bool value) async => + await sharedPreferences.setBool('doneGettingStarted', value); } From e516afb185f616471822ea745495a3d1d1281bd3 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 9 Mar 2024 00:00:36 +0600 Subject: [PATCH 57/59] fix(android): only ask battery optimization once #1252 --- .../use_disable_battery_optimizations.dart | 46 ++++--------------- lib/services/kv_store/kv_store.dart | 5 ++ 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/lib/hooks/configurators/use_disable_battery_optimizations.dart b/lib/hooks/configurators/use_disable_battery_optimizations.dart index c1155d19..a9afef45 100644 --- a/lib/hooks/configurators/use_disable_battery_optimizations.dart +++ b/lib/hooks/configurators/use_disable_battery_optimizations.dart @@ -1,47 +1,21 @@ import 'package:disable_battery_optimization/disable_battery_optimization.dart'; import 'package:flutter_desktop_tools/flutter_desktop_tools.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:spotube/hooks/utils/use_async_effect.dart'; +import 'package:spotube/services/kv_store/kv_store.dart'; -bool _asked = false; void useDisableBatteryOptimizations() { useAsyncEffect(() async { - if (!DesktopTools.platform.isAndroid || _asked) return; - final localStorage = await SharedPreferences.getInstance(); + if (!DesktopTools.platform.isAndroid || + KVStoreService.askedForBatteryOptimization) return; - final rawIsBatteryOptimizationDisabled = - localStorage.getBool("isBatteryOptimizationDisabled"); - final isBatteryOptimizationDisabled = - await DisableBatteryOptimization.isBatteryOptimizationDisabled; - if (rawIsBatteryOptimizationDisabled != false && - isBatteryOptimizationDisabled == false) { - final hasDisabled = await DisableBatteryOptimization - .showDisableBatteryOptimizationSettings(); + await DisableBatteryOptimization.showDisableBatteryOptimizationSettings(); - localStorage.setBool( - "isBatteryOptimizationDisabled", - hasDisabled == true, - ); - } + await DisableBatteryOptimization + .showDisableManufacturerBatteryOptimizationSettings( + "Your device has additional battery optimization", + "Follow the steps and disable the optimizations to allow smooth functioning of this app", + ); - final rawIsManBatteryOptimizationDisabled = - localStorage.getBool("isManufacturerBatteryOptimizationDisabled"); - final isManBatteryOptimizationDisabled = await DisableBatteryOptimization - .isManufacturerBatteryOptimizationDisabled; - - if (rawIsManBatteryOptimizationDisabled != false && - isManBatteryOptimizationDisabled == false) { - final hasDisabled = await DisableBatteryOptimization - .showDisableManufacturerBatteryOptimizationSettings( - "Your device has additional battery optimization", - "Follow the steps and disable the optimizations to allow smooth functioning of this app", - ); - - localStorage.setBool( - "isManufacturerBatteryOptimizationDisabled", - hasDisabled == true, - ); - } - _asked = true; + await KVStoreService.setAskedForBatteryOptimization(true); }, null, []); } diff --git a/lib/services/kv_store/kv_store.dart b/lib/services/kv_store/kv_store.dart index c1275612..5845b120 100644 --- a/lib/services/kv_store/kv_store.dart +++ b/lib/services/kv_store/kv_store.dart @@ -12,4 +12,9 @@ abstract class KVStoreService { sharedPreferences.getBool('doneGettingStarted') ?? false; static Future setDoneGettingStarted(bool value) async => await sharedPreferences.setBool('doneGettingStarted', value); + + static bool get askedForBatteryOptimization => + sharedPreferences.getBool('askedForBatteryOptimization') ?? false; + static Future setAskedForBatteryOptimization(bool value) async => + await sharedPreferences.setBool('askedForBatteryOptimization', value); } From eec7a9dbc41ab673b392690d3fbda335b097f7f9 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 9 Mar 2024 00:05:47 +0600 Subject: [PATCH 58/59] chore: update changelogs and update credits --- CHANGELOG.md | 1 + README.md | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02624a7f..ddbd4fe1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ All notable changes to this project will be documented in this file. See [standa * album images are small in certain places ([ca76a39](https://github.com/krtirtho/spotube/commit/ca76a39910b1a5af91aa7882a0d33c9d71db58a2)) * album, artist page not loading [#1282](https://github.com/krtirtho/spotube/issues/1282) ([a9a1d4c](https://github.com/krtirtho/spotube/commit/a9a1d4c9dc24aaf3181dc4090d1822ebfe755991)) * **android:** audio issue when screen is off and broadcast audio session id ([#1221](https://github.com/krtirtho/spotube/issues/1221) & [#1247](https://github.com/krtirtho/spotube/issues/1247)) ([17105a6](https://github.com/krtirtho/spotube/commit/17105a640bf5107bd5d333b9b4d097c14a3949a2)), closes [KRTirtho/spotube#571](https://github.com/KRTirtho/spotube/issues/571) +* **android:** only ask battery optimization once [#1252](https://github.com/krtirtho/spotube/issues/1252) ([e516afb](https://github.com/krtirtho/spotube/commit/e516afb185f616471822ea745495a3d1d1281bd3)) * **android:** pressing back button in any other tab other than home exits the app ([c3289a0](https://github.com/krtirtho/spotube/commit/c3289a0ba4e7de094a15246677ffcb940504ebde)) * **android:** system back button in player page exits the app ([3294f65](https://github.com/krtirtho/spotube/commit/3294f657fe8a03b18d9be8974968b6508465963d)) * cleanTitle removing feat and ft from words instead of whole words ([8612345](https://github.com/krtirtho/spotube/commit/86123456f2ff577921cf62cffca180427dfe1dd5)) diff --git a/README.md b/README.md index 469d03ac..de00054f 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [Piped](https://piped-docs.kavin.rocks/) - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design. 1. [YouTube](https://youtube.com/) - YouTube is an American online video-sharing platform headquartered in San Bruno, California. Three former PayPal employees—Chad Hurley, Steve Chen, and Jawed Karim—created the service in February 2005 1. [JioSaavn](https://www.jiosaavn.com) - JioSaavn is an Indian online music streaming service and a digital distributor of Bollywood, English and other regional Indian music across the world. Since it was founded in 2007 as Saavn, the company has acquired rights to over 5 crore (50 million) music tracks in 15 languages +1. [SongLink](https://song.link) - SongLink is a free smart link service that helps you share music with your audience. It's a one-stop-shop for creating smart links for music, podcasts, and other audio content 1. [Linux](https://www.linux.org) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution 1. [AUR](https://aur.archlinux.org) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users 1. [Flatpak](https://flatpak.org) - Flatpak is a utility for software deployment and package management for Linux @@ -242,7 +243,7 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse. 1. [flutter_inappwebview](https://inappwebview.dev/) - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window. 1. [flutter_native_splash](https://pub.dev/packages/flutter_native_splash) - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more. -1. [flutter_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable. +1. [flutter_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze. 1. [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android. 1. [flutter_svg](https://pub.dev/packages/flutter_svg) - An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files. 1. [form_validator](https://github.com/TheMisir/form-validator) - Simplest form validation library for flutter's form field widgets @@ -251,7 +252,7 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [google_fonts](https://pub.dev/packages/google_fonts) - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling. 1. [hive](https://github.com/hivedb/hive/tree/master/hive) - Lightweight and blazing fast key-value database written in pure Dart. Strongly encrypted using AES-256. 1. [hive_flutter](https://github.com/hivedb/hive/tree/master/hive_flutter) - Extension for Hive. Makes it easier to use Hive in Flutter apps. -1. [hooks_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable. +1. [hooks_riverpod](https://riverpod.dev) - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze. 1. [html](https://pub.dev/packages/html) - APIs for parsing and manipulating HTML content outside the browser. 1. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests. 1. [image_picker](https://pub.dev/packages/image_picker) - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. @@ -268,14 +269,12 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [path](https://pub.dev/packages/path) - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web. 1. [path_provider](https://pub.dev/packages/path_provider) - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories. 1. [permission_handler](https://pub.dev/packages/permission_handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. -1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video 1. [popover](https://github.com/minikin/popover) - A popover is a transient view that appears above other content onscreen when you tap a control or in an area. 1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter 1. [sidebarx](https://github.com/Frezyx/sidebarx) - flutter multiplatform navigation sidebar / side navigationbar / drawer widget 1. [shared_preferences](https://pub.dev/packages/shared_preferences) - Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. 1. [skeleton_text](https://github.com/101Loop/Skeleton-Text) - A package that provides an easy way to add skeleton text loading animation in Flutter project. This project is a part of 101Loop community. 1. [smtc_windows](https://github.com/KRTirtho/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet. -1. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API. 1. [stroke_text](https://github.com/MohamedAbd0/stroke_text) - A Simple Flutter plugin for applying stroke (border) style to a text widget 1. [system_theme](https://pub.dev/packages/system_theme) - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS 1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos. @@ -298,6 +297,9 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [app_links](https://github.com/llfbandit/app_links) - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included). 1. [win32_registry](https://win32.pub) - A package that provides a friendly Dart API for accessing the Windows Registry. 1. [flutter_sharing_intent](https://github.com/bhagat-techind/flutter_sharing_intent.git) - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app. +1. [flutter_broadcasts](https://pub.dev/packages/flutter_broadcasts) - A plugin for sending and receiving broadcasts with Android intents and iOS notifications. +1. [freezed_annotation](https://pub.dev/packages/freezed_annotation) - Annotations for the freezed code-generator. This package does nothing without freezed too. +1. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API. 1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation. 1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied. 1. [flutter_distributor](https://distributor.leanflutter.org) - A complete tool for packaging and publishing your Flutter apps. @@ -308,7 +310,9 @@ If you are concerned, you can [read the reason of choosing this license](https:/ 1. [json_serializable](https://pub.dev/packages/json_serializable) - Automatically generate code for converting to and from JSON by annotating Dart classes. 1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information. 1. [pubspec_parse](https://pub.dev/packages/pubspec_parse) - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting. +1. [freezed](https://pub.dev/packages/freezed) - Code generation for immutable classes that has a simple syntax/API without compromising on the features. 1. [flutter_desktop_tools](https://github.com/KRTirtho/flutter_desktop_tools) - Essential collection of tools for flutter desktop app development +1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video 1. [scrobblenaut](https://github.com/Nebulino/Scrobblenaut) - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark. 1. [window_size](https://github.com/google/flutter-desktop-embedding.git) - Allows resizing and repositioning the window containing Flutter. 1. [draggable_scrollbar](https://github.com/fluttercommunity/flutter-draggable-scrollbar) - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item. From 653900962937da58d00c6cbec8a6157e7a6964fe Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 9 Mar 2024 00:38:08 +0600 Subject: [PATCH 59/59] cd: fix linux tar --- .github/workflows/spotube-release-binary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 14aeafa4..68ea2d67 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -181,7 +181,7 @@ jobs: - uses: actions/upload-artifact@v3 - if: ${{ inputs.channel == 'release' }} + if: ${{ inputs.channel == 'stable' }} with: if-no-files-found: error name: Spotube-Release-Binaries