From 4d4c6d7006fd71a26cec3270505c9490d5d4dcc2 Mon Sep 17 00:00:00 2001 From: Anatole Sot <47571181+ano0002@users.noreply.github.com> Date: Sun, 18 Feb 2024 00:59:22 +0100 Subject: [PATCH] Add browse functionality to NodeBrainz types --- server/types/nodebrainz.d.ts | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/server/types/nodebrainz.d.ts b/server/types/nodebrainz.d.ts index 756ef86f..96847d72 100644 --- a/server/types/nodebrainz.d.ts +++ b/server/types/nodebrainz.d.ts @@ -27,6 +27,19 @@ declare module 'nodebrainz' { export interface WorkSearchResponse extends RawSearchResponse { works: Work[]; } + + export interface BrowseRequestParams { + limit?: number; + offset?: number; + artist?: string; + release?: string; + recording?: string; + 'release-group'?: string; + work?: string; + // or anything else + [key: string]: string | number | undefined; + } + export default class BaseNodeBrainz { constructor(options: { userAgent: string; @@ -72,5 +85,38 @@ declare module 'nodebrainz' { | WorkSearchResponse ) => void ): Promise; + browse( + type: string, + data: BrowseRequestParams, + callback: ( + err: Error, + data: + | { + 'release-group-count': number; + 'release-group-offset': number; + 'release-groups': Group[]; + } + | { + 'release-count': number; + 'release-offset': number; + releases: Release[]; + } + | { + 'recording-count': number; + 'recording-offset': number; + recordings: Recording[]; + } + | { + 'work-count': number; + 'work-offset': number; + works: Work[]; + } + | { + 'artist-count': number; + 'artist-offset': number; + artists: Artist[]; + } + ) => void + ): Promise; } }