Socket
Socket
Sign inDemoInstall

lastfm-ts-api

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lastfm-ts-api - npm Package Compare versions

Comparing version 1.0.2 to 2.0.0

dist/types.d.ts

45

dist/album.d.ts

@@ -1,39 +0,10 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMAlbumParams {
readonly album: string;
readonly artist: string;
}
export interface LastFMAlbumOptionalParams {
readonly mbid?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMAlbumAddTagsParams extends LastFMRequestParams<LastFMParam>, LastFMAlbumParams {
readonly tags: string | string[];
}
export interface LastFMAlbumGetInfoParams extends LastFMRequestParams<0 | 1 | void>, LastFMAlbumParams, LastFMAlbumOptionalParams {
readonly lang?: string;
readonly username?: string;
}
export interface LastFMAlbumGetTagsParams extends LastFMRequestParams<0 | 1 | void>, LastFMAlbumParams, LastFMAlbumOptionalParams {
readonly user?: string;
}
export interface LastFMAlbumGetTopTagsParams extends LastFMRequestParams<0 | 1 | void>, LastFMAlbumParams, LastFMAlbumOptionalParams {
}
export interface LastFMAlbumRemoveLastFMTagParams extends LastFMRequestParams<LastFMParam>, LastFMAlbumParams {
readonly tag: string;
}
export interface LastFMAlbumSearchParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly album: string;
readonly limit?: number;
}
import { LastFM } from './base.js';
import { LastFMUnknownFunction, LastFMAlbumSearchParams, LastFMAlbumAddTagsParams, LastFMAlbumGetInfoParams, LastFMAlbumGetTagsParams, LastFMAlbumSearchResponse, LastFMAlbumGetInfoResponse, LastFMAlbumGetTagsResponse, LastFMAlbumGetTopTagsParams, LastFMAlbumRemoveLastFMTagParams } from './types.js';
export declare class LastFMAlbum extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
addTags(params: LastFMAlbumAddTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getInfo(params: LastFMAlbumGetInfoParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTags(params: LastFMAlbumGetTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(params: LastFMAlbumGetTopTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
removeTag(params: LastFMAlbumRemoveLastFMTagParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
search(params: LastFMAlbumSearchParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
addTags(params: LastFMAlbumAddTagsParams, callback?: LastFMUnknownFunction): Promise<void>;
getInfo(params: LastFMAlbumGetInfoParams, callback?: LastFMUnknownFunction): Promise<LastFMAlbumGetInfoResponse>;
getTags(params: LastFMAlbumGetTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMAlbumGetTagsResponse>;
getTopTags(params: LastFMAlbumGetTopTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMAlbumGetTagsResponse>;
removeTag(params: LastFMAlbumRemoveLastFMTagParams, callback?: LastFMUnknownFunction): Promise<void>;
search(params: LastFMAlbumSearchParams, callback?: LastFMUnknownFunction): Promise<LastFMAlbumSearchResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMAlbum extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
addTags(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,13 +0,13 @@

export type LastFMUnknownFunction = (...args: unknown[]) => unknown;
export type LastFMParam = string | string[];
export type LastFMParams<T> = Record<string, LastFMParam | T>;
export type LastFMRequestParams<T> = Record<string, LastFMParam | T>;
export declare class LastFMApiRequest {
import { LastFMParams, LastFMUnknownFunction } from './types.js';
export declare class LastFMApiRequest<T> {
private params;
constructor();
set<T>(params: LastFMParams<void | T>): LastFMApiRequest;
sign(secret?: string): LastFMApiRequest;
send(method?: string | LastFMUnknownFunction, callback?: LastFMUnknownFunction): void | Promise<LastFMApiRequest>;
set<P>(params: LastFMParams<void | P>): this;
sign(secret?: string): this;
send(method?: string | LastFMUnknownFunction, callback?: LastFMUnknownFunction): Promise<T>;
private setParams;
private getCallback;
private getMethod;
private getOptions;
}
export default LastFMApiRequest;

@@ -1,4 +0,4 @@

import { createHash } from 'crypto';
import { parse, stringify } from 'querystring';
import { request } from 'https';
import { createHash } from 'node:crypto';
import { parse, stringify } from 'node:querystring';
import { request } from 'node:https';
export class LastFMApiRequest {

@@ -43,11 +43,4 @@ params = new Map();

send(method, callback) {
callback =
callback === undefined
? typeof method === 'function'
? method
: undefined
: typeof callback === 'function'
? callback
: undefined;
method = typeof method === 'string' ? method : undefined;
callback = this.getCallback(method, callback);
method = this.getMethod(method);
if (this.params.has('callback')) {

@@ -58,16 +51,3 @@ this.params.delete('callback');

const paramsStr = stringify(paramsObj);
const options = {
hostname: 'ws.audioscrobbler.com',
path: '/2.0'
};
if (method === 'POST') {
options.method = 'POST';
options.headers = {
'Content-Length': Buffer.byteLength(paramsStr),
'Content-Type': 'application/x-www-form-urlencoded'
};
}
else {
options.path += `?${paramsStr}`;
}
const options = this.getOptions(method, paramsStr);
const LastFMapiRequest = new Promise((resolve, reject) => {

@@ -86,12 +66,12 @@ const httpRequest = request(options, httpResponse => {

httpRequest.end();
}).then(apiResponse => {
}).then((response) => {
let data;
try {
data = JSON.parse(apiResponse);
data = JSON.parse(response);
}
catch (err) {
throw new Error('Unable to parse API response to JSON');
throw new Error(`lastfm-ts-api: Unable to parse LastFM API response to JSON. API response is ${err}`);
}
if (data.error) {
throw new Error(data.message);
if (data?.error) {
throw new Error(`lastfm-ts-api: ${data?.message ?? 'LastFM API returned an error.'}`);
}

@@ -101,4 +81,3 @@ return data;

if (callback && typeof callback === 'function') {
LastFMapiRequest.then(data => callback(null, data), err => callback(err, null));
return undefined;
return LastFMapiRequest.then(data => callback(null, data), err => callback(err, null));
}

@@ -116,4 +95,33 @@ return LastFMapiRequest;

}
getCallback(method, callback) {
return callback === undefined
? typeof method === 'function'
? method
: undefined
: typeof callback === 'function'
? callback
: undefined;
}
getMethod(method) {
return typeof method === 'string' ? method : undefined;
}
getOptions(method, params) {
const options = {
hostname: 'ws.audioscrobbler.com',
path: '/2.0'
};
if (method === 'POST') {
options.method = 'POST';
options.headers = {
'Content-Length': Buffer.byteLength(params),
'Content-Type': 'application/x-www-form-urlencoded'
};
}
else {
options.path += `?${params}`;
}
return options;
}
}
export default LastFMApiRequest;
//# sourceMappingURL=api-request.js.map

@@ -1,68 +0,14 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMArtistParams extends LastFMRequestParams<LastFMParam> {
readonly artist: string;
}
export interface LastFMArtistAddTagsParams extends LastFMRequestParams<LastFMParam>, LastFMArtistParams {
readonly tags: string | string[];
}
export interface LastFMArtistGetInfoParams extends LastFMRequestParams<0 | 1 | void> {
readonly lang?: string;
readonly mbid?: string;
readonly artist: string;
readonly username?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetSimilarParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTagsParams extends LastFMRequestParams<0 | 1 | void> {
readonly mbid?: string;
readonly user?: string;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopAlbumsParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly page?: number;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopTagsParams extends LastFMRequestParams<0 | 1 | void> {
readonly mbid?: string;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopTracksParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly page?: number;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistRemoveLastFMTagParams extends LastFMRequestParams<LastFMParam> {
readonly tag: string;
readonly artist: string;
}
export interface LastFMArtistSearchParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly artist: string;
}
import { LastFM } from './base.js';
import { LastFMArtistParams, LastFMUnknownFunction, LastFMArtistSearchParams, LastFMArtistAddTagsParams, LastFMArtistGetInfoParams, LastFMArtistGetTagsParams, LastFMArtistSearchResponse, LastFMArtistGetInfoResponse, LastFMArtistGetTagsResponse, LastFMArtistGetSimilarParams, LastFMArtistGetTopTagsParams, LastFMArtistGetSimilarResponse, LastFMArtistGetTopAlbumsParams, LastFMArtistGetTopTagsResponse, LastFMArtistGetTopTracksParams, LastFMArtistGetTopAlbumsResponse, LastFMArtistGetTopTracksResponse, LastFMArtistGetCorrectionResponse, LastFMArtistRemoveLastFMTagParams } from './types.js';
export declare class LastFMArtist extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
addTags(params: LastFMArtistAddTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getCorrection(params: LastFMArtistParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getInfo(params: LastFMArtistGetInfoParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getSimilar(params: LastFMArtistGetSimilarParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTags(params: LastFMArtistGetTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopAlbums(params: LastFMArtistGetTopAlbumsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(params: LastFMArtistGetTopTagsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTracks(params: LastFMArtistGetTopTracksParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
removeTag(params: LastFMArtistRemoveLastFMTagParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
search(params: LastFMArtistSearchParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
addTags(params: LastFMArtistAddTagsParams, callback?: LastFMUnknownFunction): Promise<void>;
getCorrection(params: LastFMArtistParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetCorrectionResponse>;
getInfo(params: LastFMArtistGetInfoParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetInfoResponse>;
getSimilar(params: LastFMArtistGetSimilarParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetSimilarResponse>;
getTags(params: LastFMArtistGetTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetTagsResponse>;
getTopAlbums(params: LastFMArtistGetTopAlbumsParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetTopAlbumsResponse>;
getTopTags(params: LastFMArtistGetTopTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetTopTagsResponse>;
getTopTracks(params: LastFMArtistGetTopTracksParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistGetTopTracksResponse>;
removeTag(params: LastFMArtistRemoveLastFMTagParams, callback?: LastFMUnknownFunction): Promise<void>;
search(params: LastFMArtistSearchParams, callback?: LastFMUnknownFunction): Promise<LastFMArtistSearchResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import LastFMApiRequest from './api-request.js';
import { LastFM } from './base.js';
export class LastFMArtist extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
addTags(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,15 +0,7 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMAuthGetMobileSessionParams extends LastFMRequestParams<LastFMParam> {
readonly username: string;
readonly password: string;
}
export interface LastFMAuthGetSessionParams extends LastFMRequestParams<LastFMParam> {
readonly token: string;
}
import { LastFM } from './base.js';
import { LastFMUnknownFunction, LastFMAuthSessionResponse, LastFMAuthGetSessionParams, LastFMAuthGetTokenResponse, LastFMAuthGetMobileSessionParams } from './types.js';
export declare class LastFMAuth extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getMobileSession(params: LastFMAuthGetMobileSessionParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getSession(params: LastFMAuthGetSessionParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getToken(callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getMobileSession(params: LastFMAuthGetMobileSessionParams, callback?: LastFMUnknownFunction): Promise<LastFMAuthSessionResponse>;
getSession(params: LastFMAuthGetSessionParams, callback?: LastFMUnknownFunction): Promise<LastFMAuthSessionResponse>;
getToken(callback?: LastFMUnknownFunction): Promise<LastFMAuthGetTokenResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMAuth extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getMobileSession(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,12 +0,7 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMChartParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
}
import { LastFM } from './base.js';
import { LastFMChartParams, LastFMUnknownFunction, LastFMChartGetTopTagsResponse, LastFMChartGetTopTracksResponse, LastFMChartGetTopArtistsResponse } from './types.js';
export declare class LastFMChart extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getTopArtists(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTracks(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopArtists(params: LastFMChartParams, callback?: LastFMUnknownFunction): Promise<LastFMChartGetTopArtistsResponse>;
getTopTags(params: LastFMChartParams, callback?: LastFMUnknownFunction): Promise<LastFMChartGetTopTagsResponse>;
getTopTracks(params: LastFMChartParams, callback?: LastFMUnknownFunction): Promise<LastFMChartGetTopTracksResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMChart extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getTopArtists(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,15 +0,6 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMGeoGetTopArtistsParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly country: string;
}
export interface LastFMGeoGetTopTracksParams extends LastFMGeoGetTopArtistsParams {
readonly location?: string;
}
import { LastFM } from './base.js';
import { LastFMUnknownFunction, LastFMGeoGetTopTracksParams, LastFMGeoGetTopArtistsParams, LastFMGeoGetTopTracksResponse, LastFMGeoGetTopArtistsResponse } from './types.js';
export declare class LastFMGeo extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getTopArtists(params: LastFMGeoGetTopArtistsParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTracks(params: LastFMGeoGetTopTracksParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopArtists(params: LastFMGeoGetTopArtistsParams, callback?: LastFMUnknownFunction): Promise<LastFMGeoGetTopArtistsResponse>;
getTopTracks(params: LastFMGeoGetTopTracksParams, callback?: LastFMUnknownFunction): Promise<LastFMGeoGetTopTracksResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMGeo extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getTopArtists(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,11 +0,12 @@

export * from './album';
export * from './api-request';
export * from './artist';
export * from './auth';
export * from './base';
export * from './chart';
export * from './geo';
export * from './library';
export * from './tag';
export * from './track';
export * from './user';
export * from './album.js';
export * from './api-request.js';
export * from './artist.js';
export * from './auth.js';
export * from './base.js';
export * from './chart.js';
export * from './geo.js';
export * from './library.js';
export * from './tag.js';
export * from './track.js';
export * from './types.js';
export * from './user.js';

@@ -1,12 +0,13 @@

export * from './album';
export * from './api-request';
export * from './artist';
export * from './auth';
export * from './base';
export * from './chart';
export * from './geo';
export * from './library';
export * from './tag';
export * from './track';
export * from './user';
export * from './album.js';
export * from './api-request.js';
export * from './artist.js';
export * from './auth.js';
export * from './base.js';
export * from './chart.js';
export * from './geo.js';
export * from './library.js';
export * from './tag.js';
export * from './track.js';
export * from './types.js';
export * from './user.js';
//# sourceMappingURL=index.js.map

@@ -1,11 +0,5 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMLibraryGetArtists extends LastFMRequestParams<number | void> {
readonly user: string;
readonly page?: number;
readonly limit?: number;
}
import { LastFM } from './base.js';
import { LastFMUnknownFunction, LastFMLibraryGetArtistsParams, LastFMLibraryGetArtistsResponse } from './types.js';
export declare class LastFMLibrary extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getArtists(params: LastFMLibraryGetArtists, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getArtists(params: LastFMLibraryGetArtistsParams, callback?: LastFMUnknownFunction): Promise<LastFMLibraryGetArtistsResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMLibrary extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getArtists(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,24 +0,11 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMTagParams extends LastFMRequestParams<number | void> {
readonly tag: string;
}
export interface LastFMTagOptionalParams {
readonly page?: number;
readonly limit?: number;
}
export interface LastFMTagGetInfoParams extends LastFMRequestParams<number | void>, LastFMTagParams {
readonly lang?: string;
}
export interface LastFMTagGetTop extends LastFMRequestParams<number | void>, LastFMTagParams, LastFMTagOptionalParams {
}
import { LastFM } from './base.js';
import { LastFMTagParams, LastFMTagGetTopParams, LastFMUnknownFunction, LastFMTagGetInfoParams, LastFMTagGetInfoResponse, LastFMTagGetSimilarResponse, LastFMTagGetTopTagsResponse, LastFMTagGetTopAlbumsResponse, LastFMTagGetTopTracksResponse, LastFMTagGetTopArtistsResponse, LastFMTagGetWeeklyChartListResponse } from './types.js';
export declare class LastFMTag extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getInfo(params: LastFMTagGetInfoParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getSimilar(params: LastFMTagParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopAlbums(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopArtists(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTracks(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getWeeklyChartList(params: LastFMTagParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getInfo(params: LastFMTagGetInfoParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetInfoResponse>;
getSimilar(params: LastFMTagParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetSimilarResponse>;
getTopAlbums(params: LastFMTagGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetTopAlbumsResponse>;
getTopArtists(params: LastFMTagGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetTopArtistsResponse>;
getTopTags(callback?: LastFMUnknownFunction): Promise<LastFMTagGetTopTagsResponse>;
getTopTracks(params: LastFMTagGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetTopTracksResponse>;
getWeeklyChartList(params: LastFMTagParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetWeeklyChartListResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMTag extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getInfo(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,68 +0,17 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMTrackParams extends LastFMRequestParams<number | void> {
readonly track: string;
readonly artist: string;
}
export interface LastFMTrackOptionalParams {
readonly mbid?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMTrackAddTags extends LastFMTrackParams {
readonly tags: string | string[];
}
export interface LastFMTrackGetInfo extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly username?: string;
}
export interface LastFMTrackGetSimilar extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly limit?: number;
}
export interface LastFMTrackGetTags extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly user?: string;
}
export interface LastFMTrackGetTopTags extends LastFMTrackParams, LastFMTrackOptionalParams {
}
export interface LastFMTrackRemoveTag extends LastFMTrackParams {
readonly tag: string;
}
export interface LastFMTrackScrobble extends LastFMTrackParams {
readonly timestamp?: number;
readonly mbid?: string;
readonly album?: string;
readonly context?: string;
readonly streamId?: string;
readonly duration?: number;
readonly chosenByUser?: 0 | 1;
readonly trackNumber?: number;
readonly albumArtist?: string;
}
export interface LastFMTrackSearch extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly track: string;
readonly artist?: string;
}
export interface LastFMTrackUpdateNowPlaying extends LastFMTrackParams {
readonly mbid?: string;
readonly album?: string;
readonly context?: string;
readonly duration?: number;
readonly trackNumber?: number;
readonly albumArtist?: string;
}
import { LastFM } from './base.js';
import { LastFMTrackParams, LastFMUnknownFunction, LastFMTrackSearchParams, LastFMTrackAddTagsParams, LastFMTrackGetInfoParams, LastFMTrackGetTagsParams, LastFMTrackScrobbleParams, LastFMTrackSearchResponse, LastFMTrackGetInfoResponse, LastFMTrackGetTagsResponse, LastFMTrackRemoveTagParams, LastFMTrackGetSimilarParams, LastFMTrackGetTopTagsParams, LastFMTrackScroblleResponse, LastFMTrackGetSimilarResponse, LastFMTrackGetTopTagsResponse, LastFMUpdateNowPlayingResponse, LastFMTrackGetCorrectionResponse, LastFMTrackUpdateNowPlayingParams } from './types.js';
export declare class LastFMTrack extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
addTags(params: LastFMTrackAddTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getCorrection(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getInfo(params: LastFMTrackGetInfo, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getSimilar(params: LastFMTrackGetSimilar, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTags(params: LastFMTrackGetTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(params: LastFMTrackGetTopTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
love(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
removeTag(params: LastFMTrackRemoveTag, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
scrobble(params: LastFMTrackScrobble, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
scrobbleMany(paramsArr: LastFMTrackScrobble[], callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
search(params: LastFMTrackSearch, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
unlove(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
updateNowPlaying(params: LastFMTrackUpdateNowPlaying, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
addTags(params: LastFMTrackAddTagsParams, callback?: LastFMUnknownFunction): Promise<void>;
getCorrection(params: LastFMTrackParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackGetCorrectionResponse>;
getInfo(params: LastFMTrackGetInfoParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackGetInfoResponse>;
getSimilar(params: LastFMTrackGetSimilarParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackGetSimilarResponse>;
getTags(params: LastFMTrackGetTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackGetTagsResponse>;
getTopTags(params: LastFMTrackGetTopTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackGetTopTagsResponse>;
love(params: LastFMTrackParams, callback?: LastFMUnknownFunction): Promise<void>;
removeTag(params: LastFMTrackRemoveTagParams, callback?: LastFMUnknownFunction): Promise<void>;
scrobble(params: LastFMTrackScrobbleParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackScroblleResponse>;
scrobbleMany(paramsArr: LastFMTrackScrobbleParams[], callback?: LastFMUnknownFunction): Promise<LastFMTrackScroblleResponse>;
search(params: LastFMTrackSearchParams, callback?: LastFMUnknownFunction): Promise<LastFMTrackSearchResponse>;
unlove(params: LastFMTrackParams, callback?: LastFMUnknownFunction): Promise<void>;
updateNowPlaying(params: LastFMTrackUpdateNowPlayingParams, callback?: LastFMUnknownFunction): Promise<LastFMUpdateNowPlayingResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMTrack extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
addTags(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

@@ -1,51 +0,17 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
export interface LastFMUserParams extends LastFMRequestParams<LastFMParam | number | void | boolean> {
readonly user: string;
}
export interface LastFMUserOptionalParams {
readonly page?: number;
readonly limit?: number;
}
export interface LastFMUserGetFriends extends LastFMUserParams, LastFMUserOptionalParams {
readonly recenttracks?: boolean;
}
export interface LastFMUserGetLovedTracks extends LastFMUserParams, LastFMUserOptionalParams {
}
export interface LastFMUserGetPersonalTags extends LastFMUserParams, LastFMUserOptionalParams {
readonly tag?: string;
readonly taggingtype: 'artist' | 'album' | 'track';
}
export interface LastFMUserGetRecentTracks extends LastFMUserParams, LastFMUserOptionalParams {
readonly to?: string;
readonly from?: string;
readonly extended: 0 | 1;
}
export interface LastFMUserGetTop extends LastFMUserParams, LastFMUserOptionalParams {
readonly period?: 'overall' | '7day' | '1month' | '3month' | '6month' | '12month';
}
export interface LastFMUserGetTopTags extends LastFMRequestParams<string | number | void> {
readonly user: string;
readonly limit?: number;
}
export interface LastFMUserGetWeekly extends LastFMRequestParams<string | number | void> {
readonly to?: string;
readonly user: string;
readonly from?: string;
}
import { LastFM } from './base.js';
import { LastFMUserParams, LastFMUnknownFunction, LastFMUserGetTopParams, LastFMUserGetInfoResponse, LastFMUserGetWeeklyParams, LastFMUserGetFriendsParams, LastFMUserGetTopTagsParams, LastFMUserGetFriendsResponse, LastFMUserGetTopTagsResponse, LastFMUserGetLovedTracksParams, LastFMUserGetTopAlbumsResponse, LastFMUserGetTopTracksResponse, LastFMUserGetPersonalTagsParams, LastFMUserGetRecentTracksParams, LastFMUserGetTopArtistsResponse, LastFMUserGetLovedTracksResponse, LastFMUserGetPersonalTagsResponse, LastFMUserGetRecentTracksResponse, LastFMUserGetWeeklyChartListResponse, LastFMUserGetWeeklyAlbumChartResponse, LastFMUserGetWeeklyTrackChartResponse, LastFMUserGetWeeklyArtistChartResponse } from './types.js';
export declare class LastFMUser extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string);
getFriends(params: LastFMUserGetFriends, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getInfo(params: LastFMUserParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getLovedTracks(params: LastFMUserGetLovedTracks, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getPersonalTags(params: LastFMUserGetPersonalTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getRecentTracks(params: LastFMUserGetRecentTracks, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopAlbums(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopArtists(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTags(params: LastFMUserGetTopTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getTopTracks(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getWeeklyAlbumChart(params: LastFMUserGetWeekly, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getWeeklyArtistChart(params: LastFMUserGetWeekly, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getWeeklyChartList(params: LastFMUserParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getWeeklyTrackChart(params: LastFMUserGetWeekly, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void;
getFriends(params: LastFMUserGetFriendsParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetFriendsResponse>;
getInfo(params: LastFMUserParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetInfoResponse>;
getLovedTracks(params: LastFMUserGetLovedTracksParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetLovedTracksResponse>;
getPersonalTags(params: LastFMUserGetPersonalTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetPersonalTagsResponse>;
getRecentTracks(params: LastFMUserGetRecentTracksParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetRecentTracksResponse>;
getTopAlbums(params: LastFMUserGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetTopAlbumsResponse>;
getTopArtists(params: LastFMUserGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetTopArtistsResponse>;
getTopTags(params: LastFMUserGetTopTagsParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetTopTagsResponse>;
getTopTracks(params: LastFMUserGetTopParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetTopTracksResponse>;
getWeeklyAlbumChart(params: LastFMUserGetWeeklyParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetWeeklyAlbumChartResponse>;
getWeeklyArtistChart(params: LastFMUserGetWeeklyParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetWeeklyArtistChartResponse>;
getWeeklyChartList(params: LastFMUserParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetWeeklyChartListResponse>;
getWeeklyTrackChart(params: LastFMUserGetWeeklyParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetWeeklyTrackChartResponse>;
}

@@ -1,7 +0,4 @@

import { LastFM } from './base';
import { LastFMApiRequest } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
export class LastFMUser extends LastFM {
constructor(apiKey, secret, sessionKey) {
super(apiKey, secret, sessionKey);
}
getFriends(params, callback) {

@@ -8,0 +5,0 @@ return new LastFMApiRequest()

{
"name": "lastfm-ts-api",
"version": "1.0.2",
"version": "2.0.0",
"description": "An API client for the Last.FM API written in TypeScript",

@@ -20,2 +20,3 @@ "keywords": [

"main": "dist/index.js",
"type": "module",
"types": "dist/index.d.ts",

@@ -28,7 +29,9 @@ "repository": {

"watch": "tsc -w",
"build": "tsc"
"build": "tsc",
"demo": "node demo/index.js"
},
"dependencies": {},
"devDependencies": {
"@types/node": "20.8.0",
"@types/node": "20.8.9",
"dotenv": "16.3.1",
"tslib": "2.6.2",

@@ -35,0 +38,0 @@ "typescript": "5.2.2"

@@ -1,58 +0,19 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMUnknownFunction,
LastFMAlbumSearchParams,
LastFMAlbumAddTagsParams,
LastFMAlbumGetInfoParams,
LastFMAlbumGetTagsParams,
LastFMAlbumSearchResponse,
LastFMAlbumGetInfoResponse,
LastFMAlbumGetTagsResponse,
LastFMAlbumGetTopTagsParams,
LastFMAlbumRemoveLastFMTagParams
} from './types.js';
export interface LastFMAlbumParams {
readonly album: string;
readonly artist: string;
}
export interface LastFMAlbumOptionalParams {
readonly mbid?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMAlbumAddTagsParams extends LastFMRequestParams<LastFMParam>, LastFMAlbumParams {
readonly tags: string | string[];
}
export interface LastFMAlbumGetInfoParams
extends LastFMRequestParams<0 | 1 | void>,
LastFMAlbumParams,
LastFMAlbumOptionalParams {
readonly lang?: string;
readonly username?: string;
}
export interface LastFMAlbumGetTagsParams
extends LastFMRequestParams<0 | 1 | void>,
LastFMAlbumParams,
LastFMAlbumOptionalParams {
readonly user?: string;
}
export interface LastFMAlbumGetTopTagsParams
extends LastFMRequestParams<0 | 1 | void>,
LastFMAlbumParams,
LastFMAlbumOptionalParams {}
export interface LastFMAlbumRemoveLastFMTagParams extends LastFMRequestParams<LastFMParam>, LastFMAlbumParams {
readonly tag: string;
}
export interface LastFMAlbumSearchParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly album: string;
readonly limit?: number;
}
export class LastFMAlbum extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public addTags(
params: LastFMAlbumAddTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public addTags(params: LastFMAlbumAddTagsParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -70,5 +31,5 @@ .set({

params: LastFMAlbumGetInfoParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMAlbumGetInfoResponse> {
return new LastFMApiRequest<LastFMAlbumGetInfoResponse>()
.set(params)

@@ -84,5 +45,5 @@ .set({

params: LastFMAlbumGetTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMAlbumGetTagsResponse> {
return new LastFMApiRequest<LastFMAlbumGetTagsResponse>()
.set(params)

@@ -98,5 +59,5 @@ .set({

params: LastFMAlbumGetTopTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMAlbumGetTagsResponse> {
return new LastFMApiRequest<LastFMAlbumGetTagsResponse>()
.set(params)

@@ -110,7 +71,4 @@ .set({

public removeTag(
params: LastFMAlbumRemoveLastFMTagParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public removeTag(params: LastFMAlbumRemoveLastFMTagParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -126,4 +84,7 @@ .set({

public search(params: LastFMAlbumSearchParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public search(
params: LastFMAlbumSearchParams,
callback?: LastFMUnknownFunction
): Promise<LastFMAlbumSearchResponse> {
return new LastFMApiRequest<LastFMAlbumSearchResponse>()
.set(params)

@@ -130,0 +91,0 @@ .set({

@@ -1,11 +0,8 @@

import { createHash } from 'crypto';
import { parse, stringify } from 'querystring';
import { request, RequestOptions } from 'https';
import { createHash } from 'node:crypto';
import { parse, stringify } from 'node:querystring';
import { request, RequestOptions } from 'node:https';
export type LastFMUnknownFunction = (...args: unknown[]) => unknown;
export type LastFMParam = string | string[];
export type LastFMParams<T> = Record<string, LastFMParam | T>;
export type LastFMRequestParams<T> = Record<string, LastFMParam | T>;
import { LastFMParams, LastFMUnknownFunction } from './types.js';
export class LastFMApiRequest {
export class LastFMApiRequest<T> {
private params: Map<string, any> = new Map();

@@ -17,3 +14,3 @@

public set<T>(params: LastFMParams<void | T>): LastFMApiRequest {
public set<P>(params: LastFMParams<void | P>): this {
Object.entries(params).forEach(([key, value]) => {

@@ -28,3 +25,3 @@ if (typeof value !== 'undefined') {

public sign(secret?: string): LastFMApiRequest {
public sign(secret?: string): this {
const paramsObj: LastFMParams<string> = this.setParams();

@@ -64,16 +61,7 @@ const paramsObjParsed = parse(stringify(paramsObj));

public send(
method?: string | LastFMUnknownFunction,
callback?: LastFMUnknownFunction
): void | Promise<LastFMApiRequest> {
callback =
callback === undefined
? typeof method === 'function'
? method
: undefined
: typeof callback === 'function'
? callback
: undefined;
method = typeof method === 'string' ? method : undefined;
public send(method?: string | LastFMUnknownFunction, callback?: LastFMUnknownFunction): Promise<T> {
callback = this.getCallback(method, callback);
method = this.getMethod(method);
if (this.params.has('callback')) {

@@ -85,19 +73,5 @@ this.params.delete('callback');

const paramsStr = stringify(paramsObj);
const options = this.getOptions(method, paramsStr);
const options: RequestOptions = {
hostname: 'ws.audioscrobbler.com',
path: '/2.0'
};
if (method === 'POST') {
options.method = 'POST';
options.headers = {
'Content-Length': Buffer.byteLength(paramsStr),
'Content-Type': 'application/x-www-form-urlencoded'
};
} else {
options.path += `?${paramsStr}`;
}
const LastFMapiRequest = new Promise((resolve, reject) => {
const LastFMapiRequest = new Promise<string>((resolve, reject) => {
const httpRequest = request(options, httpResponse => {

@@ -119,13 +93,13 @@ let data = '';

httpRequest.end();
}).then(apiResponse => {
}).then((response: string) => {
let data;
try {
data = JSON.parse(apiResponse as string);
data = JSON.parse(response);
} catch (err) {
throw new Error('Unable to parse API response to JSON');
throw new Error(`lastfm-ts-api: Unable to parse LastFM API response to JSON. API response is ${err}`);
}
if (data.error) {
throw new Error(data.message);
if (data?.error) {
throw new Error(`lastfm-ts-api: ${data?.message ?? 'LastFM API returned an error.'}`);
}

@@ -137,8 +111,6 @@

if (callback && typeof callback === 'function') {
LastFMapiRequest.then(
return LastFMapiRequest.then(
data => callback!(null, data),
err => callback!(err, null)
);
return undefined;
) as typeof LastFMapiRequest;
}

@@ -160,4 +132,40 @@

}
private getCallback(
method?: string | LastFMUnknownFunction,
callback?: LastFMUnknownFunction
): LastFMUnknownFunction | undefined {
return callback === undefined
? typeof method === 'function'
? method
: undefined
: typeof callback === 'function'
? callback
: undefined;
}
private getMethod(method?: string | LastFMUnknownFunction): string | LastFMUnknownFunction | undefined {
return typeof method === 'string' ? method : undefined;
}
private getOptions(method: string | LastFMUnknownFunction | undefined, params: string): RequestOptions {
const options: RequestOptions = {
hostname: 'ws.audioscrobbler.com',
path: '/2.0'
};
if (method === 'POST') {
options.method = 'POST';
options.headers = {
'Content-Length': Buffer.byteLength(params),
'Content-Type': 'application/x-www-form-urlencoded'
};
} else {
options.path += `?${params}`;
}
return options;
}
}
export default LastFMApiRequest;

@@ -1,77 +0,28 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import LastFMApiRequest from './api-request.js';
import { LastFM } from './base.js';
import {
LastFMArtistParams,
LastFMUnknownFunction,
LastFMArtistSearchParams,
LastFMArtistAddTagsParams,
LastFMArtistGetInfoParams,
LastFMArtistGetTagsParams,
LastFMArtistSearchResponse,
LastFMArtistGetInfoResponse,
LastFMArtistGetTagsResponse,
LastFMArtistGetSimilarParams,
LastFMArtistGetTopTagsParams,
LastFMArtistGetSimilarResponse,
LastFMArtistGetTopAlbumsParams,
LastFMArtistGetTopTagsResponse,
LastFMArtistGetTopTracksParams,
LastFMArtistGetTopAlbumsResponse,
LastFMArtistGetTopTracksResponse,
LastFMArtistGetCorrectionResponse,
LastFMArtistRemoveLastFMTagParams
} from './types.js';
export interface LastFMArtistParams extends LastFMRequestParams<LastFMParam> {
readonly artist: string;
}
export interface LastFMArtistAddTagsParams extends LastFMRequestParams<LastFMParam>, LastFMArtistParams {
readonly tags: string | string[];
}
export interface LastFMArtistGetInfoParams extends LastFMRequestParams<0 | 1 | void> {
readonly lang?: string;
readonly mbid?: string;
readonly artist: string;
readonly username?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetSimilarParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTagsParams extends LastFMRequestParams<0 | 1 | void> {
readonly mbid?: string;
readonly user?: string;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopAlbumsParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly page?: number;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopTagsParams extends LastFMRequestParams<0 | 1 | void> {
readonly mbid?: string;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistGetTopTracksParams extends LastFMRequestParams<0 | 1 | void | number> {
readonly mbid?: string;
readonly page?: number;
readonly limit?: number;
readonly artist: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMArtistRemoveLastFMTagParams extends LastFMRequestParams<LastFMParam> {
readonly tag: string;
readonly artist: string;
}
export interface LastFMArtistSearchParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly artist: string;
}
export class LastFMArtist extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public addTags(
params: LastFMArtistAddTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public addTags(params: LastFMArtistAddTagsParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -89,5 +40,5 @@ .set({

params: LastFMArtistParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetCorrectionResponse> {
return new LastFMApiRequest<LastFMArtistGetCorrectionResponse>()
.set(params)

@@ -103,5 +54,5 @@ .set({

params: LastFMArtistGetInfoParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetInfoResponse> {
return new LastFMApiRequest<LastFMArtistGetInfoResponse>()
.set(params)

@@ -117,5 +68,5 @@ .set({

params: LastFMArtistGetSimilarParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetSimilarResponse> {
return new LastFMApiRequest<LastFMArtistGetSimilarResponse>()
.set(params)

@@ -131,5 +82,5 @@ .set({

params: LastFMArtistGetTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetTagsResponse> {
return new LastFMApiRequest<LastFMArtistGetTagsResponse>()
.set(params)

@@ -145,5 +96,5 @@ .set({

params: LastFMArtistGetTopAlbumsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetTopAlbumsResponse> {
return new LastFMApiRequest<LastFMArtistGetTopAlbumsResponse>()
.set(params)

@@ -159,5 +110,5 @@ .set({

params: LastFMArtistGetTopTagsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetTopTagsResponse> {
return new LastFMApiRequest<LastFMArtistGetTopTagsResponse>()
.set(params)

@@ -173,5 +124,5 @@ .set({

params: LastFMArtistGetTopTracksParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMArtistGetTopTracksResponse> {
return new LastFMApiRequest<LastFMArtistGetTopTracksResponse>()
.set(params)

@@ -185,7 +136,4 @@ .set({

public removeTag(
params: LastFMArtistRemoveLastFMTagParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public removeTag(params: LastFMArtistRemoveLastFMTagParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -201,4 +149,7 @@ .set({

public search(params: LastFMArtistSearchParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public search(
params: LastFMArtistSearchParams,
callback?: LastFMUnknownFunction
): Promise<LastFMArtistSearchResponse> {
return new LastFMApiRequest<LastFMArtistSearchResponse>()
.set(params)

@@ -205,0 +156,0 @@ .set({

@@ -1,23 +0,17 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMUnknownFunction,
LastFMAuthSessionResponse,
LastFMAuthGetSessionParams,
LastFMAuthGetTokenResponse,
LastFMAuthGetMobileSessionParams
} from './types.js';
export interface LastFMAuthGetMobileSessionParams extends LastFMRequestParams<LastFMParam> {
readonly username: string;
readonly password: string;
}
export interface LastFMAuthGetSessionParams extends LastFMRequestParams<LastFMParam> {
readonly token: string;
}
export class LastFMAuth extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getMobileSession(
params: LastFMAuthGetMobileSessionParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMAuthSessionResponse> {
return new LastFMApiRequest<LastFMAuthSessionResponse>()
.set(params)

@@ -34,5 +28,5 @@ .set({

params: LastFMAuthGetSessionParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMAuthSessionResponse> {
return new LastFMApiRequest<LastFMAuthSessionResponse>()
.set(params)

@@ -47,4 +41,4 @@ .set({

public getToken(callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getToken(callback?: LastFMUnknownFunction): Promise<LastFMAuthGetTokenResponse> {
return new LastFMApiRequest<LastFMAuthGetTokenResponse>()
.set({

@@ -51,0 +45,0 @@ api_key: this.apiKey,

@@ -1,16 +0,17 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMChartParams,
LastFMUnknownFunction,
LastFMChartGetTopTagsResponse,
LastFMChartGetTopTracksResponse,
LastFMChartGetTopArtistsResponse
} from './types.js';
export interface LastFMChartParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
}
export class LastFMChart extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getTopArtists(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopArtists(
params: LastFMChartParams,
callback?: LastFMUnknownFunction
): Promise<LastFMChartGetTopArtistsResponse> {
return new LastFMApiRequest<LastFMChartGetTopArtistsResponse>()
.set(params)

@@ -24,4 +25,7 @@ .set({

public getTopTags(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTags(
params: LastFMChartParams,
callback?: LastFMUnknownFunction
): Promise<LastFMChartGetTopTagsResponse> {
return new LastFMApiRequest<LastFMChartGetTopTagsResponse>()
.set(params)

@@ -35,4 +39,7 @@ .set({

public getTopTracks(params: LastFMChartParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTracks(
params: LastFMChartParams,
callback?: LastFMUnknownFunction
): Promise<LastFMChartGetTopTracksResponse> {
return new LastFMApiRequest<LastFMChartGetTopTracksResponse>()
.set(params)

@@ -39,0 +46,0 @@ .set({

@@ -1,24 +0,17 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMUnknownFunction,
LastFMGeoGetTopTracksParams,
LastFMGeoGetTopArtistsParams,
LastFMGeoGetTopTracksResponse,
LastFMGeoGetTopArtistsResponse
} from './types.js';
export interface LastFMGeoGetTopArtistsParams extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly country: string;
}
export interface LastFMGeoGetTopTracksParams extends LastFMGeoGetTopArtistsParams {
readonly location?: string;
}
export class LastFMGeo extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getTopArtists(
params: LastFMGeoGetTopArtistsParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMGeoGetTopArtistsResponse> {
return new LastFMApiRequest<LastFMGeoGetTopArtistsResponse>()
.set(params)

@@ -34,5 +27,5 @@ .set({

params: LastFMGeoGetTopTracksParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMGeoGetTopTracksResponse> {
return new LastFMApiRequest<LastFMGeoGetTopTracksResponse>()
.set(params)

@@ -39,0 +32,0 @@ .set({

@@ -1,11 +0,12 @@

export * from './album';
export * from './api-request';
export * from './artist';
export * from './auth';
export * from './base';
export * from './chart';
export * from './geo';
export * from './library';
export * from './tag';
export * from './track';
export * from './user';
export * from './album.js';
export * from './api-request.js';
export * from './artist.js';
export * from './auth.js';
export * from './base.js';
export * from './chart.js';
export * from './geo.js';
export * from './library.js';
export * from './tag.js';
export * from './track.js';
export * from './types.js';
export * from './user.js';

@@ -1,20 +0,11 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import { LastFMUnknownFunction, LastFMLibraryGetArtistsParams, LastFMLibraryGetArtistsResponse } from './types.js';
export interface LastFMLibraryGetArtists extends LastFMRequestParams<number | void> {
readonly user: string;
readonly page?: number;
readonly limit?: number;
}
export class LastFMLibrary extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getArtists(
params: LastFMLibraryGetArtists,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMLibraryGetArtistsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMLibraryGetArtistsResponse> {
return new LastFMApiRequest<LastFMLibraryGetArtistsResponse>()
.set(params)

@@ -21,0 +12,0 @@ .set({

@@ -1,26 +0,23 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMTagParams,
LastFMTagGetTopParams,
LastFMUnknownFunction,
LastFMTagGetInfoParams,
LastFMTagGetInfoResponse,
LastFMTagGetSimilarResponse,
LastFMTagGetTopTagsResponse,
LastFMTagGetTopAlbumsResponse,
LastFMTagGetTopTracksResponse,
LastFMTagGetTopArtistsResponse,
LastFMTagGetWeeklyChartListResponse
} from './types.js';
export interface LastFMTagParams extends LastFMRequestParams<number | void> {
readonly tag: string;
}
export interface LastFMTagOptionalParams {
readonly page?: number;
readonly limit?: number;
}
export interface LastFMTagGetInfoParams extends LastFMRequestParams<number | void>, LastFMTagParams {
readonly lang?: string;
}
export interface LastFMTagGetTop extends LastFMRequestParams<number | void>, LastFMTagParams, LastFMTagOptionalParams {}
export class LastFMTag extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getInfo(params: LastFMTagGetInfoParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getInfo(
params: LastFMTagGetInfoParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTagGetInfoResponse> {
return new LastFMApiRequest<LastFMTagGetInfoResponse>()
.set(params)

@@ -34,4 +31,4 @@ .set({

public getSimilar(params: LastFMTagParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getSimilar(params: LastFMTagParams, callback?: LastFMUnknownFunction): Promise<LastFMTagGetSimilarResponse> {
return new LastFMApiRequest<LastFMTagGetSimilarResponse>()
.set(params)

@@ -45,4 +42,7 @@ .set({

public getTopAlbums(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopAlbums(
params: LastFMTagGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTagGetTopAlbumsResponse> {
return new LastFMApiRequest<LastFMTagGetTopAlbumsResponse>()
.set(params)

@@ -56,4 +56,7 @@ .set({

public getTopArtists(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopArtists(
params: LastFMTagGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTagGetTopArtistsResponse> {
return new LastFMApiRequest<LastFMTagGetTopArtistsResponse>()
.set(params)

@@ -67,4 +70,4 @@ .set({

public getTopTags(callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTags(callback?: LastFMUnknownFunction): Promise<LastFMTagGetTopTagsResponse> {
return new LastFMApiRequest<LastFMTagGetTopTagsResponse>()
.set({

@@ -77,4 +80,7 @@ api_key: this.apiKey,

public getTopTracks(params: LastFMTagGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTracks(
params: LastFMTagGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTagGetTopTracksResponse> {
return new LastFMApiRequest<LastFMTagGetTopTracksResponse>()
.set(params)

@@ -90,5 +96,5 @@ .set({

params: LastFMTagParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMTagGetWeeklyChartListResponse> {
return new LastFMApiRequest<LastFMTagGetWeeklyChartListResponse>()
.set(params)

@@ -95,0 +101,0 @@ .set({

@@ -1,71 +0,28 @@

import { LastFM } from './base';
import { LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMTrackParams,
LastFMUnknownFunction,
LastFMTrackSearchParams,
LastFMTrackAddTagsParams,
LastFMTrackGetInfoParams,
LastFMTrackGetTagsParams,
LastFMTrackScrobbleParams,
LastFMTrackSearchResponse,
LastFMTrackGetInfoResponse,
LastFMTrackGetTagsResponse,
LastFMTrackRemoveTagParams,
LastFMTrackGetSimilarParams,
LastFMTrackGetTopTagsParams,
LastFMTrackScroblleResponse,
LastFMTrackGetSimilarResponse,
LastFMTrackGetTopTagsResponse,
LastFMUpdateNowPlayingResponse,
LastFMTrackGetCorrectionResponse,
LastFMTrackUpdateNowPlayingParams
} from './types.js';
export interface LastFMTrackParams extends LastFMRequestParams<number | void> {
readonly track: string;
readonly artist: string;
}
export interface LastFMTrackOptionalParams {
readonly mbid?: string;
readonly autocorrect?: 0 | 1;
}
export interface LastFMTrackAddTags extends LastFMTrackParams {
readonly tags: string | string[];
}
export interface LastFMTrackGetInfo extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly username?: string;
}
export interface LastFMTrackGetSimilar extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly limit?: number;
}
export interface LastFMTrackGetTags extends LastFMTrackParams, LastFMTrackOptionalParams {
readonly user?: string;
}
export interface LastFMTrackGetTopTags extends LastFMTrackParams, LastFMTrackOptionalParams {}
export interface LastFMTrackRemoveTag extends LastFMTrackParams {
readonly tag: string;
}
export interface LastFMTrackScrobble extends LastFMTrackParams {
readonly timestamp?: number;
readonly mbid?: string;
readonly album?: string;
readonly context?: string;
readonly streamId?: string;
readonly duration?: number;
readonly chosenByUser?: 0 | 1;
readonly trackNumber?: number;
readonly albumArtist?: string;
}
export interface LastFMTrackSearch extends LastFMRequestParams<number | void> {
readonly page?: number;
readonly limit?: number;
readonly track: string;
readonly artist?: string;
}
export interface LastFMTrackUpdateNowPlaying extends LastFMTrackParams {
readonly mbid?: string;
readonly album?: string;
readonly context?: string;
readonly duration?: number;
readonly trackNumber?: number;
readonly albumArtist?: string;
}
export class LastFMTrack extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public addTags(params: LastFMTrackAddTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public addTags(params: LastFMTrackAddTagsParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -81,4 +38,7 @@ .set({

public getCorrection(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getCorrection(
params: LastFMTrackParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackGetCorrectionResponse> {
return new LastFMApiRequest<LastFMTrackGetCorrectionResponse>()
.set(params)

@@ -92,4 +52,7 @@ .set({

public getInfo(params: LastFMTrackGetInfo, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getInfo(
params: LastFMTrackGetInfoParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackGetInfoResponse> {
return new LastFMApiRequest<LastFMTrackGetInfoResponse>()
.set(params)

@@ -104,6 +67,6 @@ .set({

public getSimilar(
params: LastFMTrackGetSimilar,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMTrackGetSimilarParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackGetSimilarResponse> {
return new LastFMApiRequest<LastFMTrackGetSimilarResponse>()
.set(params)

@@ -117,4 +80,7 @@ .set({

public getTags(params: LastFMTrackGetTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTags(
params: LastFMTrackGetTagsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackGetTagsResponse> {
return new LastFMApiRequest<LastFMTrackGetTagsResponse>()
.set(params)

@@ -129,6 +95,6 @@ .set({

public getTopTags(
params: LastFMTrackGetTopTags,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMTrackGetTopTagsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackGetTopTagsResponse> {
return new LastFMApiRequest<LastFMTrackGetTopTagsResponse>()
.set(params)

@@ -142,4 +108,4 @@ .set({

public love(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public love(params: LastFMTrackParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -155,4 +121,4 @@ .set({

public removeTag(params: LastFMTrackRemoveTag, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public removeTag(params: LastFMTrackRemoveTagParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -168,4 +134,7 @@ .set({

public scrobble(params: LastFMTrackScrobble, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public scrobble(
params: LastFMTrackScrobbleParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackScroblleResponse> {
return new LastFMApiRequest<LastFMTrackScroblleResponse>()
.set(params)

@@ -182,8 +151,8 @@ .set({

public scrobbleMany(
paramsArr: LastFMTrackScrobble[],
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
const params: any = {};
paramsArr: LastFMTrackScrobbleParams[],
callback?: LastFMUnknownFunction
): Promise<LastFMTrackScroblleResponse> {
const params: LastFMTrackScrobbleParams = {} as LastFMTrackScrobbleParams;
paramsArr.forEach((paramsObj: LastFMTrackScrobble, i: number) =>
paramsArr.forEach((paramsObj: LastFMTrackScrobbleParams, i: number) =>
Object.entries(paramsObj).forEach(

@@ -198,4 +167,7 @@ ([name, value]: [name: string, value: string | string[] | number | void]) =>

public search(params: LastFMTrackSearch, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public search(
params: LastFMTrackSearchParams,
callback?: LastFMUnknownFunction
): Promise<LastFMTrackSearchResponse> {
return new LastFMApiRequest<LastFMTrackSearchResponse>()
.set(params)

@@ -209,4 +181,4 @@ .set({

public unlove(params: LastFMTrackParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public unlove(params: LastFMTrackParams, callback?: LastFMUnknownFunction): Promise<void> {
return new LastFMApiRequest<void>()
.set(params)

@@ -223,6 +195,6 @@ .set({

public updateNowPlaying(
params: LastFMTrackUpdateNowPlaying,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMTrackUpdateNowPlayingParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUpdateNowPlayingResponse> {
return new LastFMApiRequest<LastFMUpdateNowPlayingResponse>()
.set(params)

@@ -229,0 +201,0 @@ .set({

@@ -1,52 +0,34 @@

import { LastFM } from './base';
import { LastFMParam, LastFMApiRequest, LastFMRequestParams, LastFMUnknownFunction } from './api-request';
import { LastFM } from './base.js';
import { LastFMApiRequest } from './api-request.js';
import {
LastFMUserParams,
LastFMUnknownFunction,
LastFMUserGetTopParams,
LastFMUserGetInfoResponse,
LastFMUserGetWeeklyParams,
LastFMUserGetFriendsParams,
LastFMUserGetTopTagsParams,
LastFMUserGetFriendsResponse,
LastFMUserGetTopTagsResponse,
LastFMUserGetLovedTracksParams,
LastFMUserGetTopAlbumsResponse,
LastFMUserGetTopTracksResponse,
LastFMUserGetPersonalTagsParams,
LastFMUserGetRecentTracksParams,
LastFMUserGetTopArtistsResponse,
LastFMUserGetLovedTracksResponse,
LastFMUserGetPersonalTagsResponse,
LastFMUserGetRecentTracksResponse,
LastFMUserGetWeeklyChartListResponse,
LastFMUserGetWeeklyAlbumChartResponse,
LastFMUserGetWeeklyTrackChartResponse,
LastFMUserGetWeeklyArtistChartResponse
} from './types.js';
export interface LastFMUserParams extends LastFMRequestParams<LastFMParam | number | void | boolean> {
readonly user: string;
}
export interface LastFMUserOptionalParams {
readonly page?: number;
readonly limit?: number;
}
export interface LastFMUserGetFriends extends LastFMUserParams, LastFMUserOptionalParams {
readonly recenttracks?: boolean;
}
export interface LastFMUserGetLovedTracks extends LastFMUserParams, LastFMUserOptionalParams {}
export interface LastFMUserGetPersonalTags extends LastFMUserParams, LastFMUserOptionalParams {
readonly tag?: string;
readonly taggingtype: 'artist' | 'album' | 'track';
}
export interface LastFMUserGetRecentTracks extends LastFMUserParams, LastFMUserOptionalParams {
readonly to?: string;
readonly from?: string;
readonly extended: 0 | 1;
}
export interface LastFMUserGetTop extends LastFMUserParams, LastFMUserOptionalParams {
readonly period?: 'overall' | '7day' | '1month' | '3month' | '6month' | '12month';
}
export interface LastFMUserGetTopTags extends LastFMRequestParams<string | number | void> {
readonly user: string;
readonly limit?: number;
}
export interface LastFMUserGetWeekly extends LastFMRequestParams<string | number | void> {
readonly to?: string;
readonly user: string;
readonly from?: string;
}
export class LastFMUser extends LastFM {
constructor(apiKey: string, secret?: string, sessionKey?: string) {
super(apiKey, secret, sessionKey);
}
public getFriends(params: LastFMUserGetFriends, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getFriends(
params: LastFMUserGetFriendsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetFriendsResponse> {
return new LastFMApiRequest<LastFMUserGetFriendsResponse>()
.set(params)

@@ -60,4 +42,4 @@ .set({

public getInfo(params: LastFMUserParams, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getInfo(params: LastFMUserParams, callback?: LastFMUnknownFunction): Promise<LastFMUserGetInfoResponse> {
return new LastFMApiRequest<LastFMUserGetInfoResponse>()
.set(params)

@@ -72,6 +54,6 @@ .set({

public getLovedTracks(
params: LastFMUserGetLovedTracks,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetLovedTracksParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetLovedTracksResponse> {
return new LastFMApiRequest<LastFMUserGetLovedTracksResponse>()
.set(params)

@@ -86,6 +68,6 @@ .set({

public getPersonalTags(
params: LastFMUserGetPersonalTags,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetPersonalTagsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetPersonalTagsResponse> {
return new LastFMApiRequest<LastFMUserGetPersonalTagsResponse>()
.set(params)

@@ -100,6 +82,6 @@ .set({

public getRecentTracks(
params: LastFMUserGetRecentTracks,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetRecentTracksParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetRecentTracksResponse> {
return new LastFMApiRequest<LastFMUserGetRecentTracksResponse>()
.set(params)

@@ -113,4 +95,7 @@ .set({

public getTopAlbums(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopAlbums(
params: LastFMUserGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetTopAlbumsResponse> {
return new LastFMApiRequest<LastFMUserGetTopAlbumsResponse>()
.set(params)

@@ -124,4 +109,7 @@ .set({

public getTopArtists(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopArtists(
params: LastFMUserGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetTopArtistsResponse> {
return new LastFMApiRequest<LastFMUserGetTopArtistsResponse>()
.set(params)

@@ -135,4 +123,7 @@ .set({

public getTopTags(params: LastFMUserGetTopTags, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTags(
params: LastFMUserGetTopTagsParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetTopTagsResponse> {
return new LastFMApiRequest<LastFMUserGetTopTagsResponse>()
.set(params)

@@ -146,4 +137,7 @@ .set({

public getTopTracks(params: LastFMUserGetTop, callback: LastFMUnknownFunction): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
public getTopTracks(
params: LastFMUserGetTopParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetTopTracksResponse> {
return new LastFMApiRequest<LastFMUserGetTopTracksResponse>()
.set(params)

@@ -158,6 +152,6 @@ .set({

public getWeeklyAlbumChart(
params: LastFMUserGetWeekly,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetWeeklyParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetWeeklyAlbumChartResponse> {
return new LastFMApiRequest<LastFMUserGetWeeklyAlbumChartResponse>()
.set(params)

@@ -172,6 +166,6 @@ .set({

public getWeeklyArtistChart(
params: LastFMUserGetWeekly,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetWeeklyParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetWeeklyArtistChartResponse> {
return new LastFMApiRequest<LastFMUserGetWeeklyArtistChartResponse>()
.set(params)

@@ -187,5 +181,5 @@ .set({

params: LastFMUserParams,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetWeeklyChartListResponse> {
return new LastFMApiRequest<LastFMUserGetWeeklyChartListResponse>()
.set(params)

@@ -200,6 +194,6 @@ .set({

public getWeeklyTrackChart(
params: LastFMUserGetWeekly,
callback: LastFMUnknownFunction
): Promise<LastFMApiRequest> | void {
return new LastFMApiRequest()
params: LastFMUserGetWeeklyParams,
callback?: LastFMUnknownFunction
): Promise<LastFMUserGetWeeklyTrackChartResponse> {
return new LastFMApiRequest<LastFMUserGetWeeklyTrackChartResponse>()
.set(params)

@@ -206,0 +200,0 @@ .set({

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc