@ansango/lastfm-api 3.4.0 → 3.6.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 (623) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +254 -21
  3. package/dist/cache/index.d.ts +7 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cache/index.js +7 -0
  6. package/dist/cache/index.js.map +1 -0
  7. package/dist/cache/interface.d.ts +57 -0
  8. package/dist/cache/interface.d.ts.map +1 -0
  9. package/dist/cache/interface.js +5 -0
  10. package/dist/cache/interface.js.map +1 -0
  11. package/dist/cache/manager.d.ts +19 -0
  12. package/dist/cache/manager.d.ts.map +1 -0
  13. package/dist/cache/manager.js +63 -0
  14. package/dist/cache/manager.js.map +1 -0
  15. package/dist/cache/schemas.d.ts +15 -0
  16. package/dist/cache/schemas.d.ts.map +1 -0
  17. package/dist/cache/schemas.js +13 -0
  18. package/dist/cache/schemas.js.map +1 -0
  19. package/dist/cache/service.d.ts +13 -0
  20. package/dist/cache/service.d.ts.map +1 -0
  21. package/dist/cache/service.js +12 -0
  22. package/dist/cache/service.js.map +1 -0
  23. package/dist/cache/stores/memory.d.ts +33 -0
  24. package/dist/cache/stores/memory.d.ts.map +1 -0
  25. package/dist/cache/stores/memory.js +85 -0
  26. package/dist/cache/stores/memory.js.map +1 -0
  27. package/dist/cache/stores/storage.d.ts +42 -0
  28. package/dist/cache/stores/storage.d.ts.map +1 -0
  29. package/dist/cache/stores/storage.js +109 -0
  30. package/dist/cache/stores/storage.js.map +1 -0
  31. package/dist/client.d.ts +12 -1
  32. package/dist/client.d.ts.map +1 -1
  33. package/dist/client.js +21 -1
  34. package/dist/client.js.map +1 -1
  35. package/dist/config.d.ts +4 -0
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/config.js +13 -0
  38. package/dist/config.js.map +1 -1
  39. package/dist/core/canonical-methods.d.ts +25 -0
  40. package/dist/core/canonical-methods.d.ts.map +1 -0
  41. package/dist/core/canonical-methods.js +88 -0
  42. package/dist/core/canonical-methods.js.map +1 -0
  43. package/dist/core/client.d.ts +33 -0
  44. package/dist/core/client.d.ts.map +1 -0
  45. package/dist/core/client.js +48 -0
  46. package/dist/core/client.js.map +1 -0
  47. package/dist/core/index.d.ts +6 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +6 -0
  50. package/dist/core/index.js.map +1 -0
  51. package/dist/core/pagination.d.ts +59 -0
  52. package/dist/core/pagination.d.ts.map +1 -0
  53. package/dist/core/pagination.js +93 -0
  54. package/dist/core/pagination.js.map +1 -0
  55. package/dist/core/schemas/album.schemas.d.ts.map +1 -0
  56. package/dist/{services → core/schemas}/album.schemas.js +1 -1
  57. package/dist/core/schemas/album.schemas.js.map +1 -0
  58. package/dist/core/schemas/artist.schemas.d.ts.map +1 -0
  59. package/dist/{services → core/schemas}/artist.schemas.js +1 -1
  60. package/dist/core/schemas/artist.schemas.js.map +1 -0
  61. package/dist/core/schemas/auth.schemas.d.ts.map +1 -0
  62. package/dist/core/schemas/auth.schemas.js.map +1 -0
  63. package/dist/core/schemas/base/base.entities.schemas.d.ts.map +1 -0
  64. package/dist/core/schemas/base/base.entities.schemas.js.map +1 -0
  65. package/dist/core/schemas/base/base.entity-names.schemas.d.ts.map +1 -0
  66. package/dist/core/schemas/base/base.entity-names.schemas.js.map +1 -0
  67. package/dist/core/schemas/base/base.metadata.schemas.d.ts.map +1 -0
  68. package/dist/core/schemas/base/base.metadata.schemas.js.map +1 -0
  69. package/dist/core/schemas/base/base.pagination.schemas.d.ts.map +1 -0
  70. package/dist/core/schemas/base/base.pagination.schemas.js.map +1 -0
  71. package/dist/core/schemas/base/base.primitives.schemas.d.ts.map +1 -0
  72. package/dist/core/schemas/base/base.primitives.schemas.js.map +1 -0
  73. package/dist/core/schemas/base/index.d.ts.map +1 -0
  74. package/dist/core/schemas/base/index.js.map +1 -0
  75. package/dist/core/schemas/chart.schemas.d.ts.map +1 -0
  76. package/dist/{services → core/schemas}/chart.schemas.js +1 -1
  77. package/dist/core/schemas/chart.schemas.js.map +1 -0
  78. package/dist/core/schemas/geo.schemas.d.ts.map +1 -0
  79. package/dist/{services → core/schemas}/geo.schemas.js +1 -1
  80. package/dist/core/schemas/geo.schemas.js.map +1 -0
  81. package/dist/core/schemas/index.d.ts +11 -0
  82. package/dist/core/schemas/index.d.ts.map +1 -0
  83. package/dist/core/schemas/index.js +11 -0
  84. package/dist/core/schemas/index.js.map +1 -0
  85. package/dist/core/schemas/library.schemas.d.ts.map +1 -0
  86. package/dist/{services → core/schemas}/library.schemas.js +1 -1
  87. package/dist/core/schemas/library.schemas.js.map +1 -0
  88. package/dist/core/schemas/tag.schemas.d.ts.map +1 -0
  89. package/dist/{services → core/schemas}/tag.schemas.js +1 -1
  90. package/dist/core/schemas/tag.schemas.js.map +1 -0
  91. package/dist/core/schemas/track.schemas.d.ts.map +1 -0
  92. package/dist/{services → core/schemas}/track.schemas.js +1 -1
  93. package/dist/core/schemas/track.schemas.js.map +1 -0
  94. package/dist/core/schemas/user.schemas.d.ts.map +1 -0
  95. package/dist/{services → core/schemas}/user.schemas.js +1 -1
  96. package/dist/core/schemas/user.schemas.js.map +1 -0
  97. package/dist/{services → core/services}/album.d.ts +2 -2
  98. package/dist/core/services/album.d.ts.map +1 -0
  99. package/dist/{services → core/services}/album.js +5 -5
  100. package/dist/core/services/album.js.map +1 -0
  101. package/dist/{services → core/services}/artist.d.ts +2 -2
  102. package/dist/core/services/artist.d.ts.map +1 -0
  103. package/dist/{services → core/services}/artist.js +9 -9
  104. package/dist/core/services/artist.js.map +1 -0
  105. package/dist/{services → core/services}/auth.d.ts +2 -2
  106. package/dist/core/services/auth.d.ts.map +1 -0
  107. package/dist/{services → core/services}/auth.js +1 -1
  108. package/dist/core/services/auth.js.map +1 -0
  109. package/dist/{services → core/services}/chart.d.ts +2 -2
  110. package/dist/core/services/chart.d.ts.map +1 -0
  111. package/dist/core/services/chart.js +9 -0
  112. package/dist/core/services/chart.js.map +1 -0
  113. package/dist/{services → core/services}/geo.d.ts +2 -2
  114. package/dist/core/services/geo.d.ts.map +1 -0
  115. package/dist/core/services/geo.js +8 -0
  116. package/dist/core/services/geo.js.map +1 -0
  117. package/dist/core/services/index.d.ts +10 -0
  118. package/dist/core/services/index.d.ts.map +1 -0
  119. package/dist/core/services/index.js +10 -0
  120. package/dist/core/services/index.js.map +1 -0
  121. package/dist/{services → core/services}/library.d.ts +2 -2
  122. package/dist/core/services/library.d.ts.map +1 -0
  123. package/dist/core/services/library.js +7 -0
  124. package/dist/core/services/library.js.map +1 -0
  125. package/dist/{services → core/services}/tag.d.ts +2 -2
  126. package/dist/core/services/tag.d.ts.map +1 -0
  127. package/dist/{services → core/services}/tag.js +8 -8
  128. package/dist/core/services/tag.js.map +1 -0
  129. package/dist/{services → core/services}/track.d.ts +2 -2
  130. package/dist/core/services/track.d.ts.map +1 -0
  131. package/dist/{services → core/services}/track.js +7 -7
  132. package/dist/core/services/track.js.map +1 -0
  133. package/dist/{services → core/services}/track.utils.d.ts +2 -2
  134. package/dist/core/services/track.utils.d.ts.map +1 -0
  135. package/dist/core/services/track.utils.js.map +1 -0
  136. package/dist/{services → core/services}/user.d.ts +2 -2
  137. package/dist/core/services/user.d.ts.map +1 -0
  138. package/dist/core/services/user.js +19 -0
  139. package/dist/core/services/user.js.map +1 -0
  140. package/dist/entrypoints/album.d.ts +3 -3
  141. package/dist/entrypoints/album.d.ts.map +1 -1
  142. package/dist/entrypoints/album.js +2 -2
  143. package/dist/entrypoints/album.js.map +1 -1
  144. package/dist/entrypoints/album.schemas.d.ts +2 -1
  145. package/dist/entrypoints/album.schemas.d.ts.map +1 -1
  146. package/dist/entrypoints/album.schemas.js +1 -2
  147. package/dist/entrypoints/album.schemas.js.map +1 -1
  148. package/dist/entrypoints/artist.d.ts +3 -3
  149. package/dist/entrypoints/artist.d.ts.map +1 -1
  150. package/dist/entrypoints/artist.js +2 -2
  151. package/dist/entrypoints/artist.js.map +1 -1
  152. package/dist/entrypoints/artist.schemas.d.ts +2 -1
  153. package/dist/entrypoints/artist.schemas.d.ts.map +1 -1
  154. package/dist/entrypoints/artist.schemas.js +1 -2
  155. package/dist/entrypoints/artist.schemas.js.map +1 -1
  156. package/dist/entrypoints/auth.d.ts +3 -3
  157. package/dist/entrypoints/auth.d.ts.map +1 -1
  158. package/dist/entrypoints/auth.js +2 -2
  159. package/dist/entrypoints/auth.js.map +1 -1
  160. package/dist/entrypoints/auth.schemas.d.ts +2 -1
  161. package/dist/entrypoints/auth.schemas.d.ts.map +1 -1
  162. package/dist/entrypoints/auth.schemas.js +1 -2
  163. package/dist/entrypoints/auth.schemas.js.map +1 -1
  164. package/dist/entrypoints/base.schemas.d.ts +2 -1
  165. package/dist/entrypoints/base.schemas.d.ts.map +1 -1
  166. package/dist/entrypoints/base.schemas.js +1 -2
  167. package/dist/entrypoints/base.schemas.js.map +1 -1
  168. package/dist/entrypoints/cache.d.ts +2 -0
  169. package/dist/entrypoints/cache.d.ts.map +1 -0
  170. package/dist/entrypoints/cache.js +2 -0
  171. package/dist/entrypoints/cache.js.map +1 -0
  172. package/dist/entrypoints/cache.schemas.d.ts +2 -0
  173. package/dist/entrypoints/cache.schemas.d.ts.map +1 -0
  174. package/dist/entrypoints/cache.schemas.js +2 -0
  175. package/dist/entrypoints/cache.schemas.js.map +1 -0
  176. package/dist/entrypoints/chart.d.ts +3 -3
  177. package/dist/entrypoints/chart.d.ts.map +1 -1
  178. package/dist/entrypoints/chart.js +2 -2
  179. package/dist/entrypoints/chart.js.map +1 -1
  180. package/dist/entrypoints/chart.schemas.d.ts +2 -1
  181. package/dist/entrypoints/chart.schemas.d.ts.map +1 -1
  182. package/dist/entrypoints/chart.schemas.js +1 -2
  183. package/dist/entrypoints/chart.schemas.js.map +1 -1
  184. package/dist/entrypoints/core.d.ts +5 -0
  185. package/dist/entrypoints/core.d.ts.map +1 -0
  186. package/dist/entrypoints/core.js +5 -0
  187. package/dist/entrypoints/core.js.map +1 -0
  188. package/dist/entrypoints/core.schemas.d.ts +3 -0
  189. package/dist/entrypoints/core.schemas.d.ts.map +1 -0
  190. package/dist/entrypoints/core.schemas.js +2 -0
  191. package/dist/entrypoints/core.schemas.js.map +1 -0
  192. package/dist/entrypoints/exporter.d.ts +3 -0
  193. package/dist/entrypoints/exporter.d.ts.map +1 -0
  194. package/dist/entrypoints/exporter.js +3 -0
  195. package/dist/entrypoints/exporter.js.map +1 -0
  196. package/dist/entrypoints/exporter.schemas.d.ts +3 -0
  197. package/dist/entrypoints/exporter.schemas.d.ts.map +1 -0
  198. package/dist/entrypoints/exporter.schemas.js +2 -0
  199. package/dist/entrypoints/exporter.schemas.js.map +1 -0
  200. package/dist/entrypoints/geo.d.ts +3 -3
  201. package/dist/entrypoints/geo.d.ts.map +1 -1
  202. package/dist/entrypoints/geo.js +2 -2
  203. package/dist/entrypoints/geo.js.map +1 -1
  204. package/dist/entrypoints/geo.schemas.d.ts +2 -1
  205. package/dist/entrypoints/geo.schemas.d.ts.map +1 -1
  206. package/dist/entrypoints/geo.schemas.js +1 -2
  207. package/dist/entrypoints/geo.schemas.js.map +1 -1
  208. package/dist/entrypoints/insights.d.ts +3 -3
  209. package/dist/entrypoints/insights.d.ts.map +1 -1
  210. package/dist/entrypoints/insights.js +2 -2
  211. package/dist/entrypoints/insights.js.map +1 -1
  212. package/dist/entrypoints/insights.schemas.d.ts +2 -1
  213. package/dist/entrypoints/insights.schemas.d.ts.map +1 -1
  214. package/dist/entrypoints/insights.schemas.js +1 -2
  215. package/dist/entrypoints/insights.schemas.js.map +1 -1
  216. package/dist/entrypoints/library.d.ts +3 -3
  217. package/dist/entrypoints/library.d.ts.map +1 -1
  218. package/dist/entrypoints/library.js +2 -2
  219. package/dist/entrypoints/library.js.map +1 -1
  220. package/dist/entrypoints/library.schemas.d.ts +2 -1
  221. package/dist/entrypoints/library.schemas.d.ts.map +1 -1
  222. package/dist/entrypoints/library.schemas.js +1 -2
  223. package/dist/entrypoints/library.schemas.js.map +1 -1
  224. package/dist/entrypoints/playlists.d.ts +3 -0
  225. package/dist/entrypoints/playlists.d.ts.map +1 -0
  226. package/dist/entrypoints/playlists.js +3 -0
  227. package/dist/entrypoints/playlists.js.map +1 -0
  228. package/dist/entrypoints/playlists.schemas.d.ts +3 -0
  229. package/dist/entrypoints/playlists.schemas.d.ts.map +1 -0
  230. package/dist/entrypoints/playlists.schemas.js +2 -0
  231. package/dist/entrypoints/playlists.schemas.js.map +1 -0
  232. package/dist/entrypoints/reports.d.ts +4 -0
  233. package/dist/entrypoints/reports.d.ts.map +1 -0
  234. package/dist/entrypoints/reports.js +3 -0
  235. package/dist/entrypoints/reports.js.map +1 -0
  236. package/dist/entrypoints/reports.schemas.d.ts +3 -0
  237. package/dist/entrypoints/reports.schemas.d.ts.map +1 -0
  238. package/dist/entrypoints/reports.schemas.js +2 -0
  239. package/dist/entrypoints/reports.schemas.js.map +1 -0
  240. package/dist/entrypoints/tag.d.ts +3 -3
  241. package/dist/entrypoints/tag.d.ts.map +1 -1
  242. package/dist/entrypoints/tag.js +2 -2
  243. package/dist/entrypoints/tag.js.map +1 -1
  244. package/dist/entrypoints/tag.schemas.d.ts +2 -1
  245. package/dist/entrypoints/tag.schemas.d.ts.map +1 -1
  246. package/dist/entrypoints/tag.schemas.js +1 -2
  247. package/dist/entrypoints/tag.schemas.js.map +1 -1
  248. package/dist/entrypoints/track.d.ts +3 -3
  249. package/dist/entrypoints/track.d.ts.map +1 -1
  250. package/dist/entrypoints/track.js +2 -2
  251. package/dist/entrypoints/track.js.map +1 -1
  252. package/dist/entrypoints/track.schemas.d.ts +2 -1
  253. package/dist/entrypoints/track.schemas.d.ts.map +1 -1
  254. package/dist/entrypoints/track.schemas.js +1 -2
  255. package/dist/entrypoints/track.schemas.js.map +1 -1
  256. package/dist/entrypoints/user.d.ts +3 -3
  257. package/dist/entrypoints/user.d.ts.map +1 -1
  258. package/dist/entrypoints/user.js +2 -2
  259. package/dist/entrypoints/user.js.map +1 -1
  260. package/dist/entrypoints/user.schemas.d.ts +2 -1
  261. package/dist/entrypoints/user.schemas.d.ts.map +1 -1
  262. package/dist/entrypoints/user.schemas.js +1 -2
  263. package/dist/entrypoints/user.schemas.js.map +1 -1
  264. package/dist/entrypoints/watcher.d.ts +2 -0
  265. package/dist/entrypoints/watcher.d.ts.map +1 -0
  266. package/dist/entrypoints/watcher.js +2 -0
  267. package/dist/entrypoints/watcher.js.map +1 -0
  268. package/dist/entrypoints/watcher.schemas.d.ts +2 -0
  269. package/dist/entrypoints/watcher.schemas.d.ts.map +1 -0
  270. package/dist/entrypoints/watcher.schemas.js +2 -0
  271. package/dist/entrypoints/watcher.schemas.js.map +1 -0
  272. package/dist/exporter/engines/library.d.ts +4 -0
  273. package/dist/exporter/engines/library.d.ts.map +1 -0
  274. package/dist/exporter/engines/library.js +34 -0
  275. package/dist/exporter/engines/library.js.map +1 -0
  276. package/dist/exporter/engines/loved.d.ts +4 -0
  277. package/dist/exporter/engines/loved.d.ts.map +1 -0
  278. package/dist/exporter/engines/loved.js +35 -0
  279. package/dist/exporter/engines/loved.js.map +1 -0
  280. package/dist/exporter/engines/scrobbles.d.ts +4 -0
  281. package/dist/exporter/engines/scrobbles.d.ts.map +1 -0
  282. package/dist/exporter/engines/scrobbles.js +74 -0
  283. package/dist/exporter/engines/scrobbles.js.map +1 -0
  284. package/dist/exporter/formats/csv.d.ts +5 -0
  285. package/dist/exporter/formats/csv.d.ts.map +1 -0
  286. package/dist/exporter/formats/csv.js +35 -0
  287. package/dist/exporter/formats/csv.js.map +1 -0
  288. package/dist/exporter/formats/jsonl.d.ts +2 -0
  289. package/dist/exporter/formats/jsonl.d.ts.map +1 -0
  290. package/dist/exporter/formats/jsonl.js +4 -0
  291. package/dist/exporter/formats/jsonl.js.map +1 -0
  292. package/dist/exporter/formats/listenbrainz.d.ts +3 -0
  293. package/dist/exporter/formats/listenbrainz.d.ts.map +1 -0
  294. package/dist/exporter/formats/listenbrainz.js +19 -0
  295. package/dist/exporter/formats/listenbrainz.js.map +1 -0
  296. package/dist/exporter/index.d.ts +6 -0
  297. package/dist/exporter/index.d.ts.map +1 -0
  298. package/dist/exporter/index.js +6 -0
  299. package/dist/exporter/index.js.map +1 -0
  300. package/dist/exporter/schemas.d.ts +291 -0
  301. package/dist/exporter/schemas.d.ts.map +1 -0
  302. package/dist/exporter/schemas.js +81 -0
  303. package/dist/exporter/schemas.js.map +1 -0
  304. package/dist/exporter/service.d.ts +30 -0
  305. package/dist/exporter/service.d.ts.map +1 -0
  306. package/dist/exporter/service.js +11 -0
  307. package/dist/exporter/service.js.map +1 -0
  308. package/dist/index.d.ts +18 -24
  309. package/dist/index.d.ts.map +1 -1
  310. package/dist/index.js +21 -16
  311. package/dist/index.js.map +1 -1
  312. package/dist/insights/algorithms/album-habits.d.ts +7 -0
  313. package/dist/insights/algorithms/album-habits.d.ts.map +1 -0
  314. package/dist/insights/algorithms/album-habits.js +154 -0
  315. package/dist/insights/algorithms/album-habits.js.map +1 -0
  316. package/dist/{services/insights → insights/algorithms}/binges.d.ts +1 -1
  317. package/dist/insights/algorithms/binges.d.ts.map +1 -0
  318. package/dist/{services/insights → insights/algorithms}/binges.js +2 -2
  319. package/dist/insights/algorithms/binges.js.map +1 -0
  320. package/dist/{services/insights → insights/algorithms}/compare.d.ts +1 -1
  321. package/dist/insights/algorithms/compare.d.ts.map +1 -0
  322. package/dist/{services/insights → insights/algorithms}/compare.js +3 -3
  323. package/dist/insights/algorithms/compare.js.map +1 -0
  324. package/dist/insights/algorithms/decay.d.ts +11 -0
  325. package/dist/insights/algorithms/decay.d.ts.map +1 -0
  326. package/dist/insights/algorithms/decay.js +154 -0
  327. package/dist/insights/algorithms/decay.js.map +1 -0
  328. package/dist/{services/insights → insights/algorithms}/discoveries.d.ts +1 -1
  329. package/dist/insights/algorithms/discoveries.d.ts.map +1 -0
  330. package/dist/{services/insights → insights/algorithms}/discoveries.js +2 -2
  331. package/dist/insights/algorithms/discoveries.js.map +1 -0
  332. package/dist/insights/algorithms/genres.d.ts +11 -0
  333. package/dist/insights/algorithms/genres.d.ts.map +1 -0
  334. package/dist/insights/algorithms/genres.js +201 -0
  335. package/dist/insights/algorithms/genres.js.map +1 -0
  336. package/dist/insights/algorithms/group.d.ts +8 -0
  337. package/dist/insights/algorithms/group.d.ts.map +1 -0
  338. package/dist/insights/algorithms/group.js +127 -0
  339. package/dist/insights/algorithms/group.js.map +1 -0
  340. package/dist/{services/insights → insights/algorithms}/hours.d.ts +1 -1
  341. package/dist/insights/algorithms/hours.d.ts.map +1 -0
  342. package/dist/{services/insights → insights/algorithms}/hours.js +2 -2
  343. package/dist/insights/algorithms/hours.js.map +1 -0
  344. package/dist/{services/insights → insights/algorithms}/mood.d.ts +1 -1
  345. package/dist/insights/algorithms/mood.d.ts.map +1 -0
  346. package/dist/{services/insights → insights/algorithms}/mood.js +4 -4
  347. package/dist/insights/algorithms/mood.js.map +1 -0
  348. package/dist/{services/insights → insights/algorithms}/now-playing.d.ts +1 -1
  349. package/dist/{services/insights → insights/algorithms}/now-playing.d.ts.map +1 -1
  350. package/dist/{services/insights → insights/algorithms}/now-playing.js +2 -2
  351. package/dist/insights/algorithms/now-playing.js.map +1 -0
  352. package/dist/insights/algorithms/obscurity.d.ts +27 -0
  353. package/dist/insights/algorithms/obscurity.d.ts.map +1 -0
  354. package/dist/insights/algorithms/obscurity.js +158 -0
  355. package/dist/insights/algorithms/obscurity.js.map +1 -0
  356. package/dist/{services/insights → insights/algorithms}/personality.d.ts +1 -1
  357. package/dist/insights/algorithms/personality.d.ts.map +1 -0
  358. package/dist/{services/insights → insights/algorithms}/personality.js +1 -1
  359. package/dist/insights/algorithms/personality.js.map +1 -0
  360. package/dist/insights/algorithms/recommendations.d.ts +11 -0
  361. package/dist/insights/algorithms/recommendations.d.ts.map +1 -0
  362. package/dist/insights/algorithms/recommendations.js +121 -0
  363. package/dist/insights/algorithms/recommendations.js.map +1 -0
  364. package/dist/insights/algorithms/streaks.d.ts +11 -0
  365. package/dist/insights/algorithms/streaks.d.ts.map +1 -0
  366. package/dist/insights/algorithms/streaks.js +178 -0
  367. package/dist/insights/algorithms/streaks.js.map +1 -0
  368. package/dist/{services/insights → insights/algorithms}/summary.d.ts +1 -1
  369. package/dist/insights/algorithms/summary.d.ts.map +1 -0
  370. package/dist/{services/insights → insights/algorithms}/summary.js +3 -3
  371. package/dist/insights/algorithms/summary.js.map +1 -0
  372. package/dist/{services/insights → insights/algorithms}/trends.d.ts +1 -1
  373. package/dist/insights/algorithms/trends.d.ts.map +1 -0
  374. package/dist/{services/insights → insights/algorithms}/trends.js +3 -3
  375. package/dist/insights/algorithms/trends.js.map +1 -0
  376. package/dist/insights/index.d.ts +3 -0
  377. package/dist/insights/index.d.ts.map +1 -0
  378. package/dist/insights/index.js +3 -0
  379. package/dist/insights/index.js.map +1 -0
  380. package/dist/insights/lib/binges.d.ts.map +1 -0
  381. package/dist/insights/lib/binges.js.map +1 -0
  382. package/dist/insights/lib/compare.d.ts.map +1 -0
  383. package/dist/insights/lib/compare.js.map +1 -0
  384. package/dist/insights/lib/discoveries.d.ts.map +1 -0
  385. package/dist/insights/lib/discoveries.js.map +1 -0
  386. package/dist/insights/lib/diversity.d.ts.map +1 -0
  387. package/dist/insights/lib/diversity.js.map +1 -0
  388. package/dist/insights/lib/hours.d.ts.map +1 -0
  389. package/dist/insights/lib/hours.js.map +1 -0
  390. package/dist/insights/lib/mood.d.ts.map +1 -0
  391. package/dist/insights/lib/mood.js.map +1 -0
  392. package/dist/{services/insights → insights}/lib/periods.d.ts +1 -1
  393. package/dist/insights/lib/periods.d.ts.map +1 -0
  394. package/dist/insights/lib/periods.js.map +1 -0
  395. package/dist/insights/lib/personality.d.ts.map +1 -0
  396. package/dist/insights/lib/personality.js.map +1 -0
  397. package/dist/insights/lib/trends.d.ts.map +1 -0
  398. package/dist/insights/lib/trends.js.map +1 -0
  399. package/dist/insights/schemas.d.ts +1415 -0
  400. package/dist/insights/schemas.d.ts.map +1 -0
  401. package/dist/{services/insights.schemas.js → insights/schemas.js} +291 -2
  402. package/dist/insights/schemas.js.map +1 -0
  403. package/dist/insights/service.d.ts +191 -0
  404. package/dist/insights/service.d.ts.map +1 -0
  405. package/dist/insights/service.js +44 -0
  406. package/dist/insights/service.js.map +1 -0
  407. package/dist/playlists/formatters/csv.d.ts +3 -0
  408. package/dist/playlists/formatters/csv.d.ts.map +1 -0
  409. package/dist/playlists/formatters/csv.js +18 -0
  410. package/dist/playlists/formatters/csv.js.map +1 -0
  411. package/dist/playlists/formatters/m3u.d.ts +3 -0
  412. package/dist/playlists/formatters/m3u.d.ts.map +1 -0
  413. package/dist/playlists/formatters/m3u.js +10 -0
  414. package/dist/playlists/formatters/m3u.js.map +1 -0
  415. package/dist/playlists/formatters/spotifymatch.d.ts +3 -0
  416. package/dist/playlists/formatters/spotifymatch.d.ts.map +1 -0
  417. package/dist/playlists/formatters/spotifymatch.js +4 -0
  418. package/dist/playlists/formatters/spotifymatch.js.map +1 -0
  419. package/dist/playlists/generators/generator.d.ts +4 -0
  420. package/dist/playlists/generators/generator.d.ts.map +1 -0
  421. package/dist/playlists/generators/generator.js +158 -0
  422. package/dist/playlists/generators/generator.js.map +1 -0
  423. package/dist/playlists/index.d.ts +6 -0
  424. package/dist/playlists/index.d.ts.map +1 -0
  425. package/dist/playlists/index.js +6 -0
  426. package/dist/playlists/index.js.map +1 -0
  427. package/dist/playlists/schemas.d.ts +150 -0
  428. package/dist/playlists/schemas.d.ts.map +1 -0
  429. package/dist/playlists/schemas.js +53 -0
  430. package/dist/playlists/schemas.js.map +1 -0
  431. package/dist/playlists/service.d.ts +28 -0
  432. package/dist/playlists/service.d.ts.map +1 -0
  433. package/dist/playlists/service.js +27 -0
  434. package/dist/playlists/service.js.map +1 -0
  435. package/dist/reports/generators/digest.d.ts +4 -0
  436. package/dist/reports/generators/digest.d.ts.map +1 -0
  437. package/dist/reports/generators/digest.js +95 -0
  438. package/dist/reports/generators/digest.js.map +1 -0
  439. package/dist/reports/generators/milestones.d.ts +4 -0
  440. package/dist/reports/generators/milestones.d.ts.map +1 -0
  441. package/dist/reports/generators/milestones.js +59 -0
  442. package/dist/reports/generators/milestones.js.map +1 -0
  443. package/dist/reports/generators/wrapped.d.ts +4 -0
  444. package/dist/reports/generators/wrapped.d.ts.map +1 -0
  445. package/dist/reports/generators/wrapped.js +179 -0
  446. package/dist/reports/generators/wrapped.js.map +1 -0
  447. package/dist/reports/index.d.ts +3 -0
  448. package/dist/reports/index.d.ts.map +1 -0
  449. package/dist/reports/index.js +3 -0
  450. package/dist/reports/index.js.map +1 -0
  451. package/dist/reports/schemas.d.ts +244 -0
  452. package/dist/reports/schemas.d.ts.map +1 -0
  453. package/dist/reports/schemas.js +92 -0
  454. package/dist/reports/schemas.js.map +1 -0
  455. package/dist/reports/service.d.ts +30 -0
  456. package/dist/reports/service.d.ts.map +1 -0
  457. package/dist/reports/service.js +11 -0
  458. package/dist/reports/service.js.map +1 -0
  459. package/dist/utils.d.ts +3 -2
  460. package/dist/utils.d.ts.map +1 -1
  461. package/dist/utils.js +19 -2
  462. package/dist/utils.js.map +1 -1
  463. package/dist/watcher/emitter.d.ts +14 -0
  464. package/dist/watcher/emitter.d.ts.map +1 -0
  465. package/dist/watcher/emitter.js +72 -0
  466. package/dist/watcher/emitter.js.map +1 -0
  467. package/dist/watcher/index.d.ts +5 -0
  468. package/dist/watcher/index.d.ts.map +1 -0
  469. package/dist/watcher/index.js +5 -0
  470. package/dist/watcher/index.js.map +1 -0
  471. package/dist/watcher/schemas.d.ts +39 -0
  472. package/dist/watcher/schemas.d.ts.map +1 -0
  473. package/dist/watcher/schemas.js +33 -0
  474. package/dist/watcher/schemas.js.map +1 -0
  475. package/dist/watcher/service.d.ts +15 -0
  476. package/dist/watcher/service.d.ts.map +1 -0
  477. package/dist/watcher/service.js +8 -0
  478. package/dist/watcher/service.js.map +1 -0
  479. package/dist/watcher/watcher.d.ts +35 -0
  480. package/dist/watcher/watcher.d.ts.map +1 -0
  481. package/dist/watcher/watcher.js +196 -0
  482. package/dist/watcher/watcher.js.map +1 -0
  483. package/package.json +49 -3
  484. package/dist/services/album.d.ts.map +0 -1
  485. package/dist/services/album.js.map +0 -1
  486. package/dist/services/album.schemas.d.ts.map +0 -1
  487. package/dist/services/album.schemas.js.map +0 -1
  488. package/dist/services/artist.d.ts.map +0 -1
  489. package/dist/services/artist.js.map +0 -1
  490. package/dist/services/artist.schemas.d.ts.map +0 -1
  491. package/dist/services/artist.schemas.js.map +0 -1
  492. package/dist/services/auth.d.ts.map +0 -1
  493. package/dist/services/auth.js.map +0 -1
  494. package/dist/services/auth.schemas.d.ts.map +0 -1
  495. package/dist/services/auth.schemas.js.map +0 -1
  496. package/dist/services/chart.d.ts.map +0 -1
  497. package/dist/services/chart.js +0 -9
  498. package/dist/services/chart.js.map +0 -1
  499. package/dist/services/chart.schemas.d.ts.map +0 -1
  500. package/dist/services/chart.schemas.js.map +0 -1
  501. package/dist/services/geo.d.ts.map +0 -1
  502. package/dist/services/geo.js +0 -8
  503. package/dist/services/geo.js.map +0 -1
  504. package/dist/services/geo.schemas.d.ts.map +0 -1
  505. package/dist/services/geo.schemas.js.map +0 -1
  506. package/dist/services/index.d.ts +0 -22
  507. package/dist/services/index.d.ts.map +0 -1
  508. package/dist/services/index.js +0 -23
  509. package/dist/services/index.js.map +0 -1
  510. package/dist/services/insights/binges.d.ts.map +0 -1
  511. package/dist/services/insights/binges.js.map +0 -1
  512. package/dist/services/insights/compare.d.ts.map +0 -1
  513. package/dist/services/insights/compare.js.map +0 -1
  514. package/dist/services/insights/discoveries.d.ts.map +0 -1
  515. package/dist/services/insights/discoveries.js.map +0 -1
  516. package/dist/services/insights/hours.d.ts.map +0 -1
  517. package/dist/services/insights/hours.js.map +0 -1
  518. package/dist/services/insights/lib/binges.d.ts.map +0 -1
  519. package/dist/services/insights/lib/binges.js.map +0 -1
  520. package/dist/services/insights/lib/compare.d.ts.map +0 -1
  521. package/dist/services/insights/lib/compare.js.map +0 -1
  522. package/dist/services/insights/lib/discoveries.d.ts.map +0 -1
  523. package/dist/services/insights/lib/discoveries.js.map +0 -1
  524. package/dist/services/insights/lib/diversity.d.ts.map +0 -1
  525. package/dist/services/insights/lib/diversity.js.map +0 -1
  526. package/dist/services/insights/lib/hours.d.ts.map +0 -1
  527. package/dist/services/insights/lib/hours.js.map +0 -1
  528. package/dist/services/insights/lib/mood.d.ts.map +0 -1
  529. package/dist/services/insights/lib/mood.js.map +0 -1
  530. package/dist/services/insights/lib/periods.d.ts.map +0 -1
  531. package/dist/services/insights/lib/periods.js.map +0 -1
  532. package/dist/services/insights/lib/personality.d.ts.map +0 -1
  533. package/dist/services/insights/lib/personality.js.map +0 -1
  534. package/dist/services/insights/lib/trends.d.ts.map +0 -1
  535. package/dist/services/insights/lib/trends.js.map +0 -1
  536. package/dist/services/insights/mood.d.ts.map +0 -1
  537. package/dist/services/insights/mood.js.map +0 -1
  538. package/dist/services/insights/now-playing.js.map +0 -1
  539. package/dist/services/insights/personality.d.ts.map +0 -1
  540. package/dist/services/insights/personality.js.map +0 -1
  541. package/dist/services/insights/summary.d.ts.map +0 -1
  542. package/dist/services/insights/summary.js.map +0 -1
  543. package/dist/services/insights/trends.d.ts.map +0 -1
  544. package/dist/services/insights/trends.js.map +0 -1
  545. package/dist/services/insights.d.ts +0 -96
  546. package/dist/services/insights.d.ts.map +0 -1
  547. package/dist/services/insights.js +0 -26
  548. package/dist/services/insights.js.map +0 -1
  549. package/dist/services/insights.schemas.d.ts +0 -710
  550. package/dist/services/insights.schemas.d.ts.map +0 -1
  551. package/dist/services/insights.schemas.js.map +0 -1
  552. package/dist/services/library.d.ts.map +0 -1
  553. package/dist/services/library.js +0 -7
  554. package/dist/services/library.js.map +0 -1
  555. package/dist/services/library.schemas.d.ts.map +0 -1
  556. package/dist/services/library.schemas.js.map +0 -1
  557. package/dist/services/schemas/base.entities.schemas.d.ts.map +0 -1
  558. package/dist/services/schemas/base.entities.schemas.js.map +0 -1
  559. package/dist/services/schemas/base.entity-names.schemas.d.ts.map +0 -1
  560. package/dist/services/schemas/base.entity-names.schemas.js.map +0 -1
  561. package/dist/services/schemas/base.metadata.schemas.d.ts.map +0 -1
  562. package/dist/services/schemas/base.metadata.schemas.js.map +0 -1
  563. package/dist/services/schemas/base.pagination.schemas.d.ts.map +0 -1
  564. package/dist/services/schemas/base.pagination.schemas.js.map +0 -1
  565. package/dist/services/schemas/base.primitives.schemas.d.ts.map +0 -1
  566. package/dist/services/schemas/base.primitives.schemas.js.map +0 -1
  567. package/dist/services/schemas/index.d.ts.map +0 -1
  568. package/dist/services/schemas/index.js.map +0 -1
  569. package/dist/services/tag.d.ts.map +0 -1
  570. package/dist/services/tag.js.map +0 -1
  571. package/dist/services/tag.schemas.d.ts.map +0 -1
  572. package/dist/services/tag.schemas.js.map +0 -1
  573. package/dist/services/track.d.ts.map +0 -1
  574. package/dist/services/track.js.map +0 -1
  575. package/dist/services/track.schemas.d.ts.map +0 -1
  576. package/dist/services/track.schemas.js.map +0 -1
  577. package/dist/services/track.utils.d.ts.map +0 -1
  578. package/dist/services/track.utils.js.map +0 -1
  579. package/dist/services/user.d.ts.map +0 -1
  580. package/dist/services/user.js +0 -19
  581. package/dist/services/user.js.map +0 -1
  582. package/dist/services/user.schemas.d.ts.map +0 -1
  583. package/dist/services/user.schemas.js.map +0 -1
  584. /package/dist/{services → core/schemas}/album.schemas.d.ts +0 -0
  585. /package/dist/{services → core/schemas}/artist.schemas.d.ts +0 -0
  586. /package/dist/{services → core/schemas}/auth.schemas.d.ts +0 -0
  587. /package/dist/{services → core/schemas}/auth.schemas.js +0 -0
  588. /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.d.ts +0 -0
  589. /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.js +0 -0
  590. /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.d.ts +0 -0
  591. /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.js +0 -0
  592. /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.d.ts +0 -0
  593. /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.js +0 -0
  594. /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.d.ts +0 -0
  595. /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.js +0 -0
  596. /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.d.ts +0 -0
  597. /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.js +0 -0
  598. /package/dist/{services/schemas → core/schemas/base}/index.d.ts +0 -0
  599. /package/dist/{services/schemas → core/schemas/base}/index.js +0 -0
  600. /package/dist/{services → core/schemas}/chart.schemas.d.ts +0 -0
  601. /package/dist/{services → core/schemas}/geo.schemas.d.ts +0 -0
  602. /package/dist/{services → core/schemas}/library.schemas.d.ts +0 -0
  603. /package/dist/{services → core/schemas}/tag.schemas.d.ts +0 -0
  604. /package/dist/{services → core/schemas}/track.schemas.d.ts +0 -0
  605. /package/dist/{services → core/schemas}/user.schemas.d.ts +0 -0
  606. /package/dist/{services → core/services}/track.utils.js +0 -0
  607. /package/dist/{services/insights → insights}/lib/binges.d.ts +0 -0
  608. /package/dist/{services/insights → insights}/lib/binges.js +0 -0
  609. /package/dist/{services/insights → insights}/lib/compare.d.ts +0 -0
  610. /package/dist/{services/insights → insights}/lib/compare.js +0 -0
  611. /package/dist/{services/insights → insights}/lib/discoveries.d.ts +0 -0
  612. /package/dist/{services/insights → insights}/lib/discoveries.js +0 -0
  613. /package/dist/{services/insights → insights}/lib/diversity.d.ts +0 -0
  614. /package/dist/{services/insights → insights}/lib/diversity.js +0 -0
  615. /package/dist/{services/insights → insights}/lib/hours.d.ts +0 -0
  616. /package/dist/{services/insights → insights}/lib/hours.js +0 -0
  617. /package/dist/{services/insights → insights}/lib/mood.d.ts +0 -0
  618. /package/dist/{services/insights → insights}/lib/mood.js +0 -0
  619. /package/dist/{services/insights → insights}/lib/periods.js +0 -0
  620. /package/dist/{services/insights → insights}/lib/personality.d.ts +0 -0
  621. /package/dist/{services/insights → insights}/lib/personality.js +0 -0
  622. /package/dist/{services/insights → insights}/lib/trends.d.ts +0 -0
  623. /package/dist/{services/insights → insights}/lib/trends.js +0 -0
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const cacheStoreStatsSchema: z.ZodObject<{
3
+ hits: z.ZodNumber;
4
+ misses: z.ZodNumber;
5
+ size: z.ZodNumber;
6
+ }, z.core.$strip>;
7
+ export declare const cacheOptionsSchema: z.ZodObject<{
8
+ defaultTtlMs: z.ZodOptional<z.ZodNumber>;
9
+ ttlByNamespace: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
10
+ ttlByMethod: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
11
+ enabled: z.ZodOptional<z.ZodBoolean>;
12
+ }, z.core.$strip>;
13
+ export type CacheStoreStatsPayload = z.infer<typeof cacheStoreStatsSchema>;
14
+ export type CacheOptionsSchema = z.infer<typeof cacheOptionsSchema>;
15
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/cache/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export const cacheStoreStatsSchema = z.object({
3
+ hits: z.number().int().nonnegative(),
4
+ misses: z.number().int().nonnegative(),
5
+ size: z.number().int().nonnegative(),
6
+ });
7
+ export const cacheOptionsSchema = z.object({
8
+ defaultTtlMs: z.number().positive().optional(),
9
+ ttlByNamespace: z.record(z.string(), z.number().positive()).optional(),
10
+ ttlByMethod: z.record(z.string(), z.number().positive()).optional(),
11
+ enabled: z.boolean().optional(),
12
+ });
13
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/cache/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { CacheStoreStats } from './interface.js';
2
+ import type { CacheManager } from './manager.js';
3
+ export interface CacheService {
4
+ get: <T = unknown>(key: string) => Promise<T | undefined>;
5
+ set: <T = unknown>(key: string, value: T, ttlMs?: number) => Promise<void>;
6
+ delete: (key: string) => Promise<boolean>;
7
+ clear: () => Promise<void>;
8
+ has: (key: string) => Promise<boolean>;
9
+ stats: () => CacheStoreStats | undefined;
10
+ manager: CacheManager;
11
+ }
12
+ export declare function createCacheService(manager: CacheManager): CacheService;
13
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cache/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACzD,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1E,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,KAAK,EAAE,MAAM,eAAe,GAAG,SAAS,CAAA;IACxC,OAAO,EAAE,YAAY,CAAA;CACrB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAUtE"}
@@ -0,0 +1,12 @@
1
+ export function createCacheService(manager) {
2
+ return {
3
+ get: (key) => manager.get(key),
4
+ set: (key, value, ttlMs) => manager.set(key, value, ttlMs),
5
+ delete: (key) => manager.delete(key),
6
+ clear: () => manager.clear(),
7
+ has: (key) => manager.has(key),
8
+ stats: () => manager.stats(),
9
+ manager,
10
+ };
11
+ }
12
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cache/service.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACvD,OAAO;QACN,GAAG,EAAE,CAAc,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,CAAC;QACtD,GAAG,EAAE,CAAc,GAAW,EAAE,KAAQ,EAAE,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;QAC3F,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5B,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QACtC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5B,OAAO;KACP,CAAA;AACF,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { CacheStore, CacheStoreStats } from '../interface.js';
2
+ export interface MemoryCacheStoreOptions {
3
+ /**
4
+ * Maximum number of entries before oldest entries are evicted (default: 500)
5
+ */
6
+ maxEntries?: number;
7
+ /**
8
+ * Default TTL in milliseconds (default: 300,000 / 5 minutes)
9
+ */
10
+ defaultTtlMs?: number;
11
+ }
12
+ /**
13
+ * High-performance in-memory cache store with TTL expiration and LRU eviction.
14
+ */
15
+ export declare class MemoryCacheStore implements CacheStore {
16
+ private readonly entries;
17
+ private readonly maxEntries;
18
+ private readonly defaultTtlMs;
19
+ private hitCount;
20
+ private missCount;
21
+ constructor(options?: MemoryCacheStoreOptions);
22
+ get<T = unknown>(key: string): T | undefined;
23
+ set<T = unknown>(key: string, value: T, ttlMs?: number): void;
24
+ delete(key: string): boolean;
25
+ clear(): void;
26
+ has(key: string): boolean;
27
+ stats(): CacheStoreStats;
28
+ /**
29
+ * Removes all expired entries from memory
30
+ */
31
+ pruneExpired(): number;
32
+ }
33
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,MAAM,WAAW,uBAAuB;IACvC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAOD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,SAAS,CAAI;gBAET,OAAO,GAAE,uBAA4B;IAK1C,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAoB5C,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB7D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,KAAK,IAAI,IAAI;IAMb,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB,KAAK,IAAI,eAAe;IAS/B;;OAEG;IACI,YAAY,IAAI,MAAM;CAW7B"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * High-performance in-memory cache store with TTL expiration and LRU eviction.
3
+ */
4
+ export class MemoryCacheStore {
5
+ entries = new Map();
6
+ maxEntries;
7
+ defaultTtlMs;
8
+ hitCount = 0;
9
+ missCount = 0;
10
+ constructor(options = {}) {
11
+ this.maxEntries = options.maxEntries ?? 500;
12
+ this.defaultTtlMs = options.defaultTtlMs ?? 300_000;
13
+ }
14
+ get(key) {
15
+ const record = this.entries.get(key);
16
+ if (!record) {
17
+ this.missCount++;
18
+ return undefined;
19
+ }
20
+ if (Date.now() > record.expiresAt) {
21
+ this.entries.delete(key);
22
+ this.missCount++;
23
+ return undefined;
24
+ }
25
+ // Re-insert to refresh LRU order
26
+ this.entries.delete(key);
27
+ this.entries.set(key, record);
28
+ this.hitCount++;
29
+ return record.value;
30
+ }
31
+ set(key, value, ttlMs) {
32
+ const ttl = ttlMs ?? this.defaultTtlMs;
33
+ const expiresAt = Date.now() + ttl;
34
+ // Evict oldest entry if capacity reached
35
+ if (this.entries.size >= this.maxEntries && !this.entries.has(key)) {
36
+ const oldestKey = this.entries.keys().next().value;
37
+ if (oldestKey !== undefined) {
38
+ this.entries.delete(oldestKey);
39
+ }
40
+ }
41
+ this.entries.delete(key);
42
+ this.entries.set(key, { value, expiresAt });
43
+ }
44
+ delete(key) {
45
+ return this.entries.delete(key);
46
+ }
47
+ clear() {
48
+ this.entries.clear();
49
+ this.hitCount = 0;
50
+ this.missCount = 0;
51
+ }
52
+ has(key) {
53
+ const record = this.entries.get(key);
54
+ if (!record)
55
+ return false;
56
+ if (Date.now() > record.expiresAt) {
57
+ this.entries.delete(key);
58
+ return false;
59
+ }
60
+ return true;
61
+ }
62
+ stats() {
63
+ this.pruneExpired();
64
+ return {
65
+ hits: this.hitCount,
66
+ misses: this.missCount,
67
+ size: this.entries.size,
68
+ };
69
+ }
70
+ /**
71
+ * Removes all expired entries from memory
72
+ */
73
+ pruneExpired() {
74
+ const now = Date.now();
75
+ let pruned = 0;
76
+ for (const [key, record] of this.entries.entries()) {
77
+ if (now > record.expiresAt) {
78
+ this.entries.delete(key);
79
+ pruned++;
80
+ }
81
+ }
82
+ return pruned;
83
+ }
84
+ }
85
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cache/stores/memory.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACX,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAA;IACjD,UAAU,CAAQ;IAClB,YAAY,CAAQ;IAC7B,QAAQ,GAAG,CAAC,CAAA;IACZ,SAAS,GAAG,CAAC,CAAA;IAErB,YAAY,UAAmC,EAAE;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAA;IACpD,CAAC;IAEM,GAAG,CAAc,GAAW;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,OAAO,MAAM,CAAC,KAAU,CAAA;IACzB,CAAC;IAEM,GAAG,CAAc,GAAW,EAAE,KAAQ,EAAE,KAAc;QAC5D,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA;QAElC,yCAAyC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC/B,CAAC;QACF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAC5C,CAAC;IAEM,MAAM,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IACnB,CAAC;IAEM,GAAG,CAAC,GAAW;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACzB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;SACvB,CAAA;IACF,CAAC;IAED;;OAEG;IACI,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACxB,MAAM,EAAE,CAAA;YACT,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;CACD"}
@@ -0,0 +1,42 @@
1
+ import type { CacheStore, CacheStoreStats } from '../interface.js';
2
+ export interface StorageLike {
3
+ getItem(key: string): string | null;
4
+ setItem(key: string, value: string): void;
5
+ removeItem(key: string): void;
6
+ clear(): void;
7
+ readonly length: number;
8
+ key(index: number): string | null;
9
+ }
10
+ export interface StorageCacheStoreOptions {
11
+ /**
12
+ * Storage backend (defaults to globalThis.localStorage if available)
13
+ */
14
+ storage?: StorageLike;
15
+ /**
16
+ * Prefix for cache keys in storage to prevent collisions (default: 'lastfm_cache_')
17
+ */
18
+ prefix?: string;
19
+ /**
20
+ * Default TTL in milliseconds (default: 300,000 / 5 minutes)
21
+ */
22
+ defaultTtlMs?: number;
23
+ }
24
+ /**
25
+ * Persistent cache store using Web Storage (localStorage or sessionStorage).
26
+ */
27
+ export declare class StorageCacheStore implements CacheStore {
28
+ private readonly storage;
29
+ private readonly prefix;
30
+ private readonly defaultTtlMs;
31
+ private hitCount;
32
+ private missCount;
33
+ constructor(options?: StorageCacheStoreOptions);
34
+ private prefixedKey;
35
+ get<T = unknown>(key: string): T | undefined;
36
+ set<T = unknown>(key: string, value: T, ttlMs?: number): void;
37
+ delete(key: string): boolean;
38
+ clear(): void;
39
+ has(key: string): boolean;
40
+ stats(): CacheStoreStats;
41
+ }
42
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,KAAK,IAAI,IAAI,CAAA;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAOD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,SAAS,CAAI;gBAET,OAAO,GAAE,wBAA6B;IAUlD,OAAO,CAAC,WAAW;IAIZ,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IA4B5C,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB7D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAW5B,KAAK,IAAI,IAAI;IAgBb,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,KAAK,IAAI,eAAe;CAgB/B"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Persistent cache store using Web Storage (localStorage or sessionStorage).
3
+ */
4
+ export class StorageCacheStore {
5
+ storage;
6
+ prefix;
7
+ defaultTtlMs;
8
+ hitCount = 0;
9
+ missCount = 0;
10
+ constructor(options = {}) {
11
+ this.storage =
12
+ options.storage ??
13
+ (typeof globalThis !== 'undefined' && 'localStorage' in globalThis
14
+ ? globalThis.localStorage
15
+ : undefined);
16
+ this.prefix = options.prefix ?? 'lastfm_cache_';
17
+ this.defaultTtlMs = options.defaultTtlMs ?? 300_000;
18
+ }
19
+ prefixedKey(key) {
20
+ return `${this.prefix}${key}`;
21
+ }
22
+ get(key) {
23
+ if (!this.storage) {
24
+ this.missCount++;
25
+ return undefined;
26
+ }
27
+ try {
28
+ const item = this.storage.getItem(this.prefixedKey(key));
29
+ if (!item) {
30
+ this.missCount++;
31
+ return undefined;
32
+ }
33
+ const parsed = JSON.parse(item);
34
+ if (Date.now() > parsed.expiresAt) {
35
+ this.storage.removeItem(this.prefixedKey(key));
36
+ this.missCount++;
37
+ return undefined;
38
+ }
39
+ this.hitCount++;
40
+ return parsed.value;
41
+ }
42
+ catch {
43
+ this.missCount++;
44
+ return undefined;
45
+ }
46
+ }
47
+ set(key, value, ttlMs) {
48
+ if (!this.storage)
49
+ return;
50
+ const ttl = ttlMs ?? this.defaultTtlMs;
51
+ const payload = {
52
+ value,
53
+ expiresAt: Date.now() + ttl,
54
+ };
55
+ try {
56
+ this.storage.setItem(this.prefixedKey(key), JSON.stringify(payload));
57
+ }
58
+ catch {
59
+ // Storage quota exceeded or disabled; fail gracefully
60
+ }
61
+ }
62
+ delete(key) {
63
+ if (!this.storage)
64
+ return false;
65
+ const fullKey = this.prefixedKey(key);
66
+ const exists = this.storage.getItem(fullKey) !== null;
67
+ if (exists) {
68
+ this.storage.removeItem(fullKey);
69
+ return true;
70
+ }
71
+ return false;
72
+ }
73
+ clear() {
74
+ if (!this.storage)
75
+ return;
76
+ const keysToRemove = [];
77
+ for (let i = 0; i < this.storage.length; i++) {
78
+ const k = this.storage.key(i);
79
+ if (k?.startsWith(this.prefix)) {
80
+ keysToRemove.push(k);
81
+ }
82
+ }
83
+ for (const k of keysToRemove) {
84
+ this.storage.removeItem(k);
85
+ }
86
+ this.hitCount = 0;
87
+ this.missCount = 0;
88
+ }
89
+ has(key) {
90
+ return this.get(key) !== undefined;
91
+ }
92
+ stats() {
93
+ let size = 0;
94
+ if (this.storage) {
95
+ for (let i = 0; i < this.storage.length; i++) {
96
+ const k = this.storage.key(i);
97
+ if (k?.startsWith(this.prefix)) {
98
+ size++;
99
+ }
100
+ }
101
+ }
102
+ return {
103
+ hits: this.hitCount,
104
+ misses: this.missCount,
105
+ size,
106
+ };
107
+ }
108
+ }
109
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/cache/stores/storage.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,5 +1,11 @@
1
+ import { type CacheService } from './cache/index.js';
1
2
  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';
3
+ import { type AlbumService, type ArtistService, type AuthService, type ChartService, type GeoService, type LibraryService, type TagService, type TrackService, type UserService } from './core/services/index.js';
4
+ import { type ExporterService } from './exporter/index.js';
5
+ import { type InsightsService } from './insights/index.js';
6
+ import { type PlaylistsService } from './playlists/index.js';
7
+ import { type ReportsService } from './reports/index.js';
8
+ import { type WatcherService } from './watcher/index.js';
3
9
  /**
4
10
  * Last.fm API Client
5
11
  *
@@ -30,6 +36,11 @@ export declare class LastFmClient {
30
36
  readonly library: LibraryService;
31
37
  readonly auth: AuthService;
32
38
  readonly insights: InsightsService;
39
+ readonly reports: ReportsService;
40
+ readonly playlists: PlaylistsService;
41
+ readonly exporter: ExporterService;
42
+ readonly cache: CacheService;
43
+ readonly watcher: WatcherService;
33
44
  private readonly config;
34
45
  constructor(config?: Partial<LastFmConfig>);
35
46
  /**
@@ -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,EAAgB,KAAK,YAAY,EAAsB,MAAM,kBAAkB,CAAA;AACtF,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;AAC9E,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;IACzC,SAAgB,KAAK,EAAE,YAAY,CAAA;IACnC,SAAgB,OAAO,EAAE,cAAc,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IA0B1C;;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,11 @@
1
+ import { CacheManager, createCacheService } from './cache/index.js';
1
2
  import { createConfig, getGlobalConfig } from './config.js';
2
- import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createInsightsService, createLibraryService, createTagService, createTrackService, createUserService, } from './services/index.js';
3
+ import { createAlbumService, createArtistService, createAuthService, createChartService, createGeoService, createLibraryService, createTagService, createTrackService, createUserService, } from './core/services/index.js';
4
+ import { createExporterService } from './exporter/index.js';
5
+ import { createInsightsService } from './insights/index.js';
6
+ import { createPlaylistsService } from './playlists/index.js';
7
+ import { createReportsService } from './reports/index.js';
8
+ import { createWatcherService } from './watcher/index.js';
3
9
  /**
4
10
  * Last.fm API Client
5
11
  *
@@ -30,9 +36,19 @@ export class LastFmClient {
30
36
  library;
31
37
  auth;
32
38
  insights;
39
+ reports;
40
+ playlists;
41
+ exporter;
42
+ cache;
43
+ watcher;
33
44
  config;
34
45
  constructor(config) {
35
46
  this.config = config ? createConfig(config) : getGlobalConfig();
47
+ // Ensure cache manager exists for cache operations
48
+ if (!this.config.cacheManager) {
49
+ this.config.cacheManager = new CacheManager({ enabled: false });
50
+ }
51
+ this.cache = createCacheService(this.config.cacheManager);
36
52
  // Initialize all services
37
53
  this.user = createUserService(this.config);
38
54
  this.album = createAlbumService(this.config);
@@ -44,6 +60,10 @@ export class LastFmClient {
44
60
  this.library = createLibraryService(this.config);
45
61
  this.auth = createAuthService(this.config);
46
62
  this.insights = createInsightsService(this.config);
63
+ this.reports = createReportsService(this.config);
64
+ this.playlists = createPlaylistsService(this.config);
65
+ this.exporter = createExporterService(this.config);
66
+ this.watcher = createWatcherService(this.user);
47
67
  }
48
68
  /**
49
69
  * 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":"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"}
package/dist/config.d.ts CHANGED
@@ -1,8 +1,12 @@
1
+ import type { CacheOptions, CacheStore } from './cache/interface.js';
2
+ import { CacheManager } from './cache/manager.js';
1
3
  export interface LastFmConfig {
2
4
  apiKey: string;
3
5
  sharedSecret?: string;
4
6
  sessionKey?: string;
5
7
  baseUrl?: string;
8
+ cache?: CacheOptions | CacheStore | boolean;
9
+ cacheManager?: CacheManager;
6
10
  }
7
11
  /**
8
12
  * Crea una nueva configuración validada
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AA6BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAU9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAA;IAC3C,YAAY,CAAC,EAAE,YAAY,CAAA;CAC3B;AA6BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAsB9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
package/dist/config.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { CacheManager } from './cache/manager.js';
1
2
  let globalConfig = null;
2
3
  /**
3
4
  * Carga configuración desde variables de entorno (solo Node.js)
@@ -33,6 +34,18 @@ export function createConfig(options = {}) {
33
34
  ...options,
34
35
  };
35
36
  validateConfig(config);
37
+ // Resolve cache manager if cache option was specified
38
+ if (options.cache !== undefined && !config.cacheManager) {
39
+ if (typeof options.cache === 'boolean') {
40
+ config.cacheManager = new CacheManager({ enabled: options.cache });
41
+ }
42
+ else if (typeof options.cache.get === 'function') {
43
+ config.cacheManager = new CacheManager({ store: options.cache });
44
+ }
45
+ else {
46
+ config.cacheManager = new CacheManager(options.cache);
47
+ }
48
+ }
36
49
  return config;
37
50
  }
38
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,IAAI,YAAY,GAAwB,IAAI,CAAA;AAE5C;;GAEG;AACH,SAAS,aAAa;IACrB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,OAAO;YACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YAClC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC1C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;SACpC,CAAA;IACF,CAAC;IACD,OAAO,EAAE,CAAA;AACV,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAA6B;IACpD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAA;IAC9G,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,UAAiC,EAAE;IAC/D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG;QACd,OAAO,EAAE,oCAAoC;QAC7C,GAAG,SAAS;QACZ,GAAG,OAAO;KACV,CAAA;IAED,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,OAAO,MAAsB,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC5D,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,YAAY,GAAG,YAAY,EAAE,CAAA;IAC9B,CAAC;IACD,OAAO,YAAY,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAChC,YAAY,GAAG,IAAI,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAWjD,IAAI,YAAY,GAAwB,IAAI,CAAA;AAE5C;;GAEG;AACH,SAAS,aAAa;IACrB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,OAAO;YACN,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YAClC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC1C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;SACpC,CAAA;IACF,CAAC;IACD,OAAO,EAAE,CAAA;AACV,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAA6B;IACpD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAA;IAC9G,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,UAAiC,EAAE;IAC/D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,MAAM,MAAM,GAAiB;QAC5B,OAAO,EAAE,oCAAoC;QAC7C,GAAG,SAAS;QACZ,GAAG,OAAO;KACM,CAAA;IAEjB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,sDAAsD;IACtD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;aAAM,IAAI,OAAQ,OAAO,CAAC,KAAoB,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACpE,MAAM,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAmB,EAAE,CAAC,CAAA;QAC/E,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,KAAqB,CAAC,CAAA;QACtE,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC5D,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,YAAY,GAAG,YAAY,EAAE,CAAA;IAC9B,CAAC;IACD,OAAO,YAAY,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAChC,YAAY,GAAG,IAAI,CAAA;AACpB,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"}