import type { Market, Track, Tracks, AudioFeatures, AudioFeaturesCollection, AudioAnalysis } from '../types.js'; import EndpointsBase from './EndpointsBase.js'; export default class TracksEndpoints extends EndpointsBase { public get(id: string, market?: Market): Promise public get(ids: string[], market?: Market): Promise public async get(idOrIds: string | string[], market?: Market) { if (typeof idOrIds === 'string') { const params = this.paramsFor({ market }); return this.getRequest(`tracks/${idOrIds}${params}`); } const params = this.paramsFor({ ids: idOrIds, market }); // TODO: only returns top 20, validate here const response = await this.getRequest(`tracks${params}`); return response.tracks; } public audioFeatures(id: string): Promise public audioFeatures(ids: string[]): Promise public async audioFeatures(idOrIds: string | string[]) { if (typeof idOrIds === 'string') { return this.getRequest(`audio-features/${idOrIds}`); } const params = this.paramsFor({ ids: idOrIds }); const response = await this.getRequest(`audio-features${params}`); return response.audio_features; } public audioAnalysis(id: string) { return this.getRequest(`audio-analysis/${id}`); } }