@ansango/lastfm-api 3.2.0 → 3.4.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 +61 -0
- package/README.md +66 -22
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/client.js.map +1 -1
- package/dist/entrypoints/insights.d.ts +4 -0
- package/dist/entrypoints/insights.d.ts.map +1 -0
- package/dist/entrypoints/insights.js +3 -0
- package/dist/entrypoints/insights.js.map +1 -0
- package/dist/entrypoints/insights.schemas.d.ts +2 -0
- package/dist/entrypoints/insights.schemas.d.ts.map +1 -0
- package/dist/entrypoints/insights.schemas.js +3 -0
- package/dist/entrypoints/insights.schemas.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/services/album.d.ts +2 -4
- package/dist/services/album.d.ts.map +1 -1
- package/dist/services/album.js.map +1 -1
- package/dist/services/artist.d.ts +2 -4
- package/dist/services/artist.d.ts.map +1 -1
- package/dist/services/artist.js.map +1 -1
- package/dist/services/auth.d.ts +1 -38
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +1 -19
- package/dist/services/auth.js.map +1 -1
- package/dist/services/auth.schemas.d.ts +0 -13
- package/dist/services/auth.schemas.d.ts.map +1 -1
- package/dist/services/auth.schemas.js +0 -7
- package/dist/services/auth.schemas.js.map +1 -1
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/insights/binges.d.ts +8 -0
- package/dist/services/insights/binges.d.ts.map +1 -0
- package/dist/services/insights/binges.js +53 -0
- package/dist/services/insights/binges.js.map +1 -0
- package/dist/services/insights/compare.d.ts +8 -0
- package/dist/services/insights/compare.d.ts.map +1 -0
- package/dist/services/insights/compare.js +39 -0
- package/dist/services/insights/compare.js.map +1 -0
- package/dist/services/insights/discoveries.d.ts +8 -0
- package/dist/services/insights/discoveries.d.ts.map +1 -0
- package/dist/services/insights/discoveries.js +53 -0
- package/dist/services/insights/discoveries.js.map +1 -0
- package/dist/services/insights/hours.d.ts +8 -0
- package/dist/services/insights/hours.d.ts.map +1 -0
- package/dist/services/insights/hours.js +43 -0
- package/dist/services/insights/hours.js.map +1 -0
- package/dist/services/insights/lib/binges.d.ts +31 -0
- package/dist/services/insights/lib/binges.d.ts.map +1 -0
- package/dist/services/insights/lib/binges.js +61 -0
- package/dist/services/insights/lib/binges.js.map +1 -0
- package/dist/services/insights/lib/compare.d.ts +31 -0
- package/dist/services/insights/lib/compare.d.ts.map +1 -0
- package/dist/services/insights/lib/compare.js +68 -0
- package/dist/services/insights/lib/compare.js.map +1 -0
- package/dist/services/insights/lib/discoveries.d.ts +17 -0
- package/dist/services/insights/lib/discoveries.d.ts.map +1 -0
- package/dist/services/insights/lib/discoveries.js +24 -0
- package/dist/services/insights/lib/discoveries.js.map +1 -0
- package/dist/services/insights/lib/diversity.d.ts +28 -0
- package/dist/services/insights/lib/diversity.d.ts.map +1 -0
- package/dist/services/insights/lib/diversity.js +39 -0
- package/dist/services/insights/lib/diversity.js.map +1 -0
- package/dist/services/insights/lib/hours.d.ts +39 -0
- package/dist/services/insights/lib/hours.d.ts.map +1 -0
- package/dist/services/insights/lib/hours.js +66 -0
- package/dist/services/insights/lib/hours.js.map +1 -0
- package/dist/services/insights/lib/mood.d.ts +22 -0
- package/dist/services/insights/lib/mood.d.ts.map +1 -0
- package/dist/services/insights/lib/mood.js +187 -0
- package/dist/services/insights/lib/mood.js.map +1 -0
- package/dist/services/insights/lib/periods.d.ts +17 -0
- package/dist/services/insights/lib/periods.d.ts.map +1 -0
- package/dist/services/insights/lib/periods.js +66 -0
- package/dist/services/insights/lib/periods.js.map +1 -0
- package/dist/services/insights/lib/personality.d.ts +30 -0
- package/dist/services/insights/lib/personality.d.ts.map +1 -0
- package/dist/services/insights/lib/personality.js +131 -0
- package/dist/services/insights/lib/personality.js.map +1 -0
- package/dist/services/insights/lib/trends.d.ts +30 -0
- package/dist/services/insights/lib/trends.d.ts.map +1 -0
- package/dist/services/insights/lib/trends.js +67 -0
- package/dist/services/insights/lib/trends.js.map +1 -0
- package/dist/services/insights/mood.d.ts +8 -0
- package/dist/services/insights/mood.d.ts.map +1 -0
- package/dist/services/insights/mood.js +53 -0
- package/dist/services/insights/mood.js.map +1 -0
- package/dist/services/insights/now-playing.d.ts +20 -0
- package/dist/services/insights/now-playing.d.ts.map +1 -0
- package/dist/services/insights/now-playing.js +128 -0
- package/dist/services/insights/now-playing.js.map +1 -0
- package/dist/services/insights/personality.d.ts +8 -0
- package/dist/services/insights/personality.d.ts.map +1 -0
- package/dist/services/insights/personality.js +42 -0
- package/dist/services/insights/personality.js.map +1 -0
- package/dist/services/insights/summary.d.ts +8 -0
- package/dist/services/insights/summary.d.ts.map +1 -0
- package/dist/services/insights/summary.js +117 -0
- package/dist/services/insights/summary.js.map +1 -0
- package/dist/services/insights/trends.d.ts +8 -0
- package/dist/services/insights/trends.d.ts.map +1 -0
- package/dist/services/insights/trends.js +96 -0
- package/dist/services/insights/trends.js.map +1 -0
- package/dist/services/insights.d.ts +96 -0
- package/dist/services/insights.d.ts.map +1 -0
- package/dist/services/insights.js +26 -0
- package/dist/services/insights.js.map +1 -0
- package/dist/services/insights.schemas.d.ts +710 -0
- package/dist/services/insights.schemas.d.ts.map +1 -0
- package/dist/services/insights.schemas.js +307 -0
- package/dist/services/insights.schemas.js.map +1 -0
- package/dist/services/track.d.ts +6 -12
- package/dist/services/track.d.ts.map +1 -1
- package/dist/services/track.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/package.json +12 -4
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,67 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
> [ansango/lastfm-api](https://github.com/ansango/lastfm-api). Entries below preserve the
|
|
10
10
|
> historical package and repository names used by their original releases.
|
|
11
11
|
|
|
12
|
+
## [3.4.0] - 2026-08-28
|
|
13
|
+
|
|
14
|
+
### ✨ Features
|
|
15
|
+
|
|
16
|
+
- **insights**: implement compareUsers with Jaccard affinity index (closes #125) ([95f39d6](https://github.com/ansango/lastfm-api/commit/95f39d6))
|
|
17
|
+
- **insights**: implement getMood psychometric classifier and getPersonality archetypes (closes #124) ([0aae0e8](https://github.com/ansango/lastfm-api/commit/0aae0e8))
|
|
18
|
+
- **insights**: implement getTrends ranking diff and getDiscoveries new-artist detector (closes #123) ([1a07234](https://github.com/ansango/lastfm-api/commit/1a07234))
|
|
19
|
+
- **insights**: implement getHoursHistogram and getBinges temporal analytics (closes #122) ([7615ba9](https://github.com/ansango/lastfm-api/commit/7615ba9))
|
|
20
|
+
- **insights**: implement getNowPlaying with artist bio and similarity enrichment (closes #121) ([9de9213](https://github.com/ansango/lastfm-api/commit/9de9213))
|
|
21
|
+
- **insights**: register getSummary route in method registry and Scalar OpenAPI docs ([875bafe](https://github.com/ansango/lastfm-api/commit/875bafe))
|
|
22
|
+
- **insights**: implement getSummary with Shannon diversity index (closes #120) ([28b03b0](https://github.com/ansango/lastfm-api/commit/28b03b0))
|
|
23
|
+
- **insights**: wire insights namespace in method registry ([2d1db4d](https://github.com/ansango/lastfm-api/commit/2d1db4d))
|
|
24
|
+
- **insights**: base architecture, Zod schemas infrastructure, and client wiring (closes #119) ([6ce9d4e](https://github.com/ansango/lastfm-api/commit/6ce9d4e))
|
|
25
|
+
|
|
26
|
+
### 📚 Documentation
|
|
27
|
+
|
|
28
|
+
- **insights**: add dedicated OpenAPI descriptions in Scalar for all 9 insight methods ([1115785](https://github.com/ansango/lastfm-api/commit/1115785))
|
|
29
|
+
- **insights**: documentation, OpenAPI Scalar integration, and CLI migration guide (closes #126) ([f325696](https://github.com/ansango/lastfm-api/commit/f325696))
|
|
30
|
+
|
|
31
|
+
### 🔧 Chores
|
|
32
|
+
|
|
33
|
+
- remove PROJECT_IDEAS.md ([a837c39](https://github.com/ansango/lastfm-api/commit/a837c39))
|
|
34
|
+
- update dependencies and configuration files - Bump @types/node to version 26.4.0 in package.json and bun.lock - Modify build script in package.json to use tsconfig.build.json - Update changelog script to handle undefined tags - Refactor recent tracks test for better readability - Adjust tsconfig files for improved build and development settings - Add tsconfig.build.json for build-specific configurations - Update .gitignore to exclude AGENTS.md ([2a1687f](https://github.com/ansango/lastfm-api/commit/2a1687f))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## [3.3.0] - 2026-08-28
|
|
38
|
+
|
|
39
|
+
### ✨ Features
|
|
40
|
+
|
|
41
|
+
- `auth.getToken()` now returns a pre-built `authUrl` so consumers don't have to
|
|
42
|
+
construct the browser-flow URL themselves. The CLI prints it; Scalar renders it
|
|
43
|
+
in the response. (#115) ([c69cd53](https://github.com/ansango/lastfm-api/commit/c69cd53))
|
|
44
|
+
|
|
45
|
+
### ⚠️ Breaking Changes
|
|
46
|
+
|
|
47
|
+
- `auth.getMobileSession` has been **removed**. The method was deprecated in 3.2.0
|
|
48
|
+
(PR #106) with the warning that it would be removed in a future major release.
|
|
49
|
+
Last.fm restricts this endpoint to mobile-classified API keys, which are not
|
|
50
|
+
exposed through the public self-service create form. Every consumer can use the
|
|
51
|
+
browser flow (`auth.getToken` + `auth.getSession`) instead. (#117) ([99c4466](https://github.com/ansango/lastfm-api/commit/99c4466))
|
|
52
|
+
|
|
53
|
+
**Migration:**
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
// 3.2.x — no longer compiles
|
|
57
|
+
const { session } = await client.auth.getMobileSession({
|
|
58
|
+
username: "...",
|
|
59
|
+
password: "...",
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// 3.3.0 — use the browser flow
|
|
63
|
+
const { token, authUrl } = await client.auth.getToken();
|
|
64
|
+
// open authUrl in a browser, authorize, copy token from URL bar
|
|
65
|
+
const { session } = await client.auth.getSession({ token });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The Scalar tool surface no longer exposes `POST /auth/get-mobile-session`. The
|
|
69
|
+
`x-lastfm-sk` header description and the `AUTH_TAG_DESCRIPTION` were rewritten
|
|
70
|
+
to point at the browser flow + `authUrl`. The 57-method surface is now 56.
|
|
71
|
+
|
|
72
|
+
|
|
12
73
|
## [3.2.0] - 2026-08-28
|
|
13
74
|
|
|
14
75
|
### ✨ Features
|
package/README.md
CHANGED
|
@@ -14,7 +14,8 @@ A universal Last.fm API client for Node.js and Browser, written in TypeScript.
|
|
|
14
14
|
## Features
|
|
15
15
|
|
|
16
16
|
- ✅ **Universal**: Works in Node.js (≥20.0.0) and Browser
|
|
17
|
-
- ✅ **Complete coverage**: All
|
|
17
|
+
- ✅ **Complete coverage**: All 56 canonical Last.fm API methods across 9 namespaces
|
|
18
|
+
- ✅ **Insights & Analytics Engine**: 9 high-level derived analytical views (Shannon diversity, enriched Now Playing, diurnal histograms, binge runs, ranking diffs, new discoveries, 2D mood classification, personality archetypes, and Jaccard user comparison)
|
|
18
19
|
- ✅ **TypeScript**: Full type safety with comprehensive type definitions
|
|
19
20
|
- ✅ **Zod Schemas**: Runtime validation schemas for all types
|
|
20
21
|
- ✅ **ESM**: Modern ES modules with tree-shaking support
|
|
@@ -130,12 +131,14 @@ const libraryArtists = await client.library.getArtists({ user: 'ansango' });
|
|
|
130
131
|
// Auth service (for scrobbling and authenticated methods)
|
|
131
132
|
const session = await client.auth.getSession({ token: 'AUTH_TOKEN' });
|
|
132
133
|
// Request an auth token (signed GET, no sk)
|
|
133
|
-
const { token } = await client.auth.getToken();
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
134
|
+
const { token, authUrl } = await client.auth.getToken();
|
|
135
|
+
|
|
136
|
+
// Insights & analytics engine
|
|
137
|
+
const summary = await client.insights.getSummary({ user: 'ansango', period: '7day' });
|
|
138
|
+
const nowPlaying = await client.insights.getNowPlaying({ user: 'ansango' });
|
|
139
|
+
const mood = await client.insights.getMood({ user: 'ansango', period: '1month' });
|
|
140
|
+
const personality = await client.insights.getPersonality({ user: 'ansango' });
|
|
141
|
+
const comparison = await client.insights.compareUsers({ userA: 'ansango', userB: 'friend' });
|
|
139
142
|
|
|
140
143
|
// Now-playing and tag/love mutations (all require an authenticated session)
|
|
141
144
|
await client.track.updateNowPlaying({
|
|
@@ -219,6 +222,7 @@ const tracks = await trackService.search({ track: 'Come Together' });
|
|
|
219
222
|
- `@ansango/lastfm-api/geo`
|
|
220
223
|
- `@ansango/lastfm-api/library`
|
|
221
224
|
- `@ansango/lastfm-api/auth`
|
|
225
|
+
- `@ansango/lastfm-api/insights`
|
|
222
226
|
|
|
223
227
|
## Zod Schema Validation
|
|
224
228
|
|
|
@@ -267,8 +271,56 @@ if (result.success) {
|
|
|
267
271
|
- `@ansango/lastfm-api/geo/schemas`
|
|
268
272
|
- `@ansango/lastfm-api/library/schemas`
|
|
269
273
|
- `@ansango/lastfm-api/auth/schemas`
|
|
274
|
+
- `@ansango/lastfm-api/insights/schemas`
|
|
270
275
|
- `@ansango/lastfm-api/schemas` (base types like `imageSchema`, `datePropSchema`, etc.)
|
|
271
276
|
|
|
277
|
+
## Insights & Analytics Engine
|
|
278
|
+
|
|
279
|
+
The package includes a built-in analytics engine providing 9 high-level derived views computed over Last.fm data:
|
|
280
|
+
|
|
281
|
+
```typescript
|
|
282
|
+
import { createClient } from '@ansango/lastfm-api';
|
|
283
|
+
|
|
284
|
+
const client = createClient();
|
|
285
|
+
|
|
286
|
+
// 1. Summary & Shannon Diversity
|
|
287
|
+
const summary = await client.insights.getSummary({ user: 'ansango', period: '7day' });
|
|
288
|
+
console.log(`Total Scrobbles: ${summary.totalScrobbles}, Normalized Diversity: ${summary.diversity?.normalized}`);
|
|
289
|
+
|
|
290
|
+
// 2. Enriched Now Playing with Artist Biography and Similar Artists
|
|
291
|
+
const nowPlaying = await client.insights.getNowPlaying({ user: 'ansango', similarLimit: 3 });
|
|
292
|
+
|
|
293
|
+
// 3. Diurnal & Weekday Histogram
|
|
294
|
+
const histogram = await client.insights.getHoursHistogram({ user: 'ansango', sinceDays: 30 });
|
|
295
|
+
console.log(`Peak Hour: ${histogram.peakHour}:00, Night Share: ${(histogram.nightShare * 100).toFixed(0)}%`);
|
|
296
|
+
|
|
297
|
+
// 4. Binge Listening Streak Detection
|
|
298
|
+
const binges = await client.insights.getBinges({ user: 'ansango', minLength: 3, maxGapSeconds: 1800 });
|
|
299
|
+
|
|
300
|
+
// 5. Ranking Trends Differentials (Risers, Fallers, Newcomers, Departures)
|
|
301
|
+
const trends = await client.insights.getTrends({
|
|
302
|
+
user: 'ansango',
|
|
303
|
+
target: 'artists',
|
|
304
|
+
currentPeriod: '7day',
|
|
305
|
+
previousPeriod: '1month'
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// 6. New Artist Discoveries
|
|
309
|
+
const discoveries = await client.insights.getDiscoveries({ user: 'ansango', windowDays: 7 });
|
|
310
|
+
|
|
311
|
+
// 7. 2D Mood Classification (Energy vs. Valence)
|
|
312
|
+
const mood = await client.insights.getMood({ user: 'ansango', period: '1month' });
|
|
313
|
+
console.log(`Mood: ${mood.label} (Energy: ${mood.axes.energy}, Valence: ${mood.axes.valence})`);
|
|
314
|
+
|
|
315
|
+
// 8. Listener Personality Archetype
|
|
316
|
+
const personality = await client.insights.getPersonality({ user: 'ansango' });
|
|
317
|
+
console.log(`Archetype: ${personality.archetype.emoji} ${personality.archetype.name} - ${personality.archetype.blurb}`);
|
|
318
|
+
|
|
319
|
+
// 9. User-to-User Taste Clash (Jaccard Similarity)
|
|
320
|
+
const comparison = await client.insights.compareUsers({ userA: 'ansango', userB: 'friend' });
|
|
321
|
+
console.log(`Taste Compatibility: ${comparison.compatibilityScore}% (Jaccard: ${comparison.jaccard})`);
|
|
322
|
+
```
|
|
323
|
+
|
|
272
324
|
## Environment Variables
|
|
273
325
|
|
|
274
326
|
In Node.js environments, the client automatically loads configuration from environment variables:
|
|
@@ -310,13 +362,13 @@ const client = new LastFmClient({
|
|
|
310
362
|
|
|
311
363
|
Methods that mutate user state require an authenticated session. The full list of write methods is:
|
|
312
364
|
|
|
313
|
-
- `auth.getSession`, `auth.getToken
|
|
365
|
+
- `auth.getSession`, `auth.getToken`
|
|
314
366
|
- `track.scrobble`, `track.updateNowPlaying`
|
|
315
367
|
- `track.addTags`, `track.removeTag`, `track.love`, `track.unlove`
|
|
316
368
|
- `album.addTags`, `album.removeTag`
|
|
317
369
|
- `artist.addTags`, `artist.removeTag`
|
|
318
370
|
|
|
319
|
-
|
|
371
|
+
The browser flow below works for every self-service API key — there is no mobile flow in this package anymore.
|
|
320
372
|
|
|
321
373
|
### Browser flow (recommended — works for all self-service keys)
|
|
322
374
|
|
|
@@ -357,17 +409,7 @@ Before the browser flow works end-to-end, set a callback URL on your API account
|
|
|
357
409
|
|
|
358
410
|
If you skip this step, the redirect after **Allow access** lands on a Last.fm error page instead of your URL, and the token is lost. You have to call `auth.getToken` again and re-authorize.
|
|
359
411
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
`auth.getMobileSession` exchanges a username + password for a session key in a single call, but it only works for API keys classified as **mobile / standalone** in the API account settings. Last.fm's self-service create form does not expose this classification; every new key is a web key by default. If you registered your key as a web app, this method will fail with `error: 4 — Authentication Failed`. To get a mobile-class key, you need to email `partners@last.fm` and ask for a reclassification.
|
|
363
|
-
|
|
364
|
-
```typescript
|
|
365
|
-
// Only works for mobile-class API keys.
|
|
366
|
-
const { session } = await client.auth.getMobileSession({
|
|
367
|
-
username: process.env.LASTFM_USERNAME!,
|
|
368
|
-
password: process.env.LASTFM_PASSWORD!,
|
|
369
|
-
});
|
|
370
|
-
```
|
|
412
|
+
> **Note:** `auth.getMobileSession` was removed in v4.0.0. Last.fm restricts that endpoint to mobile-classified API keys, which are not exposed through the public self-service create form; the browser flow above works for every API key Last.fm issues today.
|
|
371
413
|
|
|
372
414
|
### Passing the session key to write methods
|
|
373
415
|
|
|
@@ -440,6 +482,7 @@ class LastFmClient {
|
|
|
440
482
|
geo: GeoService;
|
|
441
483
|
library: LibraryService;
|
|
442
484
|
auth: AuthService;
|
|
485
|
+
insights: InsightsService;
|
|
443
486
|
|
|
444
487
|
constructor(config?: Partial<LastFmConfig>);
|
|
445
488
|
getConfig(): Readonly<LastFmConfig>;
|
|
@@ -465,7 +508,7 @@ function resetGlobalConfig(): void;
|
|
|
465
508
|
|
|
466
509
|
### Services
|
|
467
510
|
|
|
468
|
-
The package covers all
|
|
511
|
+
The package covers all 56 canonical Last.fm API methods across 9 namespaces, plus 9 derived analytical methods in the `InsightsService`. See [docs/api-coverage.md](docs/api-coverage.md) for the full table.
|
|
469
512
|
|
|
470
513
|
- **UserService**: 13 methods — `getInfo`, `getFriends`, `getLovedTracks`, `getRecentTracks`, `getTopAlbums`, `getTopArtists`, `getTopTags`, `getTopTracks`, `getWeeklyAlbumChart`, `getWeeklyArtistChart`, `getWeeklyChartList`, `getWeeklyTrackChart`, `getPersonalTags`
|
|
471
514
|
- **AlbumService**: 6 methods — `getInfo`, `getTags`, `getTopTags`, `search`, `addTags`¹, `removeTag`¹
|
|
@@ -475,7 +518,8 @@ The package covers all 57 canonical Last.fm API methods across 9 namespaces. See
|
|
|
475
518
|
- **ChartService**: 3 methods — `getTopArtists`, `getTopTags`, `getTopTracks`
|
|
476
519
|
- **GeoService**: 2 methods — `getTopArtists`, `getTopTracks`
|
|
477
520
|
- **LibraryService**: 1 method — `getArtists`
|
|
478
|
-
- **AuthService**:
|
|
521
|
+
- **AuthService**: 2 methods — `getSession`, `getToken` (removed `getMobileSession` in v4.0.0)
|
|
522
|
+
- **InsightsService**: 9 methods — `getSummary`, `getNowPlaying`, `getHoursHistogram`, `getBinges`, `getTrends`, `getDiscoveries`, `getMood`, `getPersonality`, `compareUsers`
|
|
479
523
|
|
|
480
524
|
¹ Requires an authenticated session.
|
|
481
525
|
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LastFmConfig } from './config.js';
|
|
2
|
-
import { type AlbumService, type ArtistService, type AuthService, type ChartService, type GeoService, type LibraryService, type TagService, type TrackService, type UserService } from './services/index.js';
|
|
2
|
+
import { type AlbumService, type ArtistService, type AuthService, type ChartService, type GeoService, type InsightsService, type LibraryService, type TagService, type TrackService, type UserService } from './services/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Last.fm API Client
|
|
5
5
|
*
|
|
@@ -29,6 +29,7 @@ export declare class LastFmClient {
|
|
|
29
29
|
readonly geo: GeoService;
|
|
30
30
|
readonly library: LibraryService;
|
|
31
31
|
readonly auth: AuthService;
|
|
32
|
+
readonly insights: InsightsService;
|
|
32
33
|
private readonly config;
|
|
33
34
|
constructor(config?: Partial<LastFmConfig>);
|
|
34
35
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAWjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAA;IACjC,SAAgB,KAAK,EAAE,YAAY,CAAA;IACnC,SAAgB,MAAM,EAAE,aAAa,CAAA;IACrC,SAAgB,KAAK,EAAE,YAAY,CAAA;IACnC,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,KAAK,EAAE,YAAY,CAAA;IACnC,SAAgB,GAAG,EAAE,UAAU,CAAA;IAC/B,SAAgB,OAAO,EAAE,cAAc,CAAA;IACvC,SAAgB,IAAI,EAAE,WAAW,CAAA;IACjC,SAAgB,QAAQ,EAAE,eAAe,CAAA;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAgB1C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAEzE"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createConfig, getGlobalConfig } from './config.js';
|
|
2
|
-
import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
2
|
+
import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createInsightsService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Last.fm API Client
|
|
5
5
|
*
|
|
@@ -29,6 +29,7 @@ export class LastFmClient {
|
|
|
29
29
|
geo;
|
|
30
30
|
library;
|
|
31
31
|
auth;
|
|
32
|
+
insights;
|
|
32
33
|
config;
|
|
33
34
|
constructor(config) {
|
|
34
35
|
this.config = config ? createConfig(config) : getGlobalConfig();
|
|
@@ -42,6 +43,7 @@ export class LastFmClient {
|
|
|
42
43
|
this.geo = createGeoService(this.config);
|
|
43
44
|
this.library = createLibraryService(this.config);
|
|
44
45
|
this.auth = createAuthService(this.config);
|
|
46
|
+
this.insights = createInsightsService(this.config);
|
|
45
47
|
}
|
|
46
48
|
/**
|
|
47
49
|
* Get the current configuration (read-only)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAKN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAKN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAOjB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,YAAY;IACR,IAAI,CAAa;IACjB,KAAK,CAAc;IACnB,MAAM,CAAe;IACrB,KAAK,CAAc;IACnB,GAAG,CAAY;IACf,KAAK,CAAc;IACnB,GAAG,CAAY;IACf,OAAO,CAAgB;IACvB,IAAI,CAAa;IACjB,QAAQ,CAAiB;IAExB,MAAM,CAAc;IAErC,YAAY,MAA8B;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;QAE/D,0BAA0B;QAC1B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,SAAS;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;CACD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,MAA8B;IAC1D,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/entrypoints/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACrF,mBAAmB,iCAAiC,CAAA;AACpD,cAAc,iCAAiC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/entrypoints/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,yBAAyB,CAAA;AAErF,cAAc,iCAAiC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights.schemas.d.ts","sourceRoot":"","sources":["../../src/entrypoints/insights.schemas.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights.schemas.js","sourceRoot":"","sources":["../../src/entrypoints/insights.schemas.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,cAAc,iCAAiC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,10 @@ export type * from './services/chart.schemas.js';
|
|
|
10
10
|
export * from './services/chart.schemas.js';
|
|
11
11
|
export type * from './services/geo.schemas.js';
|
|
12
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';
|
|
13
|
+
export type { AlbumService, ArtistService, AuthService, ChartService, GeoService, InsightsService, LibraryService, TagService, TrackService, UserService, } from './services/index.js';
|
|
14
|
+
export { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createInsightsService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
15
|
+
export type * from './services/insights.schemas.js';
|
|
16
|
+
export * from './services/insights.schemas.js';
|
|
15
17
|
export type * from './services/library.schemas.js';
|
|
16
18
|
export * from './services/library.schemas.js';
|
|
17
19
|
export type * from './services/schemas/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,GACX,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,mBAAmB,gCAAgC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,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
|
@@ -8,7 +8,8 @@ export * from './services/auth.schemas.js';
|
|
|
8
8
|
export * from './services/chart.schemas.js';
|
|
9
9
|
export * from './services/geo.schemas.js';
|
|
10
10
|
// Servicios (para uso avanzado)
|
|
11
|
-
export { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
11
|
+
export { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createInsightsService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
|
|
12
|
+
export * from './services/insights.schemas.js';
|
|
12
13
|
export * from './services/library.schemas.js';
|
|
13
14
|
export * from './services/schemas/index.js';
|
|
14
15
|
export * from './services/tag.schemas.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAczC,gCAAgC;AAChC,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,qBAAqB,CAAA;AAE5B,cAAc,gCAAgC,CAAA;AAE9C,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
|
@@ -47,8 +47,7 @@ export interface AlbumService {
|
|
|
47
47
|
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
48
48
|
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
49
49
|
* the client (preferred for long-lived clients). Obtain a session key
|
|
50
|
-
* via `auth.getToken` + the browser-based `auth.getSession` flow
|
|
51
|
-
* via `auth.getMobileSession` (mobile-class API keys only).
|
|
50
|
+
* via `auth.getToken` + the browser-based `auth.getSession` flow.
|
|
52
51
|
*
|
|
53
52
|
* @param {AlbumAddTagsRequest} params
|
|
54
53
|
* @param {RequestInit} init
|
|
@@ -66,8 +65,7 @@ export interface AlbumService {
|
|
|
66
65
|
*
|
|
67
66
|
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
68
67
|
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
69
|
-
* the client. Obtain a session key via `auth.getToken` +
|
|
70
|
-
* `auth.getSession`, or `auth.getMobileSession` (mobile-class only).
|
|
68
|
+
* the client. Obtain a session key via `auth.getToken` + `auth.getSession`.
|
|
71
69
|
*
|
|
72
70
|
* @param {AlbumRemoveTagRequest} params
|
|
73
71
|
* @param {RequestInit} init
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
|
@@ -80,8 +80,7 @@ export interface ArtistService {
|
|
|
80
80
|
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
81
81
|
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
82
82
|
* the client (preferred for long-lived clients). Obtain a session key
|
|
83
|
-
* via `auth.getToken` + the browser-based `auth.getSession` flow
|
|
84
|
-
* via `auth.getMobileSession` (mobile-class API keys only).
|
|
83
|
+
* via `auth.getToken` + the browser-based `auth.getSession` flow.
|
|
85
84
|
*
|
|
86
85
|
* @param {ArtistAddTagsRequest} params
|
|
87
86
|
* @param {RequestInit} init
|
|
@@ -97,8 +96,7 @@ export interface ArtistService {
|
|
|
97
96
|
*
|
|
98
97
|
* **Authentication:** pass `sk` in `params.sk` (preferred for ad-hoc
|
|
99
98
|
* calls) or set `sessionKey` on the `LastFmConfig` when constructing
|
|
100
|
-
* the client. Obtain a session key via `auth.getToken` +
|
|
101
|
-
* `auth.getSession`, or `auth.getMobileSession` (mobile-class only).
|
|
99
|
+
* the client. Obtain a session key via `auth.getToken` + `auth.getSession`.
|
|
102
100
|
*
|
|
103
101
|
* @param {ArtistRemoveTagRequest} params
|
|
104
102
|
* @param {RequestInit} init
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artist.js","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"artist.js","sourceRoot":"","sources":["../../src/services/artist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAgI3E,SAAS,qCAAqC,CAC7C,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,gDAAgD,MAAM,gFAAgF,EACtI,CAAC,CACD,CAAA;IACF,CAAC;IACD,OAAO,EAAE,CAAA;AACV,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACvD,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAE,IAAkB,EAAE,EAAE;QACxE,MAAM,EAAE,GAAG,qCAAqC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QAC9E,OAAO,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE;YAC3C,MAAM,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,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,MAA8B,EAAE,IAAkB,EAAE,EAAE;QAC5E,MAAM,EAAE,GAAG,qCAAqC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAChF,OAAO,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE;YAC7C,MAAM,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,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,CAAwB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAC3G,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAwB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAC3G,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC5B,OAAO,CAA2B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACvF,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC5B,OAAO,CAA2B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACvF,YAAY,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9B,OAAO,CAA6B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAC3F,YAAY,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9B,OAAO,CAA6B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAuB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACxG,aAAa,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC/B,OAAO,CAA8B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QAC7F,OAAO,EAAE,WAAW;QACpB,SAAS,EAAE,aAAa;KACxB,CAAA;AACF,CAAC"}
|
package/dist/services/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LastFmConfig } from '../config.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AuthGetSessionRequest, AuthGetSessionResponse, AuthGetTokenResponse } from './auth.schemas.js';
|
|
3
3
|
export interface AuthService {
|
|
4
4
|
/**
|
|
5
5
|
* Get the session key for a user. Used for authenticating a user when scrobbling.
|
|
@@ -43,43 +43,6 @@ export interface AuthService {
|
|
|
43
43
|
* https://www.last.fm/api/show/auth.getToken
|
|
44
44
|
*/
|
|
45
45
|
getToken: (init?: RequestInit) => Promise<AuthGetTokenResponse>;
|
|
46
|
-
/**
|
|
47
|
-
* Get a mobile session for a user, exchanging a username/email and
|
|
48
|
-
* password for a session key. Returns the session to the caller; the
|
|
49
|
-
* client does not persist it.
|
|
50
|
-
*
|
|
51
|
-
* **Server-side / trusted environments only.** This method handles a
|
|
52
|
-
* password and the application's shared secret; it must never be used
|
|
53
|
-
* from a browser or any environment where the bundle is exposed.
|
|
54
|
-
*
|
|
55
|
-
* **Mobile-class API keys only.** Last.fm rejects this call with 403
|
|
56
|
-
* (`error: 4 — Authentication Failed`) for self-service web/desktop
|
|
57
|
-
* API keys. Self-service users should use the browser flow
|
|
58
|
-
* (`auth.getToken` + `auth.getSession`) instead. The Last.fm create
|
|
59
|
-
* form has no app-type selector; to obtain a mobile-class key you
|
|
60
|
-
* need to email `partners@last.fm` and ask for a reclassification.
|
|
61
|
-
*
|
|
62
|
-
* Requires HTTPS — a custom `baseUrl` over plain HTTP is rejected
|
|
63
|
-
* before any network call.
|
|
64
|
-
*
|
|
65
|
-
* Intentionally does not support the deprecated `authToken` /
|
|
66
|
-
* `md5(username + md5(password))` credential flow.
|
|
67
|
-
*
|
|
68
|
-
* @deprecated Last.fm restricts this method to **mobile-class API
|
|
69
|
-
* keys**, which are not exposed through the public self-service create
|
|
70
|
-
* form. Every self-service key defaults to "web", so this call returns
|
|
71
|
-
* `error: 4 — Authentication Failed` for almost all users. Use the
|
|
72
|
-
* browser flow (`auth.getToken` + `auth.getSession`) instead, which
|
|
73
|
-
* works for every self-service API key. See
|
|
74
|
-
* <https://www.last.fm/api/webauth> for the full flow. This method
|
|
75
|
-
* is still callable and will be removed in a future major release.
|
|
76
|
-
*
|
|
77
|
-
* @param {AuthGetMobileSessionRequest} params
|
|
78
|
-
* @param {RequestInit} init
|
|
79
|
-
* @returns {Promise<AuthGetMobileSessionResponse>}
|
|
80
|
-
* https://www.last.fm/api/show/auth.getMobileSession
|
|
81
|
-
*/
|
|
82
|
-
getMobileSession: (params: AuthGetMobileSessionRequest, init?: RequestInit) => Promise<AuthGetMobileSessionResponse>;
|
|
83
46
|
}
|
|
84
47
|
export declare function createAuthService(config: LastFmConfig): AuthService;
|
|
85
48
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE5G,MAAM,WAAW,WAAW;IAC3B;;;;;;;;;;;;;;;SAeK;IACL,UAAU,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAClG;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAC/D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAsBnE"}
|
package/dist/services/auth.js
CHANGED
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import { buildAuthUrl, fetcher
|
|
1
|
+
import { buildAuthUrl, fetcher } from '../utils.js';
|
|
2
2
|
export function createAuthService(config) {
|
|
3
|
-
const getMobileSessionImpl = (params, init) => {
|
|
4
|
-
// Enforce HTTPS before any network call. The default baseUrl is
|
|
5
|
-
// already https://, so this only fires when a caller has set a
|
|
6
|
-
// custom baseUrl over plain http://. If baseUrl is undefined we
|
|
7
|
-
// trust the default (which is HTTPS) and let signedPost use it.
|
|
8
|
-
if (config.baseUrl !== undefined && !config.baseUrl.toLowerCase().startsWith('https://')) {
|
|
9
|
-
throw new LastFmApiError('`auth.getMobileSession` requires HTTPS. Use the default baseUrl or set `baseUrl` to an https:// URL.', 0);
|
|
10
|
-
}
|
|
11
|
-
return signedPost(config, 'auth.getMobileSession', {
|
|
12
|
-
params: {
|
|
13
|
-
username: params.username,
|
|
14
|
-
password: params.password,
|
|
15
|
-
},
|
|
16
|
-
requiresSession: false,
|
|
17
|
-
init,
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
3
|
return {
|
|
21
4
|
getSession: (params, init) => fetcher(buildAuthUrl(config, 'auth.getSession', params), init),
|
|
22
5
|
getToken: async (init) => {
|
|
@@ -36,7 +19,6 @@ export function createAuthService(config) {
|
|
|
36
19
|
authUrl: authUrl.toString(),
|
|
37
20
|
};
|
|
38
21
|
},
|
|
39
|
-
getMobileSession: getMobileSessionImpl,
|
|
40
22
|
};
|
|
41
23
|
}
|
|
42
24
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAgDnD,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACrD,OAAO;QACN,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC5B,OAAO,CAAyB,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;QACvF,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAuB,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAA;YACjG,+DAA+D;YAC/D,gFAAgF;YAChF,oEAAoE;YACpE,oEAAoE;YACpE,kEAAkE;YAClE,+DAA+D;YAC/D,sEAAsE;YACtE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,+BAA+B,CAAC,CAAA;YACxD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;YACjD,OAAO;gBACN,GAAG,QAAQ;gBACX,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC3B,CAAA;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
|
|
@@ -2,10 +2,6 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const authGetSessionRequestSchema: z.ZodObject<{
|
|
3
3
|
token: z.ZodString;
|
|
4
4
|
}, z.core.$strip>;
|
|
5
|
-
export declare const authGetMobileSessionRequestSchema: z.ZodObject<{
|
|
6
|
-
username: z.ZodString;
|
|
7
|
-
password: z.ZodString;
|
|
8
|
-
}, z.core.$strip>;
|
|
9
5
|
export declare const sessionSchema: z.ZodObject<{
|
|
10
6
|
name: z.ZodString;
|
|
11
7
|
key: z.ZodString;
|
|
@@ -25,18 +21,9 @@ export declare const authGetTokenResponseSchema: z.ZodObject<{
|
|
|
25
21
|
token: z.ZodString;
|
|
26
22
|
authUrl: z.ZodOptional<z.ZodString>;
|
|
27
23
|
}, z.core.$strip>;
|
|
28
|
-
export declare const authGetMobileSessionResponseSchema: z.ZodObject<{
|
|
29
|
-
session: z.ZodObject<{
|
|
30
|
-
name: z.ZodString;
|
|
31
|
-
key: z.ZodString;
|
|
32
|
-
subscriber: z.ZodNumber;
|
|
33
|
-
}, z.core.$strip>;
|
|
34
|
-
}, z.core.$strip>;
|
|
35
24
|
export type AuthGetSessionRequest = z.infer<typeof authGetSessionRequestSchema>;
|
|
36
|
-
export type AuthGetMobileSessionRequest = z.infer<typeof authGetMobileSessionRequestSchema>;
|
|
37
25
|
export type Session = z.infer<typeof sessionSchema>;
|
|
38
26
|
export type Token = z.infer<typeof tokenSchema>;
|
|
39
27
|
export type AuthGetSessionResponse = z.infer<typeof authGetSessionResponseSchema>;
|
|
40
28
|
export type AuthGetTokenResponse = z.infer<typeof authGetTokenResponseSchema>;
|
|
41
|
-
export type AuthGetMobileSessionResponse = z.infer<typeof authGetMobileSessionResponseSchema>;
|
|
42
29
|
//# sourceMappingURL=auth.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.schemas.d.ts","sourceRoot":"","sources":["../../src/services/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,2BAA2B;;iBAEtC,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.schemas.d.ts","sourceRoot":"","sources":["../../src/services/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,2BAA2B;;iBAEtC,CAAA;AAGF,eAAO,MAAM,aAAa;;;;iBAIxB,CAAA;AAEF,eAAO,MAAM,WAAW;;iBAEtB,CAAA;AAGF,eAAO,MAAM,4BAA4B;;;;;;iBAEvC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;iBASrC,CAAA;AAGF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAC/C,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AACjF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
|
|
@@ -3,10 +3,6 @@ import { z } from 'zod';
|
|
|
3
3
|
export const authGetSessionRequestSchema = z.object({
|
|
4
4
|
token: z.string(),
|
|
5
5
|
});
|
|
6
|
-
export const authGetMobileSessionRequestSchema = z.object({
|
|
7
|
-
username: z.string(),
|
|
8
|
-
password: z.string(),
|
|
9
|
-
});
|
|
10
6
|
// Entity schemas
|
|
11
7
|
export const sessionSchema = z.object({
|
|
12
8
|
name: z.string(),
|
|
@@ -28,7 +24,4 @@ export const authGetTokenResponseSchema = z.object({
|
|
|
28
24
|
.optional()
|
|
29
25
|
.describe('Pre-built Last.fm auth URL to open in a browser. Equivalent to `https://www.last.fm/api/auth/?api_key=<KEY>&token=<token>`. Open it, log in if prompted, click "Allow access", then pass the same token to `auth.getSession`.'),
|
|
30
26
|
});
|
|
31
|
-
export const authGetMobileSessionResponseSchema = z.object({
|
|
32
|
-
session: sessionSchema,
|
|
33
|
-
});
|
|
34
27
|
//# sourceMappingURL=auth.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.schemas.js","sourceRoot":"","sources":["../../src/services/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,kBAAkB;AAClB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA;AAEF,
|
|
1
|
+
{"version":3,"file":"auth.schemas.js","sourceRoot":"","sources":["../../src/services/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,kBAAkB;AAClB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA;AAEF,iBAAiB;AACjB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA;AAEF,mBAAmB;AACnB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,aAAa;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACR,+NAA+N,CAC/N;CACF,CAAC,CAAA"}
|