UNPKG

@radiolise/metadata-client

Version:

Library for subscribing to metadata of ICY radio streams; powered by the Radiolise API, based on WebSockets

55 lines (52 loc) 1.55 kB
declare enum ErrorTypes { /** * The API server was unable to parse the payload because something has been * omitted or is invalid. */ MALFORMED_PAYLOAD = "malformedPayload", /** * The provided host is unreachable. */ SERVER_UNREACHABLE = "serverUnreachable", /** * The server responded with an HTTP status error. */ SERVER_HTTP_ERROR = "serverHttpError", /** * The resource does not appear to be an ICY audio stream. */ NON_ICY_RESOURCE = "nonIcyResource" } declare global { interface SymbolConstructor { readonly observable: symbol; } } type Handler<T> = (value: T) => void; type Observer<T> = Handler<T> | { next?: Handler<T>; error?: Handler<any>; complete?: Handler<boolean>; }; interface NowPlayingInfo { title: string; error?: ErrorTypes; } interface MetadataClientOptions { url: string | URL; /** @default true */ reconnect?: boolean; /** @default 2000 */ reconnectDelay?: number | undefined; onSocketError?: (this: MetadataClient, code: number) => void; } type MetadataClient = ReturnType<typeof createMetadataClient>; declare function createMetadataClient(options: MetadataClientOptions): { [Symbol.observable]: () => any; trackStream: (url: string | URL | undefined) => Promise<void>; terminate: () => void; subscribe: (observer: Observer<NowPlayingInfo>) => { unsubscribe: () => void; }; }; export { ErrorTypes, MetadataClient, NowPlayingInfo, createMetadataClient };