diff --git a/assets/rickroll.jpg b/assets/rickroll.jpg deleted file mode 100644 index e3e3a586..00000000 Binary files a/assets/rickroll.jpg and /dev/null differ diff --git a/assets/spotube.png b/assets/spotube.png new file mode 100644 index 00000000..93d05c6c Binary files /dev/null and b/assets/spotube.png differ diff --git a/node-mpv.d.ts b/node-mpv.d.ts deleted file mode 100644 index ebbe5d80..00000000 --- a/node-mpv.d.ts +++ /dev/null @@ -1,726 +0,0 @@ -// Type definitions for node-mpv 2.0-beta.0 -// Project: node-mpv -// Definitions by: leonekmi - -declare module "node-mpv" { - import EventEmitter = NodeJS.EventEmitter; - - interface NodeMpvOptions { - // Print debug lines - debug?: boolean; - // Print more lines - verbose?: boolean; - // Specify socket - socket?: string; - // Don't open video display - audio_only?: boolean; - // Auto-restart on a crash - auto_restart?: boolean; - // Time update for timeposition event - time_update?: number; - // Path to mpv binary - binary?: string; - } - - /*interface NodeMpvError { - -}*/ - - // these are the emitted events - type EventNames = "crashed" | "getrequest" | "seek" | "started" | "stopped" | "paused" | "resumed" | "status" | "timeposition" | "quit"; - type VoidCallback = () => void; - type VoidCallbackWithData = (arg: ArgType) => void; - type VoidCallbackWithData2 = (arg: ArgType, arg2: ArgType2) => void; - - type LoadMode = "replace" | "append"; - type MediaLoadMode = LoadMode | "append-play"; - type AudioFlag = "select" | "auto" | "cached"; - type SeekMode = "relative" | "absolute"; - type RepeatMode = number | "inf" | "no"; - type PlaylistMode = "weak" | "force"; - - interface TimePosition { - start: number; - end: number; - } - type StatusObjectProperties = "mute" | "pause" | "duration" | "volume" | "filename" | "path" | "media-title" | "playlist-pos" | "playlist-count" | "loop" | "fullscreen" | "sub-visibility"; - - interface StatusObject { - property: StatusObjectProperties; - value: string | number | boolean; - } - - type EventListenerArgs = [EventName, VoidCallback]; - type EventListenerArgsWithData = [EventName, VoidCallbackWithData]; - type EventListenerArgsWithMultipleData = [EventName, VoidCallbackWithData2]; - - export default class NodeMpv implements EventEmitter { - /** - * Listen to certain events which are emitted after any kind of - * status change of mpv player. - * @param args - * @see for Events https://github.com/j-holub/Node-MPV#events - */ - - addListener(...args: EventListenerArgs<"crashed">): this; - addListener(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - addListener(...args: EventListenerArgs<"paused">): this; - addListener(...args: EventListenerArgs<"quit">): this; - addListener(...args: EventListenerArgs<"resumed">): this; - addListener(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - addListener(...args: EventListenerArgs<"started">): this; - addListener(...args: EventListenerArgsWithData<"status", StatusObject>): this; - addListener(...args: EventListenerArgs<"stopped">): this; - addListener(...args: EventListenerArgsWithData<"timeposition", number>): this; - - /** - * Listen to certain events which are emitted after any kind of - * status change of mpv player - * @param args - * @see for Events https://github.com/j-holub/Node-MPV#events - */ - on(...args: EventListenerArgs<"crashed">): this; - on(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - on(...args: EventListenerArgs<"paused">): this; - on(...args: EventListenerArgs<"quit">): this; - on(...args: EventListenerArgs<"resumed">): this; - on(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - on(...args: EventListenerArgs<"started">): this; - on(...args: EventListenerArgsWithData<"status", StatusObject>): this; - on(...args: EventListenerArgs<"stopped">): this; - on(...args: EventListenerArgsWithData<"timeposition", number>): this; - - /** - * Listen to certain events which are emitted after any kind of - * status change of mpv player - * @param args - * @see for Events https://github.com/j-holub/Node-MPV#events - */ - once(...args: EventListenerArgs<"crashed">): this; - once(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - once(...args: EventListenerArgs<"paused">): this; - once(...args: EventListenerArgs<"quit">): this; - once(...args: EventListenerArgs<"resumed">): this; - once(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - once(...args: EventListenerArgs<"started">): this; - once(...args: EventListenerArgsWithData<"status", StatusObject>): this; - once(...args: EventListenerArgs<"stopped">): this; - once(...args: EventListenerArgsWithData<"timeposition", number>): this; - - /** - * Remove listener that is listening to the provided event `eventName` - * @param args - */ - off(...args: EventListenerArgs<"crashed">): this; - off(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - off(...args: EventListenerArgs<"paused">): this; - off(...args: EventListenerArgs<"quit">): this; - off(...args: EventListenerArgs<"resumed">): this; - off(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - off(...args: EventListenerArgs<"started">): this; - off(...args: EventListenerArgsWithData<"status", StatusObject>): this; - off(...args: EventListenerArgs<"stopped">): this; - off(...args: EventListenerArgsWithData<"timeposition", number>): this; - - /** - * Remove listener that is listening to the provided event `eventName` - * @param args - */ - removeListener(...args: EventListenerArgs<"crashed">): this; - removeListener(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - removeListener(...args: EventListenerArgs<"paused">): this; - removeListener(...args: EventListenerArgs<"quit">): this; - removeListener(...args: EventListenerArgs<"resumed">): this; - removeListener(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - removeListener(...args: EventListenerArgs<"started">): this; - removeListener(...args: EventListenerArgsWithData<"status", StatusObject>): this; - removeListener(...args: EventListenerArgs<"stopped">): this; - removeListener(...args: EventListenerArgsWithData<"timeposition", number>): this; - - /** - * Removes all listeners listening to a particular event `eventName` - * @param {EventNames?} event - Event names - */ - - removeAllListeners(event?: EventNames): this; - - setMaxListeners(n: number): this; - - getMaxListeners(): number; - - listeners(event: EventNames): Function[]; - - rawListeners(event: EventNames): Function[]; - emit(event: EventNames, ...args: any[]): boolean; - listenerCount(event: EventNames): number; - // Added in Node 6... - prependListener(...args: EventListenerArgs<"crashed">): this; - prependListener(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - prependListener(...args: EventListenerArgs<"paused">): this; - prependListener(...args: EventListenerArgs<"quit">): this; - prependListener(...args: EventListenerArgs<"resumed">): this; - prependListener(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - prependListener(...args: EventListenerArgs<"started">): this; - prependListener(...args: EventListenerArgsWithData<"status", StatusObject>): this; - prependListener(...args: EventListenerArgs<"stopped">): this; - prependListener(...args: EventListenerArgsWithData<"timeposition", number>): this; - - prependOnceListener(...args: EventListenerArgs<"crashed">): this; - prependOnceListener(...args: EventListenerArgsWithMultipleData<"getrequest", string, any>): this; - prependOnceListener(...args: EventListenerArgs<"paused">): this; - prependOnceListener(...args: EventListenerArgs<"quit">): this; - prependOnceListener(...args: EventListenerArgs<"resumed">): this; - prependOnceListener(...args: EventListenerArgsWithData<"seek", TimePosition>): this; - prependOnceListener(...args: EventListenerArgs<"started">): this; - prependOnceListener(...args: EventListenerArgsWithData<"status", StatusObject>): this; - prependOnceListener(...args: EventListenerArgs<"stopped">): this; - prependOnceListener(...args: EventListenerArgsWithData<"timeposition", number>): this; - - eventNames(): Array; - - /** - * A mpv wrapper for node - * - * @param options - Tweak NodeMPV behaviour - * @param mpv_args - Arrays of CLI options to pass to mpv. IPC options are automatically appended. - */ - constructor(options?: NodeMpvOptions, mpv_args?: string[]); - - /** - * Loads a file into MPV - * - * @param source - Path to the media file - * @param mode - * `replace`: replace the current media - * - * `append`: Append at the end of the playlist - * - * `append-play`: Append after the current song - * @param options - Options formatted as option=label - */ - load(source: string, mode?: MediaLoadMode, options?: string[]): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_audio.js - /** - * Add an audio track to the media file - * - * @param file - Path to the audio track - * @param flag - Flag to use (select, auto, cached) - * @param title - Title in OSD/OSC - * @param lang - Language - */ - addAudioTrack(file: string, flag?: AudioFlag, title?: string, lang?: string): Promise; - - /** - * Remove an audio track based on its id. - * - * @param id - ID of the audio track to remove - */ - removeAudioTrack(id: number): Promise; - - /** - * Select an audio track based on its id. - * - * @param id - ID of the audio track to select - */ - selectAudioTrack(id: number): Promise; - - /** - * Cycles through the audio track - */ - cycleAudioTracks(): Promise; - - /** - * Adjust audio timing - * @param seconds - Delay in seconds - */ - adjustAudioTiming(seconds: number): Promise; - - /** - * Set playback speed - * @param factor - 0.1 - 100: percentage of playback speed - */ - speed(factor: number): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_controls.js - /** - * Toggle play/pause - */ - togglePause(): Promise; - - /** - * Pauses playback - */ - pause(): Promise; - - /** - * Resumes playback - */ - resume(): Promise; - - /** - * Play the file in playlist - */ - play(): Promise; - - /** - * Stop playback immediately - */ - stop(): Promise; - - /** - * Set volume - * - * @param volume - */ - volume(volume: number): Promise; - - /** - * Increase/Decrease volume - * - * @param volume - */ - adjustVolume(volume: number): Promise; - - /** - * Mute - * - * @param set - setMute, if not specified, cycles - */ - mute(set?: boolean): Promise; - - /** - * Seek - * - * @param seconds - Seconds - * @param mode - Relative, absolute - * @see for info about seek https://mpv.io/manual/stable/#command-interface-seek-%3Ctarget%3E-[%3Cflags%3E] - */ - seek(seconds: number, mode?: SeekMode): Promise; - - /** - * Shorthand for absolute seek - * - * @param seconds - Seconds - */ - goToPosition(seconds: number): Promise; - - /** - * Set loop mode for current file - * - * @param times - either a number of loop iterations, 'inf' for infinite loop or 'no' to disable loop. - * If it's not specified, the property will cycle through inf and no. - */ - loop(times?: RepeatMode): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_commands.js - // List of mpv properties are available here: https://mpv.io/manual/stable/#property-list - /** - * Retrieve a property - * - * @param property - */ - getProperty(property: string): Promise; - - /** - * Set a property - * - * @param property - * @param value - */ - setProperty(property: string, value: any): Promise; - - /** - * Set a set of properties - * - * @param properties - {property1: value1, property2: value2} - */ - setMultipleProperties(properties: object): Promise; - - /** - * Add value to a property (only on number properties) - * - * @param property - * @param value - */ - addProperty(property: string, value: number): Promise; - /** - * Multiply a property by value (only on number properties) - * - * @param property - * @param value - */ - multiplyProperty(property: string, value: number): Promise; - - /** - * Cycle through different modes of a property (boolean, enum) - * - * @param property - */ - cycleProperty(property: string): Promise; - - /** - * Send a custom command to mpv - * - * @param command Command name - * @param args Array of arguments - */ - command(command: string, args: string[]): Promise; - - /** - * Send a custom payload to mpv - * - * @param command the JSON command to send to mpv - */ - commandJSON(command: object): Promise; - - /** - * Send a custom payload to mpv (no JSON encode) - * - * @param command the JSON encoded command to send to mpv - */ - freeCommand(command: string): Promise; - - /** - * Observe a property - * You can receive events with the 'status' event - * - * @param property The property to observe - */ - observeProperty(property: string): any; - - /** - * Unobserve a property - * - * @param property - */ - unobserveProperty(property: string): any; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_information.js - /** - * Returns the mute status of mpv - */ - isMuted(): Promise; - - /** - * Returns the pause status of mpv - */ - isPaused(): Promise; - - /** - * Returns the seekable property of the loaded media - * Some medias are not seekable (livestream, unbuffered media) - */ - isSeekable(): Promise; - - /** - * Retrieve the duration of the loaded media - */ - getDuration(): Promise; - - /** - * Retrieve the current time position of the loaded media - */ - getTimePosition(): Promise; - - /** - * Retrieve the current time position (in percentage) of the loaded media - */ - getPercentPosition(): Promise; - - /** - * Retrieve the time remaining of the loaded media - */ - getTimeRemaining(): Promise; - - /** - * Retrieve the metadata of the loaded media - */ - getMetadata(): Promise; - - /** - * Retrieve the title of the loaded media - */ - getTitle(): Promise; - - /** - * Retrieve the artist of the loaded media - */ - getArtist(): Promise; - - /** - * Retrieve the album of the loaded media - */ - getAlbum(): Promise; - - /** - * Retrieve the year of the loaded media - */ - getYear(): Promise; - - /** - * Retrieve the filename of the loaded media - * - * @param format 'stripped' remove the extension, default to 'full' - */ - getFilename(format?: "full" | "stripped"): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_playlist.js - /** - * Load a playlist file - * - * @param playlist Path to the playlist file - * @param mode 'append' adds the playlist to the existing one. Defaults to 'replace' - */ - loadPlaylist(playlist: string, mode?: LoadMode): Promise; - - /** - * Add a song to the playlist - * - * @param source File path of media - * @param mode - * replace: replace the current media - * append: Append at the end of the playlist - * append-play: Append after the current song - * @param options - */ - append(source: string, mode?: MediaLoadMode, options?: string[]): Promise; - - /** - * Load next element in playlist - * - * @param mode - 'force' may go into an undefined index of the playlist - */ - next(mode?: PlaylistMode): Promise; - - /** - * Load previous element in playlist - * - * @param mode - 'force' may go into an undefined index of the playlist - */ - prev(mode?: PlaylistMode): Promise; - - /** - * Jump to position in playlist - * - * @param position - */ - jump(position: number): Promise; - - /** - * Empty the playlist - */ - clearPlaylist(): Promise; - - /** - * - * @param index - */ - playlistRemove(index: number): Promise; - - /** - * - * @param index1 - * @param index2 - */ - playlistMove(index1: number, index2: number): Promise; - - /** - * - */ - shuffle(): Promise; - - /** - * - */ - getPlaylistSize(): Promise; - - /** - * - */ - getPlaylistPosition(): Promise; - - /** - * - */ - getPlaylistPosition1(): Promise; - - /** - * Set loop mode for playlist - * - * @param times - either a number of loop iterations, 'inf' for infinite loop or 'no' to disable loop. - * If it's not specified, the property will cycle through inf and no. - */ - loopPlaylist(times?: RepeatMode): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_startStop.js - /** - * Starts mpv, by spawning a child process or by attaching to existing socket - */ - start(): Promise; - /** - * Closes mpv - * - * [Important!] Calling method `quit` doesn't trigger the event `quit` - */ - quit(): Promise; - /** - * Returns the status of mpv - */ - isRunning(): boolean; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_subtitle.js - /** - * Loads a subtitle file into the current media file - * - * @param file Path to the subtitle file - * @param flag - * Select: Select the loaded file - * Auto: Let mpv decide - * Cached: Don't select the loaded file - * @param title Title to show in OSD/OSC - * @param lang Language of the subtitles - */ - addSubtitles(file: string, flag?: "select" | "auto" | "cached", title?: string, lang?: string): Promise; - - /** - * Remove subtitles - * - * @param id Index of subtitles to delete - */ - removeSubtitles(id: number): Promise; - - /** - * Cycle through available subtitles - */ - cycleSubtitles(): Promise; - - /** - * Select subtitles by its id - * - * @param id - */ - selectSubtitles(id: number): Promise; - - /** - * Toggle subtitles visibility - */ - toggleSubtitleVisibility(): Promise; - - /** - * Show the subtitles on the screen - */ - showSubtitles(): Promise; - - /** - * Hide the subtitles on the screen - */ - hideSubtitles(): Promise; - - /** - * Adjust the subtitles offset to seconds - * - * @param seconds Offset to apply in seconds - */ - adjustSubtitleTiming(seconds: number): Promise; - - /** - * Seek based on subtitles lines - * - * @param lines - */ - subtitleSeek(lines: number): Promise; - - /** - * Scale the font of subtitles based on scale - * - * @param scale - */ - subtitleScale(scale: number): Promise; - - /** - * Show a text using ASS renderer - * - * @param ass an ass string - * @param duration duration in seconds - * @param position ASS alignment - */ - displayASS(ass: string, duration: number, position?: number): Promise; - - // https://github.com/j-holub/Node-MPV/blob/master/lib/mpv/_video.js - /** - * Enter fullscreen - */ - fullscreen(): Promise; - - /** - * Leave fullscreen - */ - leaveFullscreen(): Promise; - - /** - * Toggle fullscreen - */ - toggleFullscreen(): Promise; - - /** - * Take a screenshot - * - * @param file - * @param option - * Subtitles: show subtitles - * Video: hide subtitles/osd/osc - * Window: Take the screen at the size of the window - */ - screenshot(file: string, option: "subtitles" | "video" | "window"): Promise; - - /** - * Rotate the video - * - * @param degrees - */ - rotateVideo(degrees: number): Promise; - - /** - * Zoom the video, 0 means no zoom, 1 means x2 - * - * @param factor - */ - zoomVideo(factor: number): Promise; - - /** - * Set Brightness - * - * @param value - */ - brightness(value: number): Promise; - - /** - * Set Contrast - * - * @param value - */ - contrast(value: number): Promise; - - /** - * Set saturation - * - * @param value - */ - saturation(value: number): Promise; - - /** - * Set gamme on media - * - * @param value - */ - gamma(value: number): Promise; - - /** - * Set Hue - * - * @param value - */ - hue(value: number): Promise; - } -} diff --git a/package-lock.json b/package-lock.json index 9f1ae7ac..2bf3f6af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1601,9 +1601,9 @@ "dev": true }, "@types/eslint": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", - "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", + "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", "dev": true, "requires": { "@types/estree": "*", @@ -2056,9 +2056,9 @@ } }, "acorn": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", - "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", "dev": true }, "ajv": { @@ -2408,9 +2408,9 @@ } }, "broadcast-channel": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.4.1.tgz", - "integrity": "sha512-VXYivSkuBeQY+pL5hNQQNvBdKKQINBAROm4G8lAbWQfOZ7Yn4TMcgLNlJyEqlkxy5G8JJBsI3VJ1u8FUTOROcg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.5.3.tgz", + "integrity": "sha512-OLOXfwReZa2AAAh9yOUyiALB3YxBe0QpThwwuyRHLgpl8bSznSDmV6Mz7LeBJg1VZsMcDcNMy7B53w12qHrIhQ==", "requires": { "@babel/runtime": "^7.7.2", "detect-node": "^2.0.4", @@ -3031,9 +3031,9 @@ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==" }, "dom-serializer": { "version": "1.2.0", @@ -3215,9 +3215,9 @@ } }, "es-module-lexer": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", - "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", "dev": true }, "escalade": { @@ -3281,9 +3281,9 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { @@ -3515,9 +3515,9 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "fork-ts-checker-webpack-plugin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.1.0.tgz", - "integrity": "sha512-xLNufWQ1dfQUdZe48TGQlER/0OkcMnUB6lfbN9Tt13wsYyo+2DwcCbnOaPBo1PoFow/WL8pJPktGIdbJaHxAnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz", + "integrity": "sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", @@ -3534,40 +3534,6 @@ "tapable": "^1.0.0" }, "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -3580,12 +3546,6 @@ "universalify": "^2.0.0" } }, - "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 - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -3616,15 +3576,6 @@ "lru-cache": "^6.0.0" } }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -3798,9 +3749,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -4191,23 +4142,6 @@ "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "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 - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "jimp": { @@ -4661,9 +4595,9 @@ } }, "node-mpv": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/node-mpv/-/node-mpv-2.0.0-beta.1.tgz", - "integrity": "sha512-HebogSElIoclVcs2qWH1jXaRayGVzh0Q+hsTXOMHrKN0MbQJqisaimOeZuyCJDIwt4NhmfWwavsYEeXkiMFjuA==" + "version": "2.0.0-beta.2", + "resolved": "https://registry.npmjs.org/node-mpv/-/node-mpv-2.0.0-beta.2.tgz", + "integrity": "sha512-jf1InAB6tSXYlLs53DSw7ZEGCAhuWibILMF8GU6FmX6jXvkScLfGa9B7nmrIidG8euDpi3hdnUht0PqrHlAbXA==" }, "node-releases": { "version": "1.1.70", @@ -4773,9 +4707,9 @@ } }, "open": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.1.tgz", - "integrity": "sha512-Pxv+fKRsd/Ozflgn2Gjev1HZveJJeKR6hKKmdaImJMuEZ6htAvCTbcMABJo+qevlAelTLCrEK3YTKZ9fVTcSPw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "requires": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -5306,9 +5240,9 @@ } }, "react-query": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.12.0.tgz", - "integrity": "sha512-WJYECeZ6xT2oxIlgqXUjLNLWRvJbeelXscVnAFfyUFgO21OYEYHMWPG61V9W57EUUqrXioQsNPsU9XyddfEvXQ==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.13.0.tgz", + "integrity": "sha512-CzBvgjMh8jNJMSPhXCE92DBIFbE31j8PA2k7ipR1F8DlcNAEsZwLsUzh1cTtzpDaS2+r6sntgmM6qKnCD6E5zQ==", "requires": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -5970,9 +5904,9 @@ } }, "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", + "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -6119,9 +6053,9 @@ } }, "typescript": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.4.tgz", - "integrity": "sha512-+Uru0t8qIRgjuCpiSPpfGuhHecMllk5Zsazj5LZvVsEStEjmIRRBZe+jHjGQvsgS7M1wONy2PQXd67EMyV6acg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "unicode-canonical-property-names-ecmascript": { @@ -6286,9 +6220,9 @@ } }, "webpack": { - "version": "5.21.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.21.2.tgz", - "integrity": "sha512-xHflCenx+AM4uWKX71SWHhxml5aMXdy2tu/vdi4lClm7PADKxlyDAFFN1rEFzNV0MAoPpHtBeJnl/+K6F4QBPg==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.27.1.tgz", + "integrity": "sha512-rxIDsPZ3Apl3JcqiemiLmWH+hAq04YeOXqvCxNZOnTp8ZgM9NEPtbu4CaMfMEf9KShnx/Ym8uLGmM6P4XnwCoA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -6300,7 +6234,7 @@ "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.7.0", - "es-module-lexer": "^0.3.26", + "es-module-lexer": "^0.4.0", "eslint-scope": "^5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -6509,9 +6443,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 233a5f82..b66946f1 100644 --- a/package.json +++ b/package.json @@ -27,11 +27,11 @@ "is-url": "^1.2.4", "jimp": "^0.16.1", "node-localstorage": "^2.1.6", - "node-mpv": "^2.0.0-beta.1", - "open": "^7.4.1", + "node-mpv": "^2.0.0-beta.2", + "open": "^7.4.2", "react": "^16.14.0", "react-dom": "^17.0.1", - "react-query": "^3.12.0", + "react-query": "^3.13.0", "react-router": "^5.2.0", "scrape-yt": "^1.4.7", "spotify-web-api-node": "^5.0.2", @@ -58,10 +58,10 @@ "clean-webpack-plugin": "^3.0.0", "cross-env": "^7.0.3", "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^6.1.0", + "fork-ts-checker-webpack-plugin": "^6.2.0", "native-addon-loader": "^2.0.1", - "typescript": "^4.0.3", - "webpack": "^5.18.0", + "typescript": "^4.2.3", + "webpack": "^5.27.0", "webpack-cli": "^4.4.0" } } diff --git a/src/app.tsx b/src/app.tsx index cff361e4..c4ee395a 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,7 +1,6 @@ import React, { useState, useEffect, useRef } from "react"; import { Window, hot, View, useEventHandler, BoxView } from "@nodegui/react-nodegui"; import { Direction, QIcon, QKeyEvent, QMainWindow, QMainWindowSignals, WidgetEventTypes, WindowState } from "@nodegui/nodegui"; -import nodeguiIcon from "../assets/nodegui.jpg"; import { MemoryRouter } from "react-router"; import Routes from "./routes"; import { LocalStorage } from "node-localstorage"; @@ -16,6 +15,7 @@ import showError from "./helpers/showError"; import fs from "fs" import path from "path"; import { confDir } from "./conf"; +import spotubeIcon from "../assets/spotube.png"; export enum CredentialKeys { credentials = "credentials", @@ -28,7 +28,7 @@ export interface Credentials { } const minSize = { width: 700, height: 750 }; -const winIcon = new QIcon(nodeguiIcon); +const winIcon = new QIcon(spotubeIcon); const localStorageDir = path.join(confDir, "local"); fs.mkdirSync(localStorageDir, {recursive: true}); global.localStorage = new LocalStorage(localStorageDir);