@ansango/lastfm-api 3.1.3 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +150 -15
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/entrypoints/album.d.ts +1 -1
- package/dist/entrypoints/album.d.ts.map +1 -1
- package/dist/entrypoints/album.js.map +1 -1
- package/dist/entrypoints/album.schemas.d.ts.map +1 -1
- package/dist/entrypoints/album.schemas.js.map +1 -1
- package/dist/entrypoints/artist.d.ts +1 -1
- package/dist/entrypoints/artist.d.ts.map +1 -1
- package/dist/entrypoints/artist.js.map +1 -1
- package/dist/entrypoints/artist.schemas.d.ts.map +1 -1
- package/dist/entrypoints/artist.schemas.js.map +1 -1
- package/dist/entrypoints/auth.d.ts +1 -1
- package/dist/entrypoints/auth.d.ts.map +1 -1
- package/dist/entrypoints/auth.js.map +1 -1
- package/dist/entrypoints/auth.schemas.d.ts.map +1 -1
- package/dist/entrypoints/auth.schemas.js.map +1 -1
- package/dist/entrypoints/base.schemas.d.ts.map +1 -1
- package/dist/entrypoints/base.schemas.js.map +1 -1
- package/dist/entrypoints/chart.d.ts +1 -1
- package/dist/entrypoints/chart.d.ts.map +1 -1
- package/dist/entrypoints/chart.js.map +1 -1
- package/dist/entrypoints/chart.schemas.d.ts.map +1 -1
- package/dist/entrypoints/chart.schemas.js.map +1 -1
- package/dist/entrypoints/geo.d.ts.map +1 -1
- package/dist/entrypoints/geo.js.map +1 -1
- package/dist/entrypoints/geo.schemas.d.ts.map +1 -1
- package/dist/entrypoints/geo.schemas.js.map +1 -1
- package/dist/entrypoints/library.d.ts.map +1 -1
- package/dist/entrypoints/library.js.map +1 -1
- package/dist/entrypoints/library.schemas.d.ts.map +1 -1
- package/dist/entrypoints/library.schemas.js.map +1 -1
- package/dist/entrypoints/tag.d.ts.map +1 -1
- package/dist/entrypoints/tag.js.map +1 -1
- package/dist/entrypoints/tag.schemas.d.ts.map +1 -1
- package/dist/entrypoints/tag.schemas.js.map +1 -1
- package/dist/entrypoints/track.d.ts.map +1 -1
- package/dist/entrypoints/track.js.map +1 -1
- package/dist/entrypoints/track.schemas.d.ts.map +1 -1
- package/dist/entrypoints/track.schemas.js.map +1 -1
- package/dist/entrypoints/user.d.ts.map +1 -1
- package/dist/entrypoints/user.js.map +1 -1
- package/dist/entrypoints/user.schemas.d.ts.map +1 -1
- package/dist/entrypoints/user.schemas.js.map +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/services/album.d.ts +41 -1
- package/dist/services/album.d.ts.map +1 -1
- package/dist/services/album.js +35 -2
- package/dist/services/album.js.map +1 -1
- package/dist/services/album.schemas.d.ts +51 -12
- package/dist/services/album.schemas.d.ts.map +1 -1
- package/dist/services/album.schemas.js +48 -10
- package/dist/services/album.schemas.js.map +1 -1
- package/dist/services/artist.d.ts +48 -1
- package/dist/services/artist.d.ts.map +1 -1
- package/dist/services/artist.js +34 -2
- package/dist/services/artist.js.map +1 -1
- package/dist/services/artist.schemas.d.ts +99 -25
- package/dist/services/artist.schemas.d.ts.map +1 -1
- package/dist/services/artist.schemas.js +125 -60
- package/dist/services/artist.schemas.js.map +1 -1
- package/dist/services/auth.d.ts +35 -1
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +19 -2
- package/dist/services/auth.js.map +1 -1
- package/dist/services/auth.schemas.d.ts +10 -1
- package/dist/services/auth.schemas.d.ts.map +1 -1
- package/dist/services/auth.schemas.js +13 -2
- package/dist/services/auth.schemas.js.map +1 -1
- package/dist/services/chart.d.ts +1 -1
- package/dist/services/chart.d.ts.map +1 -1
- package/dist/services/chart.js +2 -2
- package/dist/services/chart.js.map +1 -1
- package/dist/services/chart.schemas.d.ts +6 -6
- package/dist/services/chart.schemas.d.ts.map +1 -1
- package/dist/services/chart.schemas.js +21 -21
- package/dist/services/chart.schemas.js.map +1 -1
- package/dist/services/geo.d.ts +1 -1
- package/dist/services/geo.d.ts.map +1 -1
- package/dist/services/geo.js +2 -2
- package/dist/services/geo.js.map +1 -1
- package/dist/services/geo.schemas.d.ts +6 -6
- package/dist/services/geo.schemas.d.ts.map +1 -1
- package/dist/services/geo.schemas.js +17 -17
- package/dist/services/geo.schemas.js.map +1 -1
- package/dist/services/index.d.ts +12 -12
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +13 -13
- package/dist/services/index.js.map +1 -1
- package/dist/services/library.d.ts +1 -1
- package/dist/services/library.d.ts.map +1 -1
- package/dist/services/library.js +2 -2
- package/dist/services/library.js.map +1 -1
- package/dist/services/library.schemas.d.ts +3 -3
- package/dist/services/library.schemas.d.ts.map +1 -1
- package/dist/services/library.schemas.js +8 -8
- package/dist/services/library.schemas.js.map +1 -1
- package/dist/services/schemas/base.entities.schemas.d.ts +3 -3
- package/dist/services/schemas/base.entities.schemas.d.ts.map +1 -1
- package/dist/services/schemas/base.entities.schemas.js +9 -9
- package/dist/services/schemas/base.entities.schemas.js.map +1 -1
- package/dist/services/schemas/base.entity-names.schemas.d.ts +1 -1
- package/dist/services/schemas/base.entity-names.schemas.d.ts.map +1 -1
- package/dist/services/schemas/base.entity-names.schemas.js +1 -1
- package/dist/services/schemas/base.entity-names.schemas.js.map +1 -1
- package/dist/services/schemas/base.metadata.schemas.d.ts +1 -1
- package/dist/services/schemas/base.metadata.schemas.d.ts.map +1 -1
- package/dist/services/schemas/base.metadata.schemas.js +1 -1
- package/dist/services/schemas/base.metadata.schemas.js.map +1 -1
- package/dist/services/schemas/base.pagination.schemas.d.ts +1 -1
- package/dist/services/schemas/base.pagination.schemas.d.ts.map +1 -1
- package/dist/services/schemas/base.pagination.schemas.js +1 -1
- package/dist/services/schemas/base.pagination.schemas.js.map +1 -1
- package/dist/services/schemas/base.primitives.schemas.d.ts +3 -1
- package/dist/services/schemas/base.primitives.schemas.d.ts.map +1 -1
- package/dist/services/schemas/base.primitives.schemas.js +8 -7
- package/dist/services/schemas/base.primitives.schemas.js.map +1 -1
- package/dist/services/schemas/index.d.ts +5 -5
- package/dist/services/schemas/index.d.ts.map +1 -1
- package/dist/services/schemas/index.js +5 -5
- package/dist/services/schemas/index.js.map +1 -1
- package/dist/services/tag.d.ts +1 -1
- package/dist/services/tag.d.ts.map +1 -1
- package/dist/services/tag.js +2 -2
- package/dist/services/tag.js.map +1 -1
- package/dist/services/tag.schemas.d.ts +13 -13
- package/dist/services/tag.schemas.d.ts.map +1 -1
- package/dist/services/tag.schemas.js +50 -50
- package/dist/services/tag.schemas.js.map +1 -1
- package/dist/services/track.d.ts +122 -4
- package/dist/services/track.d.ts.map +1 -1
- package/dist/services/track.js +79 -10
- package/dist/services/track.js.map +1 -1
- package/dist/services/track.schemas.d.ts +213 -25
- package/dist/services/track.schemas.d.ts.map +1 -1
- package/dist/services/track.schemas.js +206 -57
- package/dist/services/track.schemas.js.map +1 -1
- package/dist/services/track.utils.d.ts +16 -7
- package/dist/services/track.utils.d.ts.map +1 -1
- package/dist/services/track.utils.js +49 -48
- package/dist/services/track.utils.js.map +1 -1
- package/dist/services/user.d.ts +19 -1
- package/dist/services/user.d.ts.map +1 -1
- package/dist/services/user.js +3 -2
- package/dist/services/user.js.map +1 -1
- package/dist/services/user.schemas.d.ts +321 -63
- package/dist/services/user.schemas.d.ts.map +1 -1
- package/dist/services/user.schemas.js +197 -88
- package/dist/services/user.schemas.js.map +1 -1
- package/dist/utils.d.ts +37 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +105 -20
- package/dist/utils.js.map +1 -1
- package/package.json +167 -154
- package/dist/__tests__/utils.test.d.ts +0 -2
- package/dist/__tests__/utils.test.d.ts.map +0 -1
- package/dist/__tests__/utils.test.js +0 -86
- package/dist/__tests__/utils.test.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { createUserService, createAlbumService, createArtistService, createTrackService, createTagService, createChartService, createGeoService, createLibraryService, createAuthService } from './services/index.js';
|
|
4
|
-
export type { UserService, AlbumService, ArtistService, TrackService, TagService, ChartService, GeoService, LibraryService, AuthService } from './services/index.js';
|
|
5
|
-
export type * from './services/user.schemas.js';
|
|
1
|
+
export { createClient, LastFmClient } from './client.js';
|
|
2
|
+
export { createConfig, getGlobalConfig, type LastFmConfig, resetGlobalConfig, setGlobalConfig, } from './config.js';
|
|
6
3
|
export type * from './services/album.schemas.js';
|
|
7
|
-
export type * from './services/artist.schemas.js';
|
|
8
|
-
export type * from './services/track.schemas.js';
|
|
9
|
-
export type * from './services/tag.schemas.js';
|
|
10
|
-
export type * from './services/chart.schemas.js';
|
|
11
|
-
export type * from './services/geo.schemas.js';
|
|
12
|
-
export type * from './services/library.schemas.js';
|
|
13
|
-
export type * from './services/auth.schemas.js';
|
|
14
|
-
export type * from './services/schemas/index.js';
|
|
15
|
-
export * from './services/user.schemas.js';
|
|
16
4
|
export * from './services/album.schemas.js';
|
|
5
|
+
export type * from './services/artist.schemas.js';
|
|
17
6
|
export * from './services/artist.schemas.js';
|
|
18
|
-
export * from './services/
|
|
19
|
-
export * from './services/
|
|
7
|
+
export type * from './services/auth.schemas.js';
|
|
8
|
+
export * from './services/auth.schemas.js';
|
|
9
|
+
export type * from './services/chart.schemas.js';
|
|
20
10
|
export * from './services/chart.schemas.js';
|
|
11
|
+
export type * from './services/geo.schemas.js';
|
|
21
12
|
export * from './services/geo.schemas.js';
|
|
13
|
+
export type { AlbumService, ArtistService, AuthService, ChartService, GeoService, LibraryService, TagService, TrackService, UserService, } from './services/index.js';
|
|
14
|
+
export { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
15
|
+
export type * from './services/library.schemas.js';
|
|
22
16
|
export * from './services/library.schemas.js';
|
|
23
|
-
export * from './services/
|
|
17
|
+
export type * from './services/schemas/index.js';
|
|
24
18
|
export * from './services/schemas/index.js';
|
|
25
|
-
export
|
|
19
|
+
export type * from './services/tag.schemas.js';
|
|
20
|
+
export * from './services/tag.schemas.js';
|
|
21
|
+
export type * from './services/track.schemas.js';
|
|
22
|
+
export * from './services/track.schemas.js';
|
|
23
|
+
export type * from './services/user.schemas.js';
|
|
24
|
+
export * from './services/user.schemas.js';
|
|
25
|
+
export { buildAuthUrl, buildUrl, fetcher, generateSignature, LastFmApiError, parseLastFmResponse } from './utils.js';
|
|
26
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EACN,YAAY,EACZ,eAAe,EACf,KAAK,YAAY,EACjB,iBAAiB,EACjB,eAAe,GACf,MAAM,aAAa,CAAA;AACpB,mBAAmB,6BAA6B,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAC3C,mBAAmB,8BAA8B,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,mBAAmB,4BAA4B,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,mBAAmB,6BAA6B,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAC3C,mBAAmB,2BAA2B,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AAEzC,YAAY,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,GACX,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,mBAAmB,+BAA+B,CAAA;AAClD,cAAc,+BAA+B,CAAA;AAC7C,mBAAmB,6BAA6B,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAC3C,mBAAmB,2BAA2B,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,mBAAmB,6BAA6B,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAE3C,mBAAmB,4BAA4B,CAAA;AAE/C,cAAc,4BAA4B,CAAA;AAG1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// Configuration
|
|
2
|
-
export { createConfig, getGlobalConfig, setGlobalConfig, resetGlobalConfig } from './config.js';
|
|
3
2
|
// Client principal
|
|
4
|
-
export {
|
|
5
|
-
|
|
6
|
-
export { createUserService, createAlbumService, createArtistService, createTrackService, createTagService, createChartService, createGeoService, createLibraryService, createAuthService } from './services/index.js';
|
|
7
|
-
// Schemas de Zod (para validación)
|
|
8
|
-
export * from './services/user.schemas.js';
|
|
3
|
+
export { createClient, LastFmClient } from './client.js';
|
|
4
|
+
export { createConfig, getGlobalConfig, resetGlobalConfig, setGlobalConfig, } from './config.js';
|
|
9
5
|
export * from './services/album.schemas.js';
|
|
10
6
|
export * from './services/artist.schemas.js';
|
|
11
|
-
export * from './services/
|
|
12
|
-
export * from './services/tag.schemas.js';
|
|
7
|
+
export * from './services/auth.schemas.js';
|
|
13
8
|
export * from './services/chart.schemas.js';
|
|
14
9
|
export * from './services/geo.schemas.js';
|
|
10
|
+
// Servicios (para uso avanzado)
|
|
11
|
+
export { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
15
12
|
export * from './services/library.schemas.js';
|
|
16
|
-
export * from './services/auth.schemas.js';
|
|
17
13
|
export * from './services/schemas/index.js';
|
|
14
|
+
export * from './services/tag.schemas.js';
|
|
15
|
+
export * from './services/track.schemas.js';
|
|
16
|
+
// Schemas de Zod (para validación)
|
|
17
|
+
export * from './services/user.schemas.js';
|
|
18
18
|
// Utilidades (para casos avanzados)
|
|
19
|
-
export {
|
|
19
|
+
export { buildAuthUrl, buildUrl, fetcher, generateSignature, LastFmApiError, parseLastFmResponse } from './utils.js';
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAEhB,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EACN,YAAY,EACZ,eAAe,EAEf,iBAAiB,EACjB,eAAe,GACf,MAAM,aAAa,CAAA;AAEpB,cAAc,6BAA6B,CAAA;AAE3C,cAAc,8BAA8B,CAAA;AAE5C,cAAc,4BAA4B,CAAA;AAE1C,cAAc,6BAA6B,CAAA;AAE3C,cAAc,2BAA2B,CAAA;AAazC,gCAAgC;AAChC,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAE5B,cAAc,+BAA+B,CAAA;AAE7C,cAAc,6BAA6B,CAAA;AAE3C,cAAc,2BAA2B,CAAA;AAEzC,cAAc,6BAA6B,CAAA;AAG3C,mCAAmC;AACnC,cAAc,4BAA4B,CAAA;AAE1C,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/services/album.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LastFmConfig } from '../config.js';
|
|
2
|
-
import type { AlbumGetInfoRequest, AlbumGetInfoResponse, AlbumGetTagsRequest, AlbumGetTagsResponse, AlbumGetTopTagsRequest, AlbumGetTopTagsResponse, AlbumSearchRequest, AlbumSearchResponse } from './album.schemas.js';
|
|
2
|
+
import type { AlbumAddTagsRequest, AlbumGetInfoRequest, AlbumGetInfoResponse, AlbumGetTagsRequest, AlbumGetTagsResponse, AlbumGetTopTagsRequest, AlbumGetTopTagsResponse, AlbumRemoveTagRequest, AlbumSearchRequest, AlbumSearchResponse } from './album.schemas.js';
|
|
3
3
|
export interface AlbumService {
|
|
4
4
|
/**
|
|
5
5
|
* Get the metadata for an album on Last.fm using the album name or a musicbrainz id.
|
|
@@ -33,6 +33,46 @@ export interface AlbumService {
|
|
|
33
33
|
* https://www.last.fm/api/show/album.search
|
|
34
34
|
*/
|
|
35
35
|
search: (params: AlbumSearchRequest, init?: RequestInit) => Promise<AlbumSearchResponse>;
|
|
36
|
+
/**
|
|
37
|
+
* Add one or more personal tags to an album. Requires an
|
|
38
|
+
* authenticated session.
|
|
39
|
+
*
|
|
40
|
+
* The `tags` array is sent on the wire as a comma-separated string
|
|
41
|
+
* (Last.fm convention). Returns when the call has been accepted by
|
|
42
|
+
* Last.fm.
|
|
43
|
+
*
|
|
44
|
+
* Idempotency is not guaranteed by Last.fm; calling twice may add
|
|
45
|
+
* the same tag twice if the previous run is reported as ignored.
|
|
46
|
+
*
|
|
47
|
+
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
48
|
+
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
49
|
+
* the client (preferred for long-lived clients). Obtain a session key
|
|
50
|
+
* via `auth.getToken` + the browser-based `auth.getSession` flow.
|
|
51
|
+
*
|
|
52
|
+
* @param {AlbumAddTagsRequest} params
|
|
53
|
+
* @param {RequestInit} init
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
* https://www.last.fm/api/show/album.addTags
|
|
56
|
+
*/
|
|
57
|
+
addTags: (params: AlbumAddTagsRequest, init?: RequestInit) => Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Remove a single personal tag from an album. Requires an
|
|
60
|
+
* authenticated session.
|
|
61
|
+
*
|
|
62
|
+
* Last.fm does not document idempotency for `album.removeTag`;
|
|
63
|
+
* removing an absent tag is a no-op or a server error depending
|
|
64
|
+
* on the live behaviour.
|
|
65
|
+
*
|
|
66
|
+
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
67
|
+
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
68
|
+
* the client. Obtain a session key via `auth.getToken` + `auth.getSession`.
|
|
69
|
+
*
|
|
70
|
+
* @param {AlbumRemoveTagRequest} params
|
|
71
|
+
* @param {RequestInit} init
|
|
72
|
+
* @returns {Promise<void>}
|
|
73
|
+
* https://www.last.fm/api/show/album.removeTag
|
|
74
|
+
*/
|
|
75
|
+
removeTag: (params: AlbumRemoveTagRequest, init?: RequestInit) => Promise<void>;
|
|
36
76
|
}
|
|
37
77
|
export declare function createAlbumService(config: LastFmConfig): AlbumService;
|
|
38
78
|
//# sourceMappingURL=album.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"album.d.ts","sourceRoot":"","sources":["../../src/services/album.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"album.d.ts","sourceRoot":"","sources":["../../src/services/album.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EACX,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,YAAY;IAC5B;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC3F;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC3F;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACpG;;;;;;OAMG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACxF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/E;AAiBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAmCrE"}
|
package/dist/services/album.js
CHANGED
|
@@ -1,10 +1,43 @@
|
|
|
1
|
-
import { fetcher,
|
|
1
|
+
import { buildUrl, fetcher, LastFmApiError, signedPost } from '../utils.js';
|
|
2
|
+
function resolveSessionKeyForTagMutation(config, requestSk, action) {
|
|
3
|
+
const sk = requestSk ?? config.sessionKey;
|
|
4
|
+
if (!sk) {
|
|
5
|
+
throw new LastFmApiError(`A session key (\`sk\`) is required to album.${action}. Pass \`sk\` in the request params or set \`sessionKey\` on the LastFmConfig.`, 0);
|
|
6
|
+
}
|
|
7
|
+
return sk;
|
|
8
|
+
}
|
|
2
9
|
export function createAlbumService(config) {
|
|
10
|
+
const addTagsImpl = (params, init) => {
|
|
11
|
+
const sk = resolveSessionKeyForTagMutation(config, params.sk, 'addTags');
|
|
12
|
+
return signedPost(config, 'album.addTags', {
|
|
13
|
+
params: {
|
|
14
|
+
artist: params.artist,
|
|
15
|
+
album: params.album,
|
|
16
|
+
tags: params.tags.join(','),
|
|
17
|
+
sk,
|
|
18
|
+
},
|
|
19
|
+
init,
|
|
20
|
+
}).then(() => undefined);
|
|
21
|
+
};
|
|
22
|
+
const removeTagImpl = (params, init) => {
|
|
23
|
+
const sk = resolveSessionKeyForTagMutation(config, params.sk, 'removeTag');
|
|
24
|
+
return signedPost(config, 'album.removeTag', {
|
|
25
|
+
params: {
|
|
26
|
+
artist: params.artist,
|
|
27
|
+
album: params.album,
|
|
28
|
+
tag: params.tag,
|
|
29
|
+
sk,
|
|
30
|
+
},
|
|
31
|
+
init,
|
|
32
|
+
}).then(() => undefined);
|
|
33
|
+
};
|
|
3
34
|
return {
|
|
4
35
|
getInfo: (params, init) => fetcher(buildUrl(config, 'album.getInfo', params), init),
|
|
5
36
|
getTags: (params, init) => fetcher(buildUrl(config, 'album.getTags', params), init),
|
|
6
37
|
getTopTags: (params, init) => fetcher(buildUrl(config, 'album.getTopTags', params), init),
|
|
7
|
-
search: (params, init) => fetcher(buildUrl(config, 'album.search', params), init)
|
|
38
|
+
search: (params, init) => fetcher(buildUrl(config, 'album.search', params), init),
|
|
39
|
+
addTags: addTagsImpl,
|
|
40
|
+
removeTag: removeTagImpl,
|
|
8
41
|
};
|
|
9
42
|
}
|
|
10
43
|
//# sourceMappingURL=album.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"album.js","sourceRoot":"","sources":["../../src/services/album.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"album.js","sourceRoot":"","sources":["../../src/services/album.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAyF3E,SAAS,+BAA+B,CACvC,MAAoB,EACpB,SAA6B,EAC7B,MAA+B;IAE/B,MAAM,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,UAAU,CAAA;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CACvB,+CAA+C,MAAM,gFAAgF,EACrI,CAAC,CACD,CAAA;IACF,CAAC;IACD,OAAO,EAAE,CAAA;AACV,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACtD,MAAM,WAAW,GAAG,CAAC,MAA2B,EAAE,IAAkB,EAAE,EAAE;QACvE,MAAM,EAAE,GAAG,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QACxE,OAAO,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE;YAC1C,MAAM,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3B,EAAE;aACF;YACD,IAAI;SACJ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,MAA6B,EAAE,IAAkB,EAAE,EAAE;QAC3E,MAAM,EAAE,GAAG,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAC1E,OAAO,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE;YAC5C,MAAM,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,EAAE;aACF;YACD,IAAI;SACJ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,OAAO;QACN,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAuB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACzG,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAuB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACzG,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAA0B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAClH,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACtG,OAAO,EAAE,WAAW;QACpB,SAAS,EAAE,aAAa;KACxB,CAAA;AACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
3
|
* Album
|
|
4
4
|
* @see https://www.last.fm/api/show/album.getInfo
|
|
@@ -17,7 +17,7 @@ export declare const albumSchema: z.ZodObject<{
|
|
|
17
17
|
}, z.core.$strip>;
|
|
18
18
|
playcount: z.ZodString;
|
|
19
19
|
image: z.ZodArray<z.ZodObject<{
|
|
20
|
-
|
|
20
|
+
'#text': z.ZodString;
|
|
21
21
|
size: z.ZodUnion<readonly [z.ZodLiteral<"small">, z.ZodLiteral<"medium">, z.ZodLiteral<"large">, z.ZodLiteral<"extralarge">, z.ZodLiteral<"mega">]>;
|
|
22
22
|
}, z.core.$strip>>;
|
|
23
23
|
tracks: z.ZodOptional<z.ZodObject<{
|
|
@@ -64,7 +64,7 @@ export declare const albumGetInfoResponseSchema: z.ZodObject<{
|
|
|
64
64
|
}, z.core.$strip>;
|
|
65
65
|
playcount: z.ZodString;
|
|
66
66
|
image: z.ZodArray<z.ZodObject<{
|
|
67
|
-
|
|
67
|
+
'#text': z.ZodString;
|
|
68
68
|
size: z.ZodUnion<readonly [z.ZodLiteral<"small">, z.ZodLiteral<"medium">, z.ZodLiteral<"large">, z.ZodLiteral<"extralarge">, z.ZodLiteral<"mega">]>;
|
|
69
69
|
}, z.core.$strip>>;
|
|
70
70
|
tracks: z.ZodOptional<z.ZodObject<{
|
|
@@ -103,7 +103,7 @@ export declare const albumGetTagsResponseSchema: z.ZodObject<{
|
|
|
103
103
|
url: z.ZodString;
|
|
104
104
|
}, z.core.$strip>>;
|
|
105
105
|
}, z.core.$strip>;
|
|
106
|
-
|
|
106
|
+
'@attr': z.ZodObject<{
|
|
107
107
|
album: z.ZodString;
|
|
108
108
|
artist: z.ZodString;
|
|
109
109
|
}, z.core.$strip>;
|
|
@@ -121,7 +121,7 @@ export declare const albumGetTopTagsResponseSchema: z.ZodObject<{
|
|
|
121
121
|
count: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
122
122
|
}, z.core.$strip>>;
|
|
123
123
|
}, z.core.$strip>;
|
|
124
|
-
|
|
124
|
+
'@attr': z.ZodObject<{
|
|
125
125
|
album: z.ZodString;
|
|
126
126
|
artist: z.ZodString;
|
|
127
127
|
}, z.core.$strip>;
|
|
@@ -133,32 +133,68 @@ export declare const albumSearchRequestSchema: z.ZodObject<{
|
|
|
133
133
|
}, z.core.$strip>;
|
|
134
134
|
export declare const albumSearchResponseSchema: z.ZodObject<{
|
|
135
135
|
results: z.ZodObject<{
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
'opensearch:Query': z.ZodObject<{
|
|
137
|
+
'#text': z.ZodString;
|
|
138
138
|
role: z.ZodString;
|
|
139
139
|
searchTerms: z.ZodString;
|
|
140
140
|
startPage: z.ZodString;
|
|
141
141
|
}, z.core.$strip>;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
'opensearch:totalResults': z.ZodString;
|
|
143
|
+
'opensearch:startIndex': z.ZodString;
|
|
144
|
+
'opensearch:itemsPerPage': z.ZodString;
|
|
145
145
|
albummatches: z.ZodObject<{
|
|
146
146
|
album: z.ZodArray<z.ZodObject<{
|
|
147
147
|
name: z.ZodString;
|
|
148
148
|
artist: z.ZodString;
|
|
149
149
|
url: z.ZodString;
|
|
150
150
|
image: z.ZodArray<z.ZodObject<{
|
|
151
|
-
|
|
151
|
+
'#text': z.ZodString;
|
|
152
152
|
size: z.ZodUnion<readonly [z.ZodLiteral<"small">, z.ZodLiteral<"medium">, z.ZodLiteral<"large">, z.ZodLiteral<"extralarge">, z.ZodLiteral<"mega">]>;
|
|
153
153
|
}, z.core.$strip>>;
|
|
154
154
|
mbid: z.ZodString;
|
|
155
155
|
}, z.core.$strip>>;
|
|
156
156
|
}, z.core.$strip>;
|
|
157
|
-
|
|
157
|
+
'@attr': z.ZodObject<{
|
|
158
158
|
for: z.ZodString;
|
|
159
159
|
}, z.core.$strip>;
|
|
160
160
|
}, z.core.$strip>;
|
|
161
161
|
}, z.core.$strip>;
|
|
162
|
+
/**
|
|
163
|
+
* Maximum number of tags accepted by `album.addTags` per the Last.fm
|
|
164
|
+
* API. The docs are not explicit about the limit on `album.addTags`
|
|
165
|
+
* specifically, but it matches the documented `track.addTags` /
|
|
166
|
+
* `artist.addTags` cap.
|
|
167
|
+
*/
|
|
168
|
+
export declare const MAX_ALBUM_TAGS_PER_ADD = 10;
|
|
169
|
+
/**
|
|
170
|
+
* Request shape for `album.addTags`. The `tags` array is sent on the
|
|
171
|
+
* wire as a comma-separated string and validated to at most
|
|
172
|
+
* `MAX_ALBUM_TAGS_PER_ADD` entries.
|
|
173
|
+
* https://www.last.fm/api/show/album.addTags
|
|
174
|
+
*/
|
|
175
|
+
export declare const albumAddTagsRequestSchema: z.ZodObject<{
|
|
176
|
+
artist: z.ZodString;
|
|
177
|
+
album: z.ZodString;
|
|
178
|
+
tags: z.ZodArray<z.ZodString>;
|
|
179
|
+
sk: z.ZodOptional<z.ZodString>;
|
|
180
|
+
}, z.core.$strip>;
|
|
181
|
+
/**
|
|
182
|
+
* Request shape for `album.removeTag`. A single tag is removed per
|
|
183
|
+
* call.
|
|
184
|
+
* https://www.last.fm/api/show/album.removeTag
|
|
185
|
+
*/
|
|
186
|
+
export declare const albumRemoveTagRequestSchema: z.ZodObject<{
|
|
187
|
+
artist: z.ZodString;
|
|
188
|
+
album: z.ZodString;
|
|
189
|
+
tag: z.ZodString;
|
|
190
|
+
sk: z.ZodOptional<z.ZodString>;
|
|
191
|
+
}, z.core.$strip>;
|
|
192
|
+
/**
|
|
193
|
+
* Empty success payload for the void tag-mutation methods. The Last.fm
|
|
194
|
+
* response has no useful domain content, so the schema accepts any
|
|
195
|
+
* shape and we expose the inferred type as `void` at the call site.
|
|
196
|
+
*/
|
|
197
|
+
export declare const albumTagMutationResponseSchema: z.ZodUnknown;
|
|
162
198
|
export type Album = z.infer<typeof albumSchema>;
|
|
163
199
|
export type AlbumGetInfoRequest = z.infer<typeof albumGetInfoRequestSchema>;
|
|
164
200
|
export type AlbumGetInfoResponse = z.infer<typeof albumGetInfoResponseSchema>;
|
|
@@ -168,4 +204,7 @@ export type AlbumGetTopTagsRequest = z.infer<typeof albumGetTopTagsRequestSchema
|
|
|
168
204
|
export type AlbumGetTopTagsResponse = z.infer<typeof albumGetTopTagsResponseSchema>;
|
|
169
205
|
export type AlbumSearchRequest = z.infer<typeof albumSearchRequestSchema>;
|
|
170
206
|
export type AlbumSearchResponse = z.infer<typeof albumSearchResponseSchema>;
|
|
207
|
+
export type AlbumAddTagsRequest = z.infer<typeof albumAddTagsRequestSchema>;
|
|
208
|
+
export type AlbumRemoveTagRequest = z.infer<typeof albumRemoveTagRequestSchema>;
|
|
209
|
+
export type AlbumTagMutationResponse = z.infer<typeof albumTagMutationResponseSchema>;
|
|
171
210
|
//# sourceMappingURL=album.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"album.schemas.d.ts","sourceRoot":"","sources":["../../src/services/album.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"album.schemas.d.ts","sourceRoot":"","sources":["../../src/services/album.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAsEvB;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYtB,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;iBAMpC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAErC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAarC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;iBAIvC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAcxC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;iBAInC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BpC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAOpC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;iBAKtC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,cAAc,CAAA;AAGzD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAC/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACnF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import {
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { albumNameSchema, artistNameSchema, contentSchema, countSchema, durationSchema, forSchema, imageSchema, itemsPerPageSchema, langSchema, limitSchema, listenersSchema, mbidSchema, nameSchema, pageSchema, playcountSchema, publishedSchema, roleSchema, searchTermsSchema, startIndexSchema, startPageSchema, summarySchema, tagNameSchema, textSchema, totalResultsSchema, urlSchema, userNameSchema, } from './schemas/index.js';
|
|
3
3
|
const albumTagSchema = z.object({
|
|
4
4
|
tag: z
|
|
5
5
|
.union([
|
|
@@ -72,7 +72,7 @@ export const albumGetTagsResponseSchema = z.object({
|
|
|
72
72
|
url: urlSchema,
|
|
73
73
|
})),
|
|
74
74
|
}),
|
|
75
|
-
|
|
75
|
+
'@attr': z.object({
|
|
76
76
|
album: albumNameSchema,
|
|
77
77
|
artist: artistNameSchema,
|
|
78
78
|
}),
|
|
@@ -90,7 +90,7 @@ export const albumGetTopTagsResponseSchema = z.object({
|
|
|
90
90
|
count: countSchema,
|
|
91
91
|
})),
|
|
92
92
|
}),
|
|
93
|
-
|
|
93
|
+
'@attr': z.object({
|
|
94
94
|
album: albumNameSchema,
|
|
95
95
|
artist: artistNameSchema,
|
|
96
96
|
}),
|
|
@@ -102,15 +102,15 @@ export const albumSearchRequestSchema = z.object({
|
|
|
102
102
|
});
|
|
103
103
|
export const albumSearchResponseSchema = z.object({
|
|
104
104
|
results: z.object({
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
'opensearch:Query': z.object({
|
|
106
|
+
'#text': textSchema,
|
|
107
107
|
role: roleSchema,
|
|
108
108
|
searchTerms: searchTermsSchema,
|
|
109
109
|
startPage: startPageSchema,
|
|
110
110
|
}),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
'opensearch:totalResults': totalResultsSchema,
|
|
112
|
+
'opensearch:startIndex': startIndexSchema,
|
|
113
|
+
'opensearch:itemsPerPage': itemsPerPageSchema,
|
|
114
114
|
albummatches: z.object({
|
|
115
115
|
album: z.array(z.object({
|
|
116
116
|
name: albumNameSchema,
|
|
@@ -120,9 +120,47 @@ export const albumSearchResponseSchema = z.object({
|
|
|
120
120
|
mbid: mbidSchema,
|
|
121
121
|
})),
|
|
122
122
|
}),
|
|
123
|
-
|
|
123
|
+
'@attr': z.object({
|
|
124
124
|
for: forSchema,
|
|
125
125
|
}),
|
|
126
126
|
}),
|
|
127
127
|
});
|
|
128
|
+
/**
|
|
129
|
+
* Maximum number of tags accepted by `album.addTags` per the Last.fm
|
|
130
|
+
* API. The docs are not explicit about the limit on `album.addTags`
|
|
131
|
+
* specifically, but it matches the documented `track.addTags` /
|
|
132
|
+
* `artist.addTags` cap.
|
|
133
|
+
*/
|
|
134
|
+
export const MAX_ALBUM_TAGS_PER_ADD = 10;
|
|
135
|
+
/**
|
|
136
|
+
* Request shape for `album.addTags`. The `tags` array is sent on the
|
|
137
|
+
* wire as a comma-separated string and validated to at most
|
|
138
|
+
* `MAX_ALBUM_TAGS_PER_ADD` entries.
|
|
139
|
+
* https://www.last.fm/api/show/album.addTags
|
|
140
|
+
*/
|
|
141
|
+
export const albumAddTagsRequestSchema = z.object({
|
|
142
|
+
artist: artistNameSchema,
|
|
143
|
+
album: albumNameSchema,
|
|
144
|
+
tags: z.array(tagNameSchema).max(MAX_ALBUM_TAGS_PER_ADD, {
|
|
145
|
+
message: `album.addTags accepts at most ${MAX_ALBUM_TAGS_PER_ADD} tags per request`,
|
|
146
|
+
}),
|
|
147
|
+
sk: z.string().optional(),
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* Request shape for `album.removeTag`. A single tag is removed per
|
|
151
|
+
* call.
|
|
152
|
+
* https://www.last.fm/api/show/album.removeTag
|
|
153
|
+
*/
|
|
154
|
+
export const albumRemoveTagRequestSchema = z.object({
|
|
155
|
+
artist: artistNameSchema,
|
|
156
|
+
album: albumNameSchema,
|
|
157
|
+
tag: tagNameSchema,
|
|
158
|
+
sk: z.string().optional(),
|
|
159
|
+
});
|
|
160
|
+
/**
|
|
161
|
+
* Empty success payload for the void tag-mutation methods. The Last.fm
|
|
162
|
+
* response has no useful domain content, so the schema accepts any
|
|
163
|
+
* shape and we expose the inferred type as `void` at the call site.
|
|
164
|
+
*/
|
|
165
|
+
export const albumTagMutationResponseSchema = z.unknown();
|
|
128
166
|
//# sourceMappingURL=album.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"album.schemas.js","sourceRoot":"","sources":["../../src/services/album.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"album.schemas.js","sourceRoot":"","sources":["../../src/services/album.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ArtistGetInfoRequest, ArtistGetInfoResponse, ArtistGetTagsRequest, ArtistGetTagsResponse, ArtistGetTopAlbumsRequest, ArtistGetTopAlbumsResponse, ArtistGetTopTagsRequest, ArtistGetTopTagsResponse, ArtistGetTopTracksRequest, ArtistGetTopTracksResponse, ArtistSearchRequest, ArtistSearchResponse, ArtistGetSimilarRequest, ArtistGetSimilarResponse } from './artist.schemas.js';
|
|
2
1
|
import type { LastFmConfig } from '../config.js';
|
|
2
|
+
import type { ArtistAddTagsRequest, ArtistGetCorrectionRequest, ArtistGetCorrectionResponse, ArtistGetInfoRequest, ArtistGetInfoResponse, ArtistGetSimilarRequest, ArtistGetSimilarResponse, ArtistGetTagsRequest, ArtistGetTagsResponse, ArtistGetTopAlbumsRequest, ArtistGetTopAlbumsResponse, ArtistGetTopTagsRequest, ArtistGetTopTagsResponse, ArtistGetTopTracksRequest, ArtistGetTopTracksResponse, ArtistRemoveTagRequest, ArtistSearchRequest, ArtistSearchResponse } from './artist.schemas.js';
|
|
3
3
|
export interface ArtistService {
|
|
4
4
|
/**
|
|
5
5
|
* Get the metadata for an artist. Includes biography.
|
|
@@ -57,6 +57,53 @@ export interface ArtistService {
|
|
|
57
57
|
* https://www.last.fm/api/show/artist.search
|
|
58
58
|
* */
|
|
59
59
|
search: (params: ArtistSearchRequest, init?: RequestInit) => Promise<ArtistSearchResponse>;
|
|
60
|
+
/**
|
|
61
|
+
* Get the canonical correction for a misspelled or noncanonical artist
|
|
62
|
+
* name. Returns the list of corrections Last.fm would apply to the
|
|
63
|
+
* provided input. Unsigned GET — no `sk` or `api_sig` are sent.
|
|
64
|
+
* @param {ArtistGetCorrectionRequest} params
|
|
65
|
+
* @param {RequestInit} init
|
|
66
|
+
* @returns {Promise<ArtistGetCorrectionResponse>}
|
|
67
|
+
* https://www.last.fm/api/show/artist.getCorrection
|
|
68
|
+
*/
|
|
69
|
+
getCorrection: (params: ArtistGetCorrectionRequest, init?: RequestInit) => Promise<ArtistGetCorrectionResponse>;
|
|
70
|
+
/**
|
|
71
|
+
* Add one or more personal tags to an artist. Requires an
|
|
72
|
+
* authenticated session.
|
|
73
|
+
*
|
|
74
|
+
* The `tags` array is sent on the wire as a comma-separated string
|
|
75
|
+
* (Last.fm convention). Returns when the call has been accepted by
|
|
76
|
+
* Last.fm.
|
|
77
|
+
*
|
|
78
|
+
* Idempotency is not guaranteed by Last.fm.
|
|
79
|
+
*
|
|
80
|
+
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
81
|
+
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
82
|
+
* the client (preferred for long-lived clients). Obtain a session key
|
|
83
|
+
* via `auth.getToken` + the browser-based `auth.getSession` flow.
|
|
84
|
+
*
|
|
85
|
+
* @param {ArtistAddTagsRequest} params
|
|
86
|
+
* @param {RequestInit} init
|
|
87
|
+
* @returns {Promise<void>}
|
|
88
|
+
* https://www.last.fm/api/show/artist.addTags
|
|
89
|
+
*/
|
|
90
|
+
addTags: (params: ArtistAddTagsRequest, init?: RequestInit) => Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Remove a single personal tag from an artist. Requires an
|
|
93
|
+
* authenticated session.
|
|
94
|
+
*
|
|
95
|
+
* Last.fm does not document idempotency for `artist.removeTag`.
|
|
96
|
+
*
|
|
97
|
+
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
98
|
+
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
99
|
+
* the client. Obtain a session key via `auth.getToken` + `auth.getSession`.
|
|
100
|
+
*
|
|
101
|
+
* @param {ArtistRemoveTagRequest} params
|
|
102
|
+
* @param {RequestInit} init
|
|
103
|
+
* @returns {Promise<void>}
|
|
104
|
+
* https://www.last.fm/api/show/artist.removeTag
|
|
105
|
+
*/
|
|
106
|
+
removeTag: (params: ArtistRemoveTagRequest, init?: RequestInit) => Promise<void>;
|
|
60
107
|
}
|
|
61
108
|
export declare function createArtistService(config: LastFmConfig): ArtistService;
|
|
62
109
|
//# sourceMappingURL=artist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artist.d.ts","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"artist.d.ts","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,aAAa;IAC7B;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC7F;;;;;;SAMK;IACL,OAAO,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC7F;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACtG;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACtG;;;;;;SAMK;IACL,YAAY,EAAE,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;IAC5G;;;;;;SAMK;IACL,YAAY,EAAE,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;IAC5G;;;;;;SAMK;IACL,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC1F;;;;;;;;OAQG;IACH,aAAa,EAAE,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC/G;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E;;;;;;;;;;;;;;OAcG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChF;AAiBD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CA0CvE"}
|
package/dist/services/artist.js
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
import { fetcher,
|
|
1
|
+
import { buildUrl, fetcher, LastFmApiError, signedPost } from '../utils.js';
|
|
2
|
+
function resolveSessionKeyForArtistTagMutation(config, requestSk, action) {
|
|
3
|
+
const sk = requestSk ?? config.sessionKey;
|
|
4
|
+
if (!sk) {
|
|
5
|
+
throw new LastFmApiError(`A session key (\`sk\`) is required to artist.${action}. Pass \`sk\` in the request params or set \`sessionKey\` on the LastFmConfig.`, 0);
|
|
6
|
+
}
|
|
7
|
+
return sk;
|
|
8
|
+
}
|
|
2
9
|
export function createArtistService(config) {
|
|
10
|
+
const addTagsImpl = (params, init) => {
|
|
11
|
+
const sk = resolveSessionKeyForArtistTagMutation(config, params.sk, 'addTags');
|
|
12
|
+
return signedPost(config, 'artist.addTags', {
|
|
13
|
+
params: {
|
|
14
|
+
artist: params.artist,
|
|
15
|
+
tags: params.tags.join(','),
|
|
16
|
+
sk,
|
|
17
|
+
},
|
|
18
|
+
init,
|
|
19
|
+
}).then(() => undefined);
|
|
20
|
+
};
|
|
21
|
+
const removeTagImpl = (params, init) => {
|
|
22
|
+
const sk = resolveSessionKeyForArtistTagMutation(config, params.sk, 'removeTag');
|
|
23
|
+
return signedPost(config, 'artist.removeTag', {
|
|
24
|
+
params: {
|
|
25
|
+
artist: params.artist,
|
|
26
|
+
tag: params.tag,
|
|
27
|
+
sk,
|
|
28
|
+
},
|
|
29
|
+
init,
|
|
30
|
+
}).then(() => undefined);
|
|
31
|
+
};
|
|
3
32
|
return {
|
|
4
33
|
getInfo: (params, init) => fetcher(buildUrl(config, 'artist.getInfo', params), init),
|
|
5
34
|
getTags: (params, init) => fetcher(buildUrl(config, 'artist.getTags', params), init),
|
|
@@ -7,7 +36,10 @@ export function createArtistService(config) {
|
|
|
7
36
|
getTopTags: (params, init) => fetcher(buildUrl(config, 'artist.getTopTags', params), init),
|
|
8
37
|
getTopAlbums: (params, init) => fetcher(buildUrl(config, 'artist.getTopAlbums', params), init),
|
|
9
38
|
getTopTracks: (params, init) => fetcher(buildUrl(config, 'artist.getTopTracks', params), init),
|
|
10
|
-
search: (params, init) => fetcher(buildUrl(config, 'artist.search', params), init)
|
|
39
|
+
search: (params, init) => fetcher(buildUrl(config, 'artist.search', params), init),
|
|
40
|
+
getCorrection: (params, init) => fetcher(buildUrl(config, 'artist.getCorrection', params), init),
|
|
41
|
+
addTags: addTagsImpl,
|
|
42
|
+
removeTag: removeTagImpl,
|
|
11
43
|
};
|
|
12
44
|
}
|
|
13
45
|
//# sourceMappingURL=artist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artist.js","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"artist.js","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"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"}
|