@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.
- package/CHANGELOG.md +65 -0
- package/README.md +254 -21
- package/dist/cache/index.d.ts +7 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +7 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/interface.d.ts +57 -0
- package/dist/cache/interface.d.ts.map +1 -0
- package/dist/cache/interface.js +5 -0
- package/dist/cache/interface.js.map +1 -0
- package/dist/cache/manager.d.ts +19 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +63 -0
- package/dist/cache/manager.js.map +1 -0
- package/dist/cache/schemas.d.ts +15 -0
- package/dist/cache/schemas.d.ts.map +1 -0
- package/dist/cache/schemas.js +13 -0
- package/dist/cache/schemas.js.map +1 -0
- package/dist/cache/service.d.ts +13 -0
- package/dist/cache/service.d.ts.map +1 -0
- package/dist/cache/service.js +12 -0
- package/dist/cache/service.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +33 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +85 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/storage.d.ts +42 -0
- package/dist/cache/stores/storage.d.ts.map +1 -0
- package/dist/cache/stores/storage.js +109 -0
- package/dist/cache/stores/storage.js.map +1 -0
- package/dist/client.d.ts +12 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +21 -1
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/core/canonical-methods.d.ts +25 -0
- package/dist/core/canonical-methods.d.ts.map +1 -0
- package/dist/core/canonical-methods.js +88 -0
- package/dist/core/canonical-methods.js.map +1 -0
- package/dist/core/client.d.ts +33 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +48 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/pagination.d.ts +59 -0
- package/dist/core/pagination.d.ts.map +1 -0
- package/dist/core/pagination.js +93 -0
- package/dist/core/pagination.js.map +1 -0
- package/dist/core/schemas/album.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/album.schemas.js +1 -1
- package/dist/core/schemas/album.schemas.js.map +1 -0
- package/dist/core/schemas/artist.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/artist.schemas.js +1 -1
- package/dist/core/schemas/artist.schemas.js.map +1 -0
- package/dist/core/schemas/auth.schemas.d.ts.map +1 -0
- package/dist/core/schemas/auth.schemas.js.map +1 -0
- package/dist/core/schemas/base/base.entities.schemas.d.ts.map +1 -0
- package/dist/core/schemas/base/base.entities.schemas.js.map +1 -0
- package/dist/core/schemas/base/base.entity-names.schemas.d.ts.map +1 -0
- package/dist/core/schemas/base/base.entity-names.schemas.js.map +1 -0
- package/dist/core/schemas/base/base.metadata.schemas.d.ts.map +1 -0
- package/dist/core/schemas/base/base.metadata.schemas.js.map +1 -0
- package/dist/core/schemas/base/base.pagination.schemas.d.ts.map +1 -0
- package/dist/core/schemas/base/base.pagination.schemas.js.map +1 -0
- package/dist/core/schemas/base/base.primitives.schemas.d.ts.map +1 -0
- package/dist/core/schemas/base/base.primitives.schemas.js.map +1 -0
- package/dist/core/schemas/base/index.d.ts.map +1 -0
- package/dist/core/schemas/base/index.js.map +1 -0
- package/dist/core/schemas/chart.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/chart.schemas.js +1 -1
- package/dist/core/schemas/chart.schemas.js.map +1 -0
- package/dist/core/schemas/geo.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/geo.schemas.js +1 -1
- package/dist/core/schemas/geo.schemas.js.map +1 -0
- package/dist/core/schemas/index.d.ts +11 -0
- package/dist/core/schemas/index.d.ts.map +1 -0
- package/dist/core/schemas/index.js +11 -0
- package/dist/core/schemas/index.js.map +1 -0
- package/dist/core/schemas/library.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/library.schemas.js +1 -1
- package/dist/core/schemas/library.schemas.js.map +1 -0
- package/dist/core/schemas/tag.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/tag.schemas.js +1 -1
- package/dist/core/schemas/tag.schemas.js.map +1 -0
- package/dist/core/schemas/track.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/track.schemas.js +1 -1
- package/dist/core/schemas/track.schemas.js.map +1 -0
- package/dist/core/schemas/user.schemas.d.ts.map +1 -0
- package/dist/{services → core/schemas}/user.schemas.js +1 -1
- package/dist/core/schemas/user.schemas.js.map +1 -0
- package/dist/{services → core/services}/album.d.ts +2 -2
- package/dist/core/services/album.d.ts.map +1 -0
- package/dist/{services → core/services}/album.js +5 -5
- package/dist/core/services/album.js.map +1 -0
- package/dist/{services → core/services}/artist.d.ts +2 -2
- package/dist/core/services/artist.d.ts.map +1 -0
- package/dist/{services → core/services}/artist.js +9 -9
- package/dist/core/services/artist.js.map +1 -0
- package/dist/{services → core/services}/auth.d.ts +2 -2
- package/dist/core/services/auth.d.ts.map +1 -0
- package/dist/{services → core/services}/auth.js +1 -1
- package/dist/core/services/auth.js.map +1 -0
- package/dist/{services → core/services}/chart.d.ts +2 -2
- package/dist/core/services/chart.d.ts.map +1 -0
- package/dist/core/services/chart.js +9 -0
- package/dist/core/services/chart.js.map +1 -0
- package/dist/{services → core/services}/geo.d.ts +2 -2
- package/dist/core/services/geo.d.ts.map +1 -0
- package/dist/core/services/geo.js +8 -0
- package/dist/core/services/geo.js.map +1 -0
- package/dist/core/services/index.d.ts +10 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +10 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/{services → core/services}/library.d.ts +2 -2
- package/dist/core/services/library.d.ts.map +1 -0
- package/dist/core/services/library.js +7 -0
- package/dist/core/services/library.js.map +1 -0
- package/dist/{services → core/services}/tag.d.ts +2 -2
- package/dist/core/services/tag.d.ts.map +1 -0
- package/dist/{services → core/services}/tag.js +8 -8
- package/dist/core/services/tag.js.map +1 -0
- package/dist/{services → core/services}/track.d.ts +2 -2
- package/dist/core/services/track.d.ts.map +1 -0
- package/dist/{services → core/services}/track.js +7 -7
- package/dist/core/services/track.js.map +1 -0
- package/dist/{services → core/services}/track.utils.d.ts +2 -2
- package/dist/core/services/track.utils.d.ts.map +1 -0
- package/dist/core/services/track.utils.js.map +1 -0
- package/dist/{services → core/services}/user.d.ts +2 -2
- package/dist/core/services/user.d.ts.map +1 -0
- package/dist/core/services/user.js +19 -0
- package/dist/core/services/user.js.map +1 -0
- package/dist/entrypoints/album.d.ts +3 -3
- package/dist/entrypoints/album.d.ts.map +1 -1
- package/dist/entrypoints/album.js +2 -2
- package/dist/entrypoints/album.js.map +1 -1
- package/dist/entrypoints/album.schemas.d.ts +2 -1
- package/dist/entrypoints/album.schemas.d.ts.map +1 -1
- package/dist/entrypoints/album.schemas.js +1 -2
- package/dist/entrypoints/album.schemas.js.map +1 -1
- package/dist/entrypoints/artist.d.ts +3 -3
- package/dist/entrypoints/artist.d.ts.map +1 -1
- package/dist/entrypoints/artist.js +2 -2
- package/dist/entrypoints/artist.js.map +1 -1
- package/dist/entrypoints/artist.schemas.d.ts +2 -1
- package/dist/entrypoints/artist.schemas.d.ts.map +1 -1
- package/dist/entrypoints/artist.schemas.js +1 -2
- package/dist/entrypoints/artist.schemas.js.map +1 -1
- package/dist/entrypoints/auth.d.ts +3 -3
- package/dist/entrypoints/auth.d.ts.map +1 -1
- package/dist/entrypoints/auth.js +2 -2
- package/dist/entrypoints/auth.js.map +1 -1
- package/dist/entrypoints/auth.schemas.d.ts +2 -1
- package/dist/entrypoints/auth.schemas.d.ts.map +1 -1
- package/dist/entrypoints/auth.schemas.js +1 -2
- package/dist/entrypoints/auth.schemas.js.map +1 -1
- package/dist/entrypoints/base.schemas.d.ts +2 -1
- package/dist/entrypoints/base.schemas.d.ts.map +1 -1
- package/dist/entrypoints/base.schemas.js +1 -2
- package/dist/entrypoints/base.schemas.js.map +1 -1
- package/dist/entrypoints/cache.d.ts +2 -0
- package/dist/entrypoints/cache.d.ts.map +1 -0
- package/dist/entrypoints/cache.js +2 -0
- package/dist/entrypoints/cache.js.map +1 -0
- package/dist/entrypoints/cache.schemas.d.ts +2 -0
- package/dist/entrypoints/cache.schemas.d.ts.map +1 -0
- package/dist/entrypoints/cache.schemas.js +2 -0
- package/dist/entrypoints/cache.schemas.js.map +1 -0
- package/dist/entrypoints/chart.d.ts +3 -3
- package/dist/entrypoints/chart.d.ts.map +1 -1
- package/dist/entrypoints/chart.js +2 -2
- package/dist/entrypoints/chart.js.map +1 -1
- package/dist/entrypoints/chart.schemas.d.ts +2 -1
- package/dist/entrypoints/chart.schemas.d.ts.map +1 -1
- package/dist/entrypoints/chart.schemas.js +1 -2
- package/dist/entrypoints/chart.schemas.js.map +1 -1
- package/dist/entrypoints/core.d.ts +5 -0
- package/dist/entrypoints/core.d.ts.map +1 -0
- package/dist/entrypoints/core.js +5 -0
- package/dist/entrypoints/core.js.map +1 -0
- package/dist/entrypoints/core.schemas.d.ts +3 -0
- package/dist/entrypoints/core.schemas.d.ts.map +1 -0
- package/dist/entrypoints/core.schemas.js +2 -0
- package/dist/entrypoints/core.schemas.js.map +1 -0
- package/dist/entrypoints/exporter.d.ts +3 -0
- package/dist/entrypoints/exporter.d.ts.map +1 -0
- package/dist/entrypoints/exporter.js +3 -0
- package/dist/entrypoints/exporter.js.map +1 -0
- package/dist/entrypoints/exporter.schemas.d.ts +3 -0
- package/dist/entrypoints/exporter.schemas.d.ts.map +1 -0
- package/dist/entrypoints/exporter.schemas.js +2 -0
- package/dist/entrypoints/exporter.schemas.js.map +1 -0
- package/dist/entrypoints/geo.d.ts +3 -3
- package/dist/entrypoints/geo.d.ts.map +1 -1
- package/dist/entrypoints/geo.js +2 -2
- package/dist/entrypoints/geo.js.map +1 -1
- package/dist/entrypoints/geo.schemas.d.ts +2 -1
- package/dist/entrypoints/geo.schemas.d.ts.map +1 -1
- package/dist/entrypoints/geo.schemas.js +1 -2
- package/dist/entrypoints/geo.schemas.js.map +1 -1
- package/dist/entrypoints/insights.d.ts +3 -3
- package/dist/entrypoints/insights.d.ts.map +1 -1
- package/dist/entrypoints/insights.js +2 -2
- package/dist/entrypoints/insights.js.map +1 -1
- package/dist/entrypoints/insights.schemas.d.ts +2 -1
- package/dist/entrypoints/insights.schemas.d.ts.map +1 -1
- package/dist/entrypoints/insights.schemas.js +1 -2
- package/dist/entrypoints/insights.schemas.js.map +1 -1
- package/dist/entrypoints/library.d.ts +3 -3
- package/dist/entrypoints/library.d.ts.map +1 -1
- package/dist/entrypoints/library.js +2 -2
- package/dist/entrypoints/library.js.map +1 -1
- package/dist/entrypoints/library.schemas.d.ts +2 -1
- package/dist/entrypoints/library.schemas.d.ts.map +1 -1
- package/dist/entrypoints/library.schemas.js +1 -2
- package/dist/entrypoints/library.schemas.js.map +1 -1
- package/dist/entrypoints/playlists.d.ts +3 -0
- package/dist/entrypoints/playlists.d.ts.map +1 -0
- package/dist/entrypoints/playlists.js +3 -0
- package/dist/entrypoints/playlists.js.map +1 -0
- package/dist/entrypoints/playlists.schemas.d.ts +3 -0
- package/dist/entrypoints/playlists.schemas.d.ts.map +1 -0
- package/dist/entrypoints/playlists.schemas.js +2 -0
- package/dist/entrypoints/playlists.schemas.js.map +1 -0
- package/dist/entrypoints/reports.d.ts +4 -0
- package/dist/entrypoints/reports.d.ts.map +1 -0
- package/dist/entrypoints/reports.js +3 -0
- package/dist/entrypoints/reports.js.map +1 -0
- package/dist/entrypoints/reports.schemas.d.ts +3 -0
- package/dist/entrypoints/reports.schemas.d.ts.map +1 -0
- package/dist/entrypoints/reports.schemas.js +2 -0
- package/dist/entrypoints/reports.schemas.js.map +1 -0
- package/dist/entrypoints/tag.d.ts +3 -3
- package/dist/entrypoints/tag.d.ts.map +1 -1
- package/dist/entrypoints/tag.js +2 -2
- package/dist/entrypoints/tag.js.map +1 -1
- package/dist/entrypoints/tag.schemas.d.ts +2 -1
- package/dist/entrypoints/tag.schemas.d.ts.map +1 -1
- package/dist/entrypoints/tag.schemas.js +1 -2
- package/dist/entrypoints/tag.schemas.js.map +1 -1
- package/dist/entrypoints/track.d.ts +3 -3
- package/dist/entrypoints/track.d.ts.map +1 -1
- package/dist/entrypoints/track.js +2 -2
- package/dist/entrypoints/track.js.map +1 -1
- package/dist/entrypoints/track.schemas.d.ts +2 -1
- package/dist/entrypoints/track.schemas.d.ts.map +1 -1
- package/dist/entrypoints/track.schemas.js +1 -2
- package/dist/entrypoints/track.schemas.js.map +1 -1
- package/dist/entrypoints/user.d.ts +3 -3
- package/dist/entrypoints/user.d.ts.map +1 -1
- package/dist/entrypoints/user.js +2 -2
- package/dist/entrypoints/user.js.map +1 -1
- package/dist/entrypoints/user.schemas.d.ts +2 -1
- package/dist/entrypoints/user.schemas.d.ts.map +1 -1
- package/dist/entrypoints/user.schemas.js +1 -2
- package/dist/entrypoints/user.schemas.js.map +1 -1
- package/dist/entrypoints/watcher.d.ts +2 -0
- package/dist/entrypoints/watcher.d.ts.map +1 -0
- package/dist/entrypoints/watcher.js +2 -0
- package/dist/entrypoints/watcher.js.map +1 -0
- package/dist/entrypoints/watcher.schemas.d.ts +2 -0
- package/dist/entrypoints/watcher.schemas.d.ts.map +1 -0
- package/dist/entrypoints/watcher.schemas.js +2 -0
- package/dist/entrypoints/watcher.schemas.js.map +1 -0
- package/dist/exporter/engines/library.d.ts +4 -0
- package/dist/exporter/engines/library.d.ts.map +1 -0
- package/dist/exporter/engines/library.js +34 -0
- package/dist/exporter/engines/library.js.map +1 -0
- package/dist/exporter/engines/loved.d.ts +4 -0
- package/dist/exporter/engines/loved.d.ts.map +1 -0
- package/dist/exporter/engines/loved.js +35 -0
- package/dist/exporter/engines/loved.js.map +1 -0
- package/dist/exporter/engines/scrobbles.d.ts +4 -0
- package/dist/exporter/engines/scrobbles.d.ts.map +1 -0
- package/dist/exporter/engines/scrobbles.js +74 -0
- package/dist/exporter/engines/scrobbles.js.map +1 -0
- package/dist/exporter/formats/csv.d.ts +5 -0
- package/dist/exporter/formats/csv.d.ts.map +1 -0
- package/dist/exporter/formats/csv.js +35 -0
- package/dist/exporter/formats/csv.js.map +1 -0
- package/dist/exporter/formats/jsonl.d.ts +2 -0
- package/dist/exporter/formats/jsonl.d.ts.map +1 -0
- package/dist/exporter/formats/jsonl.js +4 -0
- package/dist/exporter/formats/jsonl.js.map +1 -0
- package/dist/exporter/formats/listenbrainz.d.ts +3 -0
- package/dist/exporter/formats/listenbrainz.d.ts.map +1 -0
- package/dist/exporter/formats/listenbrainz.js +19 -0
- package/dist/exporter/formats/listenbrainz.js.map +1 -0
- package/dist/exporter/index.d.ts +6 -0
- package/dist/exporter/index.d.ts.map +1 -0
- package/dist/exporter/index.js +6 -0
- package/dist/exporter/index.js.map +1 -0
- package/dist/exporter/schemas.d.ts +291 -0
- package/dist/exporter/schemas.d.ts.map +1 -0
- package/dist/exporter/schemas.js +81 -0
- package/dist/exporter/schemas.js.map +1 -0
- package/dist/exporter/service.d.ts +30 -0
- package/dist/exporter/service.d.ts.map +1 -0
- package/dist/exporter/service.js +11 -0
- package/dist/exporter/service.js.map +1 -0
- package/dist/index.d.ts +18 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -16
- package/dist/index.js.map +1 -1
- package/dist/insights/algorithms/album-habits.d.ts +7 -0
- package/dist/insights/algorithms/album-habits.d.ts.map +1 -0
- package/dist/insights/algorithms/album-habits.js +154 -0
- package/dist/insights/algorithms/album-habits.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/binges.d.ts +1 -1
- package/dist/insights/algorithms/binges.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/binges.js +2 -2
- package/dist/insights/algorithms/binges.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/compare.d.ts +1 -1
- package/dist/insights/algorithms/compare.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/compare.js +3 -3
- package/dist/insights/algorithms/compare.js.map +1 -0
- package/dist/insights/algorithms/decay.d.ts +11 -0
- package/dist/insights/algorithms/decay.d.ts.map +1 -0
- package/dist/insights/algorithms/decay.js +154 -0
- package/dist/insights/algorithms/decay.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/discoveries.d.ts +1 -1
- package/dist/insights/algorithms/discoveries.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/discoveries.js +2 -2
- package/dist/insights/algorithms/discoveries.js.map +1 -0
- package/dist/insights/algorithms/genres.d.ts +11 -0
- package/dist/insights/algorithms/genres.d.ts.map +1 -0
- package/dist/insights/algorithms/genres.js +201 -0
- package/dist/insights/algorithms/genres.js.map +1 -0
- package/dist/insights/algorithms/group.d.ts +8 -0
- package/dist/insights/algorithms/group.d.ts.map +1 -0
- package/dist/insights/algorithms/group.js +127 -0
- package/dist/insights/algorithms/group.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/hours.d.ts +1 -1
- package/dist/insights/algorithms/hours.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/hours.js +2 -2
- package/dist/insights/algorithms/hours.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/mood.d.ts +1 -1
- package/dist/insights/algorithms/mood.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/mood.js +4 -4
- package/dist/insights/algorithms/mood.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/now-playing.d.ts +1 -1
- package/dist/{services/insights → insights/algorithms}/now-playing.d.ts.map +1 -1
- package/dist/{services/insights → insights/algorithms}/now-playing.js +2 -2
- package/dist/insights/algorithms/now-playing.js.map +1 -0
- package/dist/insights/algorithms/obscurity.d.ts +27 -0
- package/dist/insights/algorithms/obscurity.d.ts.map +1 -0
- package/dist/insights/algorithms/obscurity.js +158 -0
- package/dist/insights/algorithms/obscurity.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/personality.d.ts +1 -1
- package/dist/insights/algorithms/personality.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/personality.js +1 -1
- package/dist/insights/algorithms/personality.js.map +1 -0
- package/dist/insights/algorithms/recommendations.d.ts +11 -0
- package/dist/insights/algorithms/recommendations.d.ts.map +1 -0
- package/dist/insights/algorithms/recommendations.js +121 -0
- package/dist/insights/algorithms/recommendations.js.map +1 -0
- package/dist/insights/algorithms/streaks.d.ts +11 -0
- package/dist/insights/algorithms/streaks.d.ts.map +1 -0
- package/dist/insights/algorithms/streaks.js +178 -0
- package/dist/insights/algorithms/streaks.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/summary.d.ts +1 -1
- package/dist/insights/algorithms/summary.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/summary.js +3 -3
- package/dist/insights/algorithms/summary.js.map +1 -0
- package/dist/{services/insights → insights/algorithms}/trends.d.ts +1 -1
- package/dist/insights/algorithms/trends.d.ts.map +1 -0
- package/dist/{services/insights → insights/algorithms}/trends.js +3 -3
- package/dist/insights/algorithms/trends.js.map +1 -0
- package/dist/insights/index.d.ts +3 -0
- package/dist/insights/index.d.ts.map +1 -0
- package/dist/insights/index.js +3 -0
- package/dist/insights/index.js.map +1 -0
- package/dist/insights/lib/binges.d.ts.map +1 -0
- package/dist/insights/lib/binges.js.map +1 -0
- package/dist/insights/lib/compare.d.ts.map +1 -0
- package/dist/insights/lib/compare.js.map +1 -0
- package/dist/insights/lib/discoveries.d.ts.map +1 -0
- package/dist/insights/lib/discoveries.js.map +1 -0
- package/dist/insights/lib/diversity.d.ts.map +1 -0
- package/dist/insights/lib/diversity.js.map +1 -0
- package/dist/insights/lib/hours.d.ts.map +1 -0
- package/dist/insights/lib/hours.js.map +1 -0
- package/dist/insights/lib/mood.d.ts.map +1 -0
- package/dist/insights/lib/mood.js.map +1 -0
- package/dist/{services/insights → insights}/lib/periods.d.ts +1 -1
- package/dist/insights/lib/periods.d.ts.map +1 -0
- package/dist/insights/lib/periods.js.map +1 -0
- package/dist/insights/lib/personality.d.ts.map +1 -0
- package/dist/insights/lib/personality.js.map +1 -0
- package/dist/insights/lib/trends.d.ts.map +1 -0
- package/dist/insights/lib/trends.js.map +1 -0
- package/dist/insights/schemas.d.ts +1415 -0
- package/dist/insights/schemas.d.ts.map +1 -0
- package/dist/{services/insights.schemas.js → insights/schemas.js} +291 -2
- package/dist/insights/schemas.js.map +1 -0
- package/dist/insights/service.d.ts +191 -0
- package/dist/insights/service.d.ts.map +1 -0
- package/dist/insights/service.js +44 -0
- package/dist/insights/service.js.map +1 -0
- package/dist/playlists/formatters/csv.d.ts +3 -0
- package/dist/playlists/formatters/csv.d.ts.map +1 -0
- package/dist/playlists/formatters/csv.js +18 -0
- package/dist/playlists/formatters/csv.js.map +1 -0
- package/dist/playlists/formatters/m3u.d.ts +3 -0
- package/dist/playlists/formatters/m3u.d.ts.map +1 -0
- package/dist/playlists/formatters/m3u.js +10 -0
- package/dist/playlists/formatters/m3u.js.map +1 -0
- package/dist/playlists/formatters/spotifymatch.d.ts +3 -0
- package/dist/playlists/formatters/spotifymatch.d.ts.map +1 -0
- package/dist/playlists/formatters/spotifymatch.js +4 -0
- package/dist/playlists/formatters/spotifymatch.js.map +1 -0
- package/dist/playlists/generators/generator.d.ts +4 -0
- package/dist/playlists/generators/generator.d.ts.map +1 -0
- package/dist/playlists/generators/generator.js +158 -0
- package/dist/playlists/generators/generator.js.map +1 -0
- package/dist/playlists/index.d.ts +6 -0
- package/dist/playlists/index.d.ts.map +1 -0
- package/dist/playlists/index.js +6 -0
- package/dist/playlists/index.js.map +1 -0
- package/dist/playlists/schemas.d.ts +150 -0
- package/dist/playlists/schemas.d.ts.map +1 -0
- package/dist/playlists/schemas.js +53 -0
- package/dist/playlists/schemas.js.map +1 -0
- package/dist/playlists/service.d.ts +28 -0
- package/dist/playlists/service.d.ts.map +1 -0
- package/dist/playlists/service.js +27 -0
- package/dist/playlists/service.js.map +1 -0
- package/dist/reports/generators/digest.d.ts +4 -0
- package/dist/reports/generators/digest.d.ts.map +1 -0
- package/dist/reports/generators/digest.js +95 -0
- package/dist/reports/generators/digest.js.map +1 -0
- package/dist/reports/generators/milestones.d.ts +4 -0
- package/dist/reports/generators/milestones.d.ts.map +1 -0
- package/dist/reports/generators/milestones.js +59 -0
- package/dist/reports/generators/milestones.js.map +1 -0
- package/dist/reports/generators/wrapped.d.ts +4 -0
- package/dist/reports/generators/wrapped.d.ts.map +1 -0
- package/dist/reports/generators/wrapped.js +179 -0
- package/dist/reports/generators/wrapped.js.map +1 -0
- package/dist/reports/index.d.ts +3 -0
- package/dist/reports/index.d.ts.map +1 -0
- package/dist/reports/index.js +3 -0
- package/dist/reports/index.js.map +1 -0
- package/dist/reports/schemas.d.ts +244 -0
- package/dist/reports/schemas.d.ts.map +1 -0
- package/dist/reports/schemas.js +92 -0
- package/dist/reports/schemas.js.map +1 -0
- package/dist/reports/service.d.ts +30 -0
- package/dist/reports/service.d.ts.map +1 -0
- package/dist/reports/service.js +11 -0
- package/dist/reports/service.js.map +1 -0
- package/dist/utils.d.ts +3 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +19 -2
- package/dist/utils.js.map +1 -1
- package/dist/watcher/emitter.d.ts +14 -0
- package/dist/watcher/emitter.d.ts.map +1 -0
- package/dist/watcher/emitter.js +72 -0
- package/dist/watcher/emitter.js.map +1 -0
- package/dist/watcher/index.d.ts +5 -0
- package/dist/watcher/index.d.ts.map +1 -0
- package/dist/watcher/index.js +5 -0
- package/dist/watcher/index.js.map +1 -0
- package/dist/watcher/schemas.d.ts +39 -0
- package/dist/watcher/schemas.d.ts.map +1 -0
- package/dist/watcher/schemas.js +33 -0
- package/dist/watcher/schemas.js.map +1 -0
- package/dist/watcher/service.d.ts +15 -0
- package/dist/watcher/service.d.ts.map +1 -0
- package/dist/watcher/service.js +8 -0
- package/dist/watcher/service.js.map +1 -0
- package/dist/watcher/watcher.d.ts +35 -0
- package/dist/watcher/watcher.d.ts.map +1 -0
- package/dist/watcher/watcher.js +196 -0
- package/dist/watcher/watcher.js.map +1 -0
- package/package.json +49 -3
- package/dist/services/album.d.ts.map +0 -1
- package/dist/services/album.js.map +0 -1
- package/dist/services/album.schemas.d.ts.map +0 -1
- package/dist/services/album.schemas.js.map +0 -1
- package/dist/services/artist.d.ts.map +0 -1
- package/dist/services/artist.js.map +0 -1
- package/dist/services/artist.schemas.d.ts.map +0 -1
- package/dist/services/artist.schemas.js.map +0 -1
- package/dist/services/auth.d.ts.map +0 -1
- package/dist/services/auth.js.map +0 -1
- package/dist/services/auth.schemas.d.ts.map +0 -1
- package/dist/services/auth.schemas.js.map +0 -1
- package/dist/services/chart.d.ts.map +0 -1
- package/dist/services/chart.js +0 -9
- package/dist/services/chart.js.map +0 -1
- package/dist/services/chart.schemas.d.ts.map +0 -1
- package/dist/services/chart.schemas.js.map +0 -1
- package/dist/services/geo.d.ts.map +0 -1
- package/dist/services/geo.js +0 -8
- package/dist/services/geo.js.map +0 -1
- package/dist/services/geo.schemas.d.ts.map +0 -1
- package/dist/services/geo.schemas.js.map +0 -1
- package/dist/services/index.d.ts +0 -22
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -23
- package/dist/services/index.js.map +0 -1
- package/dist/services/insights/binges.d.ts.map +0 -1
- package/dist/services/insights/binges.js.map +0 -1
- package/dist/services/insights/compare.d.ts.map +0 -1
- package/dist/services/insights/compare.js.map +0 -1
- package/dist/services/insights/discoveries.d.ts.map +0 -1
- package/dist/services/insights/discoveries.js.map +0 -1
- package/dist/services/insights/hours.d.ts.map +0 -1
- package/dist/services/insights/hours.js.map +0 -1
- package/dist/services/insights/lib/binges.d.ts.map +0 -1
- package/dist/services/insights/lib/binges.js.map +0 -1
- package/dist/services/insights/lib/compare.d.ts.map +0 -1
- package/dist/services/insights/lib/compare.js.map +0 -1
- package/dist/services/insights/lib/discoveries.d.ts.map +0 -1
- package/dist/services/insights/lib/discoveries.js.map +0 -1
- package/dist/services/insights/lib/diversity.d.ts.map +0 -1
- package/dist/services/insights/lib/diversity.js.map +0 -1
- package/dist/services/insights/lib/hours.d.ts.map +0 -1
- package/dist/services/insights/lib/hours.js.map +0 -1
- package/dist/services/insights/lib/mood.d.ts.map +0 -1
- package/dist/services/insights/lib/mood.js.map +0 -1
- package/dist/services/insights/lib/periods.d.ts.map +0 -1
- package/dist/services/insights/lib/periods.js.map +0 -1
- package/dist/services/insights/lib/personality.d.ts.map +0 -1
- package/dist/services/insights/lib/personality.js.map +0 -1
- package/dist/services/insights/lib/trends.d.ts.map +0 -1
- package/dist/services/insights/lib/trends.js.map +0 -1
- package/dist/services/insights/mood.d.ts.map +0 -1
- package/dist/services/insights/mood.js.map +0 -1
- package/dist/services/insights/now-playing.js.map +0 -1
- package/dist/services/insights/personality.d.ts.map +0 -1
- package/dist/services/insights/personality.js.map +0 -1
- package/dist/services/insights/summary.d.ts.map +0 -1
- package/dist/services/insights/summary.js.map +0 -1
- package/dist/services/insights/trends.d.ts.map +0 -1
- package/dist/services/insights/trends.js.map +0 -1
- package/dist/services/insights.d.ts +0 -96
- package/dist/services/insights.d.ts.map +0 -1
- package/dist/services/insights.js +0 -26
- package/dist/services/insights.js.map +0 -1
- package/dist/services/insights.schemas.d.ts +0 -710
- package/dist/services/insights.schemas.d.ts.map +0 -1
- package/dist/services/insights.schemas.js.map +0 -1
- package/dist/services/library.d.ts.map +0 -1
- package/dist/services/library.js +0 -7
- package/dist/services/library.js.map +0 -1
- package/dist/services/library.schemas.d.ts.map +0 -1
- package/dist/services/library.schemas.js.map +0 -1
- package/dist/services/schemas/base.entities.schemas.d.ts.map +0 -1
- package/dist/services/schemas/base.entities.schemas.js.map +0 -1
- package/dist/services/schemas/base.entity-names.schemas.d.ts.map +0 -1
- package/dist/services/schemas/base.entity-names.schemas.js.map +0 -1
- package/dist/services/schemas/base.metadata.schemas.d.ts.map +0 -1
- package/dist/services/schemas/base.metadata.schemas.js.map +0 -1
- package/dist/services/schemas/base.pagination.schemas.d.ts.map +0 -1
- package/dist/services/schemas/base.pagination.schemas.js.map +0 -1
- package/dist/services/schemas/base.primitives.schemas.d.ts.map +0 -1
- package/dist/services/schemas/base.primitives.schemas.js.map +0 -1
- package/dist/services/schemas/index.d.ts.map +0 -1
- package/dist/services/schemas/index.js.map +0 -1
- package/dist/services/tag.d.ts.map +0 -1
- package/dist/services/tag.js.map +0 -1
- package/dist/services/tag.schemas.d.ts.map +0 -1
- package/dist/services/tag.schemas.js.map +0 -1
- package/dist/services/track.d.ts.map +0 -1
- package/dist/services/track.js.map +0 -1
- package/dist/services/track.schemas.d.ts.map +0 -1
- package/dist/services/track.schemas.js.map +0 -1
- package/dist/services/track.utils.d.ts.map +0 -1
- package/dist/services/track.utils.js.map +0 -1
- package/dist/services/user.d.ts.map +0 -1
- package/dist/services/user.js +0 -19
- package/dist/services/user.js.map +0 -1
- package/dist/services/user.schemas.d.ts.map +0 -1
- package/dist/services/user.schemas.js.map +0 -1
- /package/dist/{services → core/schemas}/album.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/artist.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/auth.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/auth.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.entities.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.entity-names.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.metadata.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.pagination.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/base.primitives.schemas.js +0 -0
- /package/dist/{services/schemas → core/schemas/base}/index.d.ts +0 -0
- /package/dist/{services/schemas → core/schemas/base}/index.js +0 -0
- /package/dist/{services → core/schemas}/chart.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/geo.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/library.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/tag.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/track.schemas.d.ts +0 -0
- /package/dist/{services → core/schemas}/user.schemas.d.ts +0 -0
- /package/dist/{services → core/services}/track.utils.js +0 -0
- /package/dist/{services/insights → insights}/lib/binges.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/binges.js +0 -0
- /package/dist/{services/insights → insights}/lib/compare.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/compare.js +0 -0
- /package/dist/{services/insights → insights}/lib/discoveries.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/discoveries.js +0 -0
- /package/dist/{services/insights → insights}/lib/diversity.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/diversity.js +0 -0
- /package/dist/{services/insights → insights}/lib/hours.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/hours.js +0 -0
- /package/dist/{services/insights → insights}/lib/mood.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/mood.js +0 -0
- /package/dist/{services/insights → insights}/lib/periods.js +0 -0
- /package/dist/{services/insights → insights}/lib/personality.d.ts +0 -0
- /package/dist/{services/insights → insights}/lib/personality.js +0 -0
- /package/dist/{services/insights → insights}/lib/trends.d.ts +0 -0
- /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":"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"}
|
|
@@ -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
|
|
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
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,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,
|
|
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)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAEtF,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;AAC9E,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;IACzB,KAAK,CAAc;IACnB,OAAO,CAAgB;IAEtB,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,mDAAmD;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAEzD,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;QAClD,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,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"}
|
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
|
package/dist/config.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
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"}
|