Simplify TypeScript definition (avoid redefine music-metadata-browser).

This commit is contained in:
Borewit 2018-10-18 20:38:01 +02:00 committed by Jordan Eldredge
parent 7ebaa65cfd
commit e4de4aba2b
2 changed files with 6 additions and 35 deletions

View file

@ -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<IAudioMetadata> {
invariant(
file != null,

View file

@ -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<IAudioMetadata>}
*/
parseBlob(blob: Blob, options?: IOptions): Promise<IAudioMetadata>;
/**
* 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<IAudioMetadata>}
*/
fetchFromUrl(audioTrackUrl: string, options?: IOptions): Promise<IAudioMetadata>;
/**
* Parse audio from Node Buffer
* @param {Stream.Readable} stream Audio input stream
* @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'
* @param {IOptions} options Parsing options
* @returns {Promise<IAudioMetadata>}
*/
parseBuffer(buf: Buffer, mimeType?: string, options?: IOptions): Promise<IAudioMetadata>;
}
// Convert the musicMetadataBrowser namespace to a type which can be used as an interface
export type MusicMetadataBrowser = typeof musicMetadataBrowser;
export interface Extras {
requireJSZip: () => Promise<never>;
requireMusicMetadata: () => Promise<IMusicMetadataBrowserApi>;
requireMusicMetadata: () => Promise<MusicMetadataBrowser>;
}
export type GetState = () => AppState;