@ansango/lastfm-api 3.4.0 → 3.5.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.
Files changed (546) hide show
  1. package/README.md +128 -1
  2. package/dist/client.d.ts +8 -1
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +11 -1
  5. package/dist/client.js.map +1 -1
  6. package/dist/core/canonical-methods.d.ts +25 -0
  7. package/dist/core/canonical-methods.d.ts.map +1 -0
  8. package/dist/core/canonical-methods.js +88 -0
  9. package/dist/core/canonical-methods.js.map +1 -0
  10. package/dist/core/client.d.ts +33 -0
  11. package/dist/core/client.d.ts.map +1 -0
  12. package/dist/core/client.js +48 -0
  13. package/dist/core/client.js.map +1 -0
  14. package/dist/core/index.d.ts +6 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/index.js +6 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/core/pagination.d.ts +59 -0
  19. package/dist/core/pagination.d.ts.map +1 -0
  20. package/dist/core/pagination.js +93 -0
  21. package/dist/core/pagination.js.map +1 -0
  22. package/dist/core/schemas/album.schemas.d.ts.map +1 -0
  23. package/dist/{services → core/schemas}/album.schemas.js +1 -1
  24. package/dist/core/schemas/album.schemas.js.map +1 -0
  25. package/dist/core/schemas/artist.schemas.d.ts.map +1 -0
  26. package/dist/{services → core/schemas}/artist.schemas.js +1 -1
  27. package/dist/core/schemas/artist.schemas.js.map +1 -0
  28. package/dist/core/schemas/auth.schemas.d.ts.map +1 -0
  29. package/dist/core/schemas/auth.schemas.js.map +1 -0
  30. package/dist/core/schemas/base/base.entities.schemas.d.ts.map +1 -0
  31. package/dist/core/schemas/base/base.entities.schemas.js.map +1 -0
  32. package/dist/core/schemas/base/base.entity-names.schemas.d.ts.map +1 -0
  33. package/dist/core/schemas/base/base.entity-names.schemas.js.map +1 -0
  34. package/dist/core/schemas/base/base.metadata.schemas.d.ts.map +1 -0
  35. package/dist/core/schemas/base/base.metadata.schemas.js.map +1 -0
  36. package/dist/core/schemas/base/base.pagination.schemas.d.ts.map +1 -0
  37. package/dist/core/schemas/base/base.pagination.schemas.js.map +1 -0
  38. package/dist/core/schemas/base/base.primitives.schemas.d.ts.map +1 -0
  39. package/dist/core/schemas/base/base.primitives.schemas.js.map +1 -0
  40. package/dist/core/schemas/base/index.d.ts.map +1 -0
  41. package/dist/core/schemas/base/index.js.map +1 -0
  42. package/dist/core/schemas/chart.schemas.d.ts.map +1 -0
  43. package/dist/{services → core/schemas}/chart.schemas.js +1 -1
  44. package/dist/core/schemas/chart.schemas.js.map +1 -0
  45. package/dist/core/schemas/geo.schemas.d.ts.map +1 -0
  46. package/dist/{services → core/schemas}/geo.schemas.js +1 -1
  47. package/dist/core/schemas/geo.schemas.js.map +1 -0
  48. package/dist/core/schemas/index.d.ts +11 -0
  49. package/dist/core/schemas/index.d.ts.map +1 -0
  50. package/dist/core/schemas/index.js +11 -0
  51. package/dist/core/schemas/index.js.map +1 -0
  52. package/dist/core/schemas/library.schemas.d.ts.map +1 -0
  53. package/dist/{services → core/schemas}/library.schemas.js +1 -1
  54. package/dist/core/schemas/library.schemas.js.map +1 -0
  55. package/dist/core/schemas/tag.schemas.d.ts.map +1 -0
  56. package/dist/{services → core/schemas}/tag.schemas.js +1 -1
  57. package/dist/core/schemas/tag.schemas.js.map +1 -0
  58. package/dist/core/schemas/track.schemas.d.ts.map +1 -0
  59. package/dist/{services → core/schemas}/track.schemas.js +1 -1
  60. package/dist/core/schemas/track.schemas.js.map +1 -0
  61. package/dist/core/schemas/user.schemas.d.ts.map +1 -0
  62. package/dist/{services → core/schemas}/user.schemas.js +1 -1
  63. package/dist/core/schemas/user.schemas.js.map +1 -0
  64. package/dist/{services → core/services}/album.d.ts +2 -2
  65. package/dist/core/services/album.d.ts.map +1 -0
  66. package/dist/{services → core/services}/album.js +1 -1
  67. package/dist/core/services/album.js.map +1 -0
  68. package/dist/{services → core/services}/artist.d.ts +2 -2
  69. package/dist/core/services/artist.d.ts.map +1 -0
  70. package/dist/{services → core/services}/artist.js +1 -1
  71. package/dist/core/services/artist.js.map +1 -0
  72. package/dist/{services → core/services}/auth.d.ts +2 -2
  73. package/dist/core/services/auth.d.ts.map +1 -0
  74. package/dist/{services → core/services}/auth.js +1 -1
  75. package/dist/core/services/auth.js.map +1 -0
  76. package/dist/{services → core/services}/chart.d.ts +2 -2
  77. package/dist/core/services/chart.d.ts.map +1 -0
  78. package/dist/{services → core/services}/chart.js +1 -1
  79. package/dist/core/services/chart.js.map +1 -0
  80. package/dist/{services → core/services}/geo.d.ts +2 -2
  81. package/dist/core/services/geo.d.ts.map +1 -0
  82. package/dist/{services → core/services}/geo.js +1 -1
  83. package/dist/core/services/geo.js.map +1 -0
  84. package/dist/core/services/index.d.ts +10 -0
  85. package/dist/core/services/index.d.ts.map +1 -0
  86. package/dist/core/services/index.js +10 -0
  87. package/dist/core/services/index.js.map +1 -0
  88. package/dist/{services → core/services}/library.d.ts +2 -2
  89. package/dist/core/services/library.d.ts.map +1 -0
  90. package/dist/{services → core/services}/library.js +1 -1
  91. package/dist/core/services/library.js.map +1 -0
  92. package/dist/{services → core/services}/tag.d.ts +2 -2
  93. package/dist/core/services/tag.d.ts.map +1 -0
  94. package/dist/{services → core/services}/tag.js +1 -1
  95. package/dist/core/services/tag.js.map +1 -0
  96. package/dist/{services → core/services}/track.d.ts +2 -2
  97. package/dist/core/services/track.d.ts.map +1 -0
  98. package/dist/{services → core/services}/track.js +1 -1
  99. package/dist/core/services/track.js.map +1 -0
  100. package/dist/{services → core/services}/track.utils.d.ts +2 -2
  101. package/dist/core/services/track.utils.d.ts.map +1 -0
  102. package/dist/core/services/track.utils.js.map +1 -0
  103. package/dist/{services → core/services}/user.d.ts +2 -2
  104. package/dist/core/services/user.d.ts.map +1 -0
  105. package/dist/{services → core/services}/user.js +1 -1
  106. package/dist/core/services/user.js.map +1 -0
  107. package/dist/entrypoints/album.d.ts +3 -3
  108. package/dist/entrypoints/album.d.ts.map +1 -1
  109. package/dist/entrypoints/album.js +2 -2
  110. package/dist/entrypoints/album.js.map +1 -1
  111. package/dist/entrypoints/album.schemas.d.ts +2 -1
  112. package/dist/entrypoints/album.schemas.d.ts.map +1 -1
  113. package/dist/entrypoints/album.schemas.js +1 -2
  114. package/dist/entrypoints/album.schemas.js.map +1 -1
  115. package/dist/entrypoints/artist.d.ts +3 -3
  116. package/dist/entrypoints/artist.d.ts.map +1 -1
  117. package/dist/entrypoints/artist.js +2 -2
  118. package/dist/entrypoints/artist.js.map +1 -1
  119. package/dist/entrypoints/artist.schemas.d.ts +2 -1
  120. package/dist/entrypoints/artist.schemas.d.ts.map +1 -1
  121. package/dist/entrypoints/artist.schemas.js +1 -2
  122. package/dist/entrypoints/artist.schemas.js.map +1 -1
  123. package/dist/entrypoints/auth.d.ts +3 -3
  124. package/dist/entrypoints/auth.d.ts.map +1 -1
  125. package/dist/entrypoints/auth.js +2 -2
  126. package/dist/entrypoints/auth.js.map +1 -1
  127. package/dist/entrypoints/auth.schemas.d.ts +2 -1
  128. package/dist/entrypoints/auth.schemas.d.ts.map +1 -1
  129. package/dist/entrypoints/auth.schemas.js +1 -2
  130. package/dist/entrypoints/auth.schemas.js.map +1 -1
  131. package/dist/entrypoints/base.schemas.d.ts +2 -1
  132. package/dist/entrypoints/base.schemas.d.ts.map +1 -1
  133. package/dist/entrypoints/base.schemas.js +1 -2
  134. package/dist/entrypoints/base.schemas.js.map +1 -1
  135. package/dist/entrypoints/chart.d.ts +3 -3
  136. package/dist/entrypoints/chart.d.ts.map +1 -1
  137. package/dist/entrypoints/chart.js +2 -2
  138. package/dist/entrypoints/chart.js.map +1 -1
  139. package/dist/entrypoints/chart.schemas.d.ts +2 -1
  140. package/dist/entrypoints/chart.schemas.d.ts.map +1 -1
  141. package/dist/entrypoints/chart.schemas.js +1 -2
  142. package/dist/entrypoints/chart.schemas.js.map +1 -1
  143. package/dist/entrypoints/core.d.ts +5 -0
  144. package/dist/entrypoints/core.d.ts.map +1 -0
  145. package/dist/entrypoints/core.js +5 -0
  146. package/dist/entrypoints/core.js.map +1 -0
  147. package/dist/entrypoints/core.schemas.d.ts +3 -0
  148. package/dist/entrypoints/core.schemas.d.ts.map +1 -0
  149. package/dist/entrypoints/core.schemas.js +2 -0
  150. package/dist/entrypoints/core.schemas.js.map +1 -0
  151. package/dist/entrypoints/exporter.d.ts +3 -0
  152. package/dist/entrypoints/exporter.d.ts.map +1 -0
  153. package/dist/entrypoints/exporter.js +3 -0
  154. package/dist/entrypoints/exporter.js.map +1 -0
  155. package/dist/entrypoints/exporter.schemas.d.ts +3 -0
  156. package/dist/entrypoints/exporter.schemas.d.ts.map +1 -0
  157. package/dist/entrypoints/exporter.schemas.js +2 -0
  158. package/dist/entrypoints/exporter.schemas.js.map +1 -0
  159. package/dist/entrypoints/geo.d.ts +3 -3
  160. package/dist/entrypoints/geo.d.ts.map +1 -1
  161. package/dist/entrypoints/geo.js +2 -2
  162. package/dist/entrypoints/geo.js.map +1 -1
  163. package/dist/entrypoints/geo.schemas.d.ts +2 -1
  164. package/dist/entrypoints/geo.schemas.d.ts.map +1 -1
  165. package/dist/entrypoints/geo.schemas.js +1 -2
  166. package/dist/entrypoints/geo.schemas.js.map +1 -1
  167. package/dist/entrypoints/insights.d.ts +3 -3
  168. package/dist/entrypoints/insights.d.ts.map +1 -1
  169. package/dist/entrypoints/insights.js +2 -2
  170. package/dist/entrypoints/insights.js.map +1 -1
  171. package/dist/entrypoints/insights.schemas.d.ts +2 -1
  172. package/dist/entrypoints/insights.schemas.d.ts.map +1 -1
  173. package/dist/entrypoints/insights.schemas.js +1 -2
  174. package/dist/entrypoints/insights.schemas.js.map +1 -1
  175. package/dist/entrypoints/library.d.ts +3 -3
  176. package/dist/entrypoints/library.d.ts.map +1 -1
  177. package/dist/entrypoints/library.js +2 -2
  178. package/dist/entrypoints/library.js.map +1 -1
  179. package/dist/entrypoints/library.schemas.d.ts +2 -1
  180. package/dist/entrypoints/library.schemas.d.ts.map +1 -1
  181. package/dist/entrypoints/library.schemas.js +1 -2
  182. package/dist/entrypoints/library.schemas.js.map +1 -1
  183. package/dist/entrypoints/playlists.d.ts +3 -0
  184. package/dist/entrypoints/playlists.d.ts.map +1 -0
  185. package/dist/entrypoints/playlists.js +3 -0
  186. package/dist/entrypoints/playlists.js.map +1 -0
  187. package/dist/entrypoints/playlists.schemas.d.ts +3 -0
  188. package/dist/entrypoints/playlists.schemas.d.ts.map +1 -0
  189. package/dist/entrypoints/playlists.schemas.js +2 -0
  190. package/dist/entrypoints/playlists.schemas.js.map +1 -0
  191. package/dist/entrypoints/reports.d.ts +4 -0
  192. package/dist/entrypoints/reports.d.ts.map +1 -0
  193. package/dist/entrypoints/reports.js +3 -0
  194. package/dist/entrypoints/reports.js.map +1 -0
  195. package/dist/entrypoints/reports.schemas.d.ts +3 -0
  196. package/dist/entrypoints/reports.schemas.d.ts.map +1 -0
  197. package/dist/entrypoints/reports.schemas.js +2 -0
  198. package/dist/entrypoints/reports.schemas.js.map +1 -0
  199. package/dist/entrypoints/tag.d.ts +3 -3
  200. package/dist/entrypoints/tag.d.ts.map +1 -1
  201. package/dist/entrypoints/tag.js +2 -2
  202. package/dist/entrypoints/tag.js.map +1 -1
  203. package/dist/entrypoints/tag.schemas.d.ts +2 -1
  204. package/dist/entrypoints/tag.schemas.d.ts.map +1 -1
  205. package/dist/entrypoints/tag.schemas.js +1 -2
  206. package/dist/entrypoints/tag.schemas.js.map +1 -1
  207. package/dist/entrypoints/track.d.ts +3 -3
  208. package/dist/entrypoints/track.d.ts.map +1 -1
  209. package/dist/entrypoints/track.js +2 -2
  210. package/dist/entrypoints/track.js.map +1 -1
  211. package/dist/entrypoints/track.schemas.d.ts +2 -1
  212. package/dist/entrypoints/track.schemas.d.ts.map +1 -1
  213. package/dist/entrypoints/track.schemas.js +1 -2
  214. package/dist/entrypoints/track.schemas.js.map +1 -1
  215. package/dist/entrypoints/user.d.ts +3 -3
  216. package/dist/entrypoints/user.d.ts.map +1 -1
  217. package/dist/entrypoints/user.js +2 -2
  218. package/dist/entrypoints/user.js.map +1 -1
  219. package/dist/entrypoints/user.schemas.d.ts +2 -1
  220. package/dist/entrypoints/user.schemas.d.ts.map +1 -1
  221. package/dist/entrypoints/user.schemas.js +1 -2
  222. package/dist/entrypoints/user.schemas.js.map +1 -1
  223. package/dist/exporter/engines/library.d.ts +4 -0
  224. package/dist/exporter/engines/library.d.ts.map +1 -0
  225. package/dist/exporter/engines/library.js +34 -0
  226. package/dist/exporter/engines/library.js.map +1 -0
  227. package/dist/exporter/engines/loved.d.ts +4 -0
  228. package/dist/exporter/engines/loved.d.ts.map +1 -0
  229. package/dist/exporter/engines/loved.js +35 -0
  230. package/dist/exporter/engines/loved.js.map +1 -0
  231. package/dist/exporter/engines/scrobbles.d.ts +4 -0
  232. package/dist/exporter/engines/scrobbles.d.ts.map +1 -0
  233. package/dist/exporter/engines/scrobbles.js +74 -0
  234. package/dist/exporter/engines/scrobbles.js.map +1 -0
  235. package/dist/exporter/formats/csv.d.ts +5 -0
  236. package/dist/exporter/formats/csv.d.ts.map +1 -0
  237. package/dist/exporter/formats/csv.js +35 -0
  238. package/dist/exporter/formats/csv.js.map +1 -0
  239. package/dist/exporter/formats/jsonl.d.ts +2 -0
  240. package/dist/exporter/formats/jsonl.d.ts.map +1 -0
  241. package/dist/exporter/formats/jsonl.js +4 -0
  242. package/dist/exporter/formats/jsonl.js.map +1 -0
  243. package/dist/exporter/formats/listenbrainz.d.ts +3 -0
  244. package/dist/exporter/formats/listenbrainz.d.ts.map +1 -0
  245. package/dist/exporter/formats/listenbrainz.js +19 -0
  246. package/dist/exporter/formats/listenbrainz.js.map +1 -0
  247. package/dist/exporter/index.d.ts +6 -0
  248. package/dist/exporter/index.d.ts.map +1 -0
  249. package/dist/exporter/index.js +6 -0
  250. package/dist/exporter/index.js.map +1 -0
  251. package/dist/exporter/schemas.d.ts +291 -0
  252. package/dist/exporter/schemas.d.ts.map +1 -0
  253. package/dist/exporter/schemas.js +81 -0
  254. package/dist/exporter/schemas.js.map +1 -0
  255. package/dist/exporter/service.d.ts +30 -0
  256. package/dist/exporter/service.d.ts.map +1 -0
  257. package/dist/exporter/service.js +11 -0
  258. package/dist/exporter/service.js.map +1 -0
  259. package/dist/index.d.ts +14 -24
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +17 -16
  262. package/dist/index.js.map +1 -1
  263. package/dist/insights/algorithms/album-habits.d.ts +7 -0
  264. package/dist/insights/algorithms/album-habits.d.ts.map +1 -0
  265. package/dist/insights/algorithms/album-habits.js +154 -0
  266. package/dist/insights/algorithms/album-habits.js.map +1 -0
  267. package/dist/{services/insights → insights/algorithms}/binges.d.ts +1 -1
  268. package/dist/insights/algorithms/binges.d.ts.map +1 -0
  269. package/dist/{services/insights → insights/algorithms}/binges.js +2 -2
  270. package/dist/insights/algorithms/binges.js.map +1 -0
  271. package/dist/{services/insights → insights/algorithms}/compare.d.ts +1 -1
  272. package/dist/insights/algorithms/compare.d.ts.map +1 -0
  273. package/dist/{services/insights → insights/algorithms}/compare.js +3 -3
  274. package/dist/insights/algorithms/compare.js.map +1 -0
  275. package/dist/insights/algorithms/decay.d.ts +11 -0
  276. package/dist/insights/algorithms/decay.d.ts.map +1 -0
  277. package/dist/insights/algorithms/decay.js +154 -0
  278. package/dist/insights/algorithms/decay.js.map +1 -0
  279. package/dist/{services/insights → insights/algorithms}/discoveries.d.ts +1 -1
  280. package/dist/insights/algorithms/discoveries.d.ts.map +1 -0
  281. package/dist/{services/insights → insights/algorithms}/discoveries.js +2 -2
  282. package/dist/insights/algorithms/discoveries.js.map +1 -0
  283. package/dist/insights/algorithms/genres.d.ts +11 -0
  284. package/dist/insights/algorithms/genres.d.ts.map +1 -0
  285. package/dist/insights/algorithms/genres.js +201 -0
  286. package/dist/insights/algorithms/genres.js.map +1 -0
  287. package/dist/insights/algorithms/group.d.ts +8 -0
  288. package/dist/insights/algorithms/group.d.ts.map +1 -0
  289. package/dist/insights/algorithms/group.js +127 -0
  290. package/dist/insights/algorithms/group.js.map +1 -0
  291. package/dist/{services/insights → insights/algorithms}/hours.d.ts +1 -1
  292. package/dist/insights/algorithms/hours.d.ts.map +1 -0
  293. package/dist/{services/insights → insights/algorithms}/hours.js +2 -2
  294. package/dist/insights/algorithms/hours.js.map +1 -0
  295. package/dist/{services/insights → insights/algorithms}/mood.d.ts +1 -1
  296. package/dist/insights/algorithms/mood.d.ts.map +1 -0
  297. package/dist/{services/insights → insights/algorithms}/mood.js +4 -4
  298. package/dist/insights/algorithms/mood.js.map +1 -0
  299. package/dist/{services/insights → insights/algorithms}/now-playing.d.ts +1 -1
  300. package/dist/{services/insights → insights/algorithms}/now-playing.d.ts.map +1 -1
  301. package/dist/{services/insights → insights/algorithms}/now-playing.js +2 -2
  302. package/dist/insights/algorithms/now-playing.js.map +1 -0
  303. package/dist/insights/algorithms/obscurity.d.ts +27 -0
  304. package/dist/insights/algorithms/obscurity.d.ts.map +1 -0
  305. package/dist/insights/algorithms/obscurity.js +158 -0
  306. package/dist/insights/algorithms/obscurity.js.map +1 -0
  307. package/dist/{services/insights → insights/algorithms}/personality.d.ts +1 -1
  308. package/dist/insights/algorithms/personality.d.ts.map +1 -0
  309. package/dist/{services/insights → insights/algorithms}/personality.js +1 -1
  310. package/dist/insights/algorithms/personality.js.map +1 -0
  311. package/dist/insights/algorithms/recommendations.d.ts +11 -0
  312. package/dist/insights/algorithms/recommendations.d.ts.map +1 -0
  313. package/dist/insights/algorithms/recommendations.js +121 -0
  314. package/dist/insights/algorithms/recommendations.js.map +1 -0
  315. package/dist/insights/algorithms/streaks.d.ts +11 -0
  316. package/dist/insights/algorithms/streaks.d.ts.map +1 -0
  317. package/dist/insights/algorithms/streaks.js +178 -0
  318. package/dist/insights/algorithms/streaks.js.map +1 -0
  319. package/dist/{services/insights → insights/algorithms}/summary.d.ts +1 -1
  320. package/dist/insights/algorithms/summary.d.ts.map +1 -0
  321. package/dist/{services/insights → insights/algorithms}/summary.js +3 -3
  322. package/dist/insights/algorithms/summary.js.map +1 -0
  323. package/dist/{services/insights → insights/algorithms}/trends.d.ts +1 -1
  324. package/dist/insights/algorithms/trends.d.ts.map +1 -0
  325. package/dist/{services/insights → insights/algorithms}/trends.js +3 -3
  326. package/dist/insights/algorithms/trends.js.map +1 -0
  327. package/dist/insights/index.d.ts +3 -0
  328. package/dist/insights/index.d.ts.map +1 -0
  329. package/dist/insights/index.js +3 -0
  330. package/dist/insights/index.js.map +1 -0
  331. package/dist/insights/lib/binges.d.ts.map +1 -0
  332. package/dist/insights/lib/binges.js.map +1 -0
  333. package/dist/insights/lib/compare.d.ts.map +1 -0
  334. package/dist/insights/lib/compare.js.map +1 -0
  335. package/dist/insights/lib/discoveries.d.ts.map +1 -0
  336. package/dist/insights/lib/discoveries.js.map +1 -0
  337. package/dist/insights/lib/diversity.d.ts.map +1 -0
  338. package/dist/insights/lib/diversity.js.map +1 -0
  339. package/dist/insights/lib/hours.d.ts.map +1 -0
  340. package/dist/insights/lib/hours.js.map +1 -0
  341. package/dist/insights/lib/mood.d.ts.map +1 -0
  342. package/dist/insights/lib/mood.js.map +1 -0
  343. package/dist/{services/insights → insights}/lib/periods.d.ts +1 -1
  344. package/dist/insights/lib/periods.d.ts.map +1 -0
  345. package/dist/insights/lib/periods.js.map +1 -0
  346. package/dist/insights/lib/personality.d.ts.map +1 -0
  347. package/dist/insights/lib/personality.js.map +1 -0
  348. package/dist/insights/lib/trends.d.ts.map +1 -0
  349. package/dist/insights/lib/trends.js.map +1 -0
  350. package/dist/insights/schemas.d.ts +1415 -0
  351. package/dist/insights/schemas.d.ts.map +1 -0
  352. package/dist/{services/insights.schemas.js → insights/schemas.js} +291 -2
  353. package/dist/insights/schemas.js.map +1 -0
  354. package/dist/insights/service.d.ts +191 -0
  355. package/dist/insights/service.d.ts.map +1 -0
  356. package/dist/insights/service.js +44 -0
  357. package/dist/insights/service.js.map +1 -0
  358. package/dist/playlists/formatters/csv.d.ts +3 -0
  359. package/dist/playlists/formatters/csv.d.ts.map +1 -0
  360. package/dist/playlists/formatters/csv.js +18 -0
  361. package/dist/playlists/formatters/csv.js.map +1 -0
  362. package/dist/playlists/formatters/m3u.d.ts +3 -0
  363. package/dist/playlists/formatters/m3u.d.ts.map +1 -0
  364. package/dist/playlists/formatters/m3u.js +10 -0
  365. package/dist/playlists/formatters/m3u.js.map +1 -0
  366. package/dist/playlists/formatters/spotifymatch.d.ts +3 -0
  367. package/dist/playlists/formatters/spotifymatch.d.ts.map +1 -0
  368. package/dist/playlists/formatters/spotifymatch.js +4 -0
  369. package/dist/playlists/formatters/spotifymatch.js.map +1 -0
  370. package/dist/playlists/generators/generator.d.ts +4 -0
  371. package/dist/playlists/generators/generator.d.ts.map +1 -0
  372. package/dist/playlists/generators/generator.js +158 -0
  373. package/dist/playlists/generators/generator.js.map +1 -0
  374. package/dist/playlists/index.d.ts +6 -0
  375. package/dist/playlists/index.d.ts.map +1 -0
  376. package/dist/playlists/index.js +6 -0
  377. package/dist/playlists/index.js.map +1 -0
  378. package/dist/playlists/schemas.d.ts +150 -0
  379. package/dist/playlists/schemas.d.ts.map +1 -0
  380. package/dist/playlists/schemas.js +53 -0
  381. package/dist/playlists/schemas.js.map +1 -0
  382. package/dist/playlists/service.d.ts +28 -0
  383. package/dist/playlists/service.d.ts.map +1 -0
  384. package/dist/playlists/service.js +27 -0
  385. package/dist/playlists/service.js.map +1 -0
  386. package/dist/reports/generators/digest.d.ts +4 -0
  387. package/dist/reports/generators/digest.d.ts.map +1 -0
  388. package/dist/reports/generators/digest.js +95 -0
  389. package/dist/reports/generators/digest.js.map +1 -0
  390. package/dist/reports/generators/milestones.d.ts +4 -0
  391. package/dist/reports/generators/milestones.d.ts.map +1 -0
  392. package/dist/reports/generators/milestones.js +59 -0
  393. package/dist/reports/generators/milestones.js.map +1 -0
  394. package/dist/reports/generators/wrapped.d.ts +4 -0
  395. package/dist/reports/generators/wrapped.d.ts.map +1 -0
  396. package/dist/reports/generators/wrapped.js +179 -0
  397. package/dist/reports/generators/wrapped.js.map +1 -0
  398. package/dist/reports/index.d.ts +3 -0
  399. package/dist/reports/index.d.ts.map +1 -0
  400. package/dist/reports/index.js +3 -0
  401. package/dist/reports/index.js.map +1 -0
  402. package/dist/reports/schemas.d.ts +244 -0
  403. package/dist/reports/schemas.d.ts.map +1 -0
  404. package/dist/reports/schemas.js +92 -0
  405. package/dist/reports/schemas.js.map +1 -0
  406. package/dist/reports/service.d.ts +30 -0
  407. package/dist/reports/service.d.ts.map +1 -0
  408. package/dist/reports/service.js +11 -0
  409. package/dist/reports/service.js.map +1 -0
  410. package/package.json +33 -1
  411. package/dist/services/album.d.ts.map +0 -1
  412. package/dist/services/album.js.map +0 -1
  413. package/dist/services/album.schemas.d.ts.map +0 -1
  414. package/dist/services/album.schemas.js.map +0 -1
  415. package/dist/services/artist.d.ts.map +0 -1
  416. package/dist/services/artist.js.map +0 -1
  417. package/dist/services/artist.schemas.d.ts.map +0 -1
  418. package/dist/services/artist.schemas.js.map +0 -1
  419. package/dist/services/auth.d.ts.map +0 -1
  420. package/dist/services/auth.js.map +0 -1
  421. package/dist/services/auth.schemas.d.ts.map +0 -1
  422. package/dist/services/auth.schemas.js.map +0 -1
  423. package/dist/services/chart.d.ts.map +0 -1
  424. package/dist/services/chart.js.map +0 -1
  425. package/dist/services/chart.schemas.d.ts.map +0 -1
  426. package/dist/services/chart.schemas.js.map +0 -1
  427. package/dist/services/geo.d.ts.map +0 -1
  428. package/dist/services/geo.js.map +0 -1
  429. package/dist/services/geo.schemas.d.ts.map +0 -1
  430. package/dist/services/geo.schemas.js.map +0 -1
  431. package/dist/services/index.d.ts +0 -22
  432. package/dist/services/index.d.ts.map +0 -1
  433. package/dist/services/index.js +0 -23
  434. package/dist/services/index.js.map +0 -1
  435. package/dist/services/insights/binges.d.ts.map +0 -1
  436. package/dist/services/insights/binges.js.map +0 -1
  437. package/dist/services/insights/compare.d.ts.map +0 -1
  438. package/dist/services/insights/compare.js.map +0 -1
  439. package/dist/services/insights/discoveries.d.ts.map +0 -1
  440. package/dist/services/insights/discoveries.js.map +0 -1
  441. package/dist/services/insights/hours.d.ts.map +0 -1
  442. package/dist/services/insights/hours.js.map +0 -1
  443. package/dist/services/insights/lib/binges.d.ts.map +0 -1
  444. package/dist/services/insights/lib/binges.js.map +0 -1
  445. package/dist/services/insights/lib/compare.d.ts.map +0 -1
  446. package/dist/services/insights/lib/compare.js.map +0 -1
  447. package/dist/services/insights/lib/discoveries.d.ts.map +0 -1
  448. package/dist/services/insights/lib/discoveries.js.map +0 -1
  449. package/dist/services/insights/lib/diversity.d.ts.map +0 -1
  450. package/dist/services/insights/lib/diversity.js.map +0 -1
  451. package/dist/services/insights/lib/hours.d.ts.map +0 -1
  452. package/dist/services/insights/lib/hours.js.map +0 -1
  453. package/dist/services/insights/lib/mood.d.ts.map +0 -1
  454. package/dist/services/insights/lib/mood.js.map +0 -1
  455. package/dist/services/insights/lib/periods.d.ts.map +0 -1
  456. package/dist/services/insights/lib/periods.js.map +0 -1
  457. package/dist/services/insights/lib/personality.d.ts.map +0 -1
  458. package/dist/services/insights/lib/personality.js.map +0 -1
  459. package/dist/services/insights/lib/trends.d.ts.map +0 -1
  460. package/dist/services/insights/lib/trends.js.map +0 -1
  461. package/dist/services/insights/mood.d.ts.map +0 -1
  462. package/dist/services/insights/mood.js.map +0 -1
  463. package/dist/services/insights/now-playing.js.map +0 -1
  464. package/dist/services/insights/personality.d.ts.map +0 -1
  465. package/dist/services/insights/personality.js.map +0 -1
  466. package/dist/services/insights/summary.d.ts.map +0 -1
  467. package/dist/services/insights/summary.js.map +0 -1
  468. package/dist/services/insights/trends.d.ts.map +0 -1
  469. package/dist/services/insights/trends.js.map +0 -1
  470. package/dist/services/insights.d.ts +0 -96
  471. package/dist/services/insights.d.ts.map +0 -1
  472. package/dist/services/insights.js +0 -26
  473. package/dist/services/insights.js.map +0 -1
  474. package/dist/services/insights.schemas.d.ts +0 -710
  475. package/dist/services/insights.schemas.d.ts.map +0 -1
  476. package/dist/services/insights.schemas.js.map +0 -1
  477. package/dist/services/library.d.ts.map +0 -1
  478. package/dist/services/library.js.map +0 -1
  479. package/dist/services/library.schemas.d.ts.map +0 -1
  480. package/dist/services/library.schemas.js.map +0 -1
  481. package/dist/services/schemas/base.entities.schemas.d.ts.map +0 -1
  482. package/dist/services/schemas/base.entities.schemas.js.map +0 -1
  483. package/dist/services/schemas/base.entity-names.schemas.d.ts.map +0 -1
  484. package/dist/services/schemas/base.entity-names.schemas.js.map +0 -1
  485. package/dist/services/schemas/base.metadata.schemas.d.ts.map +0 -1
  486. package/dist/services/schemas/base.metadata.schemas.js.map +0 -1
  487. package/dist/services/schemas/base.pagination.schemas.d.ts.map +0 -1
  488. package/dist/services/schemas/base.pagination.schemas.js.map +0 -1
  489. package/dist/services/schemas/base.primitives.schemas.d.ts.map +0 -1
  490. package/dist/services/schemas/base.primitives.schemas.js.map +0 -1
  491. package/dist/services/schemas/index.d.ts.map +0 -1
  492. package/dist/services/schemas/index.js.map +0 -1
  493. package/dist/services/tag.d.ts.map +0 -1
  494. package/dist/services/tag.js.map +0 -1
  495. package/dist/services/tag.schemas.d.ts.map +0 -1
  496. package/dist/services/tag.schemas.js.map +0 -1
  497. package/dist/services/track.d.ts.map +0 -1
  498. package/dist/services/track.js.map +0 -1
  499. package/dist/services/track.schemas.d.ts.map +0 -1
  500. package/dist/services/track.schemas.js.map +0 -1
  501. package/dist/services/track.utils.d.ts.map +0 -1
  502. package/dist/services/track.utils.js.map +0 -1
  503. package/dist/services/user.d.ts.map +0 -1
  504. package/dist/services/user.js.map +0 -1
  505. package/dist/services/user.schemas.d.ts.map +0 -1
  506. package/dist/services/user.schemas.js.map +0 -1
  507. /package/dist/{services → core/schemas}/album.schemas.d.ts +0 -0
  508. /package/dist/{services → core/schemas}/artist.schemas.d.ts +0 -0
  509. /package/dist/{services → core/schemas}/auth.schemas.d.ts +0 -0
  510. /package/dist/{services → core/schemas}/auth.schemas.js +0 -0
  511. /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.d.ts +0 -0
  512. /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.js +0 -0
  513. /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.d.ts +0 -0
  514. /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.js +0 -0
  515. /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.d.ts +0 -0
  516. /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.js +0 -0
  517. /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.d.ts +0 -0
  518. /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.js +0 -0
  519. /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.d.ts +0 -0
  520. /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.js +0 -0
  521. /package/dist/{services/schemas → core/schemas/base}/index.d.ts +0 -0
  522. /package/dist/{services/schemas → core/schemas/base}/index.js +0 -0
  523. /package/dist/{services → core/schemas}/chart.schemas.d.ts +0 -0
  524. /package/dist/{services → core/schemas}/geo.schemas.d.ts +0 -0
  525. /package/dist/{services → core/schemas}/library.schemas.d.ts +0 -0
  526. /package/dist/{services → core/schemas}/tag.schemas.d.ts +0 -0
  527. /package/dist/{services → core/schemas}/track.schemas.d.ts +0 -0
  528. /package/dist/{services → core/schemas}/user.schemas.d.ts +0 -0
  529. /package/dist/{services → core/services}/track.utils.js +0 -0
  530. /package/dist/{services/insights → insights}/lib/binges.d.ts +0 -0
  531. /package/dist/{services/insights → insights}/lib/binges.js +0 -0
  532. /package/dist/{services/insights → insights}/lib/compare.d.ts +0 -0
  533. /package/dist/{services/insights → insights}/lib/compare.js +0 -0
  534. /package/dist/{services/insights → insights}/lib/discoveries.d.ts +0 -0
  535. /package/dist/{services/insights → insights}/lib/discoveries.js +0 -0
  536. /package/dist/{services/insights → insights}/lib/diversity.d.ts +0 -0
  537. /package/dist/{services/insights → insights}/lib/diversity.js +0 -0
  538. /package/dist/{services/insights → insights}/lib/hours.d.ts +0 -0
  539. /package/dist/{services/insights → insights}/lib/hours.js +0 -0
  540. /package/dist/{services/insights → insights}/lib/mood.d.ts +0 -0
  541. /package/dist/{services/insights → insights}/lib/mood.js +0 -0
  542. /package/dist/{services/insights → insights}/lib/periods.js +0 -0
  543. /package/dist/{services/insights → insights}/lib/personality.d.ts +0 -0
  544. /package/dist/{services/insights → insights}/lib/personality.js +0 -0
  545. /package/dist/{services/insights → insights}/lib/trends.d.ts +0 -0
  546. /package/dist/{services/insights → insights}/lib/trends.js +0 -0
package/README.md CHANGED
@@ -276,7 +276,7 @@ if (result.success) {
276
276
 
277
277
  ## Insights & Analytics Engine
278
278
 
279
- The package includes a built-in analytics engine providing 9 high-level derived views computed over Last.fm data:
279
+ The package includes a comprehensive, built-in analytics engine providing 20 high-level derived views and statistical metrics computed over Last.fm data:
280
280
 
281
281
  ```typescript
282
282
  import { createClient } from '@ansango/lastfm-api';
@@ -319,6 +319,133 @@ console.log(`Archetype: ${personality.archetype.emoji} ${personality.archetype.n
319
319
  // 9. User-to-User Taste Clash (Jaccard Similarity)
320
320
  const comparison = await client.insights.compareUsers({ userA: 'ansango', userB: 'friend' });
321
321
  console.log(`Taste Compatibility: ${comparison.compatibilityScore}% (Jaccard: ${comparison.jaccard})`);
322
+
323
+ // 10. Obscurity & Hipster Score (Hidden Gems & Mainstream Anchors)
324
+ const obscurity = await client.insights.getObscurityScore({ user: 'ansango', limit: 20 });
325
+ console.log(`Score: ${obscurity.obscurityScore}/100 (${obscurity.category})`);
326
+
327
+ // 11. Forgotten Favorites (Revival Candidates)
328
+ const forgotten = await client.insights.getForgottenFavorites({ user: 'ansango', historicPeriod: '12month', recentPeriod: '1month' });
329
+
330
+ // 12. Listening Obsession Episodes
331
+ const obsessions = await client.insights.getObsessions({ user: 'ansango', windowSize: 20, thresholdRatio: 0.35 });
332
+
333
+ // 13. Consecutive Daily Streaks & Dry Spells
334
+ const streaks = await client.insights.getListeningStreaks({ user: 'ansango' });
335
+ console.log(`Longest Streak: ${streaks.longestStreakDays} days`);
336
+
337
+ // 14. 365-Day Daily Heatmap
338
+ const heatmap = await client.insights.getListeningHeatmap({ user: 'ansango', days: 90 });
339
+
340
+ // 15. Album Habits & Cohesion Score (Album Purist vs Playlist Shuffler)
341
+ const habits = await client.insights.getAlbumHabits({ user: 'ansango', minSessionTracks: 3 });
342
+ console.log(`Cohesion: ${habits.cohesionScore}% (${habits.profile})`);
343
+
344
+ // 16. Genre Breakdown with HHI Concentration Index
345
+ const genres = await client.insights.getGenreBreakdown({ user: 'ansango', period: 'overall' });
346
+ console.log(`Specialization: ${genres.specializationLevel} (HHI: ${genres.hhiIndex})`);
347
+
348
+ // 17. Genre Evolution & Temporal Shifts (Rising, Fading, New)
349
+ const evolution = await client.insights.getGenreEvolution({ user: 'ansango', currentPeriod: '1month', previousPeriod: '12month' });
350
+
351
+ // 18. Smart Similarity Graph Recommendations
352
+ const recs = await client.insights.getSmartRecommendations({ user: 'ansango', seedLimit: 5, limit: 10 });
353
+
354
+ // 19. Bridge Artists Connecting Two Disparate Genres
355
+ const bridges = await client.insights.getBridgeArtists({ tagA: 'post-punk', tagB: 'electronic' });
356
+
357
+ // 20. Multi-User Taste Group Comparison (Consensus & Outlier Detection)
358
+ const group = await client.insights.compareTasteGroup({ users: ['alice', 'bob', 'carol'], period: 'overall' });
359
+ console.log(`Group Average Compatibility: ${group.groupAverageCompatibility}%`);
360
+ ```
361
+
362
+ ## Reports & Wrapped Engine
363
+
364
+ Generate shareable annual recaps, historical milestones, and monthly digests:
365
+
366
+ ```typescript
367
+ import { createClient } from '@ansango/lastfm-api';
368
+
369
+ const client = createClient();
370
+
371
+ // 1. Year in Review / Wrapped
372
+ const wrapped = await client.reports.getWrapped({ user: 'ansango', year: 2024 });
373
+ console.log(`Top Artist of the Year: ${wrapped.topArtists[0].name}`);
374
+ console.log(`Summer Anthem: ${wrapped.seasons.summer.topTrack} by ${wrapped.seasons.summer.topArtist}`);
375
+ console.log(`Busiest Day: ${wrapped.busiestDay.date} (${wrapped.busiestDay.scrobbles} plays)`);
376
+
377
+ // 2. Scrobble Milestones Tracker & Projection
378
+ const milestones = await client.reports.getMilestones({ user: 'ansango', targets: [1000, 5000, 10000, 50000] });
379
+ console.log(`Next milestone: ${milestones.nextMilestone.target} scrobbles (ETA: ${milestones.nextMilestone.projectedDate})`);
380
+
381
+ // 3. Monthly Comparative Digest
382
+ const digest = await client.reports.getMonthlyDigest({ user: 'ansango', year: 2024, month: 2 });
383
+ console.log(`Growth vs previous month: ${digest.growthPercentage}%`);
384
+ ```
385
+
386
+ ## Smart Playlists Generator
387
+
388
+ Algorithmic playlist creation with direct export to standard formats:
389
+
390
+ ```typescript
391
+ import { createClient } from '@ansango/lastfm-api';
392
+
393
+ const client = createClient();
394
+
395
+ // Generate smart playlist (time-capsule, deep-cuts, heavy-rotation, discovery-radar)
396
+ const playlist = await client.playlists.generate({
397
+ user: 'ansango',
398
+ mode: 'time-capsule',
399
+ limit: 25,
400
+ });
401
+
402
+ // Pre-rendered standard formats:
403
+ console.log(playlist.formats.m3u); // Standard #EXTM3U playlist file content
404
+ console.log(playlist.formats.csv); // CSV spreadsheet
405
+ console.log(playlist.formats.spotifyQueries); // Spotify search query list
406
+ ```
407
+
408
+ ## Bulk Data Exporter & Backup
409
+
410
+ Resilient scrobble history export with checkpointing and multiple output formats:
411
+
412
+ ```typescript
413
+ import { createClient } from '@ansango/lastfm-api';
414
+
415
+ const client = createClient();
416
+
417
+ // Export scrobbles with ListenBrainz / JSONL / CSV formatting & checkpointing
418
+ const exportData = await client.exporter.exportScrobbles({
419
+ user: 'ansango',
420
+ format: 'listenbrainz', // 'json' | 'jsonl' | 'csv' | 'listenbrainz'
421
+ limit: 1000,
422
+ });
423
+
424
+ // Resumable checkpoint timestamp
425
+ console.log(`Resume from: ${exportData.nextCheckpointUts}`);
426
+ ```
427
+
428
+ ## Async Pagination & Streaming Iterators
429
+
430
+ Stream large Last.fm datasets seamlessly using standard `for await` loops:
431
+
432
+ ```typescript
433
+ import { createClient, iterateItems } from '@ansango/lastfm-api';
434
+
435
+ const client = createClient();
436
+
437
+ for await (const track of iterateItems(
438
+ (params) => client.user.getRecentTracks(params),
439
+ (res) => ({
440
+ items: res.recenttracks?.track ?? [],
441
+ totalPages: Number(res.recenttracks?.['@attr']?.totalPages ?? 1),
442
+ currentPage: Number(res.recenttracks?.['@attr']?.page ?? 1),
443
+ }),
444
+ { user: 'ansango', limit: 200 },
445
+ { maxItems: 1000 }
446
+ )) {
447
+ console.log(`${track.name} - ${track.artist['#text']}`);
448
+ }
322
449
  ```
323
450
 
324
451
  ## Environment Variables
package/dist/client.d.ts CHANGED
@@ -1,5 +1,9 @@
1
1
  import type { LastFmConfig } from './config.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';
2
+ import { type AlbumService, type ArtistService, type AuthService, type ChartService, type GeoService, type LibraryService, type TagService, type TrackService, type UserService } from './core/services/index.js';
3
+ import { type ExporterService } from './exporter/index.js';
4
+ import { type InsightsService } from './insights/index.js';
5
+ import { type PlaylistsService } from './playlists/index.js';
6
+ import { type ReportsService } from './reports/index.js';
3
7
  /**
4
8
  * Last.fm API Client
5
9
  *
@@ -30,6 +34,9 @@ export declare class LastFmClient {
30
34
  readonly library: LibraryService;
31
35
  readonly auth: AuthService;
32
36
  readonly insights: InsightsService;
37
+ readonly reports: ReportsService;
38
+ readonly playlists: PlaylistsService;
39
+ readonly exporter: ExporterService;
33
40
  private readonly config;
34
41
  constructor(config?: Partial<LastFmConfig>);
35
42
  /**
@@ -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,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"}
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,EAUjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;;;;;;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;IACzC,SAAgB,OAAO,EAAE,cAAc,CAAA;IACvC,SAAgB,SAAS,EAAE,gBAAgB,CAAA;IAC3C,SAAgB,QAAQ,EAAE,eAAe,CAAA;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAmB1C;;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,9 @@
1
1
  import { createConfig, getGlobalConfig } from './config.js';
2
- import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createInsightsService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
2
+ import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './core/services/index.js';
3
+ import { createExporterService } from './exporter/index.js';
4
+ import { createInsightsService } from './insights/index.js';
5
+ import { createPlaylistsService } from './playlists/index.js';
6
+ import { createReportsService } from './reports/index.js';
3
7
  /**
4
8
  * Last.fm API Client
5
9
  *
@@ -30,6 +34,9 @@ export class LastFmClient {
30
34
  library;
31
35
  auth;
32
36
  insights;
37
+ reports;
38
+ playlists;
39
+ exporter;
33
40
  config;
34
41
  constructor(config) {
35
42
  this.config = config ? createConfig(config) : getGlobalConfig();
@@ -44,6 +51,9 @@ export class LastFmClient {
44
51
  this.library = createLibraryService(this.config);
45
52
  this.auth = createAuthService(this.config);
46
53
  this.insights = createInsightsService(this.config);
54
+ this.reports = createReportsService(this.config);
55
+ this.playlists = createPlaylistsService(this.config);
56
+ this.exporter = createExporterService(this.config);
47
57
  }
48
58
  /**
49
59
  * Get the current configuration (read-only)
@@ -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,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"}
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,GAMjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAwB,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAuB,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;;;;;;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;IACzB,OAAO,CAAgB;IACvB,SAAS,CAAkB;IAC3B,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;QAClD,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,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,25 @@
1
+ /**
2
+ * Canonical Last.fm method inventory.
3
+ *
4
+ * Single source of truth for the "56/56" coverage of the Last.fm API.
5
+ * (was 57/57; `auth.getMobileSession` removed in v4.0.0 — see #117.)
6
+ * Consumed by:
7
+ * - `src/__tests__/inventory.test.ts` — verifies that each method exists on the client
8
+ * - `src/method-registry.ts` — wires the docs tool (Hono + Scalar)
9
+ *
10
+ * Rules:
11
+ * - Only canonical Last.fm `namespace.method` pairs go here.
12
+ * - Wrapper/alias methods (e.g. `scrobbleMany`, `postTrackScrobble`,
13
+ * `postBatchTrackScrobble`) are excluded because they all target the
14
+ * same canonical endpoint (`track.scrobble`) and must not be
15
+ * double-counted.
16
+ *
17
+ * The per-namespace breakdown:
18
+ * - artist (10), album (6), track (12), user (13), tag (7),
19
+ * chart (3), geo (2), library (1), auth (3) = 57
20
+ */
21
+ export declare const CANONICAL_METHODS: readonly ["artist.getInfo", "artist.getTags", "artist.getSimilar", "artist.getTopTags", "artist.getTopAlbums", "artist.getTopTracks", "artist.search", "artist.getCorrection", "artist.addTags", "artist.removeTag", "album.getInfo", "album.getTags", "album.getTopTags", "album.search", "album.addTags", "album.removeTag", "track.getInfo", "track.getSimilar", "track.getTags", "track.getTopTags", "track.search", "track.getCorrection", "track.addTags", "track.removeTag", "track.love", "track.unlove", "track.updateNowPlaying", "track.scrobble", "user.getInfo", "user.getFriends", "user.getLovedTracks", "user.getRecentTracks", "user.getTopAlbums", "user.getTopArtists", "user.getTopTags", "user.getTopTracks", "user.getWeeklyAlbumChart", "user.getWeeklyArtistChart", "user.getWeeklyChartList", "user.getWeeklyTrackChart", "user.getPersonalTags", "tag.getInfo", "tag.getSimilar", "tag.getTopAlbums", "tag.getTopArtists", "tag.getTopTags", "tag.getTopTracks", "tag.getWeeklyChartList", "chart.getTopArtists", "chart.getTopTags", "chart.getTopTracks", "geo.getTopArtists", "geo.getTopTracks", "library.getArtists", "auth.getSession", "auth.getToken"];
22
+ export type CanonicalMethodId = (typeof CANONICAL_METHODS)[number];
23
+ export type CanonicalMethod = CanonicalMethodId;
24
+ export type Namespace = CanonicalMethodId extends `${infer N}.${string}` ? N : never;
25
+ //# sourceMappingURL=canonical-methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-methods.d.ts","sourceRoot":"","sources":["../../src/core/canonical-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,0nCAkEpB,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAClE,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAA;AAC/C,MAAM,MAAM,SAAS,GAAG,iBAAiB,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Canonical Last.fm method inventory.
3
+ *
4
+ * Single source of truth for the "56/56" coverage of the Last.fm API.
5
+ * (was 57/57; `auth.getMobileSession` removed in v4.0.0 — see #117.)
6
+ * Consumed by:
7
+ * - `src/__tests__/inventory.test.ts` — verifies that each method exists on the client
8
+ * - `src/method-registry.ts` — wires the docs tool (Hono + Scalar)
9
+ *
10
+ * Rules:
11
+ * - Only canonical Last.fm `namespace.method` pairs go here.
12
+ * - Wrapper/alias methods (e.g. `scrobbleMany`, `postTrackScrobble`,
13
+ * `postBatchTrackScrobble`) are excluded because they all target the
14
+ * same canonical endpoint (`track.scrobble`) and must not be
15
+ * double-counted.
16
+ *
17
+ * The per-namespace breakdown:
18
+ * - artist (10), album (6), track (12), user (13), tag (7),
19
+ * chart (3), geo (2), library (1), auth (3) = 57
20
+ */
21
+ export const CANONICAL_METHODS = [
22
+ // artist (10)
23
+ 'artist.getInfo',
24
+ 'artist.getTags',
25
+ 'artist.getSimilar',
26
+ 'artist.getTopTags',
27
+ 'artist.getTopAlbums',
28
+ 'artist.getTopTracks',
29
+ 'artist.search',
30
+ 'artist.getCorrection',
31
+ 'artist.addTags',
32
+ 'artist.removeTag',
33
+ // album (6)
34
+ 'album.getInfo',
35
+ 'album.getTags',
36
+ 'album.getTopTags',
37
+ 'album.search',
38
+ 'album.addTags',
39
+ 'album.removeTag',
40
+ // track (12)
41
+ 'track.getInfo',
42
+ 'track.getSimilar',
43
+ 'track.getTags',
44
+ 'track.getTopTags',
45
+ 'track.search',
46
+ 'track.getCorrection',
47
+ 'track.addTags',
48
+ 'track.removeTag',
49
+ 'track.love',
50
+ 'track.unlove',
51
+ 'track.updateNowPlaying',
52
+ 'track.scrobble',
53
+ // user (13)
54
+ 'user.getInfo',
55
+ 'user.getFriends',
56
+ 'user.getLovedTracks',
57
+ 'user.getRecentTracks',
58
+ 'user.getTopAlbums',
59
+ 'user.getTopArtists',
60
+ 'user.getTopTags',
61
+ 'user.getTopTracks',
62
+ 'user.getWeeklyAlbumChart',
63
+ 'user.getWeeklyArtistChart',
64
+ 'user.getWeeklyChartList',
65
+ 'user.getWeeklyTrackChart',
66
+ 'user.getPersonalTags',
67
+ // tag (7)
68
+ 'tag.getInfo',
69
+ 'tag.getSimilar',
70
+ 'tag.getTopAlbums',
71
+ 'tag.getTopArtists',
72
+ 'tag.getTopTags',
73
+ 'tag.getTopTracks',
74
+ 'tag.getWeeklyChartList',
75
+ // chart (3)
76
+ 'chart.getTopArtists',
77
+ 'chart.getTopTags',
78
+ 'chart.getTopTracks',
79
+ // geo (2)
80
+ 'geo.getTopArtists',
81
+ 'geo.getTopTracks',
82
+ // library (1)
83
+ 'library.getArtists',
84
+ // auth (2)
85
+ 'auth.getSession',
86
+ 'auth.getToken',
87
+ ];
88
+ //# sourceMappingURL=canonical-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-methods.js","sourceRoot":"","sources":["../../src/core/canonical-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,sBAAsB;IACtB,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,qBAAqB;IACrB,eAAe;IACf,iBAAiB;IACjB,YAAY;IACZ,cAAc;IACd,wBAAwB;IACxB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,0BAA0B;IAC1B,sBAAsB;IACtB,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,wBAAwB;IACxB,YAAY;IACZ,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,UAAU;IACV,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,oBAAoB;IACpB,WAAW;IACX,iBAAiB;IACjB,eAAe;CACN,CAAA"}
@@ -0,0 +1,33 @@
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';
3
+ /**
4
+ * Lightweight Last.fm Core API client.
5
+ *
6
+ * Provides access strictly to the 56 canonical Last.fm REST API methods
7
+ * across the 9 official namespaces.
8
+ */
9
+ export declare class LastFmCoreClient {
10
+ readonly user: UserService;
11
+ readonly album: AlbumService;
12
+ readonly artist: ArtistService;
13
+ readonly track: TrackService;
14
+ readonly tag: TagService;
15
+ readonly chart: ChartService;
16
+ readonly geo: GeoService;
17
+ readonly library: LibraryService;
18
+ readonly auth: AuthService;
19
+ private readonly config;
20
+ constructor(config?: Partial<LastFmConfig>);
21
+ /**
22
+ * Get the current configuration (read-only)
23
+ */
24
+ getConfig(): Readonly<LastFmConfig>;
25
+ }
26
+ /**
27
+ * Helper function to create a Last.fm core client instance
28
+ *
29
+ * @param config - Optional configuration. If not provided, uses global config.
30
+ * @returns A new LastFmCoreClient instance
31
+ */
32
+ export declare function createCoreClient(config?: Partial<LastFmConfig>): LastFmCoreClient;
33
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC/E,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAUjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,MAAM,qBAAqB,CAAA;AAE5B;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC5B,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;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAc1C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGnC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAEjF"}
@@ -0,0 +1,48 @@
1
+ import { createConfig, getGlobalConfig } from '../config.js';
2
+ import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
3
+ /**
4
+ * Lightweight Last.fm Core API client.
5
+ *
6
+ * Provides access strictly to the 56 canonical Last.fm REST API methods
7
+ * across the 9 official namespaces.
8
+ */
9
+ export class LastFmCoreClient {
10
+ user;
11
+ album;
12
+ artist;
13
+ track;
14
+ tag;
15
+ chart;
16
+ geo;
17
+ library;
18
+ auth;
19
+ config;
20
+ constructor(config) {
21
+ this.config = config ? createConfig(config) : getGlobalConfig();
22
+ this.user = createUserService(this.config);
23
+ this.album = createAlbumService(this.config);
24
+ this.artist = createArtistService(this.config);
25
+ this.track = createTrackService(this.config);
26
+ this.tag = createTagService(this.config);
27
+ this.chart = createChartService(this.config);
28
+ this.geo = createGeoService(this.config);
29
+ this.library = createLibraryService(this.config);
30
+ this.auth = createAuthService(this.config);
31
+ }
32
+ /**
33
+ * Get the current configuration (read-only)
34
+ */
35
+ getConfig() {
36
+ return { ...this.config };
37
+ }
38
+ }
39
+ /**
40
+ * Helper function to create a Last.fm core client instance
41
+ *
42
+ * @param config - Optional configuration. If not provided, uses global config.
43
+ * @returns A new LastFmCoreClient instance
44
+ */
45
+ export function createCoreClient(config) {
46
+ return new LastFmCoreClient(config);
47
+ }
48
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAKN,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAMjB,MAAM,qBAAqB,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACZ,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;IAEhB,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,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;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC9D,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './canonical-methods.js';
2
+ export * from './client.js';
3
+ export * from './pagination.js';
4
+ export * from './schemas/index.js';
5
+ export * from './services/index.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './canonical-methods.js';
2
+ export * from './client.js';
3
+ export * from './pagination.js';
4
+ export * from './schemas/index.js';
5
+ export * from './services/index.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Generic pagination and async iterator utilities for Last.fm API endpoints.
3
+ */
4
+ export interface PaginationOptions {
5
+ /** Starting page number (1-indexed). Defaults to 1. */
6
+ startPage?: number;
7
+ /** Maximum number of pages to fetch. Defaults to Infinity. */
8
+ maxPages?: number;
9
+ /** Maximum total items to yield or collect. Defaults to Infinity. */
10
+ maxItems?: number;
11
+ /** Optional delay in milliseconds between page requests (for gentle rate limiting). Defaults to 0. */
12
+ delayMs?: number;
13
+ }
14
+ export interface PageExtraction<TItem> {
15
+ items: TItem[];
16
+ totalPages: number;
17
+ currentPage: number;
18
+ }
19
+ /**
20
+ * Async generator yielding items across all paginated responses one by one.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * for await (const track of iterateItems(
25
+ * (p) => client.user.getRecentTracks(p),
26
+ * (res) => ({
27
+ * items: res.recenttracks?.track ?? [],
28
+ * totalPages: Number(res.recenttracks?.['@attr']?.totalPages ?? 1),
29
+ * currentPage: Number(res.recenttracks?.['@attr']?.page ?? 1)
30
+ * }),
31
+ * { user: 'ansango', limit: 200 },
32
+ * { maxItems: 1000 }
33
+ * )) {
34
+ * console.log(track.name);
35
+ * }
36
+ * ```
37
+ */
38
+ export declare function iterateItems<TItem, TParams extends Record<string, unknown>, TResponse>(fetchPage: (params: TParams & {
39
+ page: number;
40
+ limit?: number;
41
+ }) => Promise<TResponse>, extract: (response: TResponse) => PageExtraction<TItem>, params: TParams, options?: PaginationOptions): AsyncGenerator<TItem, void, undefined>;
42
+ /**
43
+ * Collects all items from paginated requests into an in-memory array.
44
+ */
45
+ export declare function collectAll<TItem, TParams extends Record<string, unknown>, TResponse>(fetchPage: (params: TParams & {
46
+ page: number;
47
+ limit?: number;
48
+ }) => Promise<TResponse>, extract: (response: TResponse) => PageExtraction<TItem>, params: TParams, options?: PaginationOptions): Promise<TItem[]>;
49
+ /**
50
+ * Async generator yielding whole page responses one by one.
51
+ */
52
+ export declare function iteratePages<TParams extends Record<string, unknown>, TResponse>(fetchPage: (params: TParams & {
53
+ page: number;
54
+ limit?: number;
55
+ }) => Promise<TResponse>, extractPagination: (response: TResponse) => {
56
+ totalPages: number;
57
+ currentPage: number;
58
+ }, params: TParams, options?: PaginationOptions): AsyncGenerator<TResponse, void, undefined>;
59
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/core/pagination.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IACjC,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,KAAK;IACpC,KAAK,EAAE,KAAK,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,YAAY,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAC5F,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EACrF,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,cAAc,CAAC,KAAK,CAAC,EACvD,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,iBAAsB,GAC7B,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAuCxC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EACzF,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EACrF,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,cAAc,CAAC,KAAK,CAAC,EACvD,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,KAAK,EAAE,CAAC,CAMlB;AAED;;GAEG;AACH,wBAAuB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EACrF,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EACrF,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACvF,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,iBAAsB,GAC7B,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CA0B5C"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Generic pagination and async iterator utilities for Last.fm API endpoints.
3
+ */
4
+ /**
5
+ * Async generator yielding items across all paginated responses one by one.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * for await (const track of iterateItems(
10
+ * (p) => client.user.getRecentTracks(p),
11
+ * (res) => ({
12
+ * items: res.recenttracks?.track ?? [],
13
+ * totalPages: Number(res.recenttracks?.['@attr']?.totalPages ?? 1),
14
+ * currentPage: Number(res.recenttracks?.['@attr']?.page ?? 1)
15
+ * }),
16
+ * { user: 'ansango', limit: 200 },
17
+ * { maxItems: 1000 }
18
+ * )) {
19
+ * console.log(track.name);
20
+ * }
21
+ * ```
22
+ */
23
+ export async function* iterateItems(fetchPage, extract, params, options = {}) {
24
+ const startPage = options.startPage ?? 1;
25
+ const maxPages = options.maxPages ?? Number.POSITIVE_INFINITY;
26
+ const maxItems = options.maxItems ?? Number.POSITIVE_INFINITY;
27
+ const delayMs = options.delayMs ?? 0;
28
+ let currentPage = startPage;
29
+ let pagesFetched = 0;
30
+ let itemsYielded = 0;
31
+ while (pagesFetched < maxPages && itemsYielded < maxItems) {
32
+ const response = await fetchPage({
33
+ ...params,
34
+ page: currentPage,
35
+ });
36
+ pagesFetched++;
37
+ const { items, totalPages } = extract(response);
38
+ const itemList = Array.isArray(items) ? items : [items];
39
+ for (const item of itemList) {
40
+ if (!item)
41
+ continue;
42
+ yield item;
43
+ itemsYielded++;
44
+ if (itemsYielded >= maxItems) {
45
+ return;
46
+ }
47
+ }
48
+ if (currentPage >= totalPages || items.length === 0) {
49
+ break;
50
+ }
51
+ currentPage++;
52
+ if (delayMs > 0) {
53
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Collects all items from paginated requests into an in-memory array.
59
+ */
60
+ export async function collectAll(fetchPage, extract, params, options = {}) {
61
+ const collected = [];
62
+ for await (const item of iterateItems(fetchPage, extract, params, options)) {
63
+ collected.push(item);
64
+ }
65
+ return collected;
66
+ }
67
+ /**
68
+ * Async generator yielding whole page responses one by one.
69
+ */
70
+ export async function* iteratePages(fetchPage, extractPagination, params, options = {}) {
71
+ const startPage = options.startPage ?? 1;
72
+ const maxPages = options.maxPages ?? Number.POSITIVE_INFINITY;
73
+ const delayMs = options.delayMs ?? 0;
74
+ let currentPage = startPage;
75
+ let pagesFetched = 0;
76
+ while (pagesFetched < maxPages) {
77
+ const response = await fetchPage({
78
+ ...params,
79
+ page: currentPage,
80
+ });
81
+ pagesFetched++;
82
+ yield response;
83
+ const { totalPages } = extractPagination(response);
84
+ if (currentPage >= totalPages) {
85
+ break;
86
+ }
87
+ currentPage++;
88
+ if (delayMs > 0) {
89
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
90
+ }
91
+ }
92
+ }
93
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/core/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"album.schemas.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/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
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';
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 './base/index.js';
3
3
  const albumTagSchema = z.object({
4
4
  tag: z
5
5
  .union([
@@ -0,0 +1 @@
1
+ {"version":3,"file":"album.schemas.js","sourceRoot":"","sources":["../../../src/core/schemas/album.schemas.ts"],"names":[],"mappings":"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"}