@involvex/youtube-music-cli 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +352 -0
- package/dist/eslint.config.d.ts +2 -0
- package/dist/eslint.config.js +55 -0
- package/dist/source/app.d.ts +4 -0
- package/dist/source/app.js +17 -0
- package/dist/source/cli.d.ts +2 -0
- package/dist/source/cli.js +241 -0
- package/dist/source/components/common/ErrorBoundary.d.ts +15 -0
- package/dist/source/components/common/ErrorBoundary.js +22 -0
- package/dist/source/components/common/Help.d.ts +1 -0
- package/dist/source/components/common/Help.js +10 -0
- package/dist/source/components/common/ShortcutsBar.d.ts +1 -0
- package/dist/source/components/common/ShortcutsBar.js +33 -0
- package/dist/source/components/config/ConfigLayout.d.ts +1 -0
- package/dist/source/components/config/ConfigLayout.js +84 -0
- package/dist/source/components/layouts/MainLayout.d.ts +4 -0
- package/dist/source/components/layouts/MainLayout.js +83 -0
- package/dist/source/components/layouts/PlayerLayout.d.ts +1 -0
- package/dist/source/components/layouts/PlayerLayout.js +10 -0
- package/dist/source/components/layouts/PluginsLayout.d.ts +1 -0
- package/dist/source/components/layouts/PluginsLayout.js +77 -0
- package/dist/source/components/layouts/SearchLayout.d.ts +4 -0
- package/dist/source/components/layouts/SearchLayout.js +81 -0
- package/dist/source/components/player/NowPlaying.d.ts +1 -0
- package/dist/source/components/player/NowPlaying.js +21 -0
- package/dist/source/components/player/PlayerControls.d.ts +1 -0
- package/dist/source/components/player/PlayerControls.js +41 -0
- package/dist/source/components/player/ProgressBar.d.ts +1 -0
- package/dist/source/components/player/ProgressBar.js +18 -0
- package/dist/source/components/player/QueueList.d.ts +4 -0
- package/dist/source/components/player/QueueList.js +30 -0
- package/dist/source/components/player/Suggestions.d.ts +1 -0
- package/dist/source/components/player/Suggestions.js +47 -0
- package/dist/source/components/playlist/PlaylistList.d.ts +1 -0
- package/dist/source/components/playlist/PlaylistList.js +11 -0
- package/dist/source/components/plugins/PluginInstallDialog.d.ts +5 -0
- package/dist/source/components/plugins/PluginInstallDialog.js +41 -0
- package/dist/source/components/plugins/PluginsAvailable.d.ts +5 -0
- package/dist/source/components/plugins/PluginsAvailable.js +55 -0
- package/dist/source/components/plugins/PluginsList.d.ts +8 -0
- package/dist/source/components/plugins/PluginsList.js +18 -0
- package/dist/source/components/search/SearchBar.d.ts +8 -0
- package/dist/source/components/search/SearchBar.js +50 -0
- package/dist/source/components/search/SearchResults.d.ts +10 -0
- package/dist/source/components/search/SearchResults.js +111 -0
- package/dist/source/components/settings/Settings.d.ts +1 -0
- package/dist/source/components/settings/Settings.js +42 -0
- package/dist/source/components/theme/ThemeSwitcher.d.ts +1 -0
- package/dist/source/components/theme/ThemeSwitcher.js +11 -0
- package/dist/source/config/themes.config.d.ts +3 -0
- package/dist/source/config/themes.config.js +63 -0
- package/dist/source/contexts/theme.context.d.ts +13 -0
- package/dist/source/contexts/theme.context.js +29 -0
- package/dist/source/hooks/useKeyboard.d.ts +10 -0
- package/dist/source/hooks/useKeyboard.js +104 -0
- package/dist/source/hooks/useNavigation.d.ts +1 -0
- package/dist/source/hooks/useNavigation.js +5 -0
- package/dist/source/hooks/usePlayer.d.ts +23 -0
- package/dist/source/hooks/usePlayer.js +35 -0
- package/dist/source/hooks/usePlaylist.d.ts +8 -0
- package/dist/source/hooks/usePlaylist.js +50 -0
- package/dist/source/hooks/useSearch.d.ts +8 -0
- package/dist/source/hooks/useSearch.js +76 -0
- package/dist/source/hooks/useTerminalSize.d.ts +4 -0
- package/dist/source/hooks/useTerminalSize.js +24 -0
- package/dist/source/hooks/useTheme.d.ts +6 -0
- package/dist/source/hooks/useTheme.js +5 -0
- package/dist/source/hooks/useYouTubeMusic.d.ts +11 -0
- package/dist/source/hooks/useYouTubeMusic.js +112 -0
- package/dist/source/main.d.ts +4 -0
- package/dist/source/main.js +69 -0
- package/dist/source/services/config/config.service.d.ts +26 -0
- package/dist/source/services/config/config.service.js +125 -0
- package/dist/source/services/logger/logger.service.d.ts +10 -0
- package/dist/source/services/logger/logger.service.js +52 -0
- package/dist/source/services/player/player.service.d.ts +58 -0
- package/dist/source/services/player/player.service.js +349 -0
- package/dist/source/services/player-state/player-state.service.d.ts +24 -0
- package/dist/source/services/player-state/player-state.service.js +122 -0
- package/dist/source/services/plugin/plugin-audio-api.d.ts +17 -0
- package/dist/source/services/plugin/plugin-audio-api.js +36 -0
- package/dist/source/services/plugin/plugin-context.d.ts +5 -0
- package/dist/source/services/plugin/plugin-context.js +256 -0
- package/dist/source/services/plugin/plugin-hooks.service.d.ts +62 -0
- package/dist/source/services/plugin/plugin-hooks.service.js +135 -0
- package/dist/source/services/plugin/plugin-installer.service.d.ts +27 -0
- package/dist/source/services/plugin/plugin-installer.service.js +247 -0
- package/dist/source/services/plugin/plugin-loader.service.d.ts +33 -0
- package/dist/source/services/plugin/plugin-loader.service.js +161 -0
- package/dist/source/services/plugin/plugin-permissions.service.d.ts +72 -0
- package/dist/source/services/plugin/plugin-permissions.service.js +194 -0
- package/dist/source/services/plugin/plugin-registry.service.d.ts +76 -0
- package/dist/source/services/plugin/plugin-registry.service.js +215 -0
- package/dist/source/services/plugin/plugin-ui-api.d.ts +25 -0
- package/dist/source/services/plugin/plugin-ui-api.js +46 -0
- package/dist/source/services/plugin/plugin-updater.service.d.ts +23 -0
- package/dist/source/services/plugin/plugin-updater.service.js +206 -0
- package/dist/source/services/youtube-music/api.d.ts +13 -0
- package/dist/source/services/youtube-music/api.js +371 -0
- package/dist/source/services/youtube-music/search.service.d.ts +11 -0
- package/dist/source/services/youtube-music/search.service.js +38 -0
- package/dist/source/stores/navigation.store.d.ts +10 -0
- package/dist/source/stores/navigation.store.js +67 -0
- package/dist/source/stores/player.store.d.ts +28 -0
- package/dist/source/stores/player.store.js +458 -0
- package/dist/source/stores/plugins.store.d.ts +46 -0
- package/dist/source/stores/plugins.store.js +177 -0
- package/dist/source/types/actions.d.ts +119 -0
- package/dist/source/types/actions.js +1 -0
- package/dist/source/types/cli.types.d.ts +14 -0
- package/dist/source/types/cli.types.js +1 -0
- package/dist/source/types/config.types.d.ts +19 -0
- package/dist/source/types/config.types.js +1 -0
- package/dist/source/types/keyboard.types.d.ts +5 -0
- package/dist/source/types/keyboard.types.js +1 -0
- package/dist/source/types/navigation.types.d.ts +14 -0
- package/dist/source/types/navigation.types.js +1 -0
- package/dist/source/types/player.types.d.ts +16 -0
- package/dist/source/types/player.types.js +1 -0
- package/dist/source/types/playlist.types.d.ts +12 -0
- package/dist/source/types/playlist.types.js +1 -0
- package/dist/source/types/plugin.types.d.ts +239 -0
- package/dist/source/types/plugin.types.js +1 -0
- package/dist/source/types/theme.types.d.ts +18 -0
- package/dist/source/types/theme.types.js +1 -0
- package/dist/source/types/youtube-music.types.d.ts +35 -0
- package/dist/source/types/youtube-music.types.js +1 -0
- package/dist/source/types/youtubei.types.d.ts +60 -0
- package/dist/source/types/youtubei.types.js +3 -0
- package/dist/source/utils/constants.d.ts +65 -0
- package/dist/source/utils/constants.js +82 -0
- package/dist/source/utils/format.d.ts +3 -0
- package/dist/source/utils/format.js +24 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +13 -0
- package/package.json +100 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface Artist {
|
|
2
|
+
artistId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
export interface Album {
|
|
6
|
+
albumId: string;
|
|
7
|
+
name: string;
|
|
8
|
+
artists: Artist[];
|
|
9
|
+
}
|
|
10
|
+
export interface Track {
|
|
11
|
+
videoId: string;
|
|
12
|
+
title: string;
|
|
13
|
+
artists: Artist[];
|
|
14
|
+
album?: Album;
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface Playlist {
|
|
18
|
+
playlistId: string;
|
|
19
|
+
name: string;
|
|
20
|
+
tracks: Track[];
|
|
21
|
+
}
|
|
22
|
+
export interface SearchResult {
|
|
23
|
+
type: 'song' | 'album' | 'artist' | 'playlist';
|
|
24
|
+
data: Track | Album | Artist | Playlist;
|
|
25
|
+
}
|
|
26
|
+
export interface SearchResponse {
|
|
27
|
+
results: SearchResult[];
|
|
28
|
+
hasMore: boolean;
|
|
29
|
+
continuation?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SearchOptions {
|
|
32
|
+
type?: 'all' | 'songs' | 'albums' | 'artists' | 'playlists';
|
|
33
|
+
limit?: number;
|
|
34
|
+
continuation?: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface VideoSearchResult {
|
|
2
|
+
id: string;
|
|
3
|
+
video_id?: string;
|
|
4
|
+
title: {
|
|
5
|
+
text: string;
|
|
6
|
+
} | string;
|
|
7
|
+
author?: {
|
|
8
|
+
name: string;
|
|
9
|
+
} | string;
|
|
10
|
+
channel_id?: string;
|
|
11
|
+
channel?: {
|
|
12
|
+
id: string;
|
|
13
|
+
};
|
|
14
|
+
duration?: {
|
|
15
|
+
seconds: number;
|
|
16
|
+
} | number;
|
|
17
|
+
type?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PlaylistSearchResult {
|
|
20
|
+
id: string;
|
|
21
|
+
title: {
|
|
22
|
+
text: string;
|
|
23
|
+
} | string;
|
|
24
|
+
author?: {
|
|
25
|
+
name: string;
|
|
26
|
+
} | string;
|
|
27
|
+
}
|
|
28
|
+
export interface ChannelSearchResult {
|
|
29
|
+
id: string;
|
|
30
|
+
channelId?: string;
|
|
31
|
+
author?: {
|
|
32
|
+
name: string;
|
|
33
|
+
} | string;
|
|
34
|
+
name?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface SearchResponse {
|
|
37
|
+
videos?: VideoSearchResult[];
|
|
38
|
+
playlists?: PlaylistSearchResult[];
|
|
39
|
+
channels?: ChannelSearchResult[];
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
export interface RelatedContent {
|
|
43
|
+
id: string;
|
|
44
|
+
title?: {
|
|
45
|
+
text: string;
|
|
46
|
+
} | string;
|
|
47
|
+
[key: string]: unknown;
|
|
48
|
+
}
|
|
49
|
+
export interface VideoInfo {
|
|
50
|
+
related?: {
|
|
51
|
+
contents: RelatedContent[];
|
|
52
|
+
};
|
|
53
|
+
chooseFormat?: (options: {
|
|
54
|
+
type: string;
|
|
55
|
+
quality: string;
|
|
56
|
+
}) => {
|
|
57
|
+
url: string;
|
|
58
|
+
} | null;
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const APP_NAME = "@involvex/youtube-music-cli";
|
|
2
|
+
export declare const APP_VERSION = "0.0.1";
|
|
3
|
+
export declare const CONFIG_DIR: string;
|
|
4
|
+
export declare const CONFIG_FILE: string;
|
|
5
|
+
export declare const VIEW: {
|
|
6
|
+
readonly PLAYER: "player";
|
|
7
|
+
readonly SEARCH: "search";
|
|
8
|
+
readonly PLAYLISTS: "playlists";
|
|
9
|
+
readonly ARTIST: "artist";
|
|
10
|
+
readonly ALBUM: "album";
|
|
11
|
+
readonly HELP: "help";
|
|
12
|
+
readonly SUGGESTIONS: "suggestions";
|
|
13
|
+
readonly SETTINGS: "settings";
|
|
14
|
+
readonly CONFIG: "config";
|
|
15
|
+
readonly PLUGINS: "plugins";
|
|
16
|
+
};
|
|
17
|
+
export declare const SEARCH_TYPE: {
|
|
18
|
+
readonly ALL: "all";
|
|
19
|
+
readonly SONGS: "songs";
|
|
20
|
+
readonly ALBUMS: "albums";
|
|
21
|
+
readonly ARTISTS: "artists";
|
|
22
|
+
readonly PLAYLISTS: "playlists";
|
|
23
|
+
};
|
|
24
|
+
export declare const KEYBINDINGS: {
|
|
25
|
+
readonly QUIT: readonly ["q", "escape"];
|
|
26
|
+
readonly HELP: readonly ["?"];
|
|
27
|
+
readonly SEARCH: readonly ["/"];
|
|
28
|
+
readonly PLAYLISTS: readonly ["p"];
|
|
29
|
+
readonly SUGGESTIONS: readonly ["g"];
|
|
30
|
+
readonly SETTINGS: readonly [","];
|
|
31
|
+
readonly PLAY_PAUSE: readonly [" "];
|
|
32
|
+
readonly NEXT: readonly ["n", "right"];
|
|
33
|
+
readonly PREVIOUS: readonly ["b", "left"];
|
|
34
|
+
readonly VOLUME_UP: readonly ["="];
|
|
35
|
+
readonly VOLUME_DOWN: readonly ["-"];
|
|
36
|
+
readonly SHUFFLE: readonly ["s"];
|
|
37
|
+
readonly REPEAT: readonly ["r"];
|
|
38
|
+
readonly SEEK_FORWARD: readonly ["shift+right"];
|
|
39
|
+
readonly SEEK_BACKWARD: readonly ["shift+left"];
|
|
40
|
+
readonly UP: readonly ["up", "k"];
|
|
41
|
+
readonly DOWN: readonly ["down", "j"];
|
|
42
|
+
readonly SELECT: readonly ["enter", "return"];
|
|
43
|
+
readonly BACK: readonly ["escape"];
|
|
44
|
+
readonly CLEAR_SEARCH: readonly ["escape"];
|
|
45
|
+
readonly NEXT_RESULT: readonly ["tab"];
|
|
46
|
+
readonly PREV_RESULT: readonly ["shift+tab"];
|
|
47
|
+
readonly INCREASE_RESULTS: readonly ["]"];
|
|
48
|
+
readonly DECREASE_RESULTS: readonly ["["];
|
|
49
|
+
readonly ADD_TO_PLAYLIST: readonly ["a"];
|
|
50
|
+
readonly REMOVE_FROM_PLAYLIST: readonly ["d"];
|
|
51
|
+
readonly CREATE_PLAYLIST: readonly ["c"];
|
|
52
|
+
readonly DELETE_PLAYLIST: readonly ["D"];
|
|
53
|
+
};
|
|
54
|
+
export declare const DEFAULT_VOLUME = 70;
|
|
55
|
+
export declare const MAX_QUEUE_SIZE = 1000;
|
|
56
|
+
export declare const THEMES: {
|
|
57
|
+
readonly DARK: "dark";
|
|
58
|
+
readonly LIGHT: "light";
|
|
59
|
+
readonly MIDNIGHT: "midnight";
|
|
60
|
+
readonly MATRIX: "matrix";
|
|
61
|
+
readonly CUSTOM: "custom";
|
|
62
|
+
};
|
|
63
|
+
export declare const PROGRESS_UPDATE_INTERVAL = 100;
|
|
64
|
+
export declare const STATUS_UPDATE_INTERVAL = 1000;
|
|
65
|
+
export declare const DEFAULT_THEME: "dark";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Application constants
|
|
2
|
+
export const APP_NAME = '@involvex/youtube-music-cli';
|
|
3
|
+
export const APP_VERSION = '0.0.1';
|
|
4
|
+
// Config directory
|
|
5
|
+
export const CONFIG_DIR = process.platform === 'win32'
|
|
6
|
+
? `${process.env['USERPROFILE']}\\.youtube-music-cli`
|
|
7
|
+
: `${process.env['HOME']}/.youtube-music-cli`;
|
|
8
|
+
export const CONFIG_FILE = `${CONFIG_DIR}/config.json`;
|
|
9
|
+
// View types
|
|
10
|
+
export const VIEW = {
|
|
11
|
+
PLAYER: 'player',
|
|
12
|
+
SEARCH: 'search',
|
|
13
|
+
PLAYLISTS: 'playlists',
|
|
14
|
+
ARTIST: 'artist',
|
|
15
|
+
ALBUM: 'album',
|
|
16
|
+
HELP: 'help',
|
|
17
|
+
SUGGESTIONS: 'suggestions',
|
|
18
|
+
SETTINGS: 'settings',
|
|
19
|
+
CONFIG: 'config',
|
|
20
|
+
PLUGINS: 'plugins',
|
|
21
|
+
};
|
|
22
|
+
// Search types
|
|
23
|
+
export const SEARCH_TYPE = {
|
|
24
|
+
ALL: 'all',
|
|
25
|
+
SONGS: 'songs',
|
|
26
|
+
ALBUMS: 'albums',
|
|
27
|
+
ARTISTS: 'artists',
|
|
28
|
+
PLAYLISTS: 'playlists',
|
|
29
|
+
};
|
|
30
|
+
// Keybindings
|
|
31
|
+
export const KEYBINDINGS = {
|
|
32
|
+
// Global
|
|
33
|
+
QUIT: ['q', 'escape'],
|
|
34
|
+
HELP: ['?'],
|
|
35
|
+
SEARCH: ['/'],
|
|
36
|
+
PLAYLISTS: ['p'],
|
|
37
|
+
SUGGESTIONS: ['g'],
|
|
38
|
+
SETTINGS: [','],
|
|
39
|
+
// Player
|
|
40
|
+
PLAY_PAUSE: [' '],
|
|
41
|
+
NEXT: ['n', 'right'],
|
|
42
|
+
PREVIOUS: ['b', 'left'],
|
|
43
|
+
VOLUME_UP: ['='], // Only '=' without shift, since '+' requires shift and causes issues
|
|
44
|
+
VOLUME_DOWN: ['-'], // Only '-' without shift
|
|
45
|
+
SHUFFLE: ['s'],
|
|
46
|
+
REPEAT: ['r'],
|
|
47
|
+
SEEK_FORWARD: ['shift+right'],
|
|
48
|
+
SEEK_BACKWARD: ['shift+left'],
|
|
49
|
+
// Navigation
|
|
50
|
+
UP: ['up', 'k'],
|
|
51
|
+
DOWN: ['down', 'j'],
|
|
52
|
+
SELECT: ['enter', 'return'],
|
|
53
|
+
BACK: ['escape'],
|
|
54
|
+
// Search
|
|
55
|
+
CLEAR_SEARCH: ['escape'],
|
|
56
|
+
NEXT_RESULT: ['tab'],
|
|
57
|
+
PREV_RESULT: ['shift+tab'],
|
|
58
|
+
INCREASE_RESULTS: [']'],
|
|
59
|
+
DECREASE_RESULTS: ['['],
|
|
60
|
+
// Playlist
|
|
61
|
+
ADD_TO_PLAYLIST: ['a'],
|
|
62
|
+
REMOVE_FROM_PLAYLIST: ['d'],
|
|
63
|
+
CREATE_PLAYLIST: ['c'],
|
|
64
|
+
DELETE_PLAYLIST: ['D'],
|
|
65
|
+
};
|
|
66
|
+
// Default volume
|
|
67
|
+
export const DEFAULT_VOLUME = 70;
|
|
68
|
+
// Queue limits
|
|
69
|
+
export const MAX_QUEUE_SIZE = 1000;
|
|
70
|
+
// Themes
|
|
71
|
+
export const THEMES = {
|
|
72
|
+
DARK: 'dark',
|
|
73
|
+
LIGHT: 'light',
|
|
74
|
+
MIDNIGHT: 'midnight',
|
|
75
|
+
MATRIX: 'matrix',
|
|
76
|
+
CUSTOM: 'custom',
|
|
77
|
+
};
|
|
78
|
+
// Update intervals
|
|
79
|
+
export const PROGRESS_UPDATE_INTERVAL = 100; // ms
|
|
80
|
+
export const STATUS_UPDATE_INTERVAL = 1000; // ms
|
|
81
|
+
// Default theme
|
|
82
|
+
export const DEFAULT_THEME = 'dark';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Format utilities
|
|
2
|
+
export function formatTime(seconds) {
|
|
3
|
+
if (!seconds || seconds < 0) {
|
|
4
|
+
return '0:00';
|
|
5
|
+
}
|
|
6
|
+
const mins = Math.floor(seconds / 60);
|
|
7
|
+
const secs = Math.floor(seconds % 60);
|
|
8
|
+
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
9
|
+
}
|
|
10
|
+
export function formatNumber(num) {
|
|
11
|
+
if (num >= 1_000_000) {
|
|
12
|
+
return `${(num / 1_000_000).toFixed(1)}M`;
|
|
13
|
+
}
|
|
14
|
+
if (num >= 1_000) {
|
|
15
|
+
return `${(num / 1_000).toFixed(1)}K`;
|
|
16
|
+
}
|
|
17
|
+
return num.toString();
|
|
18
|
+
}
|
|
19
|
+
export function truncate(text, maxLength) {
|
|
20
|
+
if (text.length <= maxLength) {
|
|
21
|
+
return text;
|
|
22
|
+
}
|
|
23
|
+
return text.slice(0, maxLength - 3) + '...';
|
|
24
|
+
}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render } from 'ink-testing-library';
|
|
3
|
+
import App from './source/app.js';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import test from 'ava';
|
|
6
|
+
test('greet unknown user', t => {
|
|
7
|
+
const { lastFrame } = render(_jsx(App, { flags: { help: true } }));
|
|
8
|
+
t.is(lastFrame(), `Hello, ${chalk.green('Stranger')}`);
|
|
9
|
+
});
|
|
10
|
+
test('greet user with a name', t => {
|
|
11
|
+
const { lastFrame } = render(_jsx(App, { flags: { version: true } }));
|
|
12
|
+
t.is(lastFrame(), `Hello, ${chalk.green('Jane')}`);
|
|
13
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@involvex/youtube-music-cli",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "- A Commandline music player for youtube-music",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/involvex/youtube-music-cli"
|
|
8
|
+
},
|
|
9
|
+
"funding": "https://github.com/sponsors/involvex",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": "involvex",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"bin": {
|
|
14
|
+
"youtube-music-cli": "dist/source/cli.js",
|
|
15
|
+
"ymc": "dist/source/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"prebuild": "bun run format && bun run lint:fix && bun run typecheck",
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"bun:build": "bun build source/cli.tsx --outfile dist/index.js --target node",
|
|
24
|
+
"compile": "bun build --compile source/cli.tsx --outfile dist/youtube-music-cli.exe",
|
|
25
|
+
"dev": "bun run --bun source/cli.tsx",
|
|
26
|
+
"dev:watch": "bun run --bun --watch source/cli.tsx",
|
|
27
|
+
"format": "prettier --write .",
|
|
28
|
+
"format:check": "prettier --check .",
|
|
29
|
+
"lint": "eslint . --ext .js,.jsx,.ts,.tsx --ignore-pattern dist",
|
|
30
|
+
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix --ignore-pattern dist",
|
|
31
|
+
"start": "bun run dist/source/cli.js",
|
|
32
|
+
"test": "prettier --check . && xo && ava",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
|
|
35
|
+
"clean": "rimraf dist"
|
|
36
|
+
},
|
|
37
|
+
"xo": {
|
|
38
|
+
"extends": "xo-react",
|
|
39
|
+
"prettier": true,
|
|
40
|
+
"rules": {
|
|
41
|
+
"react/prop-types": "off"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"prettier": "@vdemedes/prettier-config",
|
|
45
|
+
"ava": {
|
|
46
|
+
"extensions": {
|
|
47
|
+
"ts": "module",
|
|
48
|
+
"tsx": "module"
|
|
49
|
+
},
|
|
50
|
+
"nodeArguments": [
|
|
51
|
+
"--loader=ts-node/esm"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@distube/ytdl-core": "^4.16.12",
|
|
56
|
+
"ansi-escapes": "^7.3.0",
|
|
57
|
+
"ink": "^6.7.0",
|
|
58
|
+
"ink-table": "^3.1.0",
|
|
59
|
+
"ink-text-input": "^6.0.0",
|
|
60
|
+
"jiti": "^2.6.1",
|
|
61
|
+
"meow": "^14.0.0",
|
|
62
|
+
"node-youtube-music": "^0.10.3",
|
|
63
|
+
"play-sound": "^1.1.6",
|
|
64
|
+
"react": "^19.2.4",
|
|
65
|
+
"youtube-ext": "^1.1.25",
|
|
66
|
+
"youtubei.js": "^16.0.1"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@eslint/js": "^10.0.1",
|
|
70
|
+
"@sindresorhus/tsconfig": "^8.1.0",
|
|
71
|
+
"@types/react": "^19.2.14",
|
|
72
|
+
"@vdemedes/prettier-config": "^2.0.1",
|
|
73
|
+
"ava": "^6.4.1",
|
|
74
|
+
"chalk": "^5.6.2",
|
|
75
|
+
"conventional-changelog-cli": "^5.0.0",
|
|
76
|
+
"eslint": "^10.0.0",
|
|
77
|
+
"eslint-config-xo-react": "^0.29.0",
|
|
78
|
+
"eslint-plugin-react": "^7.37.5",
|
|
79
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
80
|
+
"globals": "^17.3.0",
|
|
81
|
+
"ink-testing-library": "^4.0.0",
|
|
82
|
+
"prettier": "^3.8.1",
|
|
83
|
+
"prettier-plugin-organize-imports": "^4.3.0",
|
|
84
|
+
"prettier-plugin-packagejson": "^3.0.0",
|
|
85
|
+
"prettier-plugin-sort-imports": "^1.8.11",
|
|
86
|
+
"react-devtools-core": "^7.0.1",
|
|
87
|
+
"rimraf": "^6.1.3",
|
|
88
|
+
"ts-node": "^10.9.2",
|
|
89
|
+
"typescript": "^5.9.3",
|
|
90
|
+
"typescript-eslint": "^8.56.0",
|
|
91
|
+
"xo": "^1.2.3"
|
|
92
|
+
},
|
|
93
|
+
"engines": {
|
|
94
|
+
"node": ">=16"
|
|
95
|
+
},
|
|
96
|
+
"sponsors": "https://github.com/sponsors/involvex",
|
|
97
|
+
"trustedDependencies": [
|
|
98
|
+
"unrs-resolver"
|
|
99
|
+
]
|
|
100
|
+
}
|