muzical-ui 0.1.10 → 0.1.13
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +7 -1
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +75 -3
- package/.next/standalone/.next/required-server-files.json +3 -0
- package/.next/standalone/.next/routes-manifest.json +36 -0
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +24 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +24 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js +6 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/lastfm/track-similar/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js +6 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/youtube/resolve/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js +6 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/youtube/search/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/favicon.ico/route.js +2 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +20 -17
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +20 -17
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/musicbrainz/page.js +4 -4
- package/.next/standalone/.next/server/app/musicbrainz/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/musicbrainz/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.html +1 -1
- package/.next/standalone/.next/server/app/musicbrainz.rsc +22 -19
- package/.next/standalone/.next/server/app/musicbrainz.segments/_full.segment.rsc +22 -19
- package/.next/standalone/.next/server/app/musicbrainz.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/musicbrainz.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/musicbrainz.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/browse/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/browse/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/browse/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/browse/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/browse/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js +15 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/browse/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/browse/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings/browse.html +1 -0
- package/.next/standalone/.next/server/app/settings/browse.meta +16 -0
- package/.next/standalone/.next/server/app/settings/browse.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_full.segment.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/browse.segments/settings.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/display/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/display/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/display/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/display/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/display.html +1 -1
- package/.next/standalone/.next/server/app/settings/display.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/display.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/display.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/display.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/display.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings/display.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/display.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/lastfm/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js +15 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings/lastfm.html +1 -0
- package/.next/standalone/.next/server/app/settings/lastfm.meta +16 -0
- package/.next/standalone/.next/server/app/settings/lastfm.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_full.segment.rsc +29 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/lastfm.segments/settings.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/settings/library/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/library/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/library/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/library/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/library.html +1 -1
- package/.next/standalone/.next/server/app/settings/library.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/library.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/library.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/library.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/library.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings/library.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/library.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/playback/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/playback/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/playback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/playback.html +1 -1
- package/.next/standalone/.next/server/app/settings/playback.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/playback.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/playback.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/playback.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/playback.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/playback.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/youtube/page.js +2 -2
- package/.next/standalone/.next/server/app/settings/youtube/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/youtube/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.html +1 -1
- package/.next/standalone/.next/server/app/settings/youtube.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/youtube.segments/_full.segment.rsc +26 -20
- package/.next/standalone/.next/server/app/settings/youtube.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings/youtube.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings/youtube.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/youtube.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +21 -18
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +21 -18
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +10 -7
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/youtube/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/youtube/page/build-manifest.json +17 -0
- package/.next/standalone/.next/server/app/youtube/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/youtube/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/youtube/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/youtube/page.js +15 -0
- package/.next/standalone/.next/server/app/youtube/page.js.map +5 -0
- package/.next/standalone/.next/server/app/youtube/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/youtube/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/youtube.html +1 -0
- package/.next/standalone/.next/server/app/youtube.meta +17 -0
- package/.next/standalone/.next/server/app/youtube.rsc +25 -0
- package/.next/standalone/.next/server/app/youtube.segments/_full.segment.rsc +25 -0
- package/.next/standalone/.next/server/app/youtube.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/youtube.segments/_index.segment.rsc +11 -0
- package/.next/standalone/.next/server/app/youtube.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/youtube.segments/youtube/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/youtube.segments/youtube.segment.rsc +5 -0
- package/.next/standalone/.next/server/app-paths-manifest.json +7 -1
- package/.next/standalone/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0mm3io..js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04rmaa_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iga-fk._.js +13 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0syodc9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yh0qgz._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_lastfm_track-similar_route_actions_0o0aksj.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_resolve_route_actions_00u-beh.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_search_route_actions_11oame5.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0952jxx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0epj5a8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0lxnb~i._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0mpaeoj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0vvxdoi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xiet5m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xr.otg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_apev2_APEv2Parser_0baa0n9.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_id3v2_048_t.z._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_matroska_MatroskaParser_129r4d4.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_mpeg_MpegParser_02l3ght.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_02m-902._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0v8tsu.._.js → 0z~i_next_dist_0y7_gi1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05w__hq.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0rtq_vg.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0zexs35.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.kc4tr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-3mbr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__044c9~u._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0v30c9w._.js → [root-of-the-server]__05f62me._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hiy0el._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wgbp9t._.js → [root-of-the-server]__0jowkig._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lkpda-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sn2..k._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_014lxrc._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_06it0sh._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0b8qx~m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0~cb-t9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_browse_page_actions_0_gn~yf.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_lastfm_page_actions_002qs5v.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_youtube_page_actions_12geo5h.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_00y4y-o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_0c.t1du._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_0dp4-uk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_LastfmSettingsPanel_tsx_0tqjys8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_LibrarySettingsPanel_tsx_0krc7dk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/components_MusicPlayer_tsx_06~82ey._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_SettingsOverview_tsx_0axvc~a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/components_SettingsSwitchRow_tsx_0rn035g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/lib_0mppqs2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0bx6yug._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0f~0-nb._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +12 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/00bzw__-m1fpe.js +1 -0
- package/.next/standalone/.next/static/chunks/00ffr5pv82u34.js +1 -0
- package/.next/standalone/.next/static/chunks/03f3hyhv4x63v.js +1 -0
- package/.next/standalone/.next/static/chunks/04-q~k1s4h2o9.js +31 -0
- package/.next/standalone/.next/static/chunks/0638t8cqzkdfe.js +1 -0
- package/.next/standalone/.next/static/chunks/073k~no118gmz.js +1 -0
- package/.next/standalone/.next/static/chunks/0c5m3gpe71ppi.js +1 -0
- package/.next/standalone/.next/static/chunks/0dusa1wc1mnfl.js +1 -0
- package/.next/standalone/.next/static/chunks/0me.0ghc7bi2f.js +1 -0
- package/.next/standalone/.next/static/chunks/0ps~ft3qx-shn.css +3 -0
- package/.next/standalone/.next/static/chunks/0ty~h16-~8eka.js +1 -0
- package/.next/standalone/.next/static/chunks/0w~k0r.qfm0zf.js +1 -0
- package/.next/standalone/.next/static/chunks/0xj5z58rgukgs.js +1 -0
- package/.next/standalone/.next/static/chunks/109xoml1ptc8~.js +1 -0
- package/.next/standalone/.next/static/chunks/14z_1xu7t6lay.js +2 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0g-.7kit-b4.8.js → turbopack-0ctpbjx-g6dyl.js} +1 -1
- package/.next/standalone/package.json +9 -8
- package/.next/standalone/server.js +1 -1
- package/package.json +9 -8
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~e2g3i._.js +0 -13
- package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_0z0kx9a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00e_fc7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_8f2hf._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_09vx.ql._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/components_0-e3h_v._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/components_YouTubeSettingsPanel_tsx_0t6pw~9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/lib_library_favorite-keys_ts_0mlju9x._.js +0 -3
- package/.next/standalone/.next/static/chunks/06c2c_.-4ag08.css +0 -3
- package/.next/standalone/.next/static/chunks/0_fmjohj6n9ax.js +0 -1
- package/.next/standalone/.next/static/chunks/0cx3-_9jp9j1a.js +0 -1
- package/.next/standalone/.next/static/chunks/0d05.rh-.aulc.js +0 -1
- package/.next/standalone/.next/static/chunks/0gs~olgu8~txo.js +0 -1
- package/.next/standalone/.next/static/chunks/0lse6x.rhc0i5.js +0 -1
- package/.next/standalone/.next/static/chunks/0nh7t0mlv.533.js +0 -2
- package/.next/standalone/.next/static/chunks/0wvzb~7kpzo6n.js +0 -1
- package/.next/standalone/.next/static/chunks/0y-bftn0gphdn.js +0 -1
- package/.next/standalone/.next/static/chunks/10e1sx.nf-s.5.js +0 -1
- package/.next/standalone/.next/static/chunks/10l3mqv783cbv.js +0 -1
- package/.next/standalone/.next/static/chunks/118x8mar90jp8.js +0 -1
- package/.next/standalone/.next/static/chunks/148g6~qgt.qca.js +0 -31
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{n5DAS0x4tZcr-pX-g7jcA → 6R8dLcmFAc7AeUCNbCJAA}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(61102);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},85190,a=>{"use strict";var b=a.i(35617),c=a.i(44676),d=a.i(1962),e=a.i(73850);let f={len:12,get:(a,b)=>({id:e.FourCcToken.get(a,b),size:d.UINT64_LE.get(a,b+4)})},g={len:16,get:(a,b)=>({fileSize:d.INT64_LE.get(a,b),metadataPointer:d.INT64_LE.get(a,b+8)})},h={len:40,get:(a,b)=>({formatVersion:d.INT32_LE.get(a,b),formatID:d.INT32_LE.get(a,b+4),channelType:d.INT32_LE.get(a,b+8),channelNum:d.INT32_LE.get(a,b+12),samplingFrequency:d.INT32_LE.get(a,b+16),bitsPerSample:d.INT32_LE.get(a,b+20),sampleCount:d.INT64_LE.get(a,b+24),blockSizePerChannel:d.INT32_LE.get(a,b+32)})};var i=a.i(54868),j=a.i(74777);let k=(0,b.default)("music-metadata:parser:DSF");class l extends(0,j.makeUnexpectedFileContentError)("DSD"){}class m extends c.AbstractID3Parser{async postId3v2Parse(){let a=this.tokenizer.position,b=await this.tokenizer.readToken(f);if("DSD "!==b.id)throw new l("Invalid chunk signature");this.metadata.setFormat("container","DSF"),this.metadata.setFormat("lossless",!0),this.metadata.setAudioOnly();let c=await this.tokenizer.readToken(g);if(c.metadataPointer!==BigInt(0))return k(`expect ID3v2 at offset=${c.metadataPointer}`),await this.parseChunks(c.fileSize-b.size),await this.tokenizer.ignore(Number(c.metadataPointer)-this.tokenizer.position-a),new i.ID3v2Parser().parse(this.metadata,this.tokenizer,this.options);k("No ID3v2 tag present")}async parseChunks(a){for(;a>=f.len;){let b=await this.tokenizer.readToken(f);if(k(`Parsing chunk name=${b.id} size=${b.size}`),"fmt "===b.id){let a=await this.tokenizer.readToken(h);this.metadata.setFormat("numberOfChannels",a.channelNum),this.metadata.setFormat("sampleRate",a.samplingFrequency),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("numberOfSamples",a.sampleCount),this.metadata.setFormat("duration",Number(a.sampleCount)/a.samplingFrequency);let b=a.bitsPerSample*a.samplingFrequency*a.channelNum;this.metadata.setFormat("bitrate",b);return}this.tokenizer.ignore(Number(b.size)-f.len),a-=b.size}}}a.s(["DsfParser",0,m],85190)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(17588);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},85190,a=>{"use strict";var b=a.i(35617),c=a.i(44676),d=a.i(1962),e=a.i(73850);let f={len:12,get:(a,b)=>({id:e.FourCcToken.get(a,b),size:d.UINT64_LE.get(a,b+4)})},g={len:16,get:(a,b)=>({fileSize:d.INT64_LE.get(a,b),metadataPointer:d.INT64_LE.get(a,b+8)})},h={len:40,get:(a,b)=>({formatVersion:d.INT32_LE.get(a,b),formatID:d.INT32_LE.get(a,b+4),channelType:d.INT32_LE.get(a,b+8),channelNum:d.INT32_LE.get(a,b+12),samplingFrequency:d.INT32_LE.get(a,b+16),bitsPerSample:d.INT32_LE.get(a,b+20),sampleCount:d.INT64_LE.get(a,b+24),blockSizePerChannel:d.INT32_LE.get(a,b+32)})};var i=a.i(54868),j=a.i(74777);let k=(0,b.default)("music-metadata:parser:DSF");class l extends(0,j.makeUnexpectedFileContentError)("DSD"){}class m extends c.AbstractID3Parser{async postId3v2Parse(){let a=this.tokenizer.position,b=await this.tokenizer.readToken(f);if("DSD "!==b.id)throw new l("Invalid chunk signature");this.metadata.setFormat("container","DSF"),this.metadata.setFormat("lossless",!0),this.metadata.setAudioOnly();let c=await this.tokenizer.readToken(g);if(c.metadataPointer!==BigInt(0))return k(`expect ID3v2 at offset=${c.metadataPointer}`),await this.parseChunks(c.fileSize-b.size),await this.tokenizer.ignore(Number(c.metadataPointer)-this.tokenizer.position-a),new i.ID3v2Parser().parse(this.metadata,this.tokenizer,this.options);k("No ID3v2 tag present")}async parseChunks(a){for(;a>=f.len;){let b=await this.tokenizer.readToken(f);if(k(`Parsing chunk name=${b.id} size=${b.size}`),"fmt "===b.id){let a=await this.tokenizer.readToken(h);this.metadata.setFormat("numberOfChannels",a.channelNum),this.metadata.setFormat("sampleRate",a.samplingFrequency),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("numberOfSamples",a.sampleCount),this.metadata.setFormat("duration",Number(a.sampleCount)/a.samplingFrequency);let b=a.bitsPerSample*a.samplingFrequency*a.channelNum;this.metadata.setFormat("bitrate",b);return}this.tokenizer.ignore(Number(b.size)-f.len),a-=b.size}}}a.s(["DsfParser",0,m],85190)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0epj5a8._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(61102);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},12190,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(44676),e=a.i(7304),f=a.i(81318),g=a.i(73850),h=a.i(82670);let i=(0,b.default)("music-metadata:parser:musepack:sv8"),j=new c.StringType(2,"latin1"),k={len:5,get:(a,b)=>({crc:c.UINT32_LE.get(a,b),streamVersion:c.UINT8.get(a,b+4)})},l={len:2,get:(a,b)=>({sampleFrequency:[44100,48e3,37800,32e3][h.getBitAllignedNumber(a,b,0,3)],maxUsedBands:h.getBitAllignedNumber(a,b,3,5),channelCount:h.getBitAllignedNumber(a,b+1,0,4)+1,msUsed:h.isBitSet(a,b+1,4),audioBlockFrames:h.getBitAllignedNumber(a,b+1,5,3)})};class m{get tokenizer(){return this._tokenizer}set tokenizer(a){this._tokenizer=a}constructor(a){this._tokenizer=a}async readPacketHeader(){let a=await this.tokenizer.readToken(j),b=await this.readVariableSizeField();return{key:a,payloadLength:b.value-2-b.len}}async readStreamHeader(a){let b={};i(`Reading SH at offset=${this.tokenizer.position}`);let c=await this.tokenizer.readToken(k);a-=k.len,Object.assign(b,c),i(`SH.streamVersion = ${c.streamVersion}`);let d=await this.readVariableSizeField();a-=d.len,b.sampleCount=d.value;let e=await this.readVariableSizeField();a-=e.len,b.beginningOfSilence=e.value;let f=await this.tokenizer.readToken(l);return a-=l.len,Object.assign(b,f),await this.tokenizer.ignore(a),b}async readVariableSizeField(a=1,b=0){let d=await this.tokenizer.readNumber(c.UINT8);return(128&d)==0?{len:a,value:b+d}:(d&=127,d+=b,this.readVariableSizeField(a+1,d<<7))}}var n=a.i(74777);class o extends(0,n.makeUnexpectedFileContentError)("Musepack"){}let p=(0,b.default)("music-metadata:parser:musepack");class q extends e.BasicParser{constructor(){super(...arguments),this.audioLength=0}async parse(){if("MPCK"!==await this.tokenizer.readToken(g.FourCcToken))throw new o("Invalid Magic number");return this.metadata.setFormat("container","Musepack, SV8"),this.parsePacket()}async parsePacket(){let a=new m(this.tokenizer);for(;;){let b=await a.readPacketHeader();switch(p(`packet-header key=${b.key}, payloadLength=${b.payloadLength}`),b.key){case"SH":{let c=await a.readStreamHeader(b.payloadLength);this.metadata.setFormat("numberOfSamples",c.sampleCount),this.metadata.setFormat("sampleRate",c.sampleFrequency),this.metadata.setFormat("duration",c.sampleCount/c.sampleFrequency),this.metadata.setFormat("numberOfChannels",c.channelCount);break}case"AP":this.audioLength+=b.payloadLength,await this.tokenizer.ignore(b.payloadLength);break;case"RG":case"EI":case"SO":case"ST":case"CT":await this.tokenizer.ignore(b.payloadLength);break;case"SE":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*this.audioLength/this.metadata.format.duration),(0,f.tryParseApeHeader)(this.metadata,this.tokenizer,this.options);default:throw new o(`Unexpected header: ${b.key}`)}}}}var r=e;class s{constructor(a){this.pos=0,this.dword=null,this.tokenizer=a}async read(a){for(;null===this.dword;)this.dword=await this.tokenizer.readToken(c.UINT32_LE);let b=this.dword;return(this.pos+=a,this.pos<32)?(b>>>=32-this.pos)&(1<<a)-1:((this.pos-=32,0===this.pos)?this.dword=null:(this.dword=await this.tokenizer.readToken(c.UINT32_LE),this.pos&&(b<<=this.pos,b|=this.dword>>>32-this.pos)),b&(1<<a)-1)}async ignore(a){if(this.pos>0){let b=32-this.pos;this.dword=null,a-=b,this.pos=0}let b=a%32,c=(a-b)/32;return await this.tokenizer.ignore(4*c),this.read(b)}}var t=a.i(73635);let u={len:24,get:(a,b)=>{let d={signature:(0,t.textDecode)(a.subarray(b,b+3),"latin1"),streamMinorVersion:h.getBitAllignedNumber(a,b+3,0,4),streamMajorVersion:h.getBitAllignedNumber(a,b+3,4,4),frameCount:c.UINT32_LE.get(a,b+4),maxLevel:c.UINT16_LE.get(a,b+8),sampleFrequency:[44100,48e3,37800,32e3][h.getBitAllignedNumber(a,b+10,0,2)],link:h.getBitAllignedNumber(a,b+10,2,2),profile:h.getBitAllignedNumber(a,b+10,4,4),maxBand:h.getBitAllignedNumber(a,b+11,0,6),intensityStereo:h.isBitSet(a,b+11,6),midSideStereo:h.isBitSet(a,b+11,7),titlePeak:c.UINT16_LE.get(a,b+12),titleGain:c.UINT16_LE.get(a,b+14),albumPeak:c.UINT16_LE.get(a,b+16),albumGain:c.UINT16_LE.get(a,b+18),lastFrameLength:c.UINT32_LE.get(a,b+20)>>>20&2047,trueGapless:h.isBitSet(a,b+23,0)};return d.lastFrameLength=d.trueGapless?c.UINT32_LE.get(a,20)>>>20&2047:0,d}},v=(0,b.default)("music-metadata:parser:musepack");class w extends r.BasicParser{constructor(){super(...arguments),this.bitreader=null,this.audioLength=0,this.duration=null}async parse(){let a=await this.tokenizer.readToken(u);if("MP+"!==a.signature)throw new o("Unexpected magic number");v(`stream-version=${a.streamMajorVersion}.${a.streamMinorVersion}`),this.metadata.setFormat("container","Musepack, SV7"),this.metadata.setFormat("sampleRate",a.sampleFrequency);let b=1152*(a.frameCount-1)+a.lastFrameLength;this.metadata.setFormat("numberOfSamples",b),this.duration=b/a.sampleFrequency,this.metadata.setFormat("duration",this.duration),this.bitreader=new s(this.tokenizer),this.metadata.setFormat("numberOfChannels",a.midSideStereo||a.intensityStereo?2:1);let c=await this.bitreader.read(8);return this.metadata.setFormat("codec",(c/100).toFixed(2)),await this.skipAudioData(a.frameCount),v(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`),(0,f.tryParseApeHeader)(this.metadata,this.tokenizer,this.options)}async skipAudioData(a){for(;a-- >0;){let a=await this.bitreader.read(20);this.audioLength+=20+a,await this.bitreader.ignore(a)}let b=await this.bitreader.read(11);this.audioLength+=b,null!==this.duration&&this.metadata.setFormat("bitrate",this.audioLength/this.duration)}}let x=(0,b.default)("music-metadata:parser:musepack");class y extends d.AbstractID3Parser{async postId3v2Parse(){let a;switch(await this.tokenizer.peekToken(new c.StringType(3,"latin1"))){case"MP+":x("Stream-version 7"),a=new w(this.metadata,this.tokenizer,this.options);break;case"MPC":x("Stream-version 8"),a=new q(this.metadata,this.tokenizer,this.options);break;default:throw new o("Invalid signature prefix")}return this.metadata.setAudioOnly(),a.parse()}}a.s(["MusepackParser",0,y],12190)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(17588);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},12190,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(44676),e=a.i(7304),f=a.i(81318),g=a.i(73850),h=a.i(82670);let i=(0,b.default)("music-metadata:parser:musepack:sv8"),j=new c.StringType(2,"latin1"),k={len:5,get:(a,b)=>({crc:c.UINT32_LE.get(a,b),streamVersion:c.UINT8.get(a,b+4)})},l={len:2,get:(a,b)=>({sampleFrequency:[44100,48e3,37800,32e3][h.getBitAllignedNumber(a,b,0,3)],maxUsedBands:h.getBitAllignedNumber(a,b,3,5),channelCount:h.getBitAllignedNumber(a,b+1,0,4)+1,msUsed:h.isBitSet(a,b+1,4),audioBlockFrames:h.getBitAllignedNumber(a,b+1,5,3)})};class m{get tokenizer(){return this._tokenizer}set tokenizer(a){this._tokenizer=a}constructor(a){this._tokenizer=a}async readPacketHeader(){let a=await this.tokenizer.readToken(j),b=await this.readVariableSizeField();return{key:a,payloadLength:b.value-2-b.len}}async readStreamHeader(a){let b={};i(`Reading SH at offset=${this.tokenizer.position}`);let c=await this.tokenizer.readToken(k);a-=k.len,Object.assign(b,c),i(`SH.streamVersion = ${c.streamVersion}`);let d=await this.readVariableSizeField();a-=d.len,b.sampleCount=d.value;let e=await this.readVariableSizeField();a-=e.len,b.beginningOfSilence=e.value;let f=await this.tokenizer.readToken(l);return a-=l.len,Object.assign(b,f),await this.tokenizer.ignore(a),b}async readVariableSizeField(a=1,b=0){let d=await this.tokenizer.readNumber(c.UINT8);return(128&d)==0?{len:a,value:b+d}:(d&=127,d+=b,this.readVariableSizeField(a+1,d<<7))}}var n=a.i(74777);class o extends(0,n.makeUnexpectedFileContentError)("Musepack"){}let p=(0,b.default)("music-metadata:parser:musepack");class q extends e.BasicParser{constructor(){super(...arguments),this.audioLength=0}async parse(){if("MPCK"!==await this.tokenizer.readToken(g.FourCcToken))throw new o("Invalid Magic number");return this.metadata.setFormat("container","Musepack, SV8"),this.parsePacket()}async parsePacket(){let a=new m(this.tokenizer);for(;;){let b=await a.readPacketHeader();switch(p(`packet-header key=${b.key}, payloadLength=${b.payloadLength}`),b.key){case"SH":{let c=await a.readStreamHeader(b.payloadLength);this.metadata.setFormat("numberOfSamples",c.sampleCount),this.metadata.setFormat("sampleRate",c.sampleFrequency),this.metadata.setFormat("duration",c.sampleCount/c.sampleFrequency),this.metadata.setFormat("numberOfChannels",c.channelCount);break}case"AP":this.audioLength+=b.payloadLength,await this.tokenizer.ignore(b.payloadLength);break;case"RG":case"EI":case"SO":case"ST":case"CT":await this.tokenizer.ignore(b.payloadLength);break;case"SE":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*this.audioLength/this.metadata.format.duration),(0,f.tryParseApeHeader)(this.metadata,this.tokenizer,this.options);default:throw new o(`Unexpected header: ${b.key}`)}}}}var r=e;class s{constructor(a){this.pos=0,this.dword=null,this.tokenizer=a}async read(a){for(;null===this.dword;)this.dword=await this.tokenizer.readToken(c.UINT32_LE);let b=this.dword;return(this.pos+=a,this.pos<32)?(b>>>=32-this.pos)&(1<<a)-1:((this.pos-=32,0===this.pos)?this.dword=null:(this.dword=await this.tokenizer.readToken(c.UINT32_LE),this.pos&&(b<<=this.pos,b|=this.dword>>>32-this.pos)),b&(1<<a)-1)}async ignore(a){if(this.pos>0){let b=32-this.pos;this.dword=null,a-=b,this.pos=0}let b=a%32,c=(a-b)/32;return await this.tokenizer.ignore(4*c),this.read(b)}}var t=a.i(73635);let u={len:24,get:(a,b)=>{let d={signature:(0,t.textDecode)(a.subarray(b,b+3),"latin1"),streamMinorVersion:h.getBitAllignedNumber(a,b+3,0,4),streamMajorVersion:h.getBitAllignedNumber(a,b+3,4,4),frameCount:c.UINT32_LE.get(a,b+4),maxLevel:c.UINT16_LE.get(a,b+8),sampleFrequency:[44100,48e3,37800,32e3][h.getBitAllignedNumber(a,b+10,0,2)],link:h.getBitAllignedNumber(a,b+10,2,2),profile:h.getBitAllignedNumber(a,b+10,4,4),maxBand:h.getBitAllignedNumber(a,b+11,0,6),intensityStereo:h.isBitSet(a,b+11,6),midSideStereo:h.isBitSet(a,b+11,7),titlePeak:c.UINT16_LE.get(a,b+12),titleGain:c.UINT16_LE.get(a,b+14),albumPeak:c.UINT16_LE.get(a,b+16),albumGain:c.UINT16_LE.get(a,b+18),lastFrameLength:c.UINT32_LE.get(a,b+20)>>>20&2047,trueGapless:h.isBitSet(a,b+23,0)};return d.lastFrameLength=d.trueGapless?c.UINT32_LE.get(a,20)>>>20&2047:0,d}},v=(0,b.default)("music-metadata:parser:musepack");class w extends r.BasicParser{constructor(){super(...arguments),this.bitreader=null,this.audioLength=0,this.duration=null}async parse(){let a=await this.tokenizer.readToken(u);if("MP+"!==a.signature)throw new o("Unexpected magic number");v(`stream-version=${a.streamMajorVersion}.${a.streamMinorVersion}`),this.metadata.setFormat("container","Musepack, SV7"),this.metadata.setFormat("sampleRate",a.sampleFrequency);let b=1152*(a.frameCount-1)+a.lastFrameLength;this.metadata.setFormat("numberOfSamples",b),this.duration=b/a.sampleFrequency,this.metadata.setFormat("duration",this.duration),this.bitreader=new s(this.tokenizer),this.metadata.setFormat("numberOfChannels",a.midSideStereo||a.intensityStereo?2:1);let c=await this.bitreader.read(8);return this.metadata.setFormat("codec",(c/100).toFixed(2)),await this.skipAudioData(a.frameCount),v(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`),(0,f.tryParseApeHeader)(this.metadata,this.tokenizer,this.options)}async skipAudioData(a){for(;a-- >0;){let a=await this.bitreader.read(20);this.audioLength+=20+a,await this.bitreader.ignore(a)}let b=await this.bitreader.read(11);this.audioLength+=b,null!==this.duration&&this.metadata.setFormat("bitrate",this.audioLength/this.duration)}}let x=(0,b.default)("music-metadata:parser:musepack");class y extends d.AbstractID3Parser{async postId3v2Parse(){let a;switch(await this.tokenizer.peekToken(new c.StringType(3,"latin1"))){case"MP+":x("Stream-version 7"),a=new w(this.metadata,this.tokenizer,this.options);break;case"MPC":x("Stream-version 8"),a=new q(this.metadata,this.tokenizer,this.options);break;default:throw new o("Invalid signature prefix")}return this.metadata.setAudioOnly(),a.parse()}}a.s(["MusepackParser",0,y],12190)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0lxnb~i._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(61102);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},26468,a=>{"use strict";var b=a.i(1962),c=a.i(68231);class d{static fromBase64(a){return d.fromBuffer(Uint8Array.from(atob(a),a=>a.charCodeAt(0)))}static fromBuffer(a){return new d(a.length).get(a,0)}constructor(a){this.len=a}get(a,d){let e=c.AttachedPictureType[b.UINT32_BE.get(a,d)];d+=4;let f=b.UINT32_BE.get(a,d);d+=4;let g=new b.StringType(f,"utf-8").get(a,d);d+=f;let h=b.UINT32_BE.get(a,d);d+=4;let i=new b.StringType(h,"utf-8").get(a,d);d+=h;let j=b.UINT32_BE.get(a,d);d+=4;let k=b.UINT32_BE.get(a,d);d+=4;let l=b.UINT32_BE.get(a,d);d+=4;let m=b.UINT32_BE.get(a,d);d+=4;let n=b.UINT32_BE.get(a,d);return d+=4,{type:e,format:g,description:i,width:j,height:k,colour_depth:l,indexed_color:m,data:a.slice(d,d+n)}}}a.s(["CommonHeader",0,{len:7,get:(a,c)=>({packetType:b.UINT8.get(a,c),vorbis:new b.StringType(6,"ascii").get(a,c+1)})},"IdentificationHeader",0,{len:23,get:(a,c)=>({version:b.UINT32_LE.get(a,c+0),channelMode:b.UINT8.get(a,c+4),sampleRate:b.UINT32_LE.get(a,c+5),bitrateMax:b.UINT32_LE.get(a,c+9),bitrateNominal:b.UINT32_LE.get(a,c+13),bitrateMin:b.UINT32_LE.get(a,c+17)})},"VorbisPictureToken",0,d])},44024,a=>{"use strict";var b=a.i(1962),c=a.i(73635);a.s(["VorbisDecoder",0,class{constructor(a,b){this.data=a,this.offset=b}readInt32(){let a=b.UINT32_LE.get(this.data,this.offset);return this.offset+=4,a}readStringUtf8(){let a=this.readInt32(),b=(0,c.textDecode)(this.data.subarray(this.offset,this.offset+a),"utf-8");return this.offset+=a,b}parseUserComment(){let a=this.offset,b=this.readStringUtf8(),c=b.indexOf("=");return{key:b.substring(0,c).toUpperCase(),value:b.substring(c+1),len:this.offset-a}}}])},23163,95023,51836,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(26468),e=a.i(44676),f=a.i(73850),g=a.i(44024),h=a.i(74777);let i=(0,b.default)("music-metadata:parser:ogg:vorbis1");class j extends(0,h.makeUnexpectedFileContentError)("Vorbis"){}class k{constructor(a,b){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=a,this.options=b}async parsePage(a,b){if(this.lastPageHeader=a,a.headerType.firstPage)this.parseFirstPage(a,b);else{if(a.headerType.continued){if(0===this.pageSegments.length)throw new j("Cannot continue on previous page");this.pageSegments.push(b)}if(a.headerType.lastPage||!a.headerType.continued){if(this.pageSegments.length>0){let a=k.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(a)}this.pageSegments=a.headerType.lastPage?[]:[b]}}}static mergeUint8Arrays(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0));return a.forEach((a,c,d)=>{let e=d.slice(0,c).reduce((a,b)=>a+b.length,0);b.set(a,e)}),b}async flush(){await this.parseFullPage(k.mergeUint8Arrays(this.pageSegments))}async parseUserComment(a,b){let c=new g.VorbisDecoder(a,b).parseUserComment();return await this.addTag(c.key,c.value),c.len}async addTag(a,b){if("METADATA_BLOCK_PICTURE"===a&&"string"==typeof b){if(this.options.skipCovers)return void i("Ignore picture");b=d.VorbisPictureToken.fromBase64(b),i(`Push picture: id=${a}, format=${b.format}`)}else i(`Push tag: id=${a}, value=${b}`);await this.metadata.addTag("vorbis",a,b)}calculateDuration(a){this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(a,b){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),i("Parse first page");let c=d.CommonHeader.get(b,0);if("vorbis"!==c.vorbis)throw new j("Metadata does not look like Vorbis");if(1===c.packetType){let a=d.IdentificationHeader.get(b,d.CommonHeader.len);this.metadata.setFormat("sampleRate",a.sampleRate),this.metadata.setFormat("bitrate",a.bitrateNominal),this.metadata.setFormat("numberOfChannels",a.channelMode),i("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",a.sampleRate,a.bitrateNominal,a.channelMode)}else throw new j("First Ogg page should be type 1: the identification header")}async parseFullPage(a){let b=d.CommonHeader.get(a,0);if(i("Parse full page: type=%s, byteLength=%s",b.packetType,a.byteLength),3===b.packetType)return this.parseUserCommentList(a,d.CommonHeader.len)}async parseUserCommentList(a,b){let d=c.UINT32_LE.get(a,b);b+=4,b+=d;let e=c.UINT32_LE.get(a,b);for(b+=4;e-- >0;)b+=await this.parseUserComment(a,b)}}a.s(["VorbisStream",0,k],95023);var l=h,m=a.i(82670);let n={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},o={len:4,get:(a,b)=>({lastBlock:m.getBit(a,b,7),type:m.getBitAllignedNumber(a,b,1,7),length:c.UINT24_BE.get(a,b+1)})},p={len:34,get:(a,b)=>({minimumBlockSize:c.UINT16_BE.get(a,b),maximumBlockSize:c.UINT16_BE.get(a,b+2)/1e3,minimumFrameSize:c.UINT24_BE.get(a,b+4),maximumFrameSize:c.UINT24_BE.get(a,b+7),sampleRate:c.UINT24_BE.get(a,b+10)>>4,channels:m.getBitAllignedNumber(a,b+12,4,3)+1,bitsPerSample:m.getBitAllignedNumber(a,b+12,7,5)+1,totalSamples:m.getBitAllignedNumber(a,b+13,4,36),fileMD5:new c.Uint8ArrayType(16).get(a,b+18)})};a.s(["BlockHeader",0,o,"BlockStreamInfo",0,p,"BlockType",0,n],51836);let q=(0,b.default)("music-metadata:parser:FLAC");class r extends(0,l.makeUnexpectedFileContentError)("FLAC"){}class s extends e.AbstractID3Parser{constructor(){super(...arguments),this.vorbisParser=new k(this.metadata,this.options)}async postId3v2Parse(){let a;if("fLaC"!==(await this.tokenizer.readToken(f.FourCcToken)).toString())throw new r("Invalid FLAC preamble");do a=await this.tokenizer.readToken(o),await this.parseDataBlock(a);while(!a.lastBlock)if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}async parseDataBlock(a){switch(q(`blockHeader type=${a.type}, length=${a.length}`),a.type){case n.STREAMINFO:return this.readBlockStreamInfo(a.length);case n.PADDING:case n.APPLICATION:case n.SEEKTABLE:break;case n.VORBIS_COMMENT:return this.readComment(a.length);case n.CUESHEET:break;case n.PICTURE:await this.parsePicture(a.length);return;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}async readBlockStreamInfo(a){if(a!==p.len)throw new r("Unexpected block-stream-info length");let b=await this.tokenizer.readToken(p);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(b)}processsStreamInfo(a){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",a.channels),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("sampleRate",a.sampleRate),a.totalSamples>0&&this.metadata.setFormat("duration",a.totalSamples/a.sampleRate)}async readComment(a){let b=await this.tokenizer.readToken(new c.Uint8ArrayType(a));return this.parseComment(b)}async parseComment(a){let b=new g.VorbisDecoder(a,0),c=b.readStringUtf8();c.length>0&&this.metadata.setFormat("tool",c);let d=b.readInt32(),e=Array(d);for(let a=0;a<d;a++)e[a]=b.parseUserComment();await Promise.all(e.map(a=>("ENCODER"===a.key&&this.metadata.setFormat("tool",a.value),this.addTag(a.key,a.value))))}async parsePicture(a){return this.options.skipCovers?this.tokenizer.ignore(a):this.addPictureTag(await this.tokenizer.readToken(new d.VorbisPictureToken(a)))}addPictureTag(a){return this.addTag("METADATA_BLOCK_PICTURE",a)}addTag(a,b){return this.vorbisParser.addTag(a,b)}}a.s(["FlacParser",0,s],23163)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(17588);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},26468,a=>{"use strict";var b=a.i(1962),c=a.i(68231);class d{static fromBase64(a){return d.fromBuffer(Uint8Array.from(atob(a),a=>a.charCodeAt(0)))}static fromBuffer(a){return new d(a.length).get(a,0)}constructor(a){this.len=a}get(a,d){let e=c.AttachedPictureType[b.UINT32_BE.get(a,d)];d+=4;let f=b.UINT32_BE.get(a,d);d+=4;let g=new b.StringType(f,"utf-8").get(a,d);d+=f;let h=b.UINT32_BE.get(a,d);d+=4;let i=new b.StringType(h,"utf-8").get(a,d);d+=h;let j=b.UINT32_BE.get(a,d);d+=4;let k=b.UINT32_BE.get(a,d);d+=4;let l=b.UINT32_BE.get(a,d);d+=4;let m=b.UINT32_BE.get(a,d);d+=4;let n=b.UINT32_BE.get(a,d);return d+=4,{type:e,format:g,description:i,width:j,height:k,colour_depth:l,indexed_color:m,data:a.slice(d,d+n)}}}a.s(["CommonHeader",0,{len:7,get:(a,c)=>({packetType:b.UINT8.get(a,c),vorbis:new b.StringType(6,"ascii").get(a,c+1)})},"IdentificationHeader",0,{len:23,get:(a,c)=>({version:b.UINT32_LE.get(a,c+0),channelMode:b.UINT8.get(a,c+4),sampleRate:b.UINT32_LE.get(a,c+5),bitrateMax:b.UINT32_LE.get(a,c+9),bitrateNominal:b.UINT32_LE.get(a,c+13),bitrateMin:b.UINT32_LE.get(a,c+17)})},"VorbisPictureToken",0,d])},44024,a=>{"use strict";var b=a.i(1962),c=a.i(73635);a.s(["VorbisDecoder",0,class{constructor(a,b){this.data=a,this.offset=b}readInt32(){let a=b.UINT32_LE.get(this.data,this.offset);return this.offset+=4,a}readStringUtf8(){let a=this.readInt32(),b=(0,c.textDecode)(this.data.subarray(this.offset,this.offset+a),"utf-8");return this.offset+=a,b}parseUserComment(){let a=this.offset,b=this.readStringUtf8(),c=b.indexOf("=");return{key:b.substring(0,c).toUpperCase(),value:b.substring(c+1),len:this.offset-a}}}])},23163,95023,51836,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(26468),e=a.i(44676),f=a.i(73850),g=a.i(44024),h=a.i(74777);let i=(0,b.default)("music-metadata:parser:ogg:vorbis1");class j extends(0,h.makeUnexpectedFileContentError)("Vorbis"){}class k{constructor(a,b){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=a,this.options=b}async parsePage(a,b){if(this.lastPageHeader=a,a.headerType.firstPage)this.parseFirstPage(a,b);else{if(a.headerType.continued){if(0===this.pageSegments.length)throw new j("Cannot continue on previous page");this.pageSegments.push(b)}if(a.headerType.lastPage||!a.headerType.continued){if(this.pageSegments.length>0){let a=k.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(a)}this.pageSegments=a.headerType.lastPage?[]:[b]}}}static mergeUint8Arrays(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0));return a.forEach((a,c,d)=>{let e=d.slice(0,c).reduce((a,b)=>a+b.length,0);b.set(a,e)}),b}async flush(){await this.parseFullPage(k.mergeUint8Arrays(this.pageSegments))}async parseUserComment(a,b){let c=new g.VorbisDecoder(a,b).parseUserComment();return await this.addTag(c.key,c.value),c.len}async addTag(a,b){if("METADATA_BLOCK_PICTURE"===a&&"string"==typeof b){if(this.options.skipCovers)return void i("Ignore picture");b=d.VorbisPictureToken.fromBase64(b),i(`Push picture: id=${a}, format=${b.format}`)}else i(`Push tag: id=${a}, value=${b}`);await this.metadata.addTag("vorbis",a,b)}calculateDuration(a){this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(a,b){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),i("Parse first page");let c=d.CommonHeader.get(b,0);if("vorbis"!==c.vorbis)throw new j("Metadata does not look like Vorbis");if(1===c.packetType){let a=d.IdentificationHeader.get(b,d.CommonHeader.len);this.metadata.setFormat("sampleRate",a.sampleRate),this.metadata.setFormat("bitrate",a.bitrateNominal),this.metadata.setFormat("numberOfChannels",a.channelMode),i("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",a.sampleRate,a.bitrateNominal,a.channelMode)}else throw new j("First Ogg page should be type 1: the identification header")}async parseFullPage(a){let b=d.CommonHeader.get(a,0);if(i("Parse full page: type=%s, byteLength=%s",b.packetType,a.byteLength),3===b.packetType)return this.parseUserCommentList(a,d.CommonHeader.len)}async parseUserCommentList(a,b){let d=c.UINT32_LE.get(a,b);b+=4,b+=d;let e=c.UINT32_LE.get(a,b);for(b+=4;e-- >0;)b+=await this.parseUserComment(a,b)}}a.s(["VorbisStream",0,k],95023);var l=h,m=a.i(82670);let n={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},o={len:4,get:(a,b)=>({lastBlock:m.getBit(a,b,7),type:m.getBitAllignedNumber(a,b,1,7),length:c.UINT24_BE.get(a,b+1)})},p={len:34,get:(a,b)=>({minimumBlockSize:c.UINT16_BE.get(a,b),maximumBlockSize:c.UINT16_BE.get(a,b+2)/1e3,minimumFrameSize:c.UINT24_BE.get(a,b+4),maximumFrameSize:c.UINT24_BE.get(a,b+7),sampleRate:c.UINT24_BE.get(a,b+10)>>4,channels:m.getBitAllignedNumber(a,b+12,4,3)+1,bitsPerSample:m.getBitAllignedNumber(a,b+12,7,5)+1,totalSamples:m.getBitAllignedNumber(a,b+13,4,36),fileMD5:new c.Uint8ArrayType(16).get(a,b+18)})};a.s(["BlockHeader",0,o,"BlockStreamInfo",0,p,"BlockType",0,n],51836);let q=(0,b.default)("music-metadata:parser:FLAC");class r extends(0,l.makeUnexpectedFileContentError)("FLAC"){}class s extends e.AbstractID3Parser{constructor(){super(...arguments),this.vorbisParser=new k(this.metadata,this.options)}async postId3v2Parse(){let a;if("fLaC"!==(await this.tokenizer.readToken(f.FourCcToken)).toString())throw new r("Invalid FLAC preamble");do a=await this.tokenizer.readToken(o),await this.parseDataBlock(a);while(!a.lastBlock)if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}async parseDataBlock(a){switch(q(`blockHeader type=${a.type}, length=${a.length}`),a.type){case n.STREAMINFO:return this.readBlockStreamInfo(a.length);case n.PADDING:case n.APPLICATION:case n.SEEKTABLE:break;case n.VORBIS_COMMENT:return this.readComment(a.length);case n.CUESHEET:break;case n.PICTURE:await this.parsePicture(a.length);return;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}async readBlockStreamInfo(a){if(a!==p.len)throw new r("Unexpected block-stream-info length");let b=await this.tokenizer.readToken(p);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(b)}processsStreamInfo(a){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",a.channels),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("sampleRate",a.sampleRate),a.totalSamples>0&&this.metadata.setFormat("duration",a.totalSamples/a.sampleRate)}async readComment(a){let b=await this.tokenizer.readToken(new c.Uint8ArrayType(a));return this.parseComment(b)}async parseComment(a){let b=new g.VorbisDecoder(a,0),c=b.readStringUtf8();c.length>0&&this.metadata.setFormat("tool",c);let d=b.readInt32(),e=Array(d);for(let a=0;a<d;a++)e[a]=b.parseUserComment();await Promise.all(e.map(a=>("ENCODER"===a.key&&this.metadata.setFormat("tool",a.value),this.addTag(a.key,a.value))))}async parsePicture(a){return this.options.skipCovers?this.tokenizer.ignore(a):this.addPictureTag(await this.tokenizer.readToken(new d.VorbisPictureToken(a)))}addPictureTag(a){return this.addTag("METADATA_BLOCK_PICTURE",a)}addTag(a,b){return this.vorbisParser.addTag(a,b)}}a.s(["FlacParser",0,s],23163)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0mpaeoj._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},62748,a=>{"use strict";var b=a.i(1962),c=a.i(35617);a.i(61102);var d=a.i(82663),e=a.i(1766),f=a.i(54868),g=a.i(73850),h=a.i(7304),i=a.i(74777);let j={NONE:"not compressed PCM Apple Computer",sowt:"PCM (byte swapped)",fl32:"32-bit floating point IEEE 32-bit float",fl64:"64-bit floating point IEEE 64-bit float Apple Computer",alaw:"ALaw 2:1 8-bit ITU-T G.711 A-law",ulaw:"µLaw 2:1 8-bit ITU-T G.711 µ-law Apple Computer",ULAW:"CCITT G.711 u-law 8-bit ITU-T G.711 µ-law",ALAW:"CCITT G.711 A-law 8-bit ITU-T G.711 A-law",FL32:"Float 32 IEEE 32-bit float "};class k extends(0,i.makeUnexpectedFileContentError)("AIFF"){}class l{constructor(a,b){this.isAifc=b;const c=b?22:18;if(a.chunkSize<c)throw new k(`COMMON CHUNK size should always be at least ${c}`);this.len=a.chunkSize}get(a,c){let d=b.UINT16_BE.get(a,c+8)-16398,e=b.UINT16_BE.get(a,c+8+2),f={numChannels:b.UINT16_BE.get(a,c),numSampleFrames:b.UINT32_BE.get(a,c+2),sampleSize:b.UINT16_BE.get(a,c+6),sampleRate:d<0?e>>Math.abs(d):e<<d};if(this.isAifc){if(f.compressionType=g.FourCcToken.get(a,c+18),this.len>22){let d=b.UINT8.get(a,c+22);if(d>0){let e=(d+1)%2;if(23+d+e===this.len)f.compressionName=new b.StringType(d,"latin1").get(a,c+23);else throw new k("Illegal pstring length")}else f.compressionName=void 0}}else f.compressionName="PCM";return f}}let m={len:8,get:(a,c)=>({chunkID:g.FourCcToken.get(a,c),chunkSize:Number(BigInt(b.UINT32_BE.get(a,c+4)))})},n=(0,c.default)("music-metadata:parser:aiff");class o extends h.BasicParser{constructor(){super(...arguments),this.isCompressed=null}async parse(){if("FORM"!==(await this.tokenizer.readToken(m)).chunkID)throw new k("Invalid Chunk-ID, expected 'FORM'");let a=await this.tokenizer.readToken(g.FourCcToken);switch(a){case"AIFF":this.metadata.setFormat("container",a),this.isCompressed=!1;break;case"AIFC":this.metadata.setFormat("container","AIFF-C"),this.isCompressed=!0;break;default:throw new k(`Unsupported AIFF type: ${a}`)}this.metadata.setFormat("lossless",!this.isCompressed),this.metadata.setAudioOnly();try{for(;!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=m.len;){n(`Reading AIFF chunk at offset=${this.tokenizer.position}`);let a=await this.tokenizer.readToken(m),b=2*Math.round(a.chunkSize/2),c=await this.readData(a);await this.tokenizer.ignore(b-c)}}catch(a){if(a instanceof d.EndOfStreamError)n("End-of-stream");else throw a}}async readData(a){switch(a.chunkID){case"COMM":{if(null===this.isCompressed)throw new k("Failed to parse AIFF.COMM chunk when compression type is unknown");let b=await this.tokenizer.readToken(new l(a,this.isCompressed));return this.metadata.setFormat("bitsPerSample",b.sampleSize),this.metadata.setFormat("sampleRate",b.sampleRate),this.metadata.setFormat("numberOfChannels",b.numChannels),this.metadata.setFormat("numberOfSamples",b.numSampleFrames),this.metadata.setFormat("duration",b.numSampleFrames/b.sampleRate),(b.compressionName||b.compressionType)&&this.metadata.setFormat("codec",b.compressionName??j[b.compressionType]),a.chunkSize}case"ID3 ":{let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a.chunkSize)),d=e.fromBuffer(c);return await new f.ID3v2Parser().parse(this.metadata,d,this.options),a.chunkSize}case"SSND":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*a.chunkSize/this.metadata.format.duration),0;case"NAME":case"AUTH":case"(c) ":case"ANNO":return this.readTextChunk(a);default:return n(`Ignore chunk id=${a.chunkID}, size=${a.chunkSize}`),0}}async readTextChunk(a){let c=(await this.tokenizer.readToken(new b.StringType(a.chunkSize,"ascii"))).split("\0").map(a=>a.trim()).filter(a=>a?.length);return await Promise.all(c.map(b=>this.metadata.addTag("AIFF",a.chunkID,b))),a.chunkSize}}a.s(["AIFFParser",0,o],62748)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},62748,a=>{"use strict";var b=a.i(1962),c=a.i(35617);a.i(17588);var d=a.i(82663),e=a.i(1766),f=a.i(54868),g=a.i(73850),h=a.i(7304),i=a.i(74777);let j={NONE:"not compressed PCM Apple Computer",sowt:"PCM (byte swapped)",fl32:"32-bit floating point IEEE 32-bit float",fl64:"64-bit floating point IEEE 64-bit float Apple Computer",alaw:"ALaw 2:1 8-bit ITU-T G.711 A-law",ulaw:"µLaw 2:1 8-bit ITU-T G.711 µ-law Apple Computer",ULAW:"CCITT G.711 u-law 8-bit ITU-T G.711 µ-law",ALAW:"CCITT G.711 A-law 8-bit ITU-T G.711 A-law",FL32:"Float 32 IEEE 32-bit float "};class k extends(0,i.makeUnexpectedFileContentError)("AIFF"){}class l{constructor(a,b){this.isAifc=b;const c=b?22:18;if(a.chunkSize<c)throw new k(`COMMON CHUNK size should always be at least ${c}`);this.len=a.chunkSize}get(a,c){let d=b.UINT16_BE.get(a,c+8)-16398,e=b.UINT16_BE.get(a,c+8+2),f={numChannels:b.UINT16_BE.get(a,c),numSampleFrames:b.UINT32_BE.get(a,c+2),sampleSize:b.UINT16_BE.get(a,c+6),sampleRate:d<0?e>>Math.abs(d):e<<d};if(this.isAifc){if(f.compressionType=g.FourCcToken.get(a,c+18),this.len>22){let d=b.UINT8.get(a,c+22);if(d>0){let e=(d+1)%2;if(23+d+e===this.len)f.compressionName=new b.StringType(d,"latin1").get(a,c+23);else throw new k("Illegal pstring length")}else f.compressionName=void 0}}else f.compressionName="PCM";return f}}let m={len:8,get:(a,c)=>({chunkID:g.FourCcToken.get(a,c),chunkSize:Number(BigInt(b.UINT32_BE.get(a,c+4)))})},n=(0,c.default)("music-metadata:parser:aiff");class o extends h.BasicParser{constructor(){super(...arguments),this.isCompressed=null}async parse(){if("FORM"!==(await this.tokenizer.readToken(m)).chunkID)throw new k("Invalid Chunk-ID, expected 'FORM'");let a=await this.tokenizer.readToken(g.FourCcToken);switch(a){case"AIFF":this.metadata.setFormat("container",a),this.isCompressed=!1;break;case"AIFC":this.metadata.setFormat("container","AIFF-C"),this.isCompressed=!0;break;default:throw new k(`Unsupported AIFF type: ${a}`)}this.metadata.setFormat("lossless",!this.isCompressed),this.metadata.setAudioOnly();try{for(;!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=m.len;){n(`Reading AIFF chunk at offset=${this.tokenizer.position}`);let a=await this.tokenizer.readToken(m),b=2*Math.round(a.chunkSize/2),c=await this.readData(a);await this.tokenizer.ignore(b-c)}}catch(a){if(a instanceof d.EndOfStreamError)n("End-of-stream");else throw a}}async readData(a){switch(a.chunkID){case"COMM":{if(null===this.isCompressed)throw new k("Failed to parse AIFF.COMM chunk when compression type is unknown");let b=await this.tokenizer.readToken(new l(a,this.isCompressed));return this.metadata.setFormat("bitsPerSample",b.sampleSize),this.metadata.setFormat("sampleRate",b.sampleRate),this.metadata.setFormat("numberOfChannels",b.numChannels),this.metadata.setFormat("numberOfSamples",b.numSampleFrames),this.metadata.setFormat("duration",b.numSampleFrames/b.sampleRate),(b.compressionName||b.compressionType)&&this.metadata.setFormat("codec",b.compressionName??j[b.compressionType]),a.chunkSize}case"ID3 ":{let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a.chunkSize)),d=e.fromBuffer(c);return await new f.ID3v2Parser().parse(this.metadata,d,this.options),a.chunkSize}case"SSND":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*a.chunkSize/this.metadata.format.duration),0;case"NAME":case"AUTH":case"(c) ":case"ANNO":return this.readTextChunk(a);default:return n(`Ignore chunk id=${a.chunkID}, size=${a.chunkSize}`),0}}async readTextChunk(a){let c=(await this.tokenizer.readToken(new b.StringType(a.chunkSize,"ascii"))).split("\0").map(a=>a.trim()).filter(a=>a?.length);return await Promise.all(c.map(b=>this.metadata.addTag("AIFF",a.chunkID,b))),a.chunkSize}}a.s(["AIFFParser",0,o],62748)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0vvxdoi._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},93875,a=>{"use strict";var b=a.i(1962),c=a.i(35617);a.i(61102);var d=a.i(1766),e=a.i(73850),f=a.i(7304),g=a.i(54868);let h={len:12,get:(a,c)=>({chunkID:e.FourCcToken.get(a,c),chunkSize:b.INT64_BE.get(a,c+4)})};var i=a.i(74777);let j=(0,c.default)("music-metadata:parser:aiff");class k extends(0,i.makeUnexpectedFileContentError)("DSDIFF"){}class l extends f.BasicParser{async parse(){let a=await this.tokenizer.readToken(h);if("FRM8"!==a.chunkID)throw new k("Unexpected chunk-ID");this.metadata.setAudioOnly();let b=(await this.tokenizer.readToken(e.FourCcToken)).trim();if("DSD"===b)return this.metadata.setFormat("container",`DSDIFF/${b}`),this.metadata.setFormat("lossless",!0),this.readFmt8Chunks(a.chunkSize-BigInt(e.FourCcToken.len));throw new k(`Unsupported DSDIFF type: ${b}`)}async readFmt8Chunks(a){for(;a>=h.len;){let b=await this.tokenizer.readToken(h);j(`Chunk id=${b.chunkID}`),await this.readData(b),a-=BigInt(h.len)+b.chunkSize}}async readData(a){j(`Reading data of chunk[ID=${a.chunkID}, size=${a.chunkSize}]`);let c=this.tokenizer.position;switch(a.chunkID.trim()){case"FVER":{let a=await this.tokenizer.readToken(b.UINT32_LE);j(`DSDIFF version=${a}`);break}case"PROP":if("SND "!==await this.tokenizer.readToken(e.FourCcToken))throw new k("Unexpected PROP-chunk ID");await this.handleSoundPropertyChunks(a.chunkSize-BigInt(e.FourCcToken.len));break;case"ID3":{let c=await this.tokenizer.readToken(new b.Uint8ArrayType(Number(a.chunkSize))),e=d.fromBuffer(c);await new g.ID3v2Parser().parse(this.metadata,e,this.options);break}case"DSD":this.metadata.format.numberOfChannels&&this.metadata.setFormat("numberOfSamples",Number(a.chunkSize*BigInt(8)/BigInt(this.metadata.format.numberOfChannels))),this.metadata.format.numberOfSamples&&this.metadata.format.sampleRate&&this.metadata.setFormat("duration",this.metadata.format.numberOfSamples/this.metadata.format.sampleRate);break;default:j(`Ignore chunk[ID=${a.chunkID}, size=${a.chunkSize}]`)}let f=a.chunkSize-BigInt(this.tokenizer.position-c);f>0&&(j(`After Parsing chunk, remaining ${f} bytes`),await this.tokenizer.ignore(Number(f)))}async handleSoundPropertyChunks(a){for(j(`Parsing sound-property-chunks, remainingSize=${a}`);a>0;){let c=await this.tokenizer.readToken(h);j(`Sound-property-chunk[ID=${c.chunkID}, size=${c.chunkSize}]`);let d=this.tokenizer.position;switch(c.chunkID.trim()){case"FS":{let a=await this.tokenizer.readToken(b.UINT32_BE);this.metadata.setFormat("sampleRate",a);break}case"CHNL":{let a=await this.tokenizer.readToken(b.UINT16_BE);this.metadata.setFormat("numberOfChannels",a),await this.handleChannelChunks(c.chunkSize-BigInt(b.UINT16_BE.len));break}case"CMPR":{let a=(await this.tokenizer.readToken(e.FourCcToken)).trim(),c=await this.tokenizer.readToken(b.UINT8),d=await this.tokenizer.readToken(new b.StringType(c,"ascii"));"DSD"===a&&(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("bitsPerSample",1)),this.metadata.setFormat("codec",`${a} (${d})`);break}case"ABSS":{let a=await this.tokenizer.readToken(b.UINT16_BE),c=await this.tokenizer.readToken(b.UINT8),d=await this.tokenizer.readToken(b.UINT8),e=await this.tokenizer.readToken(b.UINT32_BE);j(`ABSS ${a}:${c}:${d}.${e}`);break}case"LSCO":{let a=await this.tokenizer.readToken(b.UINT16_BE);j(`LSCO lsConfig=${a}`);break}default:j(`Unknown sound-property-chunk[ID=${c.chunkID}, size=${c.chunkSize}]`),await this.tokenizer.ignore(Number(c.chunkSize))}let f=c.chunkSize-BigInt(this.tokenizer.position-d);f>0&&(j(`After Parsing sound-property-chunk ${c.chunkSize}, remaining ${f} bytes`),await this.tokenizer.ignore(Number(f))),a-=BigInt(h.len)+c.chunkSize,j(`Parsing sound-property-chunks, remainingSize=${a}`)}if(this.metadata.format.lossless&&this.metadata.format.sampleRate&&this.metadata.format.numberOfChannels&&this.metadata.format.bitsPerSample){let a=this.metadata.format.sampleRate*this.metadata.format.numberOfChannels*this.metadata.format.bitsPerSample;this.metadata.setFormat("bitrate",a)}}async handleChannelChunks(a){j(`Parsing channel-chunks, remainingSize=${a}`);let b=[];for(;a>=e.FourCcToken.len;){let c=await this.tokenizer.readToken(e.FourCcToken);j(`Channel[ID=${c}]`),b.push(c),a-=BigInt(e.FourCcToken.len)}return j(`Channels: ${b.join(", ")}`),b}}a.s(["DsdiffParser",0,l],93875)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},93875,a=>{"use strict";var b=a.i(1962),c=a.i(35617);a.i(17588);var d=a.i(1766),e=a.i(73850),f=a.i(7304),g=a.i(54868);let h={len:12,get:(a,c)=>({chunkID:e.FourCcToken.get(a,c),chunkSize:b.INT64_BE.get(a,c+4)})};var i=a.i(74777);let j=(0,c.default)("music-metadata:parser:aiff");class k extends(0,i.makeUnexpectedFileContentError)("DSDIFF"){}class l extends f.BasicParser{async parse(){let a=await this.tokenizer.readToken(h);if("FRM8"!==a.chunkID)throw new k("Unexpected chunk-ID");this.metadata.setAudioOnly();let b=(await this.tokenizer.readToken(e.FourCcToken)).trim();if("DSD"===b)return this.metadata.setFormat("container",`DSDIFF/${b}`),this.metadata.setFormat("lossless",!0),this.readFmt8Chunks(a.chunkSize-BigInt(e.FourCcToken.len));throw new k(`Unsupported DSDIFF type: ${b}`)}async readFmt8Chunks(a){for(;a>=h.len;){let b=await this.tokenizer.readToken(h);j(`Chunk id=${b.chunkID}`),await this.readData(b),a-=BigInt(h.len)+b.chunkSize}}async readData(a){j(`Reading data of chunk[ID=${a.chunkID}, size=${a.chunkSize}]`);let c=this.tokenizer.position;switch(a.chunkID.trim()){case"FVER":{let a=await this.tokenizer.readToken(b.UINT32_LE);j(`DSDIFF version=${a}`);break}case"PROP":if("SND "!==await this.tokenizer.readToken(e.FourCcToken))throw new k("Unexpected PROP-chunk ID");await this.handleSoundPropertyChunks(a.chunkSize-BigInt(e.FourCcToken.len));break;case"ID3":{let c=await this.tokenizer.readToken(new b.Uint8ArrayType(Number(a.chunkSize))),e=d.fromBuffer(c);await new g.ID3v2Parser().parse(this.metadata,e,this.options);break}case"DSD":this.metadata.format.numberOfChannels&&this.metadata.setFormat("numberOfSamples",Number(a.chunkSize*BigInt(8)/BigInt(this.metadata.format.numberOfChannels))),this.metadata.format.numberOfSamples&&this.metadata.format.sampleRate&&this.metadata.setFormat("duration",this.metadata.format.numberOfSamples/this.metadata.format.sampleRate);break;default:j(`Ignore chunk[ID=${a.chunkID}, size=${a.chunkSize}]`)}let f=a.chunkSize-BigInt(this.tokenizer.position-c);f>0&&(j(`After Parsing chunk, remaining ${f} bytes`),await this.tokenizer.ignore(Number(f)))}async handleSoundPropertyChunks(a){for(j(`Parsing sound-property-chunks, remainingSize=${a}`);a>0;){let c=await this.tokenizer.readToken(h);j(`Sound-property-chunk[ID=${c.chunkID}, size=${c.chunkSize}]`);let d=this.tokenizer.position;switch(c.chunkID.trim()){case"FS":{let a=await this.tokenizer.readToken(b.UINT32_BE);this.metadata.setFormat("sampleRate",a);break}case"CHNL":{let a=await this.tokenizer.readToken(b.UINT16_BE);this.metadata.setFormat("numberOfChannels",a),await this.handleChannelChunks(c.chunkSize-BigInt(b.UINT16_BE.len));break}case"CMPR":{let a=(await this.tokenizer.readToken(e.FourCcToken)).trim(),c=await this.tokenizer.readToken(b.UINT8),d=await this.tokenizer.readToken(new b.StringType(c,"ascii"));"DSD"===a&&(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("bitsPerSample",1)),this.metadata.setFormat("codec",`${a} (${d})`);break}case"ABSS":{let a=await this.tokenizer.readToken(b.UINT16_BE),c=await this.tokenizer.readToken(b.UINT8),d=await this.tokenizer.readToken(b.UINT8),e=await this.tokenizer.readToken(b.UINT32_BE);j(`ABSS ${a}:${c}:${d}.${e}`);break}case"LSCO":{let a=await this.tokenizer.readToken(b.UINT16_BE);j(`LSCO lsConfig=${a}`);break}default:j(`Unknown sound-property-chunk[ID=${c.chunkID}, size=${c.chunkSize}]`),await this.tokenizer.ignore(Number(c.chunkSize))}let f=c.chunkSize-BigInt(this.tokenizer.position-d);f>0&&(j(`After Parsing sound-property-chunk ${c.chunkSize}, remaining ${f} bytes`),await this.tokenizer.ignore(Number(f))),a-=BigInt(h.len)+c.chunkSize,j(`Parsing sound-property-chunks, remainingSize=${a}`)}if(this.metadata.format.lossless&&this.metadata.format.sampleRate&&this.metadata.format.numberOfChannels&&this.metadata.format.bitsPerSample){let a=this.metadata.format.sampleRate*this.metadata.format.numberOfChannels*this.metadata.format.bitsPerSample;this.metadata.setFormat("bitrate",a)}}async handleChannelChunks(a){j(`Parsing channel-chunks, remainingSize=${a}`);let b=[];for(;a>=e.FourCcToken.len;){let c=await this.tokenizer.readToken(e.FourCcToken);j(`Channel[ID=${c}]`),b.push(c),a-=BigInt(e.FourCcToken.len)}return j(`Channels: ${b.join(", ")}`),b}}a.s(["DsdiffParser",0,l],93875)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0xiet5m._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(61102);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},44024,a=>{"use strict";var b=a.i(1962),c=a.i(73635);a.s(["VorbisDecoder",0,class{constructor(a,b){this.data=a,this.offset=b}readInt32(){let a=b.UINT32_LE.get(this.data,this.offset);return this.offset+=4,a}readStringUtf8(){let a=this.readInt32(),b=(0,c.textDecode)(this.data.subarray(this.offset,this.offset+a),"utf-8");return this.offset+=a,b}parseUserComment(){let a=this.offset,b=this.readStringUtf8(),c=b.indexOf("=");return{key:b.substring(0,c).toUpperCase(),value:b.substring(c+1),len:this.offset-a}}}])},26468,a=>{"use strict";var b=a.i(1962),c=a.i(68231);class d{static fromBase64(a){return d.fromBuffer(Uint8Array.from(atob(a),a=>a.charCodeAt(0)))}static fromBuffer(a){return new d(a.length).get(a,0)}constructor(a){this.len=a}get(a,d){let e=c.AttachedPictureType[b.UINT32_BE.get(a,d)];d+=4;let f=b.UINT32_BE.get(a,d);d+=4;let g=new b.StringType(f,"utf-8").get(a,d);d+=f;let h=b.UINT32_BE.get(a,d);d+=4;let i=new b.StringType(h,"utf-8").get(a,d);d+=h;let j=b.UINT32_BE.get(a,d);d+=4;let k=b.UINT32_BE.get(a,d);d+=4;let l=b.UINT32_BE.get(a,d);d+=4;let m=b.UINT32_BE.get(a,d);d+=4;let n=b.UINT32_BE.get(a,d);return d+=4,{type:e,format:g,description:i,width:j,height:k,colour_depth:l,indexed_color:m,data:a.slice(d,d+n)}}}a.s(["CommonHeader",0,{len:7,get:(a,c)=>({packetType:b.UINT8.get(a,c),vorbis:new b.StringType(6,"ascii").get(a,c+1)})},"IdentificationHeader",0,{len:23,get:(a,c)=>({version:b.UINT32_LE.get(a,c+0),channelMode:b.UINT8.get(a,c+4),sampleRate:b.UINT32_LE.get(a,c+5),bitrateMax:b.UINT32_LE.get(a,c+9),bitrateNominal:b.UINT32_LE.get(a,c+13),bitrateMin:b.UINT32_LE.get(a,c+17)})},"VorbisPictureToken",0,d])},23163,95023,51836,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(26468),e=a.i(44676),f=a.i(73850),g=a.i(44024),h=a.i(74777);let i=(0,b.default)("music-metadata:parser:ogg:vorbis1");class j extends(0,h.makeUnexpectedFileContentError)("Vorbis"){}class k{constructor(a,b){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=a,this.options=b}async parsePage(a,b){if(this.lastPageHeader=a,a.headerType.firstPage)this.parseFirstPage(a,b);else{if(a.headerType.continued){if(0===this.pageSegments.length)throw new j("Cannot continue on previous page");this.pageSegments.push(b)}if(a.headerType.lastPage||!a.headerType.continued){if(this.pageSegments.length>0){let a=k.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(a)}this.pageSegments=a.headerType.lastPage?[]:[b]}}}static mergeUint8Arrays(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0));return a.forEach((a,c,d)=>{let e=d.slice(0,c).reduce((a,b)=>a+b.length,0);b.set(a,e)}),b}async flush(){await this.parseFullPage(k.mergeUint8Arrays(this.pageSegments))}async parseUserComment(a,b){let c=new g.VorbisDecoder(a,b).parseUserComment();return await this.addTag(c.key,c.value),c.len}async addTag(a,b){if("METADATA_BLOCK_PICTURE"===a&&"string"==typeof b){if(this.options.skipCovers)return void i("Ignore picture");b=d.VorbisPictureToken.fromBase64(b),i(`Push picture: id=${a}, format=${b.format}`)}else i(`Push tag: id=${a}, value=${b}`);await this.metadata.addTag("vorbis",a,b)}calculateDuration(a){this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(a,b){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),i("Parse first page");let c=d.CommonHeader.get(b,0);if("vorbis"!==c.vorbis)throw new j("Metadata does not look like Vorbis");if(1===c.packetType){let a=d.IdentificationHeader.get(b,d.CommonHeader.len);this.metadata.setFormat("sampleRate",a.sampleRate),this.metadata.setFormat("bitrate",a.bitrateNominal),this.metadata.setFormat("numberOfChannels",a.channelMode),i("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",a.sampleRate,a.bitrateNominal,a.channelMode)}else throw new j("First Ogg page should be type 1: the identification header")}async parseFullPage(a){let b=d.CommonHeader.get(a,0);if(i("Parse full page: type=%s, byteLength=%s",b.packetType,a.byteLength),3===b.packetType)return this.parseUserCommentList(a,d.CommonHeader.len)}async parseUserCommentList(a,b){let d=c.UINT32_LE.get(a,b);b+=4,b+=d;let e=c.UINT32_LE.get(a,b);for(b+=4;e-- >0;)b+=await this.parseUserComment(a,b)}}a.s(["VorbisStream",0,k],95023);var l=h,m=a.i(82670);let n={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},o={len:4,get:(a,b)=>({lastBlock:m.getBit(a,b,7),type:m.getBitAllignedNumber(a,b,1,7),length:c.UINT24_BE.get(a,b+1)})},p={len:34,get:(a,b)=>({minimumBlockSize:c.UINT16_BE.get(a,b),maximumBlockSize:c.UINT16_BE.get(a,b+2)/1e3,minimumFrameSize:c.UINT24_BE.get(a,b+4),maximumFrameSize:c.UINT24_BE.get(a,b+7),sampleRate:c.UINT24_BE.get(a,b+10)>>4,channels:m.getBitAllignedNumber(a,b+12,4,3)+1,bitsPerSample:m.getBitAllignedNumber(a,b+12,7,5)+1,totalSamples:m.getBitAllignedNumber(a,b+13,4,36),fileMD5:new c.Uint8ArrayType(16).get(a,b+18)})};a.s(["BlockHeader",0,o,"BlockStreamInfo",0,p,"BlockType",0,n],51836);let q=(0,b.default)("music-metadata:parser:FLAC");class r extends(0,l.makeUnexpectedFileContentError)("FLAC"){}class s extends e.AbstractID3Parser{constructor(){super(...arguments),this.vorbisParser=new k(this.metadata,this.options)}async postId3v2Parse(){let a;if("fLaC"!==(await this.tokenizer.readToken(f.FourCcToken)).toString())throw new r("Invalid FLAC preamble");do a=await this.tokenizer.readToken(o),await this.parseDataBlock(a);while(!a.lastBlock)if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}async parseDataBlock(a){switch(q(`blockHeader type=${a.type}, length=${a.length}`),a.type){case n.STREAMINFO:return this.readBlockStreamInfo(a.length);case n.PADDING:case n.APPLICATION:case n.SEEKTABLE:break;case n.VORBIS_COMMENT:return this.readComment(a.length);case n.CUESHEET:break;case n.PICTURE:await this.parsePicture(a.length);return;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}async readBlockStreamInfo(a){if(a!==p.len)throw new r("Unexpected block-stream-info length");let b=await this.tokenizer.readToken(p);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(b)}processsStreamInfo(a){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",a.channels),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("sampleRate",a.sampleRate),a.totalSamples>0&&this.metadata.setFormat("duration",a.totalSamples/a.sampleRate)}async readComment(a){let b=await this.tokenizer.readToken(new c.Uint8ArrayType(a));return this.parseComment(b)}async parseComment(a){let b=new g.VorbisDecoder(a,0),c=b.readStringUtf8();c.length>0&&this.metadata.setFormat("tool",c);let d=b.readInt32(),e=Array(d);for(let a=0;a<d;a++)e[a]=b.parseUserComment();await Promise.all(e.map(a=>("ENCODER"===a.key&&this.metadata.setFormat("tool",a.value),this.addTag(a.key,a.value))))}async parsePicture(a){return this.options.skipCovers?this.tokenizer.ignore(a):this.addPictureTag(await this.tokenizer.readToken(new d.VorbisPictureToken(a)))}addPictureTag(a){return this.addTag("METADATA_BLOCK_PICTURE",a)}addTag(a,b){return this.vorbisParser.addTag(a,b)}}a.s(["FlacParser",0,s],23163)},77677,a=>{"use strict";var b=a.i(1962);a.i(61102);var c=a.i(82663),d=a.i(35617),e=a.i(7304),f=a.i(95023),g=f,h=a.i(74777);class i extends(0,h.makeUnexpectedFileContentError)("Opus"){}class j{constructor(a){if(a<19)throw new i("ID-header-page 0 should be at least 19 bytes long");this.len=a}get(a,c){return{magicSignature:new b.StringType(8,"ascii").get(a,c+0),version:b.UINT8.get(a,c+8),channelCount:b.UINT8.get(a,c+9),preSkip:b.UINT16_LE.get(a,c+10),inputSampleRate:b.UINT32_LE.get(a,c+12),outputGain:b.UINT16_LE.get(a,c+16),channelMapping:b.UINT8.get(a,c+18)}}}class k extends g.VorbisStream{constructor(a,b,c){super(a,b),this.idHeader=null,this.lastPos=-1,this.tokenizer=c,this.durationOnLastPage=!0}parseFirstPage(a,b){if(this.metadata.setFormat("codec","Opus"),this.idHeader=new j(b.length).get(b,0),"OpusHead"!==this.idHeader.magicSignature)throw new i("Illegal ogg/Opus magic-signature");this.metadata.setFormat("sampleRate",this.idHeader.inputSampleRate),this.metadata.setFormat("numberOfChannels",this.idHeader.channelCount),this.metadata.setAudioOnly()}async parseFullPage(a){"OpusTags"===new b.StringType(8,"ascii").get(a,0)&&(await this.parseUserCommentList(a,8),this.lastPos=this.tokenizer.position-a.length)}calculateDuration(a){if(this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0){let a=this.lastPageHeader.absoluteGranulePosition-this.idHeader.preSkip;if(this.metadata.setFormat("numberOfSamples",a),this.metadata.setFormat("duration",a/48e3),-1!==this.lastPos&&this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.lastPos;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}}}var l=f,m=a.i(82670);let n=(0,d.default)("music-metadata:parser:ogg:speex");class o extends l.VorbisStream{constructor(a,b,c){super(a,b)}parseFirstPage(a,c){let d,e;n("First Ogg/Speex page");let f=(d=c,e=0,{speex:new b.StringType(8,"ascii").get(d,e+0),version:m.trimRightNull(new b.StringType(20,"ascii").get(d,e+8)),version_id:b.INT32_LE.get(d,e+28),header_size:b.INT32_LE.get(d,e+32),rate:b.INT32_LE.get(d,e+36),mode:b.INT32_LE.get(d,e+40),mode_bitstream_version:b.INT32_LE.get(d,e+44),nb_channels:b.INT32_LE.get(d,e+48),bitrate:b.INT32_LE.get(d,e+52),frame_size:b.INT32_LE.get(d,e+56),vbr:b.INT32_LE.get(d,e+60),frames_per_packet:b.INT32_LE.get(d,e+64),extra_headers:b.INT32_LE.get(d,e+68),reserved1:b.INT32_LE.get(d,e+72),reserved2:b.INT32_LE.get(d,e+76)});this.metadata.setFormat("codec",`Speex ${f.version}`),this.metadata.setFormat("numberOfChannels",f.nb_channels),this.metadata.setFormat("sampleRate",f.rate),-1!==f.bitrate&&this.metadata.setFormat("bitrate",f.bitrate),this.metadata.setAudioOnly()}}let p=(0,d.default)("music-metadata:parser:ogg:theora");class q{constructor(a,b,c){this.durationOnLastPage=!1,this.metadata=a}async parsePage(a,b){a.headerType.firstPage&&await this.parseFirstPage(a,b)}calculateDuration(){p("duration calculation not implemented")}async parseFirstPage(a,c){let d,e;p("First Ogg/Theora page"),this.metadata.setFormat("codec","Theora");let f=(d=c,e=0,{id:new b.StringType(7,"ascii").get(d,e),vmaj:b.UINT8.get(d,e+7),vmin:b.UINT8.get(d,e+8),vrev:b.UINT8.get(d,e+9),vmbw:b.UINT16_BE.get(d,e+10),vmbh:b.UINT16_BE.get(d,e+17),nombr:b.UINT24_BE.get(d,e+37),nqual:b.UINT8.get(d,e+40)});this.metadata.setFormat("bitrate",f.nombr),this.metadata.setFormat("hasVideo",!0)}flush(){return Promise.resolve()}}var r=h;let s={len:27,get:(a,c)=>({capturePattern:new b.StringType(4,"latin1").get(a,c),version:b.UINT8.get(a,c+4),headerType:{continued:m.getBit(a,c+5,0),firstPage:m.getBit(a,c+5,1),lastPage:m.getBit(a,c+5,2)},absoluteGranulePosition:Number(b.UINT64_LE.get(a,c+6)),streamSerialNumber:b.UINT32_LE.get(a,c+14),pageSequenceNo:b.UINT32_LE.get(a,c+18),pageChecksum:b.UINT32_LE.get(a,c+22),page_segments:b.UINT8.get(a,c+26)})};class t{static sum(a,b,c){let d=new DataView(a.buffer,0),e=0;for(let a=b;a<b+c;++a)e+=d.getUint8(a);return e}constructor(a){this.len=a.page_segments}get(a,b){return{totalPageSize:t.sum(a,b,this.len)}}}var u=a.i(51836),v=a.i(23163),w=a.i(73850),x=a.i(26468);let y=(0,d.default)("music-metadata:parser:ogg:theora");class z{constructor(a,b,c){this.durationOnLastPage=!1,this.metadata=a,this.options=b,this.tokenizer=c,this.flacParser=new v.FlacParser(this.metadata,this.tokenizer,b)}async parsePage(a,b){a.headerType.firstPage&&await this.parseFirstPage(a,b)}calculateDuration(){y("duration calculation not implemented")}async parseFirstPage(a,b){if(y("First Ogg/FLAC page"),"fLaC"!==(await w.FourCcToken.get(b,9)).toString())throw Error("Invalid FLAC preamble");let c=await u.BlockHeader.get(b,13);await this.parseDataBlock(c,b.subarray(13+u.BlockHeader.len))}async parseDataBlock(a,b){switch(y(`blockHeader type=${a.type}, length=${a.length}`),a.type){case u.BlockType.STREAMINFO:{let a=u.BlockStreamInfo.get(b,0);return this.flacParser.processsStreamInfo(a)}case u.BlockType.PADDING:case u.BlockType.APPLICATION:case u.BlockType.SEEKTABLE:break;case u.BlockType.VORBIS_COMMENT:return this.flacParser.parseComment(b);case u.BlockType.PICTURE:if(!this.options.skipCovers){let a=new x.VorbisPictureToken(b.length).get(b,0);return this.flacParser.addPictureTag(a)}break;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}flush(){return Promise.resolve()}}class A extends(0,r.makeUnexpectedFileContentError)("Ogg"){}let B=(0,d.default)("music-metadata:parser:ogg");class C{constructor(a,b,c){this.pageNumber=0,this.closed=!1,this.metadata=a,this.streamSerial=b,this.options=c}async parsePage(a,c){this.pageNumber=c.pageSequenceNo,B("serial=%s page#=%s, Ogg.id=%s",c.streamSerialNumber,c.pageSequenceNo,c.capturePattern);let d=await a.readToken(new t(c));B("totalPageSize=%s",d.totalPageSize);let e=await a.readToken(new b.Uint8ArrayType(d.totalPageSize));if(B("firstPage=%s, lastPage=%s, continued=%s",c.headerType.firstPage,c.headerType.lastPage,c.headerType.continued),c.headerType.firstPage){this.metadata.setFormat("container","Ogg");let b=Array.from(e.subarray(0,7)).filter(a=>a>=32&&a<=126).map(a=>String.fromCharCode(a)).join("");switch(b){case"vorbis":B(`Set Ogg stream serial ${c.streamSerialNumber}, codec=Vorbis`),this.pageConsumer=new f.VorbisStream(this.metadata,this.options);break;case"OpusHea":B("Set page consumer to Ogg/Opus"),this.pageConsumer=new k(this.metadata,this.options,a);break;case"Speex ":B("Set page consumer to Ogg/Speex"),this.pageConsumer=new o(this.metadata,this.options,a);break;case"fishead":case"theora":B("Set page consumer to Ogg/Theora"),this.pageConsumer=new q(this.metadata,this.options,a);break;case"FLAC":B("Set page consumer to Vorbis"),this.pageConsumer=new z(this.metadata,this.options,a);break;default:throw new A(`Ogg codec not recognized (id=${b}`)}}if(c.headerType.lastPage&&(this.closed=!0),this.pageConsumer)await this.pageConsumer.parsePage(c,e);else throw Error("pageConsumer should be initialized")}}class D extends e.BasicParser{constructor(){super(...arguments),this.streams=new Map}async parse(){let a;this.streams=new Map;let b=!1;try{do{if(a=await this.tokenizer.readToken(s),"OggS"!==a.capturePattern)throw new A("Invalid Ogg capture pattern");let b=this.streams.get(a.streamSerialNumber);if(b||(b=new C(this.metadata,a.streamSerialNumber,this.options),this.streams.set(a.streamSerialNumber,b)),await b.parsePage(this.tokenizer,a),b.pageNumber>12&&!(this.options.duration&&[...this.streams.values()].find(a=>a.pageConsumer?.durationOnLastPage))){B("Stop processing Ogg stream");break}}while(![...this.streams.values()].every(a=>a.closed))}catch(a){if(a instanceof c.EndOfStreamError)B("Reached end-of-stream"),b=!0;else if(a instanceof A)this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);else throw a}for(let a of this.streams.values())a.closed||(this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${a.streamSerial}`),await a.pageConsumer?.flush()),a.pageConsumer?.calculateDuration(b)}}a.s(["OggParser",0,D],77677)}];
|
|
1
|
+
module.exports=[54868,a=>{"use strict";var b=a.i(1962),c=a.i(35617),d=a.i(82670),e=a.i(68231),f=a.i(49597),g=a.i(74777),h=a.i(73635);function i(a){switch(a){case 2:return 6;case 3:case 4:return 10;default:throw k(a)}}function j(a,c,f){var g,i,j,l,m,n,o;switch(c){case 2:let p;return g=a,i=c,j=f,(p={id:(0,h.textDecode)(g.subarray(0,3),"ascii"),length:b.UINT24_BE.get(g,3)}).id.match(/^[A-Z0-9]{3}$/)||j.addWarning(`Invalid ID3v2.${i} frame-header-ID: ${p.id}`),p;case 3:case 4:let q;return l=a,m=c,n=f,(q={id:(0,h.textDecode)(l.subarray(0,4),"ascii"),length:(4===m?e.UINT32SYNCSAFE:b.UINT32_BE).get(l,4),flags:(o=l.subarray(8,10),{status:{tag_alter_preservation:d.getBit(o,0,6),file_alter_preservation:d.getBit(o,0,5),read_only:d.getBit(o,0,4)},format:{grouping_identity:d.getBit(o,1,7),compression:d.getBit(o,1,3),encryption:d.getBit(o,1,2),unsynchronisation:d.getBit(o,1,1),data_length_indicator:d.getBit(o,1,0)}})}).id.match(/^[A-Z0-9]{4}$/)||n.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${q.id}`),q;default:throw k(c)}}function k(a){throw new q(`Unexpected majorVer: ${a}`)}let l=(0,c.default)("music-metadata:id3v2:frame-parser"),m="latin1",n={encoding:m,bom:!1};function o(a){return"RX"===a?"Remix":"CR"===a?"Cover":a.match(/^\d*$/)?f.Genres[Number.parseInt(a,10)]:void 0}class p{constructor(a,b){this.major=a,this.warningCollector=b}readData(a,c,f){let g;if(0===a.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${c}`);let{encoding:h,bom:k}=e.TextEncodingToken.get(a,0),r=a.length,s=0,t=[],u=p.getNullTerminatorLength(h);switch(l(`Parsing tag type=${c}, encoding=${h}, bom=${k}`),"TXXX"!==c&&"T"===c[0]?"T*":c){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let b;try{b=p.trimNullPadding(d.decodeString(a.subarray(1),h))}catch(a){if(a instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} header has invalid string value: ${a.message}`);break}throw a}switch(c){case"TMCL":case"TIPL":case"IPLS":t=p.functionList(this.splitValue(c,b));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":t=b;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":t=this.splitValue(c,b);break;case"TCO":case"TCON":t=this.splitValue(c,b).map(a=>(function(a){let b,c=[],d="";for(let e of a)if("string"==typeof b)if("("===e&&""===b)d+="(",b=void 0;else if(")"===e){""!==d&&(c.push(d),d="");let a=o(b);a&&c.push(a),b=void 0}else b+=e;else"("===e?b="":d+=e;return d&&(0===c.length&&d.match(/^\d*$/)&&(d=o(d)),d&&c.push(d)),c})(a)).reduce((a,b)=>a.concat(b),[]);break;case"PCS":case"PCST":t=Array.isArray(t=this.major>=4?this.splitValue(c,b):[b])&&""===t[0]?1:0;break;default:t=this.major>=4?this.splitValue(c,b):[b]}break}case"TXXX":{let b=p.readIdentifierAndData(a.subarray(1),h);t={description:b.id,text:this.splitValue(c,d.decodeString(b.data,h).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(f){let b={};switch(a=a.subarray(1),this.major){case 2:b.format=d.decodeString(a.subarray(0,3),"latin1"),a=a.subarray(3);break;case 3:case 4:g=d.findZero(a,m),b.format=d.decodeString(a.subarray(0,g),m),a=a.subarray(g+1);break;default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(this.major)}b.format=p.fixPictureMimeType(b.format),b.type=e.AttachedPictureType[a[0]],a=a.subarray(1),g=d.findZero(a,h),b.description=d.decodeString(a.subarray(0,g),h),b.data=a=a.subarray(g+u),t=b}break;case"CNT":case"PCNT":t=(0,d.decodeUintBE)(a);break;case"SYLT":{let c=e.SyncTextHeader.get(a,0);a=a.subarray(e.SyncTextHeader.len);let d={descriptor:"",language:c.language,contentType:c.contentType,timeStampFormat:c.timeStampFormat,syncText:[]},f=!1;for(;a.length>0;){let e=p.readNullTerminatedString(a,c.encoding);if(a=a.subarray(e.len),f){let c=b.UINT32_BE.get(a,0);a=a.subarray(b.UINT32_BE.len),d.syncText.push({text:e.text,timestamp:c})}else d.descriptor=e.text,f=!0}t=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let b=e.TextHeader.get(a,s);s+=e.TextHeader.len;let c=p.readNullTerminatedString(a.subarray(s),b.encoding);s+=c.len;let d=p.readNullTerminatedString(a.subarray(s),b.encoding);t={language:b.language,descriptor:c.text,text:d.text};break}case"UFID":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,identifier:b.data};break}case"PRIV":{let b=p.readIdentifierAndData(a,m);t={owner_identifier:b.id,data:b.data};break}case"POPM":{a=a.subarray(s);let e=p.readNullTerminatedString(a,n),f=e.text;if(0===(a=a.subarray(e.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${c} POPM frame missing rating byte`),t={email:f,rating:0,counter:void 0};break}let g=b.UINT8.get(a,0),h=a.subarray(b.UINT8.len);t={email:f,rating:g,counter:h.length>0?(0,d.decodeUintBE)(h):void 0};break}case"GEOB":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,n),d=c.text;a=a.subarray(c.len);let f=p.readNullTerminatedString(a,b),g=f.text;a=a.subarray(f.len);let h=p.readNullTerminatedString(a,b);t={type:d,filename:g,description:h.text,data:a=a.subarray(h.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":t=p.readNullTerminatedString(a,n).text;break;case"WXXX":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1);let c=p.readNullTerminatedString(a,b),f=c.text;a=a.subarray(c.len),t={description:f,url:p.trimNullPadding(d.decodeString(a,m))};break}case"WFD":case"WFED":{let b=e.TextEncodingToken.get(a,0);a=a.subarray(1),t=p.readNullTerminatedString(a,b).text;break}case"MCDI":t=a.subarray(0,r);break;case"CHAP":{var v,w;let c,e;l("Reading CHAP"),g=d.findZero(a,m);let h={label:d.decodeString(a.subarray(0,g),m),info:(v=a,w=g+1,c=b.UINT32_BE.get(v,w+8),e=b.UINT32_BE.get(v,w+12),{startTime:b.UINT32_BE.get(v,w),endTime:b.UINT32_BE.get(v,w+4),startOffset:0xffffffff===c?void 0:c,endOffset:0xffffffff===e?void 0:e}),frames:new Map};for(s+=g+1+16;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,h.frames.set(b.id,c)}t=h;break}case"CTOC":{l("Reading CTOC");let b=d.findZero(a,m),c=d.decodeString(a.subarray(0,b),m);s=b+1;let e=a[s++],g=a[s++],h=[];for(let b=0;b<g&&s<r;b++){let b=d.findZero(a.subarray(s),m),c=d.decodeString(a.subarray(s,s+b),m);h.push(c),s+=b+1}let k={label:c,flags:{topLevel:(2&e)!=0,ordered:(1&e)!=0},childElementIds:h,frames:new Map};for(;s<r;){let b=j(a.subarray(s),this.major,this.warningCollector);s+=i(this.major);let c=this.readData(a.subarray(s,s+b.length),b.id,f);s+=b.length,k.frames.set(b.id,c)}t=k;break}default:l(`Warning: unsupported id3v2-tag-type: ${c}`)}return t}static readNullTerminatedString(a,b){let c=2*!!b.bom,e=a.length,f=a.subarray(c),g=d.findZero(f,b.encoding);if(g>=f.length)return{text:d.decodeString(f,b.encoding),len:e};let h=f.subarray(0,g);return{text:d.decodeString(h,b.encoding),len:c+g+p.getNullTerminatorLength(b.encoding)}}static fixPictureMimeType(a){switch(a=a.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return a}static functionList(a){let b={};for(let c=0;c+1<a.length;c+=2){let d=a[c+1].split(",");b[a[c]]=b[a[c]]?b[a[c]].concat(d):d}return b}splitValue(a,b){let c;return this.major<4?(c=b.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${a} uses non standard null-separator.`):c=b.split(/\//g):c=b.split(/\x00/g),p.trimArray(c)}static trimArray(a){return a.map(a=>p.trimNullPadding(a).trim())}static trimNullPadding(a){let b=a.length;for(;b>0&&0===a.charCodeAt(b-1);)b--;return b===a.length?a:a.slice(0,b)}static readIdentifierAndData(a,b){let c=p.readNullTerminatedString(a,{encoding:b,bom:!1});return{id:c.text,data:a.subarray(c.len)}}static getNullTerminatorLength(a){return a.startsWith("utf-16")?2:1}}class q extends(0,g.makeUnexpectedFileContentError)("id3v2"){}class r{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(a){let b=0,c=0;for(;b<a.length-1;)b!==c&&(a[c]=a[b]),b+=255===a[b]&&0===a[b+1]?2:1,c++;return b<a.length&&(a[c++]=a[b]),a.subarray(0,c)}static readFrameData(a,b,c,d,e){let f=new p(c,e);switch(c){case 2:return f.readData(a,b.id,d);case 3:case 4:return b.flags?.format.unsynchronisation&&(a=r.removeUnsyncBytes(a)),b.flags?.format.data_length_indicator&&(a=a.subarray(4,a.length)),f.readData(a,b.id,d);default:throw function(a){throw new q(`Unexpected majorVer: ${a}`)}(c)}}static makeDescriptionTagName(a,b){return a+(b?`:${b}`:"")}async parse(a,b,c){this.tokenizer=b,this.metadata=a,this.options=c;let d=await this.tokenizer.readToken(e.ID3v2Header);if("ID3"!==d.fileIdentifier)throw new q("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=d,this.headerType=`ID3v2.${d.version.major}`,await (d.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(d.size));let f=r.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",f)}async parseExtendedHeader(){let a=await this.tokenizer.readToken(e.ExtendedHeader),b=a.size-e.ExtendedHeader.len;return b>0?this.parseExtendedHeaderData(b,a.size):this.parseId3Data(this.id3Header.size-a.size)}async parseExtendedHeaderData(a,b){return await this.tokenizer.ignore(a),this.parseId3Data(this.id3Header.size-b)}async parseId3Data(a){let c=await this.tokenizer.readToken(new b.Uint8ArrayType(a));for(let a of this.parseMetadata(c))"TXXX"===a.id?a.value&&await this.handleTag(a,a.value.text,()=>a.value.description):await (Array.isArray(a.value)?Promise.all(a.value.map(b=>this.addTag(a.id,b))):this.addTag(a.id,a.value))}async handleTag(a,b,c,d=a=>a){await Promise.all(b.map(b=>this.addTag(r.makeDescriptionTagName(a.id,c(b)),d(b))))}async addTag(a,b){await this.metadata.addTag(this.headerType,a,b)}parseMetadata(a){let b=0,c=[];for(;b!==a.length;){let d=i(this.id3Header.version.major);if(b+d>a.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let e=a.subarray(b,b+d);b+=d;let f=j(e,this.id3Header.version.major,this.metadata),g=a.subarray(b,b+f.length);b+=f.length;let h=r.readFrameData(g,f,this.id3Header.version.major,!this.options.skipCovers,this.metadata);h&&c.push({id:f.id,value:h})}return c}static mapId3v2Chapters(a){if(!a)return;let b=a.filter(a=>"CHAP"===a.id);if(!b?.length)return;let c=a.filter(a=>"CTOC"===a.id),d=c?.find(a=>a.value.flags?.topLevel),e=new Map;for(let a of b)e.set(a.value.label,a.value);let f=d?.value.childElementIds,g=[];for(let a of f??[...e.keys()]){let b=e.get(a);if(!b)continue;let c=b.frames,d=c.get("TIT2");d&&g.push({id:a,title:d,url:c.get("WXXX"),start:b.info.startTime/1e3,end:b.info.endTime/1e3,image:c.get("APIC")})}return f||g.sort((a,b)=>a.start-b.start),g.length?g:void 0}}a.s(["ID3v2Parser",0,r],54868)},44676,a=>{"use strict";a.i(17588);var b=a.i(82663),c=a.i(35617),d=a.i(68231),e=a.i(54868),f=a.i(49597),g=a.i(7304);let h=(0,c.default)("music-metadata:parser:ID3");class i extends g.BasicParser{constructor(){super(...arguments),this.id3parser=new e.ID3v2Parser}static async startsWithID3v2Header(a){return"ID3"===(await a.peekToken(d.ID3v2Header)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(a){if(a instanceof b.EndOfStreamError)h("End-of-stream");else throw a}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),h("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{let a=new f.ID3v1Parser(this.metadata,this.tokenizer,this.options);await a.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(d.ID3v2Header)).fileIdentifier)return h("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}a.s(["AbstractID3Parser",0,i])},44024,a=>{"use strict";var b=a.i(1962),c=a.i(73635);a.s(["VorbisDecoder",0,class{constructor(a,b){this.data=a,this.offset=b}readInt32(){let a=b.UINT32_LE.get(this.data,this.offset);return this.offset+=4,a}readStringUtf8(){let a=this.readInt32(),b=(0,c.textDecode)(this.data.subarray(this.offset,this.offset+a),"utf-8");return this.offset+=a,b}parseUserComment(){let a=this.offset,b=this.readStringUtf8(),c=b.indexOf("=");return{key:b.substring(0,c).toUpperCase(),value:b.substring(c+1),len:this.offset-a}}}])},26468,a=>{"use strict";var b=a.i(1962),c=a.i(68231);class d{static fromBase64(a){return d.fromBuffer(Uint8Array.from(atob(a),a=>a.charCodeAt(0)))}static fromBuffer(a){return new d(a.length).get(a,0)}constructor(a){this.len=a}get(a,d){let e=c.AttachedPictureType[b.UINT32_BE.get(a,d)];d+=4;let f=b.UINT32_BE.get(a,d);d+=4;let g=new b.StringType(f,"utf-8").get(a,d);d+=f;let h=b.UINT32_BE.get(a,d);d+=4;let i=new b.StringType(h,"utf-8").get(a,d);d+=h;let j=b.UINT32_BE.get(a,d);d+=4;let k=b.UINT32_BE.get(a,d);d+=4;let l=b.UINT32_BE.get(a,d);d+=4;let m=b.UINT32_BE.get(a,d);d+=4;let n=b.UINT32_BE.get(a,d);return d+=4,{type:e,format:g,description:i,width:j,height:k,colour_depth:l,indexed_color:m,data:a.slice(d,d+n)}}}a.s(["CommonHeader",0,{len:7,get:(a,c)=>({packetType:b.UINT8.get(a,c),vorbis:new b.StringType(6,"ascii").get(a,c+1)})},"IdentificationHeader",0,{len:23,get:(a,c)=>({version:b.UINT32_LE.get(a,c+0),channelMode:b.UINT8.get(a,c+4),sampleRate:b.UINT32_LE.get(a,c+5),bitrateMax:b.UINT32_LE.get(a,c+9),bitrateNominal:b.UINT32_LE.get(a,c+13),bitrateMin:b.UINT32_LE.get(a,c+17)})},"VorbisPictureToken",0,d])},23163,95023,51836,a=>{"use strict";var b=a.i(35617),c=a.i(1962),d=a.i(26468),e=a.i(44676),f=a.i(73850),g=a.i(44024),h=a.i(74777);let i=(0,b.default)("music-metadata:parser:ogg:vorbis1");class j extends(0,h.makeUnexpectedFileContentError)("Vorbis"){}class k{constructor(a,b){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=a,this.options=b}async parsePage(a,b){if(this.lastPageHeader=a,a.headerType.firstPage)this.parseFirstPage(a,b);else{if(a.headerType.continued){if(0===this.pageSegments.length)throw new j("Cannot continue on previous page");this.pageSegments.push(b)}if(a.headerType.lastPage||!a.headerType.continued){if(this.pageSegments.length>0){let a=k.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(a)}this.pageSegments=a.headerType.lastPage?[]:[b]}}}static mergeUint8Arrays(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0));return a.forEach((a,c,d)=>{let e=d.slice(0,c).reduce((a,b)=>a+b.length,0);b.set(a,e)}),b}async flush(){await this.parseFullPage(k.mergeUint8Arrays(this.pageSegments))}async parseUserComment(a,b){let c=new g.VorbisDecoder(a,b).parseUserComment();return await this.addTag(c.key,c.value),c.len}async addTag(a,b){if("METADATA_BLOCK_PICTURE"===a&&"string"==typeof b){if(this.options.skipCovers)return void i("Ignore picture");b=d.VorbisPictureToken.fromBase64(b),i(`Push picture: id=${a}, format=${b.format}`)}else i(`Push tag: id=${a}, value=${b}`);await this.metadata.addTag("vorbis",a,b)}calculateDuration(a){this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(a,b){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),i("Parse first page");let c=d.CommonHeader.get(b,0);if("vorbis"!==c.vorbis)throw new j("Metadata does not look like Vorbis");if(1===c.packetType){let a=d.IdentificationHeader.get(b,d.CommonHeader.len);this.metadata.setFormat("sampleRate",a.sampleRate),this.metadata.setFormat("bitrate",a.bitrateNominal),this.metadata.setFormat("numberOfChannels",a.channelMode),i("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",a.sampleRate,a.bitrateNominal,a.channelMode)}else throw new j("First Ogg page should be type 1: the identification header")}async parseFullPage(a){let b=d.CommonHeader.get(a,0);if(i("Parse full page: type=%s, byteLength=%s",b.packetType,a.byteLength),3===b.packetType)return this.parseUserCommentList(a,d.CommonHeader.len)}async parseUserCommentList(a,b){let d=c.UINT32_LE.get(a,b);b+=4,b+=d;let e=c.UINT32_LE.get(a,b);for(b+=4;e-- >0;)b+=await this.parseUserComment(a,b)}}a.s(["VorbisStream",0,k],95023);var l=h,m=a.i(82670);let n={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},o={len:4,get:(a,b)=>({lastBlock:m.getBit(a,b,7),type:m.getBitAllignedNumber(a,b,1,7),length:c.UINT24_BE.get(a,b+1)})},p={len:34,get:(a,b)=>({minimumBlockSize:c.UINT16_BE.get(a,b),maximumBlockSize:c.UINT16_BE.get(a,b+2)/1e3,minimumFrameSize:c.UINT24_BE.get(a,b+4),maximumFrameSize:c.UINT24_BE.get(a,b+7),sampleRate:c.UINT24_BE.get(a,b+10)>>4,channels:m.getBitAllignedNumber(a,b+12,4,3)+1,bitsPerSample:m.getBitAllignedNumber(a,b+12,7,5)+1,totalSamples:m.getBitAllignedNumber(a,b+13,4,36),fileMD5:new c.Uint8ArrayType(16).get(a,b+18)})};a.s(["BlockHeader",0,o,"BlockStreamInfo",0,p,"BlockType",0,n],51836);let q=(0,b.default)("music-metadata:parser:FLAC");class r extends(0,l.makeUnexpectedFileContentError)("FLAC"){}class s extends e.AbstractID3Parser{constructor(){super(...arguments),this.vorbisParser=new k(this.metadata,this.options)}async postId3v2Parse(){let a;if("fLaC"!==(await this.tokenizer.readToken(f.FourCcToken)).toString())throw new r("Invalid FLAC preamble");do a=await this.tokenizer.readToken(o),await this.parseDataBlock(a);while(!a.lastBlock)if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}async parseDataBlock(a){switch(q(`blockHeader type=${a.type}, length=${a.length}`),a.type){case n.STREAMINFO:return this.readBlockStreamInfo(a.length);case n.PADDING:case n.APPLICATION:case n.SEEKTABLE:break;case n.VORBIS_COMMENT:return this.readComment(a.length);case n.CUESHEET:break;case n.PICTURE:await this.parsePicture(a.length);return;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}async readBlockStreamInfo(a){if(a!==p.len)throw new r("Unexpected block-stream-info length");let b=await this.tokenizer.readToken(p);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(b)}processsStreamInfo(a){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",a.channels),this.metadata.setFormat("bitsPerSample",a.bitsPerSample),this.metadata.setFormat("sampleRate",a.sampleRate),a.totalSamples>0&&this.metadata.setFormat("duration",a.totalSamples/a.sampleRate)}async readComment(a){let b=await this.tokenizer.readToken(new c.Uint8ArrayType(a));return this.parseComment(b)}async parseComment(a){let b=new g.VorbisDecoder(a,0),c=b.readStringUtf8();c.length>0&&this.metadata.setFormat("tool",c);let d=b.readInt32(),e=Array(d);for(let a=0;a<d;a++)e[a]=b.parseUserComment();await Promise.all(e.map(a=>("ENCODER"===a.key&&this.metadata.setFormat("tool",a.value),this.addTag(a.key,a.value))))}async parsePicture(a){return this.options.skipCovers?this.tokenizer.ignore(a):this.addPictureTag(await this.tokenizer.readToken(new d.VorbisPictureToken(a)))}addPictureTag(a){return this.addTag("METADATA_BLOCK_PICTURE",a)}addTag(a,b){return this.vorbisParser.addTag(a,b)}}a.s(["FlacParser",0,s],23163)},77677,a=>{"use strict";var b=a.i(1962);a.i(17588);var c=a.i(82663),d=a.i(35617),e=a.i(7304),f=a.i(95023),g=f,h=a.i(74777);class i extends(0,h.makeUnexpectedFileContentError)("Opus"){}class j{constructor(a){if(a<19)throw new i("ID-header-page 0 should be at least 19 bytes long");this.len=a}get(a,c){return{magicSignature:new b.StringType(8,"ascii").get(a,c+0),version:b.UINT8.get(a,c+8),channelCount:b.UINT8.get(a,c+9),preSkip:b.UINT16_LE.get(a,c+10),inputSampleRate:b.UINT32_LE.get(a,c+12),outputGain:b.UINT16_LE.get(a,c+16),channelMapping:b.UINT8.get(a,c+18)}}}class k extends g.VorbisStream{constructor(a,b,c){super(a,b),this.idHeader=null,this.lastPos=-1,this.tokenizer=c,this.durationOnLastPage=!0}parseFirstPage(a,b){if(this.metadata.setFormat("codec","Opus"),this.idHeader=new j(b.length).get(b,0),"OpusHead"!==this.idHeader.magicSignature)throw new i("Illegal ogg/Opus magic-signature");this.metadata.setFormat("sampleRate",this.idHeader.inputSampleRate),this.metadata.setFormat("numberOfChannels",this.idHeader.channelCount),this.metadata.setAudioOnly()}async parseFullPage(a){"OpusTags"===new b.StringType(8,"ascii").get(a,0)&&(await this.parseUserCommentList(a,8),this.lastPos=this.tokenizer.position-a.length)}calculateDuration(a){if(this.lastPageHeader&&(a||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0){let a=this.lastPageHeader.absoluteGranulePosition-this.idHeader.preSkip;if(this.metadata.setFormat("numberOfSamples",a),this.metadata.setFormat("duration",a/48e3),-1!==this.lastPos&&this.tokenizer.fileInfo.size&&this.metadata.format.duration){let a=this.tokenizer.fileInfo.size-this.lastPos;this.metadata.setFormat("bitrate",8*a/this.metadata.format.duration)}}}}var l=f,m=a.i(82670);let n=(0,d.default)("music-metadata:parser:ogg:speex");class o extends l.VorbisStream{constructor(a,b,c){super(a,b)}parseFirstPage(a,c){let d,e;n("First Ogg/Speex page");let f=(d=c,e=0,{speex:new b.StringType(8,"ascii").get(d,e+0),version:m.trimRightNull(new b.StringType(20,"ascii").get(d,e+8)),version_id:b.INT32_LE.get(d,e+28),header_size:b.INT32_LE.get(d,e+32),rate:b.INT32_LE.get(d,e+36),mode:b.INT32_LE.get(d,e+40),mode_bitstream_version:b.INT32_LE.get(d,e+44),nb_channels:b.INT32_LE.get(d,e+48),bitrate:b.INT32_LE.get(d,e+52),frame_size:b.INT32_LE.get(d,e+56),vbr:b.INT32_LE.get(d,e+60),frames_per_packet:b.INT32_LE.get(d,e+64),extra_headers:b.INT32_LE.get(d,e+68),reserved1:b.INT32_LE.get(d,e+72),reserved2:b.INT32_LE.get(d,e+76)});this.metadata.setFormat("codec",`Speex ${f.version}`),this.metadata.setFormat("numberOfChannels",f.nb_channels),this.metadata.setFormat("sampleRate",f.rate),-1!==f.bitrate&&this.metadata.setFormat("bitrate",f.bitrate),this.metadata.setAudioOnly()}}let p=(0,d.default)("music-metadata:parser:ogg:theora");class q{constructor(a,b,c){this.durationOnLastPage=!1,this.metadata=a}async parsePage(a,b){a.headerType.firstPage&&await this.parseFirstPage(a,b)}calculateDuration(){p("duration calculation not implemented")}async parseFirstPage(a,c){let d,e;p("First Ogg/Theora page"),this.metadata.setFormat("codec","Theora");let f=(d=c,e=0,{id:new b.StringType(7,"ascii").get(d,e),vmaj:b.UINT8.get(d,e+7),vmin:b.UINT8.get(d,e+8),vrev:b.UINT8.get(d,e+9),vmbw:b.UINT16_BE.get(d,e+10),vmbh:b.UINT16_BE.get(d,e+17),nombr:b.UINT24_BE.get(d,e+37),nqual:b.UINT8.get(d,e+40)});this.metadata.setFormat("bitrate",f.nombr),this.metadata.setFormat("hasVideo",!0)}flush(){return Promise.resolve()}}var r=h;let s={len:27,get:(a,c)=>({capturePattern:new b.StringType(4,"latin1").get(a,c),version:b.UINT8.get(a,c+4),headerType:{continued:m.getBit(a,c+5,0),firstPage:m.getBit(a,c+5,1),lastPage:m.getBit(a,c+5,2)},absoluteGranulePosition:Number(b.UINT64_LE.get(a,c+6)),streamSerialNumber:b.UINT32_LE.get(a,c+14),pageSequenceNo:b.UINT32_LE.get(a,c+18),pageChecksum:b.UINT32_LE.get(a,c+22),page_segments:b.UINT8.get(a,c+26)})};class t{static sum(a,b,c){let d=new DataView(a.buffer,0),e=0;for(let a=b;a<b+c;++a)e+=d.getUint8(a);return e}constructor(a){this.len=a.page_segments}get(a,b){return{totalPageSize:t.sum(a,b,this.len)}}}var u=a.i(51836),v=a.i(23163),w=a.i(73850),x=a.i(26468);let y=(0,d.default)("music-metadata:parser:ogg:theora");class z{constructor(a,b,c){this.durationOnLastPage=!1,this.metadata=a,this.options=b,this.tokenizer=c,this.flacParser=new v.FlacParser(this.metadata,this.tokenizer,b)}async parsePage(a,b){a.headerType.firstPage&&await this.parseFirstPage(a,b)}calculateDuration(){y("duration calculation not implemented")}async parseFirstPage(a,b){if(y("First Ogg/FLAC page"),"fLaC"!==(await w.FourCcToken.get(b,9)).toString())throw Error("Invalid FLAC preamble");let c=await u.BlockHeader.get(b,13);await this.parseDataBlock(c,b.subarray(13+u.BlockHeader.len))}async parseDataBlock(a,b){switch(y(`blockHeader type=${a.type}, length=${a.length}`),a.type){case u.BlockType.STREAMINFO:{let a=u.BlockStreamInfo.get(b,0);return this.flacParser.processsStreamInfo(a)}case u.BlockType.PADDING:case u.BlockType.APPLICATION:case u.BlockType.SEEKTABLE:break;case u.BlockType.VORBIS_COMMENT:return this.flacParser.parseComment(b);case u.BlockType.PICTURE:if(!this.options.skipCovers){let a=new x.VorbisPictureToken(b.length).get(b,0);return this.flacParser.addPictureTag(a)}break;default:this.metadata.addWarning(`Unknown block type: ${a.type}`)}return this.tokenizer.ignore(a.length).then()}flush(){return Promise.resolve()}}class A extends(0,r.makeUnexpectedFileContentError)("Ogg"){}let B=(0,d.default)("music-metadata:parser:ogg");class C{constructor(a,b,c){this.pageNumber=0,this.closed=!1,this.metadata=a,this.streamSerial=b,this.options=c}async parsePage(a,c){this.pageNumber=c.pageSequenceNo,B("serial=%s page#=%s, Ogg.id=%s",c.streamSerialNumber,c.pageSequenceNo,c.capturePattern);let d=await a.readToken(new t(c));B("totalPageSize=%s",d.totalPageSize);let e=await a.readToken(new b.Uint8ArrayType(d.totalPageSize));if(B("firstPage=%s, lastPage=%s, continued=%s",c.headerType.firstPage,c.headerType.lastPage,c.headerType.continued),c.headerType.firstPage){this.metadata.setFormat("container","Ogg");let b=Array.from(e.subarray(0,7)).filter(a=>a>=32&&a<=126).map(a=>String.fromCharCode(a)).join("");switch(b){case"vorbis":B(`Set Ogg stream serial ${c.streamSerialNumber}, codec=Vorbis`),this.pageConsumer=new f.VorbisStream(this.metadata,this.options);break;case"OpusHea":B("Set page consumer to Ogg/Opus"),this.pageConsumer=new k(this.metadata,this.options,a);break;case"Speex ":B("Set page consumer to Ogg/Speex"),this.pageConsumer=new o(this.metadata,this.options,a);break;case"fishead":case"theora":B("Set page consumer to Ogg/Theora"),this.pageConsumer=new q(this.metadata,this.options,a);break;case"FLAC":B("Set page consumer to Vorbis"),this.pageConsumer=new z(this.metadata,this.options,a);break;default:throw new A(`Ogg codec not recognized (id=${b}`)}}if(c.headerType.lastPage&&(this.closed=!0),this.pageConsumer)await this.pageConsumer.parsePage(c,e);else throw Error("pageConsumer should be initialized")}}class D extends e.BasicParser{constructor(){super(...arguments),this.streams=new Map}async parse(){let a;this.streams=new Map;let b=!1;try{do{if(a=await this.tokenizer.readToken(s),"OggS"!==a.capturePattern)throw new A("Invalid Ogg capture pattern");let b=this.streams.get(a.streamSerialNumber);if(b||(b=new C(this.metadata,a.streamSerialNumber,this.options),this.streams.set(a.streamSerialNumber,b)),await b.parsePage(this.tokenizer,a),b.pageNumber>12&&!(this.options.duration&&[...this.streams.values()].find(a=>a.pageConsumer?.durationOnLastPage))){B("Stop processing Ogg stream");break}}while(![...this.streams.values()].every(a=>a.closed))}catch(a){if(a instanceof c.EndOfStreamError)B("Reached end-of-stream"),b=!0;else if(a instanceof A)this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);else throw a}for(let a of this.streams.values())a.closed||(this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${a.streamSerial}`),await a.pageConsumer?.flush()),a.pageConsumer?.calculateDuration(b)}}a.s(["OggParser",0,D],77677)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=0a6e_music-metadata_lib_0xr.otg._.js.map
|