@archipelagolab/lobi 1.0.5 → 1.0.6
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/dist/APEv2Parser-FYYGMFPI.js +15 -0
- package/dist/APEv2Parser-FYYGMFPI.js.map +7 -0
- package/dist/AiffParser-JHSDQA7T.js +194 -0
- package/dist/AiffParser-JHSDQA7T.js.map +7 -0
- package/dist/AsfParser-TPCQDEJB.js +620 -0
- package/dist/AsfParser-TPCQDEJB.js.map +7 -0
- package/dist/DsdiffParser-CGD3C3TL.js +192 -0
- package/dist/DsdiffParser-CGD3C3TL.js.map +7 -0
- package/dist/DsfParser-3UTIJVNF.js +114 -0
- package/dist/DsfParser-3UTIJVNF.js.map +7 -0
- package/dist/FlacParser-HLLYPJ76.js +16 -0
- package/dist/FlacParser-HLLYPJ76.js.map +7 -0
- package/dist/MP4Parser-SM7HYL3Z.js +1145 -0
- package/dist/MP4Parser-SM7HYL3Z.js.map +7 -0
- package/dist/MatroskaParser-X7WRZ6D4.js +662 -0
- package/dist/MatroskaParser-X7WRZ6D4.js.map +7 -0
- package/dist/MpegParser-KXQEC6KD.js +652 -0
- package/dist/MpegParser-KXQEC6KD.js.map +7 -0
- package/dist/MusepackParser-NURI46TG.js +331 -0
- package/dist/MusepackParser-NURI46TG.js.map +7 -0
- package/dist/OggParser-5IYVBXPS.js +448 -0
- package/dist/OggParser-5IYVBXPS.js.map +7 -0
- package/dist/WavPackParser-RTEHKSJH.js +209 -0
- package/dist/WavPackParser-RTEHKSJH.js.map +7 -0
- package/dist/WaveParser-3R2NLXGP.js +300 -0
- package/dist/WaveParser-3R2NLXGP.js.map +7 -0
- package/dist/auth-presence.js +2 -2
- package/dist/channel-plugin-api.js +68 -68
- package/dist/chunk-2GFROLI2.js +261 -0
- package/dist/chunk-2GFROLI2.js.map +7 -0
- package/dist/chunk-2IQWKATM.js +127 -0
- package/dist/chunk-2IQWKATM.js.map +7 -0
- package/dist/chunk-2V6Y4CAN.js +25 -0
- package/dist/chunk-2V6Y4CAN.js.map +7 -0
- package/dist/chunk-2WHRUMOM.js +321 -0
- package/dist/chunk-2WHRUMOM.js.map +7 -0
- package/dist/chunk-3GIK7SAA.js +109 -0
- package/dist/chunk-3GIK7SAA.js.map +7 -0
- package/dist/chunk-3OXOEMBS.js +123 -0
- package/dist/chunk-3OXOEMBS.js.map +7 -0
- package/dist/chunk-3R4ATE4Q.js +176 -0
- package/dist/chunk-3R4ATE4Q.js.map +7 -0
- package/dist/chunk-4CFQNJ7F.js +7 -0
- package/dist/chunk-4CFQNJ7F.js.map +7 -0
- package/dist/chunk-4COI4L2Y.js +31 -0
- package/dist/chunk-4COI4L2Y.js.map +7 -0
- package/dist/chunk-4EKKDVG3.js +1662 -0
- package/dist/chunk-4EKKDVG3.js.map +7 -0
- package/dist/chunk-4L2QI6AY.js +71 -0
- package/dist/chunk-4L2QI6AY.js.map +7 -0
- package/dist/chunk-4OXPPDV6.js +676 -0
- package/dist/chunk-4OXPPDV6.js.map +7 -0
- package/dist/chunk-4QTZHELX.js +51 -0
- package/dist/chunk-4QTZHELX.js.map +7 -0
- package/dist/chunk-4U42OJMK.js +217 -0
- package/dist/chunk-4U42OJMK.js.map +7 -0
- package/dist/chunk-4WCKVGQ5.js +193 -0
- package/dist/chunk-4WCKVGQ5.js.map +7 -0
- package/dist/chunk-4XXERLFH.js +95 -0
- package/dist/chunk-4XXERLFH.js.map +7 -0
- package/dist/chunk-4ZY2BOQ4.js +123 -0
- package/dist/chunk-4ZY2BOQ4.js.map +7 -0
- package/dist/chunk-57ROEOHB.js +183 -0
- package/dist/chunk-57ROEOHB.js.map +7 -0
- package/dist/chunk-5BQ6LLNU.js +39 -0
- package/dist/chunk-5BQ6LLNU.js.map +7 -0
- package/dist/chunk-63QTHDJL.js +52 -0
- package/dist/chunk-63QTHDJL.js.map +7 -0
- package/dist/chunk-65UUVZ6B.js +151 -0
- package/dist/chunk-65UUVZ6B.js.map +7 -0
- package/dist/chunk-6COVTMAO.js +3586 -0
- package/dist/chunk-6COVTMAO.js.map +7 -0
- package/dist/chunk-6EYPDJUD.js +34 -0
- package/dist/chunk-6EYPDJUD.js.map +7 -0
- package/dist/chunk-6HDYPVA4.js +15 -0
- package/dist/chunk-6HDYPVA4.js.map +7 -0
- package/dist/chunk-6OP3FK5F.js +266 -0
- package/dist/chunk-6OP3FK5F.js.map +7 -0
- package/dist/chunk-6RBDFNSX.js +88 -0
- package/dist/chunk-6RBDFNSX.js.map +7 -0
- package/dist/chunk-6TWWCETB.js +70 -0
- package/dist/chunk-6TWWCETB.js.map +7 -0
- package/dist/chunk-6WFHPMUF.js +17 -0
- package/dist/chunk-6WFHPMUF.js.map +7 -0
- package/dist/chunk-77BEEAPD.js +86 -0
- package/dist/chunk-77BEEAPD.js.map +7 -0
- package/dist/chunk-77JJ6QJK.js +50 -0
- package/dist/chunk-77JJ6QJK.js.map +7 -0
- package/dist/chunk-7BIUNV33.js +62 -0
- package/dist/chunk-7BIUNV33.js.map +7 -0
- package/dist/chunk-7L37R42D.js +52 -0
- package/dist/chunk-7L37R42D.js.map +7 -0
- package/dist/chunk-7ZP3KYVO.js +104 -0
- package/dist/chunk-7ZP3KYVO.js.map +7 -0
- package/dist/chunk-ARGF232V.js +32 -0
- package/dist/chunk-ARGF232V.js.map +7 -0
- package/dist/chunk-ATCJOK3K.js +24 -0
- package/dist/chunk-ATCJOK3K.js.map +7 -0
- package/dist/chunk-AUUABFHL.js +124 -0
- package/dist/chunk-AUUABFHL.js.map +7 -0
- package/dist/chunk-B3NTODO7.js +57 -0
- package/dist/chunk-B3NTODO7.js.map +7 -0
- package/dist/chunk-BM7J2W36.js +86 -0
- package/dist/chunk-BM7J2W36.js.map +7 -0
- package/dist/chunk-CEB5S2Z5.js +127 -0
- package/dist/chunk-CEB5S2Z5.js.map +7 -0
- package/dist/chunk-CEKNTCJD.js +177 -0
- package/dist/chunk-CEKNTCJD.js.map +7 -0
- package/dist/chunk-CGFDIH77.js +94 -0
- package/dist/chunk-CGFDIH77.js.map +7 -0
- package/dist/chunk-CPLEC5LJ.js +26 -0
- package/dist/chunk-CPLEC5LJ.js.map +7 -0
- package/dist/chunk-D4GYYYMW.js +155 -0
- package/dist/chunk-D4GYYYMW.js.map +7 -0
- package/dist/chunk-D64CZG54.js +78 -0
- package/dist/chunk-D64CZG54.js.map +7 -0
- package/dist/chunk-DSGPDHF2.js +737 -0
- package/dist/chunk-DSGPDHF2.js.map +7 -0
- package/dist/chunk-EBXHW7ZO.js +108 -0
- package/dist/chunk-EBXHW7ZO.js.map +7 -0
- package/dist/chunk-EO35SCFP.js +7 -0
- package/dist/chunk-EO35SCFP.js.map +7 -0
- package/dist/chunk-ER2XTD2S.js +271 -0
- package/dist/chunk-ER2XTD2S.js.map +7 -0
- package/dist/chunk-ERXO3674.js +54 -0
- package/dist/chunk-ERXO3674.js.map +7 -0
- package/dist/chunk-F43CC2X2.js +49 -0
- package/dist/chunk-F43CC2X2.js.map +7 -0
- package/dist/chunk-F64TXVJJ.js +158 -0
- package/dist/chunk-F64TXVJJ.js.map +7 -0
- package/dist/chunk-F6APWSAA.js +51 -0
- package/dist/chunk-F6APWSAA.js.map +7 -0
- package/dist/chunk-F7LNS7G3.js +235 -0
- package/dist/chunk-F7LNS7G3.js.map +7 -0
- package/dist/chunk-FCNWR7ZX.js +16352 -0
- package/dist/chunk-FCNWR7ZX.js.map +7 -0
- package/dist/chunk-FFCG5NRU.js +87 -0
- package/dist/chunk-FFCG5NRU.js.map +7 -0
- package/dist/chunk-FJFC6CRR.js +446 -0
- package/dist/chunk-FJFC6CRR.js.map +7 -0
- package/dist/chunk-FK6RGYBB.js +46 -0
- package/dist/chunk-FK6RGYBB.js.map +7 -0
- package/dist/chunk-FMY6KXK6.js +251 -0
- package/dist/chunk-FMY6KXK6.js.map +7 -0
- package/dist/chunk-FPH56SCM.js +21 -0
- package/dist/chunk-FPH56SCM.js.map +7 -0
- package/dist/chunk-FVSH4Z6T.js +173 -0
- package/dist/chunk-FVSH4Z6T.js.map +7 -0
- package/dist/chunk-FVWBLEAD.js +44 -0
- package/dist/chunk-FVWBLEAD.js.map +7 -0
- package/dist/chunk-FYSARMGS.js +93 -0
- package/dist/chunk-FYSARMGS.js.map +7 -0
- package/dist/chunk-FZJOJ6P4.js +28 -0
- package/dist/chunk-FZJOJ6P4.js.map +7 -0
- package/dist/chunk-G46GHNDU.js +4890 -0
- package/dist/chunk-G46GHNDU.js.map +7 -0
- package/dist/chunk-G4TIS2SC.js +56 -0
- package/dist/chunk-G4TIS2SC.js.map +7 -0
- package/dist/chunk-GGWS7NQP.js +247 -0
- package/dist/chunk-GGWS7NQP.js.map +7 -0
- package/dist/chunk-GRBJYAYF.js +129 -0
- package/dist/chunk-GRBJYAYF.js.map +7 -0
- package/dist/chunk-GXDQGBA2.js +106 -0
- package/dist/chunk-GXDQGBA2.js.map +7 -0
- package/dist/chunk-H2HY73I6.js +122 -0
- package/dist/chunk-H2HY73I6.js.map +7 -0
- package/dist/chunk-H5MLA6PA.js +29 -0
- package/dist/chunk-H5MLA6PA.js.map +7 -0
- package/dist/chunk-H7KAUMBC.js +635 -0
- package/dist/chunk-H7KAUMBC.js.map +7 -0
- package/dist/chunk-HGHU3TVL.js +174 -0
- package/dist/chunk-HGHU3TVL.js.map +7 -0
- package/dist/chunk-HJ5E2JRL.js +88 -0
- package/dist/chunk-HJ5E2JRL.js.map +7 -0
- package/dist/chunk-HJW3CKZL.js +94 -0
- package/dist/chunk-HJW3CKZL.js.map +7 -0
- package/dist/chunk-HKF5EBER.js +418 -0
- package/dist/chunk-HKF5EBER.js.map +7 -0
- package/dist/chunk-HLUR35G5.js +30 -0
- package/dist/chunk-HLUR35G5.js.map +7 -0
- package/dist/chunk-HNIW2NZU.js +120 -0
- package/dist/chunk-HNIW2NZU.js.map +7 -0
- package/dist/chunk-HSXRCP25.js +171 -0
- package/dist/chunk-HSXRCP25.js.map +7 -0
- package/dist/chunk-I26OPZLO.js +28 -0
- package/dist/chunk-I26OPZLO.js.map +7 -0
- package/dist/chunk-I7JJQ4BQ.js +30 -0
- package/dist/chunk-I7JJQ4BQ.js.map +7 -0
- package/dist/chunk-IJ6Y4W7F.js +392 -0
- package/dist/chunk-IJ6Y4W7F.js.map +7 -0
- package/dist/chunk-IJH4NOQ4.js +18 -0
- package/dist/chunk-IJH4NOQ4.js.map +7 -0
- package/dist/chunk-IMHRZQRH.js +76 -0
- package/dist/chunk-IMHRZQRH.js.map +7 -0
- package/dist/chunk-JB6ZQEVR.js +465 -0
- package/dist/chunk-JB6ZQEVR.js.map +7 -0
- package/dist/chunk-JCWNMWNY.js +102 -0
- package/dist/chunk-JCWNMWNY.js.map +7 -0
- package/dist/chunk-JGIZPU2Y.js +39 -0
- package/dist/chunk-JGIZPU2Y.js.map +7 -0
- package/dist/chunk-JIU4FXA7.js +485 -0
- package/dist/chunk-JIU4FXA7.js.map +7 -0
- package/dist/chunk-JU2Y33DB.js +60 -0
- package/dist/chunk-JU2Y33DB.js.map +7 -0
- package/dist/chunk-JVLRI4RU.js +62 -0
- package/dist/chunk-JVLRI4RU.js.map +7 -0
- package/dist/chunk-JZ3AVNZC.js +44117 -0
- package/dist/chunk-JZ3AVNZC.js.map +7 -0
- package/dist/chunk-K3HEWOHN.js +30 -0
- package/dist/chunk-K3HEWOHN.js.map +7 -0
- package/dist/chunk-K5EK4WZV.js +7 -0
- package/dist/chunk-K5EK4WZV.js.map +7 -0
- package/dist/chunk-KAWXMSYC.js +58 -0
- package/dist/chunk-KAWXMSYC.js.map +7 -0
- package/dist/chunk-KEGPHS4C.js +80 -0
- package/dist/chunk-KEGPHS4C.js.map +7 -0
- package/dist/chunk-KXXVR3DC.js +244 -0
- package/dist/chunk-KXXVR3DC.js.map +7 -0
- package/dist/chunk-L5T6XUDP.js +412 -0
- package/dist/chunk-L5T6XUDP.js.map +7 -0
- package/dist/chunk-LIFXTQ4U.js +7287 -0
- package/dist/chunk-LIFXTQ4U.js.map +7 -0
- package/dist/chunk-LMD5UTKM.js +169 -0
- package/dist/chunk-LMD5UTKM.js.map +7 -0
- package/dist/chunk-LTXNC6JX.js +27 -0
- package/dist/chunk-LTXNC6JX.js.map +7 -0
- package/dist/chunk-LUGTGPT6.js +138 -0
- package/dist/chunk-LUGTGPT6.js.map +7 -0
- package/dist/chunk-LZQFDJNW.js +300 -0
- package/dist/chunk-LZQFDJNW.js.map +7 -0
- package/dist/chunk-M4VQPIF4.js +5853 -0
- package/dist/chunk-M4VQPIF4.js.map +7 -0
- package/dist/chunk-M64QE4QC.js +64 -0
- package/dist/chunk-M64QE4QC.js.map +7 -0
- package/dist/chunk-MJ2GW6SU.js +163 -0
- package/dist/chunk-MJ2GW6SU.js.map +7 -0
- package/dist/chunk-MYSK3SIM.js +55 -0
- package/dist/chunk-MYSK3SIM.js.map +7 -0
- package/dist/chunk-N46MIZXB.js +154 -0
- package/dist/chunk-N46MIZXB.js.map +7 -0
- package/dist/chunk-N53537P6.js +31 -0
- package/dist/chunk-N53537P6.js.map +7 -0
- package/dist/chunk-N5CTFOLX.js +40 -0
- package/dist/chunk-N5CTFOLX.js.map +7 -0
- package/dist/chunk-NIFG55CE.js +52 -0
- package/dist/chunk-NIFG55CE.js.map +7 -0
- package/dist/chunk-NJ63ALPX.js +7 -0
- package/dist/chunk-NJ63ALPX.js.map +7 -0
- package/dist/chunk-NZVHE4IT.js +3101 -0
- package/dist/chunk-NZVHE4IT.js.map +7 -0
- package/dist/chunk-O7ORICEC.js +82 -0
- package/dist/chunk-O7ORICEC.js.map +7 -0
- package/dist/chunk-OBMBAM3N.js +73 -0
- package/dist/chunk-OBMBAM3N.js.map +7 -0
- package/dist/chunk-OJJBD5K3.js +45 -0
- package/dist/chunk-OJJBD5K3.js.map +7 -0
- package/dist/chunk-OKDOVX4B.js +699 -0
- package/dist/chunk-OKDOVX4B.js.map +7 -0
- package/dist/chunk-OVMDMCZ5.js +241 -0
- package/dist/chunk-OVMDMCZ5.js.map +7 -0
- package/dist/chunk-OVU43GJK.js +63 -0
- package/dist/chunk-OVU43GJK.js.map +7 -0
- package/dist/chunk-P3TMARA6.js +18 -0
- package/dist/chunk-P3TMARA6.js.map +7 -0
- package/dist/chunk-PLMOTQ42.js +335 -0
- package/dist/chunk-PLMOTQ42.js.map +7 -0
- package/dist/chunk-Q6H5OV2R.js +180 -0
- package/dist/chunk-Q6H5OV2R.js.map +7 -0
- package/dist/chunk-QAR5POXD.js +472 -0
- package/dist/chunk-QAR5POXD.js.map +7 -0
- package/dist/chunk-R5S76YR5.js +12 -0
- package/dist/chunk-R5S76YR5.js.map +7 -0
- package/dist/chunk-R7ZBOXPS.js +163 -0
- package/dist/chunk-R7ZBOXPS.js.map +7 -0
- package/dist/chunk-RAL3KX76.js +239 -0
- package/dist/chunk-RAL3KX76.js.map +7 -0
- package/dist/chunk-RHITG64O.js +50 -0
- package/dist/chunk-RHITG64O.js.map +7 -0
- package/dist/chunk-RK5HZFP6.js +111 -0
- package/dist/chunk-RK5HZFP6.js.map +7 -0
- package/dist/chunk-RQ26XXFS.js +45 -0
- package/dist/chunk-RQ26XXFS.js.map +7 -0
- package/dist/chunk-RSA7PKZH.js +187 -0
- package/dist/chunk-RSA7PKZH.js.map +7 -0
- package/dist/chunk-RTSINQ4T.js +78 -0
- package/dist/chunk-RTSINQ4T.js.map +7 -0
- package/dist/chunk-SH6Y4CGQ.js +175 -0
- package/dist/chunk-SH6Y4CGQ.js.map +7 -0
- package/dist/chunk-SHBAAFFH.js +74 -0
- package/dist/chunk-SHBAAFFH.js.map +7 -0
- package/dist/chunk-SPNSM6SB.js +36 -0
- package/dist/chunk-SPNSM6SB.js.map +7 -0
- package/dist/chunk-SQUHLLK5.js +125 -0
- package/dist/chunk-SQUHLLK5.js.map +7 -0
- package/dist/chunk-SWWK35VQ.js +84 -0
- package/dist/chunk-SWWK35VQ.js.map +7 -0
- package/dist/chunk-TC5ZVFV6.js +292 -0
- package/dist/chunk-TC5ZVFV6.js.map +7 -0
- package/dist/chunk-TFD7ZIYD.js +105 -0
- package/dist/chunk-TFD7ZIYD.js.map +7 -0
- package/dist/chunk-TH6ONRWT.js +516 -0
- package/dist/chunk-TH6ONRWT.js.map +7 -0
- package/dist/chunk-TMQMQ67T.js +81 -0
- package/dist/chunk-TMQMQ67T.js.map +7 -0
- package/dist/chunk-TPYWUZOR.js +178 -0
- package/dist/chunk-TPYWUZOR.js.map +7 -0
- package/dist/chunk-U2O4LE6S.js +22 -0
- package/dist/chunk-U2O4LE6S.js.map +7 -0
- package/dist/chunk-U44IVNP2.js +91 -0
- package/dist/chunk-U44IVNP2.js.map +7 -0
- package/dist/chunk-UDDWLWKZ.js +82 -0
- package/dist/chunk-UDDWLWKZ.js.map +7 -0
- package/dist/chunk-UMMPB6FL.js +506 -0
- package/dist/chunk-UMMPB6FL.js.map +7 -0
- package/dist/chunk-UP42ACP7.js +27 -0
- package/dist/chunk-UP42ACP7.js.map +7 -0
- package/dist/chunk-UPEF7ETP.js +92 -0
- package/dist/chunk-UPEF7ETP.js.map +7 -0
- package/dist/chunk-VBDLTKI2.js +130 -0
- package/dist/chunk-VBDLTKI2.js.map +7 -0
- package/dist/chunk-VCWIKEJ7.js +7 -0
- package/dist/chunk-VCWIKEJ7.js.map +7 -0
- package/dist/chunk-VPQICZQR.js +93 -0
- package/dist/chunk-VPQICZQR.js.map +7 -0
- package/dist/chunk-VRBJNFPL.js +114 -0
- package/dist/chunk-VRBJNFPL.js.map +7 -0
- package/dist/chunk-VUU5KFH3.js +38 -0
- package/dist/chunk-VUU5KFH3.js.map +7 -0
- package/dist/chunk-VVBL5CFF.js +7 -0
- package/dist/chunk-VVBL5CFF.js.map +7 -0
- package/dist/chunk-VYZEQ6KY.js +22 -0
- package/dist/chunk-VYZEQ6KY.js.map +7 -0
- package/dist/chunk-WBPQVWSU.js +198 -0
- package/dist/chunk-WBPQVWSU.js.map +7 -0
- package/dist/chunk-WS6HWBKT.js +30 -0
- package/dist/chunk-WS6HWBKT.js.map +7 -0
- package/dist/chunk-XOZPOHLG.js +233 -0
- package/dist/chunk-XOZPOHLG.js.map +7 -0
- package/dist/chunk-XR7DPSNX.js +195 -0
- package/dist/chunk-XR7DPSNX.js.map +7 -0
- package/dist/chunk-XYH4JC3U.js +7 -0
- package/dist/chunk-XYH4JC3U.js.map +7 -0
- package/dist/chunk-YB5UCHLN.js +314 -0
- package/dist/chunk-YB5UCHLN.js.map +7 -0
- package/dist/chunk-YF5DYD3X.js +97 -0
- package/dist/chunk-YF5DYD3X.js.map +7 -0
- package/dist/chunk-YGVQZCE7.js +30 -0
- package/dist/chunk-YGVQZCE7.js.map +7 -0
- package/dist/chunk-YNHADHHS.js +138 -0
- package/dist/chunk-YNHADHHS.js.map +7 -0
- package/dist/chunk-YOAMBAM2.js +70 -0
- package/dist/chunk-YOAMBAM2.js.map +7 -0
- package/dist/chunk-YWE5AQPZ.js +258 -0
- package/dist/chunk-YWE5AQPZ.js.map +7 -0
- package/dist/chunk-YWHH3MB6.js +1405 -0
- package/dist/chunk-YWHH3MB6.js.map +7 -0
- package/dist/chunk-YZ6F5N7R.js +455 -0
- package/dist/chunk-YZ6F5N7R.js.map +7 -0
- package/dist/chunk-ZFGRQIB6.js +38 -0
- package/dist/chunk-ZFGRQIB6.js.map +7 -0
- package/dist/chunk-ZGAUVPAB.js +14 -0
- package/dist/chunk-ZGAUVPAB.js.map +7 -0
- package/dist/chunk-ZGCATLM5.js +18 -0
- package/dist/chunk-ZGCATLM5.js.map +7 -0
- package/dist/chunk-ZSOPE7DO.js +92 -0
- package/dist/chunk-ZSOPE7DO.js.map +7 -0
- package/dist/chunk-ZY247PXY.js +135 -0
- package/dist/chunk-ZY247PXY.js.map +7 -0
- package/dist/cli-metadata.js +3 -3
- package/dist/contract-api.js +64 -64
- package/dist/dist-DVBXHDB4.js +549 -0
- package/dist/dist-DVBXHDB4.js.map +7 -0
- package/dist/helper-api.js +6 -6
- package/dist/index.js +8 -9
- package/dist/index.js.map +1 -1
- package/dist/magic-string.es-ITIPPYGW.js +1315 -0
- package/dist/magic-string.es-ITIPPYGW.js.map +7 -0
- package/dist/package.json +1 -1
- package/dist/plugin-entry.handlers.runtime-JLRK5XTV.js +20 -0
- package/dist/plugin-entry.handlers.runtime-JLRK5XTV.js.map +7 -0
- package/dist/runtime-api.js +9 -9
- package/dist/rust-crypto-7KS7OJ3F.js +5323 -0
- package/dist/rust-crypto-7KS7OJ3F.js.map +7 -0
- package/dist/secret-contract-api.js +3 -3
- package/dist/setup-entry.js +2 -3
- package/dist/setup-entry.js.map +1 -1
- package/dist/src/account-selection.js +5 -5
- package/dist/src/actions.js +18 -18
- package/dist/src/approval-auth.js +19 -19
- package/dist/src/approval-handler.runtime.js +55 -55
- package/dist/src/approval-ids.js +3 -3
- package/dist/src/approval-native.js +22 -22
- package/dist/src/approval-reactions.js +2 -2
- package/dist/src/auth-precedence.js +2 -2
- package/dist/src/channel-account-paths.js +3 -3
- package/dist/src/channel.js +68 -68
- package/dist/src/channel.runtime.js +51 -51
- package/dist/src/cli-metadata.js +2 -2
- package/dist/src/cli.js +63 -63
- package/dist/src/config-adapter.js +18 -18
- package/dist/src/config-schema.js +2 -2
- package/dist/src/directory-live.js +27 -27
- package/dist/src/doctor-contract.js +3 -3
- package/dist/src/doctor.js +24 -24
- package/dist/src/env-vars.js +2 -2
- package/dist/src/exec-approval-resolver.js +2 -2
- package/dist/src/exec-approvals.js +20 -20
- package/dist/src/group-mentions.js +20 -20
- package/dist/src/legacy-crypto-inspector-availability.js +2 -2
- package/dist/src/legacy-crypto.js +18 -18
- package/dist/src/legacy-state.js +16 -16
- package/dist/src/matrix/account-config.js +2 -2
- package/dist/src/matrix/accounts.js +16 -16
- package/dist/src/matrix/actions/client.js +30 -30
- package/dist/src/matrix/actions/devices.js +32 -32
- package/dist/src/matrix/actions/limits.js +2 -2
- package/dist/src/matrix/actions/messages.js +37 -37
- package/dist/src/matrix/actions/pins.js +36 -36
- package/dist/src/matrix/actions/polls.js +31 -31
- package/dist/src/matrix/actions/profile.js +32 -32
- package/dist/src/matrix/actions/reactions.js +32 -32
- package/dist/src/matrix/actions/room.js +32 -32
- package/dist/src/matrix/actions/summary.js +9 -9
- package/dist/src/matrix/actions/types.js +3 -3
- package/dist/src/matrix/actions/verification.js +37 -37
- package/dist/src/matrix/actions.js +51 -51
- package/dist/src/matrix/active-client.js +2 -2
- package/dist/src/matrix/async-lock.js +2 -2
- package/dist/src/matrix/backup-health.js +2 -2
- package/dist/src/matrix/client/config-runtime-api.js +3 -3
- package/dist/src/matrix/client/config-secret-input.runtime.js +1 -1
- package/dist/src/matrix/client/config.js +13 -13
- package/dist/src/matrix/client/create-client.js +14 -14
- package/dist/src/matrix/client/env-auth.js +14 -14
- package/dist/src/matrix/client/file-sync-store.js +17 -17
- package/dist/src/matrix/client/logging.js +5 -5
- package/dist/src/matrix/client/migration-snapshot.runtime.js +2 -2
- package/dist/src/matrix/client/private-network-host.js +2 -2
- package/dist/src/matrix/client/runtime.js +2 -2
- package/dist/src/matrix/client/shared.js +16 -16
- package/dist/src/matrix/client/storage.js +8 -8
- package/dist/src/matrix/client/types.js +1 -1
- package/dist/src/matrix/client-bootstrap.js +5 -5
- package/dist/src/matrix/client-resolver.test-helpers.js +2 -2
- package/dist/src/matrix/client.js +19 -19
- package/dist/src/matrix/config-paths.js +2 -2
- package/dist/src/matrix/config-update.js +4 -4
- package/dist/src/matrix/credentials-read.js +8 -8
- package/dist/src/matrix/credentials-write.runtime.js +1 -1
- package/dist/src/matrix/credentials.js +10 -10
- package/dist/src/matrix/deps.js +2 -2
- package/dist/src/matrix/device-health.js +2 -2
- package/dist/src/matrix/direct-management.js +6 -6
- package/dist/src/matrix/direct-room.js +2 -2
- package/dist/src/matrix/draft-stream.js +27 -27
- package/dist/src/matrix/encryption-guidance.js +7 -7
- package/dist/src/matrix/errors.js +2 -2
- package/dist/src/matrix/format.js +3 -3
- package/dist/src/matrix/legacy-crypto-inspector.js +3 -4
- package/dist/src/matrix/legacy-crypto-inspector.js.map +1 -1
- package/dist/src/matrix/media-errors.js +2 -2
- package/dist/src/matrix/media-text.js +2 -2
- package/dist/src/matrix/monitor/access-state.js +3 -3
- package/dist/src/matrix/monitor/ack-config.js +4 -4
- package/dist/src/matrix/monitor/allowlist.js +2 -2
- package/dist/src/matrix/monitor/auto-join.js +3 -3
- package/dist/src/matrix/monitor/config.js +31 -31
- package/dist/src/matrix/monitor/context-summary.js +5 -5
- package/dist/src/matrix/monitor/direct.js +7 -7
- package/dist/src/matrix/monitor/events.js +14 -14
- package/dist/src/matrix/monitor/handler.js +70 -70
- package/dist/src/matrix/monitor/handler.test-helpers.js +71 -71
- package/dist/src/matrix/monitor/inbound-dedupe.js +11 -11
- package/dist/src/matrix/monitor/index.js +100 -100
- package/dist/src/matrix/monitor/legacy-crypto-restore.js +8 -8
- package/dist/src/matrix/monitor/location.js +5 -5
- package/dist/src/matrix/monitor/media.js +4 -4
- package/dist/src/matrix/monitor/mentions.js +3 -3
- package/dist/src/matrix/monitor/reaction-events.js +30 -30
- package/dist/src/matrix/monitor/recent-invite.js +4 -4
- package/dist/src/matrix/monitor/replies.js +27 -27
- package/dist/src/matrix/monitor/reply-context.js +6 -6
- package/dist/src/matrix/monitor/room-history.js +2 -2
- package/dist/src/matrix/monitor/room-info.js +3 -3
- package/dist/src/matrix/monitor/rooms.js +3 -3
- package/dist/src/matrix/monitor/route.js +6 -6
- package/dist/src/matrix/monitor/runtime-api.js +2 -2
- package/dist/src/matrix/monitor/startup-verification.js +9 -9
- package/dist/src/matrix/monitor/startup.js +3 -3
- package/dist/src/matrix/monitor/status.js +4 -4
- package/dist/src/matrix/monitor/sync-lifecycle.js +3 -3
- package/dist/src/matrix/monitor/task-runner.js +2 -2
- package/dist/src/matrix/monitor/thread-context.js +6 -6
- package/dist/src/matrix/monitor/threads.js +4 -4
- package/dist/src/matrix/monitor/types.js +3 -3
- package/dist/src/matrix/monitor/verification-events.js +7 -7
- package/dist/src/matrix/monitor/verification-utils.js +2 -2
- package/dist/src/matrix/outbound-media-runtime.js +3 -3
- package/dist/src/matrix/poll-summary.js +4 -4
- package/dist/src/matrix/poll-types.js +3 -3
- package/dist/src/matrix/probe.js +3 -3
- package/dist/src/matrix/probe.runtime.js +19 -19
- package/dist/src/matrix/profile.js +2 -2
- package/dist/src/matrix/reaction-common.js +2 -2
- package/dist/src/matrix/sdk/crypto-bootstrap.js +9 -9
- package/dist/src/matrix/sdk/crypto-facade.js +2 -2
- package/dist/src/matrix/sdk/crypto-node.runtime.js +2 -3
- package/dist/src/matrix/sdk/crypto-node.runtime.js.map +1 -1
- package/dist/src/matrix/sdk/crypto-runtime.js +16 -16
- package/dist/src/matrix/sdk/decrypt-bridge.js +5 -5
- package/dist/src/matrix/sdk/event-helpers.js +2 -2
- package/dist/src/matrix/sdk/http-client.js +7 -7
- package/dist/src/matrix/sdk/idb-persistence-lock.js +2 -2
- package/dist/src/matrix/sdk/idb-persistence.js +5 -5
- package/dist/src/matrix/sdk/idb-persistence.test-helpers.js +1 -1
- package/dist/src/matrix/sdk/logger.js +3 -3
- package/dist/src/matrix/sdk/read-response-with-limit.js +2 -2
- package/dist/src/matrix/sdk/recovery-key-store.js +6 -6
- package/dist/src/matrix/sdk/transport.js +5 -5
- package/dist/src/matrix/sdk/types.js +1 -1
- package/dist/src/matrix/sdk/verification-manager.js +5 -5
- package/dist/src/matrix/sdk/verification-status.js +2 -2
- package/dist/src/matrix/sdk.js +31 -31
- package/dist/src/matrix/send/client.js +4 -4
- package/dist/src/matrix/send/formatting.js +7 -7
- package/dist/src/matrix/send/media.js +12 -12
- package/dist/src/matrix/send/targets.js +7 -7
- package/dist/src/matrix/send/types.js +3 -3
- package/dist/src/matrix/send.js +26 -26
- package/dist/src/matrix/session-store-metadata.js +3 -3
- package/dist/src/matrix/startup-abort.js +2 -2
- package/dist/src/matrix/sync-state.js +2 -2
- package/dist/src/matrix/target-ids.js +2 -2
- package/dist/src/matrix/thread-bindings-shared.js +2 -2
- package/dist/src/matrix/thread-bindings.js +34 -34
- package/dist/src/matrix-migration.runtime.js +22 -22
- package/dist/src/migration-config.js +15 -15
- package/dist/src/migration-snapshot-backup.js +2 -2
- package/dist/src/migration-snapshot.js +21 -21
- package/dist/src/onboarding.js +37 -37
- package/dist/src/onboarding.test-harness.js +2 -2
- package/dist/src/outbound.js +27 -27
- package/dist/src/plugin-entry.runtime.js +3 -3
- package/dist/src/profile-update.js +35 -35
- package/dist/src/record-shared.js +2 -2
- package/dist/src/resolve-targets.js +28 -28
- package/dist/src/resolver.js +2 -2
- package/dist/src/runtime-api.js +2 -2
- package/dist/src/runtime.js +2 -2
- package/dist/src/secret-contract.js +3 -3
- package/dist/src/session-route.js +19 -19
- package/dist/src/setup-bootstrap.js +46 -46
- package/dist/src/setup-config.js +18 -18
- package/dist/src/setup-contract.js +2 -2
- package/dist/src/setup-core.js +19 -19
- package/dist/src/setup-surface.js +38 -38
- package/dist/src/startup-maintenance.js +23 -23
- package/dist/src/storage-paths.js +2 -2
- package/dist/src/test-helpers.js +1 -1
- package/dist/src/test-mocks.js +2 -2
- package/dist/src/test-runtime.js +3 -3
- package/dist/src/tool-actions.js +62 -62
- package/dist/src/tool-actions.runtime.js +62 -62
- package/dist/src/types.js +1 -1
- package/dist/test-api.js +68 -68
- package/dist/thread-bindings-runtime.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,652 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractID3Parser
|
|
3
|
+
} from "./chunk-OBMBAM3N.js";
|
|
4
|
+
import "./chunk-DSGPDHF2.js";
|
|
5
|
+
import "./chunk-YB5UCHLN.js";
|
|
6
|
+
import "./chunk-2WHRUMOM.js";
|
|
7
|
+
import {
|
|
8
|
+
EndOfStreamError
|
|
9
|
+
} from "./chunk-H7KAUMBC.js";
|
|
10
|
+
import "./chunk-65UUVZ6B.js";
|
|
11
|
+
import {
|
|
12
|
+
getBitAllignedNumber,
|
|
13
|
+
isBitSet,
|
|
14
|
+
stripNulls
|
|
15
|
+
} from "./chunk-WBPQVWSU.js";
|
|
16
|
+
import {
|
|
17
|
+
INT16_BE,
|
|
18
|
+
StringType,
|
|
19
|
+
UINT16_BE,
|
|
20
|
+
UINT32_BE,
|
|
21
|
+
UINT8,
|
|
22
|
+
Uint8ArrayType,
|
|
23
|
+
makeUnexpectedFileContentError,
|
|
24
|
+
require_src
|
|
25
|
+
} from "./chunk-4EKKDVG3.js";
|
|
26
|
+
import {
|
|
27
|
+
__toESM,
|
|
28
|
+
init_shims
|
|
29
|
+
} from "./chunk-G4TIS2SC.js";
|
|
30
|
+
|
|
31
|
+
// ../../node_modules/music-metadata/lib/mpeg/MpegParser.js
|
|
32
|
+
init_shims();
|
|
33
|
+
var import_debug = __toESM(require_src(), 1);
|
|
34
|
+
|
|
35
|
+
// ../../node_modules/music-metadata/lib/mpeg/XingTag.js
|
|
36
|
+
init_shims();
|
|
37
|
+
|
|
38
|
+
// ../../node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js
|
|
39
|
+
init_shims();
|
|
40
|
+
|
|
41
|
+
// ../../node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js
|
|
42
|
+
init_shims();
|
|
43
|
+
var ReplayGain = {
|
|
44
|
+
len: 2,
|
|
45
|
+
get: (buf, off) => {
|
|
46
|
+
const gain_type = getBitAllignedNumber(buf, off, 0, 3);
|
|
47
|
+
const sign = getBitAllignedNumber(buf, off, 6, 1);
|
|
48
|
+
const gain_adj = getBitAllignedNumber(buf, off, 7, 9) / 10;
|
|
49
|
+
if (gain_type > 0) {
|
|
50
|
+
return {
|
|
51
|
+
type: getBitAllignedNumber(buf, off, 0, 3),
|
|
52
|
+
origin: getBitAllignedNumber(buf, off, 3, 3),
|
|
53
|
+
adjustment: sign ? -gain_adj : gain_adj
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return void 0;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// ../../node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js
|
|
61
|
+
var ExtendedLameHeader = {
|
|
62
|
+
len: 27,
|
|
63
|
+
get: (buf, off) => {
|
|
64
|
+
const track_peak = UINT32_BE.get(buf, off + 2);
|
|
65
|
+
return {
|
|
66
|
+
revision: getBitAllignedNumber(buf, off, 0, 4),
|
|
67
|
+
vbr_method: getBitAllignedNumber(buf, off, 4, 4),
|
|
68
|
+
lowpass_filter: 100 * UINT8.get(buf, off + 1),
|
|
69
|
+
track_peak: track_peak === 0 ? null : track_peak / 2 ** 23,
|
|
70
|
+
track_gain: ReplayGain.get(buf, 6),
|
|
71
|
+
album_gain: ReplayGain.get(buf, 8),
|
|
72
|
+
music_length: UINT32_BE.get(buf, off + 20),
|
|
73
|
+
music_crc: UINT8.get(buf, off + 24),
|
|
74
|
+
header_crc: UINT16_BE.get(buf, off + 24)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// ../../node_modules/music-metadata/lib/mpeg/XingTag.js
|
|
80
|
+
var InfoTagHeaderTag = new StringType(4, "ascii");
|
|
81
|
+
var LameEncoderVersion = new StringType(6, "ascii");
|
|
82
|
+
var XingHeaderFlags = {
|
|
83
|
+
len: 4,
|
|
84
|
+
get: (buf, off) => {
|
|
85
|
+
return {
|
|
86
|
+
frames: isBitSet(buf, off, 31),
|
|
87
|
+
bytes: isBitSet(buf, off, 30),
|
|
88
|
+
toc: isBitSet(buf, off, 29),
|
|
89
|
+
vbrScale: isBitSet(buf, off, 28)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
async function readXingHeader(tokenizer) {
|
|
94
|
+
const flags = await tokenizer.readToken(XingHeaderFlags);
|
|
95
|
+
const xingInfoTag = { numFrames: null, streamSize: null, vbrScale: null };
|
|
96
|
+
if (flags.frames) {
|
|
97
|
+
xingInfoTag.numFrames = await tokenizer.readToken(UINT32_BE);
|
|
98
|
+
}
|
|
99
|
+
if (flags.bytes) {
|
|
100
|
+
xingInfoTag.streamSize = await tokenizer.readToken(UINT32_BE);
|
|
101
|
+
}
|
|
102
|
+
if (flags.toc) {
|
|
103
|
+
xingInfoTag.toc = new Uint8Array(100);
|
|
104
|
+
await tokenizer.readBuffer(xingInfoTag.toc);
|
|
105
|
+
}
|
|
106
|
+
if (flags.vbrScale) {
|
|
107
|
+
xingInfoTag.vbrScale = await tokenizer.readToken(UINT32_BE);
|
|
108
|
+
}
|
|
109
|
+
const lameTag = await tokenizer.peekToken(new StringType(4, "ascii"));
|
|
110
|
+
if (lameTag === "LAME") {
|
|
111
|
+
await tokenizer.ignore(4);
|
|
112
|
+
xingInfoTag.lame = {
|
|
113
|
+
version: await tokenizer.readToken(new StringType(5, "ascii"))
|
|
114
|
+
};
|
|
115
|
+
const match = xingInfoTag.lame.version.match(/\d+.\d+/g);
|
|
116
|
+
if (match !== null) {
|
|
117
|
+
const majorMinorVersion = match[0];
|
|
118
|
+
const version = majorMinorVersion.split(".").map((n) => Number.parseInt(n, 10));
|
|
119
|
+
if (version[0] >= 3 && version[1] >= 90) {
|
|
120
|
+
xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return xingInfoTag;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ../../node_modules/music-metadata/lib/mpeg/MpegParser.js
|
|
128
|
+
var debug = (0, import_debug.default)("music-metadata:parser:mpeg");
|
|
129
|
+
var MpegContentError = class extends makeUnexpectedFileContentError("MPEG") {
|
|
130
|
+
};
|
|
131
|
+
var maxPeekLen = 1024;
|
|
132
|
+
var MPEG4 = {
|
|
133
|
+
/**
|
|
134
|
+
* Audio Object Types
|
|
135
|
+
*/
|
|
136
|
+
AudioObjectTypes: [
|
|
137
|
+
"AAC Main",
|
|
138
|
+
"AAC LC",
|
|
139
|
+
// Low Complexity
|
|
140
|
+
"AAC SSR",
|
|
141
|
+
// Scalable Sample Rate
|
|
142
|
+
"AAC LTP"
|
|
143
|
+
// Long Term Prediction
|
|
144
|
+
],
|
|
145
|
+
/**
|
|
146
|
+
* Sampling Frequencies
|
|
147
|
+
* https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Sampling_Frequencies
|
|
148
|
+
*/
|
|
149
|
+
SamplingFrequencies: [
|
|
150
|
+
96e3,
|
|
151
|
+
88200,
|
|
152
|
+
64e3,
|
|
153
|
+
48e3,
|
|
154
|
+
44100,
|
|
155
|
+
32e3,
|
|
156
|
+
24e3,
|
|
157
|
+
22050,
|
|
158
|
+
16e3,
|
|
159
|
+
12e3,
|
|
160
|
+
11025,
|
|
161
|
+
8e3,
|
|
162
|
+
7350,
|
|
163
|
+
null,
|
|
164
|
+
null,
|
|
165
|
+
-1
|
|
166
|
+
]
|
|
167
|
+
/**
|
|
168
|
+
* Channel Configurations
|
|
169
|
+
*/
|
|
170
|
+
};
|
|
171
|
+
var MPEG4_ChannelConfigurations = [
|
|
172
|
+
void 0,
|
|
173
|
+
["front-center"],
|
|
174
|
+
["front-left", "front-right"],
|
|
175
|
+
["front-center", "front-left", "front-right"],
|
|
176
|
+
["front-center", "front-left", "front-right", "back-center"],
|
|
177
|
+
["front-center", "front-left", "front-right", "back-left", "back-right"],
|
|
178
|
+
["front-center", "front-left", "front-right", "back-left", "back-right", "LFE-channel"],
|
|
179
|
+
["front-center", "front-left", "front-right", "side-left", "side-right", "back-left", "back-right", "LFE-channel"]
|
|
180
|
+
];
|
|
181
|
+
var MpegFrameHeader = class _MpegFrameHeader {
|
|
182
|
+
constructor(buf, off) {
|
|
183
|
+
this.bitrateIndex = null;
|
|
184
|
+
this.sampRateFreqIndex = null;
|
|
185
|
+
this.padding = null;
|
|
186
|
+
this.privateBit = null;
|
|
187
|
+
this.channelModeIndex = null;
|
|
188
|
+
this.modeExtension = null;
|
|
189
|
+
this.isOriginalMedia = null;
|
|
190
|
+
this.version = null;
|
|
191
|
+
this.bitrate = null;
|
|
192
|
+
this.samplingRate = null;
|
|
193
|
+
this.frameLength = 0;
|
|
194
|
+
this.versionIndex = getBitAllignedNumber(buf, off + 1, 3, 2);
|
|
195
|
+
this.layer = _MpegFrameHeader.LayerDescription[getBitAllignedNumber(buf, off + 1, 5, 2)];
|
|
196
|
+
if (this.versionIndex > 1 && this.layer === 0) {
|
|
197
|
+
this.parseAdtsHeader(buf, off);
|
|
198
|
+
} else {
|
|
199
|
+
this.parseMpegHeader(buf, off);
|
|
200
|
+
}
|
|
201
|
+
this.isProtectedByCRC = !isBitSet(buf, off + 1, 7);
|
|
202
|
+
}
|
|
203
|
+
calcDuration(numFrames) {
|
|
204
|
+
return this.samplingRate == null ? null : numFrames * this.calcSamplesPerFrame() / this.samplingRate;
|
|
205
|
+
}
|
|
206
|
+
calcSamplesPerFrame() {
|
|
207
|
+
return _MpegFrameHeader.samplesInFrameTable[this.version === 1 ? 0 : 1][this.layer];
|
|
208
|
+
}
|
|
209
|
+
calculateSideInfoLength() {
|
|
210
|
+
if (this.layer !== 3)
|
|
211
|
+
return 2;
|
|
212
|
+
if (this.channelModeIndex === 3) {
|
|
213
|
+
if (this.version === 1) {
|
|
214
|
+
return 17;
|
|
215
|
+
}
|
|
216
|
+
if (this.version === 2 || this.version === 2.5) {
|
|
217
|
+
return 9;
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
if (this.version === 1) {
|
|
221
|
+
return 32;
|
|
222
|
+
}
|
|
223
|
+
if (this.version === 2 || this.version === 2.5) {
|
|
224
|
+
return 17;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
calcSlotSize() {
|
|
230
|
+
return [null, 4, 1, 1][this.layer];
|
|
231
|
+
}
|
|
232
|
+
parseMpegHeader(buf, off) {
|
|
233
|
+
this.container = "MPEG";
|
|
234
|
+
this.bitrateIndex = getBitAllignedNumber(buf, off + 2, 0, 4);
|
|
235
|
+
this.sampRateFreqIndex = getBitAllignedNumber(buf, off + 2, 4, 2);
|
|
236
|
+
this.padding = isBitSet(buf, off + 2, 6);
|
|
237
|
+
this.privateBit = isBitSet(buf, off + 2, 7);
|
|
238
|
+
this.channelModeIndex = getBitAllignedNumber(buf, off + 3, 0, 2);
|
|
239
|
+
this.modeExtension = getBitAllignedNumber(buf, off + 3, 2, 2);
|
|
240
|
+
this.isCopyrighted = isBitSet(buf, off + 3, 4);
|
|
241
|
+
this.isOriginalMedia = isBitSet(buf, off + 3, 5);
|
|
242
|
+
this.emphasis = getBitAllignedNumber(buf, off + 3, 7, 2);
|
|
243
|
+
this.version = _MpegFrameHeader.VersionID[this.versionIndex];
|
|
244
|
+
this.channelMode = _MpegFrameHeader.ChannelMode[this.channelModeIndex];
|
|
245
|
+
this.codec = `MPEG ${this.version} Layer ${this.layer}`;
|
|
246
|
+
const bitrateInKbps = this.calcBitrate();
|
|
247
|
+
if (!bitrateInKbps) {
|
|
248
|
+
throw new MpegContentError("Cannot determine bit-rate");
|
|
249
|
+
}
|
|
250
|
+
this.bitrate = bitrateInKbps * 1e3;
|
|
251
|
+
this.samplingRate = this.calcSamplingRate();
|
|
252
|
+
if (this.samplingRate == null) {
|
|
253
|
+
throw new MpegContentError("Cannot determine sampling-rate");
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
parseAdtsHeader(buf, off) {
|
|
257
|
+
debug("layer=0 => ADTS");
|
|
258
|
+
this.version = this.versionIndex === 2 ? 4 : 2;
|
|
259
|
+
this.container = `ADTS/MPEG-${this.version}`;
|
|
260
|
+
const profileIndex = getBitAllignedNumber(buf, off + 2, 0, 2);
|
|
261
|
+
this.codec = "AAC";
|
|
262
|
+
this.codecProfile = MPEG4.AudioObjectTypes[profileIndex];
|
|
263
|
+
debug(`MPEG-4 audio-codec=${this.codec}`);
|
|
264
|
+
const samplingFrequencyIndex = getBitAllignedNumber(buf, off + 2, 2, 4);
|
|
265
|
+
this.samplingRate = MPEG4.SamplingFrequencies[samplingFrequencyIndex];
|
|
266
|
+
debug(`sampling-rate=${this.samplingRate}`);
|
|
267
|
+
const channelIndex = getBitAllignedNumber(buf, off + 2, 7, 3);
|
|
268
|
+
this.mp4ChannelConfig = MPEG4_ChannelConfigurations[channelIndex];
|
|
269
|
+
debug(`channel-config=${this.mp4ChannelConfig ? this.mp4ChannelConfig.join("+") : "?"}`);
|
|
270
|
+
this.frameLength = getBitAllignedNumber(buf, off + 3, 6, 2) << 11;
|
|
271
|
+
}
|
|
272
|
+
calcBitrate() {
|
|
273
|
+
if (this.bitrateIndex === 0 || // free
|
|
274
|
+
this.bitrateIndex === 15) {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
if (this.version && this.bitrateIndex) {
|
|
278
|
+
const codecIndex = 10 * Math.floor(this.version) + this.layer;
|
|
279
|
+
return _MpegFrameHeader.bitrate_index[this.bitrateIndex][codecIndex];
|
|
280
|
+
}
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
calcSamplingRate() {
|
|
284
|
+
if (this.sampRateFreqIndex === 3 || this.version === null || this.sampRateFreqIndex == null)
|
|
285
|
+
return null;
|
|
286
|
+
return _MpegFrameHeader.sampling_rate_freq_index[this.version][this.sampRateFreqIndex];
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
MpegFrameHeader.SyncByte1 = 255;
|
|
290
|
+
MpegFrameHeader.SyncByte2 = 224;
|
|
291
|
+
MpegFrameHeader.VersionID = [2.5, null, 2, 1];
|
|
292
|
+
MpegFrameHeader.LayerDescription = [0, 3, 2, 1];
|
|
293
|
+
MpegFrameHeader.ChannelMode = ["stereo", "joint_stereo", "dual_channel", "mono"];
|
|
294
|
+
MpegFrameHeader.bitrate_index = {
|
|
295
|
+
1: { 11: 32, 12: 32, 13: 32, 21: 32, 22: 8, 23: 8 },
|
|
296
|
+
2: { 11: 64, 12: 48, 13: 40, 21: 48, 22: 16, 23: 16 },
|
|
297
|
+
3: { 11: 96, 12: 56, 13: 48, 21: 56, 22: 24, 23: 24 },
|
|
298
|
+
4: { 11: 128, 12: 64, 13: 56, 21: 64, 22: 32, 23: 32 },
|
|
299
|
+
5: { 11: 160, 12: 80, 13: 64, 21: 80, 22: 40, 23: 40 },
|
|
300
|
+
6: { 11: 192, 12: 96, 13: 80, 21: 96, 22: 48, 23: 48 },
|
|
301
|
+
7: { 11: 224, 12: 112, 13: 96, 21: 112, 22: 56, 23: 56 },
|
|
302
|
+
8: { 11: 256, 12: 128, 13: 112, 21: 128, 22: 64, 23: 64 },
|
|
303
|
+
9: { 11: 288, 12: 160, 13: 128, 21: 144, 22: 80, 23: 80 },
|
|
304
|
+
10: { 11: 320, 12: 192, 13: 160, 21: 160, 22: 96, 23: 96 },
|
|
305
|
+
11: { 11: 352, 12: 224, 13: 192, 21: 176, 22: 112, 23: 112 },
|
|
306
|
+
12: { 11: 384, 12: 256, 13: 224, 21: 192, 22: 128, 23: 128 },
|
|
307
|
+
13: { 11: 416, 12: 320, 13: 256, 21: 224, 22: 144, 23: 144 },
|
|
308
|
+
14: { 11: 448, 12: 384, 13: 320, 21: 256, 22: 160, 23: 160 }
|
|
309
|
+
};
|
|
310
|
+
MpegFrameHeader.sampling_rate_freq_index = {
|
|
311
|
+
1: { 0: 44100, 1: 48e3, 2: 32e3 },
|
|
312
|
+
2: { 0: 22050, 1: 24e3, 2: 16e3 },
|
|
313
|
+
2.5: { 0: 11025, 1: 12e3, 2: 8e3 }
|
|
314
|
+
};
|
|
315
|
+
MpegFrameHeader.samplesInFrameTable = [
|
|
316
|
+
/* Layer I II III */
|
|
317
|
+
[0, 384, 1152, 1152],
|
|
318
|
+
// MPEG-1
|
|
319
|
+
[0, 384, 1152, 576]
|
|
320
|
+
// MPEG-2(.5
|
|
321
|
+
];
|
|
322
|
+
var FrameHeader = {
|
|
323
|
+
len: 4,
|
|
324
|
+
get: (buf, off) => {
|
|
325
|
+
return new MpegFrameHeader(buf, off);
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
function getVbrCodecProfile(vbrScale) {
|
|
329
|
+
return `V${Math.floor((100 - vbrScale) / 10)}`;
|
|
330
|
+
}
|
|
331
|
+
var MpegParser = class extends AbstractID3Parser {
|
|
332
|
+
constructor() {
|
|
333
|
+
super(...arguments);
|
|
334
|
+
this.frameCount = 0;
|
|
335
|
+
this.syncFrameCount = -1;
|
|
336
|
+
this.totalDataLength = 0;
|
|
337
|
+
this.bitrates = [];
|
|
338
|
+
this.offset = 0;
|
|
339
|
+
this.frame_size = 0;
|
|
340
|
+
this.calculateEofDuration = false;
|
|
341
|
+
this.samplesPerFrame = null;
|
|
342
|
+
this.buf_frame_header = new Uint8Array(4);
|
|
343
|
+
this.mpegOffset = null;
|
|
344
|
+
this.syncPeek = {
|
|
345
|
+
buf: new Uint8Array(maxPeekLen),
|
|
346
|
+
len: 0
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Called after ID3 headers have been parsed
|
|
351
|
+
*/
|
|
352
|
+
async postId3v2Parse() {
|
|
353
|
+
this.metadata.setFormat("lossless", false);
|
|
354
|
+
this.metadata.setAudioOnly();
|
|
355
|
+
try {
|
|
356
|
+
let quit = false;
|
|
357
|
+
while (!quit) {
|
|
358
|
+
await this.sync();
|
|
359
|
+
quit = await this.parseCommonMpegHeader();
|
|
360
|
+
}
|
|
361
|
+
} catch (err) {
|
|
362
|
+
if (err instanceof EndOfStreamError) {
|
|
363
|
+
debug("End-of-stream");
|
|
364
|
+
if (this.calculateEofDuration) {
|
|
365
|
+
if (this.samplesPerFrame !== null) {
|
|
366
|
+
const numberOfSamples = this.frameCount * this.samplesPerFrame;
|
|
367
|
+
this.metadata.setFormat("numberOfSamples", numberOfSamples);
|
|
368
|
+
if (this.metadata.format.sampleRate) {
|
|
369
|
+
const duration = numberOfSamples / this.metadata.format.sampleRate;
|
|
370
|
+
debug(`Calculate duration at EOF: ${duration} sec.`, duration);
|
|
371
|
+
this.metadata.setFormat("duration", duration);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
throw err;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Called after file has been fully parsed, this allows, if present, to exclude the ID3v1.1 header length
|
|
382
|
+
*/
|
|
383
|
+
finalize() {
|
|
384
|
+
const format = this.metadata.format;
|
|
385
|
+
const hasID3v1 = !!this.metadata.native.ID3v1;
|
|
386
|
+
if (this.mpegOffset !== null) {
|
|
387
|
+
if (format.duration && this.tokenizer.fileInfo.size) {
|
|
388
|
+
const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);
|
|
389
|
+
if (format.codecProfile && format.codecProfile[0] === "V") {
|
|
390
|
+
this.metadata.setFormat("bitrate", mpegSize * 8 / format.duration);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if (this.tokenizer.fileInfo.size && format.codecProfile === "CBR") {
|
|
394
|
+
const mpegSize = this.tokenizer.fileInfo.size - this.mpegOffset - (hasID3v1 ? 128 : 0);
|
|
395
|
+
if (this.frame_size !== null && this.samplesPerFrame !== null) {
|
|
396
|
+
const numberOfSamples = Math.round(mpegSize / this.frame_size) * this.samplesPerFrame;
|
|
397
|
+
this.metadata.setFormat("numberOfSamples", numberOfSamples);
|
|
398
|
+
if (format.sampleRate && !format.duration) {
|
|
399
|
+
const duration = numberOfSamples / format.sampleRate;
|
|
400
|
+
debug("Calculate CBR duration based on file size: %s", duration);
|
|
401
|
+
this.metadata.setFormat("duration", duration);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
async sync() {
|
|
408
|
+
let gotFirstSync = false;
|
|
409
|
+
while (true) {
|
|
410
|
+
let bo = 0;
|
|
411
|
+
this.syncPeek.len = await this.tokenizer.peekBuffer(this.syncPeek.buf, { length: maxPeekLen, mayBeLess: true });
|
|
412
|
+
if (this.syncPeek.len <= 163) {
|
|
413
|
+
throw new EndOfStreamError();
|
|
414
|
+
}
|
|
415
|
+
while (true) {
|
|
416
|
+
if (gotFirstSync && (this.syncPeek.buf[bo] & 224) === 224) {
|
|
417
|
+
this.buf_frame_header[0] = MpegFrameHeader.SyncByte1;
|
|
418
|
+
this.buf_frame_header[1] = this.syncPeek.buf[bo];
|
|
419
|
+
await this.tokenizer.ignore(bo);
|
|
420
|
+
debug(`Sync at offset=${this.tokenizer.position - 1}, frameCount=${this.frameCount}`);
|
|
421
|
+
if (this.syncFrameCount === this.frameCount) {
|
|
422
|
+
debug(`Re-synced MPEG stream, frameCount=${this.frameCount}`);
|
|
423
|
+
this.frameCount = 0;
|
|
424
|
+
this.frame_size = 0;
|
|
425
|
+
}
|
|
426
|
+
this.syncFrameCount = this.frameCount;
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
gotFirstSync = false;
|
|
430
|
+
bo = this.syncPeek.buf.indexOf(MpegFrameHeader.SyncByte1, bo);
|
|
431
|
+
if (bo === -1) {
|
|
432
|
+
if (this.syncPeek.len < this.syncPeek.buf.length) {
|
|
433
|
+
throw new EndOfStreamError();
|
|
434
|
+
}
|
|
435
|
+
await this.tokenizer.ignore(this.syncPeek.len);
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
++bo;
|
|
439
|
+
gotFirstSync = true;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Combined ADTS & MPEG (MP2 & MP3) header handling
|
|
445
|
+
* @return {Promise<boolean>} true if parser should quit
|
|
446
|
+
*/
|
|
447
|
+
async parseCommonMpegHeader() {
|
|
448
|
+
if (this.frameCount === 0) {
|
|
449
|
+
this.mpegOffset = this.tokenizer.position - 1;
|
|
450
|
+
}
|
|
451
|
+
await this.tokenizer.peekBuffer(this.buf_frame_header.subarray(1), { length: 3 });
|
|
452
|
+
let header;
|
|
453
|
+
try {
|
|
454
|
+
header = FrameHeader.get(this.buf_frame_header, 0);
|
|
455
|
+
} catch (err) {
|
|
456
|
+
await this.tokenizer.ignore(1);
|
|
457
|
+
if (err instanceof Error) {
|
|
458
|
+
this.metadata.addWarning(`Parse error: ${err.message}`);
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
throw err;
|
|
462
|
+
}
|
|
463
|
+
await this.tokenizer.ignore(3);
|
|
464
|
+
this.metadata.setFormat("container", header.container);
|
|
465
|
+
this.metadata.setFormat("codec", header.codec);
|
|
466
|
+
this.metadata.setFormat("lossless", false);
|
|
467
|
+
this.metadata.setFormat("sampleRate", header.samplingRate);
|
|
468
|
+
this.frameCount++;
|
|
469
|
+
return header.version !== null && header.version >= 2 && header.layer === 0 ? this.parseAdts(header) : this.parseAudioFrameHeader(header);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* @return {Promise<boolean>} true if parser should quit
|
|
473
|
+
*/
|
|
474
|
+
async parseAudioFrameHeader(header) {
|
|
475
|
+
this.metadata.setFormat("numberOfChannels", header.channelMode === "mono" ? 1 : 2);
|
|
476
|
+
this.metadata.setFormat("bitrate", header.bitrate);
|
|
477
|
+
if (this.frameCount < 20 * 1e4) {
|
|
478
|
+
debug("offset=%s MP%s bitrate=%s sample-rate=%s", this.tokenizer.position - 4, header.layer, header.bitrate, header.samplingRate);
|
|
479
|
+
}
|
|
480
|
+
const slot_size = header.calcSlotSize();
|
|
481
|
+
if (slot_size === null) {
|
|
482
|
+
throw new MpegContentError("invalid slot_size");
|
|
483
|
+
}
|
|
484
|
+
const samples_per_frame = header.calcSamplesPerFrame();
|
|
485
|
+
debug(`samples_per_frame=${samples_per_frame}`);
|
|
486
|
+
const bps = samples_per_frame / 8;
|
|
487
|
+
if (header.bitrate !== null && header.samplingRate != null) {
|
|
488
|
+
const fsize = bps * header.bitrate / header.samplingRate + (header.padding ? slot_size : 0);
|
|
489
|
+
this.frame_size = Math.floor(fsize);
|
|
490
|
+
}
|
|
491
|
+
this.audioFrameHeader = header;
|
|
492
|
+
if (header.bitrate !== null) {
|
|
493
|
+
this.bitrates.push(header.bitrate);
|
|
494
|
+
}
|
|
495
|
+
if (this.frameCount === 1) {
|
|
496
|
+
this.offset = FrameHeader.len;
|
|
497
|
+
await this.skipSideInformation();
|
|
498
|
+
return false;
|
|
499
|
+
}
|
|
500
|
+
if (this.frameCount === 4) {
|
|
501
|
+
if (this.areAllSame(this.bitrates)) {
|
|
502
|
+
this.samplesPerFrame = samples_per_frame;
|
|
503
|
+
this.metadata.setFormat("codecProfile", "CBR");
|
|
504
|
+
if (this.tokenizer.fileInfo.size)
|
|
505
|
+
return true;
|
|
506
|
+
} else if (this.metadata.format.duration) {
|
|
507
|
+
return true;
|
|
508
|
+
}
|
|
509
|
+
if (!this.options.duration) {
|
|
510
|
+
return true;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
if (this.options.duration && this.frameCount === 4) {
|
|
514
|
+
this.samplesPerFrame = samples_per_frame;
|
|
515
|
+
this.calculateEofDuration = true;
|
|
516
|
+
}
|
|
517
|
+
this.offset = 4;
|
|
518
|
+
if (header.isProtectedByCRC) {
|
|
519
|
+
await this.parseCrc();
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
await this.skipSideInformation();
|
|
523
|
+
return false;
|
|
524
|
+
}
|
|
525
|
+
async parseAdts(header) {
|
|
526
|
+
const buf = new Uint8Array(3);
|
|
527
|
+
await this.tokenizer.readBuffer(buf);
|
|
528
|
+
header.frameLength += getBitAllignedNumber(buf, 0, 0, 11);
|
|
529
|
+
this.totalDataLength += header.frameLength;
|
|
530
|
+
this.samplesPerFrame = 1024;
|
|
531
|
+
if (header.samplingRate !== null) {
|
|
532
|
+
const framesPerSec = header.samplingRate / this.samplesPerFrame;
|
|
533
|
+
const bytesPerFrame = this.frameCount === 0 ? 0 : this.totalDataLength / this.frameCount;
|
|
534
|
+
const bitrate = 8 * bytesPerFrame * framesPerSec + 0.5;
|
|
535
|
+
this.metadata.setFormat("bitrate", bitrate);
|
|
536
|
+
debug(`frame-count=${this.frameCount}, size=${header.frameLength} bytes, bit-rate=${bitrate}`);
|
|
537
|
+
}
|
|
538
|
+
await this.tokenizer.ignore(header.frameLength > 7 ? header.frameLength - 7 : 1);
|
|
539
|
+
if (this.frameCount === 3) {
|
|
540
|
+
this.metadata.setFormat("codecProfile", header.codecProfile);
|
|
541
|
+
if (header.mp4ChannelConfig) {
|
|
542
|
+
this.metadata.setFormat("numberOfChannels", header.mp4ChannelConfig.length);
|
|
543
|
+
}
|
|
544
|
+
if (this.options.duration) {
|
|
545
|
+
this.calculateEofDuration = true;
|
|
546
|
+
} else {
|
|
547
|
+
return true;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
async parseCrc() {
|
|
553
|
+
await this.tokenizer.ignore(INT16_BE.len);
|
|
554
|
+
this.offset += INT16_BE.len;
|
|
555
|
+
return this.skipSideInformation();
|
|
556
|
+
}
|
|
557
|
+
async skipSideInformation() {
|
|
558
|
+
if (this.audioFrameHeader) {
|
|
559
|
+
const sideinfo_length = this.audioFrameHeader.calculateSideInfoLength();
|
|
560
|
+
if (sideinfo_length !== null) {
|
|
561
|
+
await this.tokenizer.readToken(new Uint8ArrayType(sideinfo_length));
|
|
562
|
+
this.offset += sideinfo_length;
|
|
563
|
+
await this.readXtraInfoHeader();
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
async readXtraInfoHeader() {
|
|
569
|
+
const headerTag = await this.tokenizer.readToken(InfoTagHeaderTag);
|
|
570
|
+
this.offset += InfoTagHeaderTag.len;
|
|
571
|
+
switch (headerTag) {
|
|
572
|
+
case "Info":
|
|
573
|
+
this.metadata.setFormat("codecProfile", "CBR");
|
|
574
|
+
return this.readXingInfoHeader();
|
|
575
|
+
case "Xing": {
|
|
576
|
+
const infoTag = await this.readXingInfoHeader();
|
|
577
|
+
if (infoTag.vbrScale !== null) {
|
|
578
|
+
const codecProfile = getVbrCodecProfile(infoTag.vbrScale);
|
|
579
|
+
this.metadata.setFormat("codecProfile", codecProfile);
|
|
580
|
+
}
|
|
581
|
+
return null;
|
|
582
|
+
}
|
|
583
|
+
case "Xtra":
|
|
584
|
+
break;
|
|
585
|
+
case "LAME": {
|
|
586
|
+
const version = await this.tokenizer.readToken(LameEncoderVersion);
|
|
587
|
+
if (this.frame_size !== null && this.frame_size >= this.offset + LameEncoderVersion.len) {
|
|
588
|
+
this.offset += LameEncoderVersion.len;
|
|
589
|
+
this.metadata.setFormat("tool", `LAME ${version}`);
|
|
590
|
+
await this.skipFrameData(this.frame_size - this.offset);
|
|
591
|
+
return null;
|
|
592
|
+
}
|
|
593
|
+
this.metadata.addWarning("Corrupt LAME header");
|
|
594
|
+
break;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
const frameDataLeft = this.frame_size - this.offset;
|
|
598
|
+
if (frameDataLeft < 0) {
|
|
599
|
+
this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`);
|
|
600
|
+
} else {
|
|
601
|
+
await this.skipFrameData(frameDataLeft);
|
|
602
|
+
}
|
|
603
|
+
return null;
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Ref: http://gabriel.mp3-tech.org/mp3infotag.html
|
|
607
|
+
* @returns {Promise<string>}
|
|
608
|
+
*/
|
|
609
|
+
async readXingInfoHeader() {
|
|
610
|
+
const offset = this.tokenizer.position;
|
|
611
|
+
const infoTag = await readXingHeader(this.tokenizer);
|
|
612
|
+
this.offset += this.tokenizer.position - offset;
|
|
613
|
+
if (infoTag.lame) {
|
|
614
|
+
this.metadata.setFormat("tool", `LAME ${stripNulls(infoTag.lame.version)}`);
|
|
615
|
+
if (infoTag.lame.extended) {
|
|
616
|
+
this.metadata.setFormat("trackPeakLevel", infoTag.lame.extended.track_peak);
|
|
617
|
+
if (infoTag.lame.extended.track_gain) {
|
|
618
|
+
this.metadata.setFormat("trackGain", infoTag.lame.extended.track_gain.adjustment);
|
|
619
|
+
}
|
|
620
|
+
if (infoTag.lame.extended.album_gain) {
|
|
621
|
+
this.metadata.setFormat("albumGain", infoTag.lame.extended.album_gain.adjustment);
|
|
622
|
+
}
|
|
623
|
+
this.metadata.setFormat("duration", infoTag.lame.extended.music_length / 1e3);
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
if (infoTag.streamSize && this.audioFrameHeader && infoTag.numFrames !== null) {
|
|
627
|
+
const duration = this.audioFrameHeader.calcDuration(infoTag.numFrames);
|
|
628
|
+
this.metadata.setFormat("duration", duration);
|
|
629
|
+
debug("Get duration from Xing header: %s", this.metadata.format.duration);
|
|
630
|
+
return infoTag;
|
|
631
|
+
}
|
|
632
|
+
const frameDataLeft = this.frame_size - this.offset;
|
|
633
|
+
await this.skipFrameData(frameDataLeft);
|
|
634
|
+
return infoTag;
|
|
635
|
+
}
|
|
636
|
+
async skipFrameData(frameDataLeft) {
|
|
637
|
+
if (frameDataLeft < 0)
|
|
638
|
+
throw new MpegContentError("frame-data-left cannot be negative");
|
|
639
|
+
await this.tokenizer.ignore(frameDataLeft);
|
|
640
|
+
}
|
|
641
|
+
areAllSame(array) {
|
|
642
|
+
const first = array[0];
|
|
643
|
+
return array.every((element) => {
|
|
644
|
+
return element === first;
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
};
|
|
648
|
+
export {
|
|
649
|
+
MpegContentError,
|
|
650
|
+
MpegParser
|
|
651
|
+
};
|
|
652
|
+
//# sourceMappingURL=MpegParser-KXQEC6KD.js.map
|