From e4de4aba2b779fcbbc524d453d97de8d55943a87 Mon Sep 17 00:00:00 2001 From: Borewit Date: Thu, 18 Oct 2018 20:38:01 +0200 Subject: [PATCH] Simplify TypeScript definition (avoid redefine music-metadata-browser). --- js/fileUtils.ts | 4 ++-- js/types.ts | 37 ++++--------------------------------- 2 files changed, 6 insertions(+), 35 deletions(-) diff --git a/js/fileUtils.ts b/js/fileUtils.ts index 3d03d966..4f021522 100644 --- a/js/fileUtils.ts +++ b/js/fileUtils.ts @@ -1,12 +1,12 @@ import invariant from "invariant"; -import { IMusicMetadataBrowserApi } from "./types"; +import { MusicMetadataBrowser } from "./types"; import { IAudioMetadata } from "music-metadata-browser"; // Import music-metadata type definitions type MediaDataType = string | ArrayBuffer | Blob; export function genMediaTags( file: MediaDataType, - musicMetadata: IMusicMetadataBrowserApi + musicMetadata: MusicMetadataBrowser ): Promise { invariant( file != null, diff --git a/js/types.ts b/js/types.ts index 57605171..b62f4230 100644 --- a/js/types.ts +++ b/js/types.ts @@ -8,7 +8,7 @@ import { EqualizerState } from "./reducers/equalizer"; import { NetworkState } from "./reducers/network"; import { SerializedStateV1 } from "./serializedStates/v1Types"; import { TracksState } from "./reducers/tracks"; -import { IAudioMetadata, IOptions } from 'music-metadata-browser'; +import musicMetadataBrowser from 'music-metadata-browser'; export { WebampWindow, @@ -518,41 +518,12 @@ export interface AppState { tracks: TracksState; } -/** - * Type definition of the music-metadata-browser module. - * Ref: https://github.com/Borewit/music-metadata-browser/blob/master/src/index.ts - */ -export interface IMusicMetadataBrowserApi { - - /** - * Parse Web API File - * @param {Blob} blob - * @param {IOptions} options Parsing options - * @returns {Promise} - */ - parseBlob(blob: Blob, options?: IOptions): Promise; - - /** - * Parse fetched file, using the Web Fetch API - * @param {string} audioTrackUrl URL to download the audio track from - * @param {IOptions} options Parsing options - * @returns {Promise} - */ - fetchFromUrl(audioTrackUrl: string, options?: IOptions): Promise; - - /** - * Parse audio from Node Buffer - * @param {Stream.Readable} stream Audio input stream - * @param {string} mimeType Content specification MIME-type, e.g.: 'audio/mpeg' - * @param {IOptions} options Parsing options - * @returns {Promise} - */ - parseBuffer(buf: Buffer, mimeType?: string, options?: IOptions): Promise; -} +// Convert the musicMetadataBrowser namespace to a type which can be used as an interface +export type MusicMetadataBrowser = typeof musicMetadataBrowser; export interface Extras { requireJSZip: () => Promise; - requireMusicMetadata: () => Promise; + requireMusicMetadata: () => Promise; } export type GetState = () => AppState;