@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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/music-metadata/lib/id3v2/ID3v2Parser.js", "../../../node_modules/music-metadata/lib/id3v2/FrameParser.js", "../../../node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js", "../../../node_modules/music-metadata/lib/id3v2/FrameHeader.js"],
|
|
4
|
+
"sourcesContent": ["import * as Token from 'token-types';\nimport { FrameParser, Id3v2ContentError } from './FrameParser.js';\nimport { ExtendedHeader, ID3v2Header } from './ID3v2Token.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nexport class ID3v2Parser {\n constructor() {\n this.tokenizer = undefined;\n this.id3Header = undefined;\n this.metadata = undefined;\n this.headerType = undefined;\n this.options = undefined;\n }\n static removeUnsyncBytes(buffer) {\n let readI = 0;\n let writeI = 0;\n while (readI < buffer.length - 1) {\n if (readI !== writeI) {\n buffer[writeI] = buffer[readI];\n }\n readI += (buffer[readI] === 0xFF && buffer[readI + 1] === 0) ? 2 : 1;\n writeI++;\n }\n if (readI < buffer.length) {\n buffer[writeI++] = buffer[readI];\n }\n return buffer.subarray(0, writeI);\n }\n static readFrameData(uint8Array, frameHeader, majorVer, includeCovers, warningCollector) {\n const frameParser = new FrameParser(majorVer, warningCollector);\n switch (majorVer) {\n case 2:\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n case 3:\n case 4:\n if (frameHeader.flags?.format.unsynchronisation) {\n uint8Array = ID3v2Parser.removeUnsyncBytes(uint8Array);\n }\n if (frameHeader.flags?.format.data_length_indicator) {\n uint8Array = uint8Array.subarray(4, uint8Array.length);\n }\n return frameParser.readData(uint8Array, frameHeader.id, includeCovers);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n }\n /**\n * Create a combined tag key, of tag & description\n * @param tag e.g.: COM\n * @param description e.g. iTunPGAP\n * @returns string e.g. COM:iTunPGAP\n */\n static makeDescriptionTagName(tag, description) {\n return tag + (description ? `:${description}` : '');\n }\n async parse(metadata, tokenizer, options) {\n this.tokenizer = tokenizer;\n this.metadata = metadata;\n this.options = options;\n const id3Header = await this.tokenizer.readToken(ID3v2Header);\n if (id3Header.fileIdentifier !== 'ID3') {\n throw new Id3v2ContentError('expected ID3-header file-identifier \\'ID3\\' was not found');\n }\n this.id3Header = id3Header;\n this.headerType = (`ID3v2.${id3Header.version.major}`);\n await (id3Header.flags.isExtendedHeader ? this.parseExtendedHeader() : this.parseId3Data(id3Header.size));\n // Post process\n const chapters = ID3v2Parser.mapId3v2Chapters(this.metadata.native[this.headerType]);\n this.metadata.setFormat('chapters', chapters);\n }\n async parseExtendedHeader() {\n const extendedHeader = await this.tokenizer.readToken(ExtendedHeader);\n const dataRemaining = extendedHeader.size - ExtendedHeader.len;\n return dataRemaining > 0 ? this.parseExtendedHeaderData(dataRemaining, extendedHeader.size) : this.parseId3Data(this.id3Header.size - extendedHeader.size);\n }\n async parseExtendedHeaderData(dataRemaining, extendedHeaderSize) {\n await this.tokenizer.ignore(dataRemaining);\n return this.parseId3Data(this.id3Header.size - extendedHeaderSize);\n }\n async parseId3Data(dataLen) {\n const uint8Array = await this.tokenizer.readToken(new Token.Uint8ArrayType(dataLen));\n for (const tag of this.parseMetadata(uint8Array)) {\n switch (tag.id) {\n case 'TXXX':\n if (tag.value) {\n await this.handleTag(tag, tag.value.text, () => tag.value.description);\n }\n break;\n default:\n await (Array.isArray(tag.value) ? Promise.all(tag.value.map(value => this.addTag(tag.id, value))) : this.addTag(tag.id, tag.value));\n }\n }\n }\n async handleTag(tag, values, descriptor, resolveValue = value => value) {\n await Promise.all(values.map(value => this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, descriptor(value)), resolveValue(value))));\n }\n async addTag(id, value) {\n await this.metadata.addTag(this.headerType, id, value);\n }\n parseMetadata(data) {\n let offset = 0;\n const tags = [];\n while (true) {\n if (offset === data.length)\n break;\n const frameHeaderLength = getFrameHeaderLength(this.id3Header.version.major);\n if (offset + frameHeaderLength > data.length) {\n this.metadata.addWarning('Illegal ID3v2 tag length');\n break;\n }\n const frameHeaderBytes = data.subarray(offset, offset + frameHeaderLength);\n offset += frameHeaderLength;\n const frameHeader = readFrameHeader(frameHeaderBytes, this.id3Header.version.major, this.metadata);\n const frameDataBytes = data.subarray(offset, offset + frameHeader.length);\n offset += frameHeader.length;\n const values = ID3v2Parser.readFrameData(frameDataBytes, frameHeader, this.id3Header.version.major, !this.options.skipCovers, this.metadata);\n if (values) {\n tags.push({ id: frameHeader.id, value: values });\n }\n }\n return tags;\n }\n /**\n * Convert parsed ID3v2 chapter frames (CHAP / CTOC) to generic `format.chapters`.\n *\n * This function expects the `native` tags already to contain parsed `CHAP` and `CTOC` frame values,\n * as produced by `FrameParser.readData`.\n */\n static mapId3v2Chapters(id3Tags) {\n if (!id3Tags)\n return;\n const chapFrames = id3Tags.filter(t => t.id === 'CHAP');\n if (!chapFrames?.length)\n return;\n const tocFrames = id3Tags.filter(t => t.id === 'CTOC');\n const topLevelToc = tocFrames?.find(t => t.value.flags?.topLevel);\n const chapterById = new Map();\n for (const chap of chapFrames) {\n chapterById.set(chap.value.label, chap.value);\n }\n const orderedIds = topLevelToc?.value.childElementIds;\n const chapters = [];\n const source = orderedIds ?? [...chapterById.keys()];\n for (const id of source) {\n const chap = chapterById.get(id);\n if (!chap)\n continue;\n const frames = chap.frames;\n const title = frames.get('TIT2');\n if (!title)\n continue; // title is required\n chapters.push({\n id,\n title,\n url: frames.get('WXXX'),\n start: chap.info.startTime / 1000,\n end: chap.info.endTime / 1000,\n image: frames.get('APIC')\n });\n }\n // If no ordered CTOC, sort by time\n if (!orderedIds) {\n chapters.sort((a, b) => a.start - b.start);\n }\n return chapters.length ? chapters : undefined;\n }\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n", "import initDebug from 'debug';\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { AttachedPictureType, SyncTextHeader, TextEncodingToken, TextHeader } from './ID3v2Token.js';\nimport { Genres } from '../id3v1/ID3v1Parser.js';\nimport { makeUnexpectedFileContentError } from '../ParseError.js';\nimport { decodeUintBE } from '../common/Util.js';\nimport { ChapterInfo } from './ID3v2ChapterToken.js';\nimport { getFrameHeaderLength, readFrameHeader } from './FrameHeader.js';\nconst debug = initDebug('music-metadata:id3v2:frame-parser');\nconst defaultEnc = 'latin1'; // latin1 == iso-8859-1;\nconst urlEnc = { encoding: defaultEnc, bom: false };\nexport function parseGenre(origVal) {\n // match everything inside parentheses\n const genres = [];\n let code;\n let word = '';\n for (const c of origVal) {\n if (typeof code === 'string') {\n if (c === '(' && code === '') {\n word += '(';\n code = undefined;\n }\n else if (c === ')') {\n if (word !== '') {\n genres.push(word);\n word = '';\n }\n const genre = parseGenreCode(code);\n if (genre) {\n genres.push(genre);\n }\n code = undefined;\n }\n else\n code += c;\n }\n else if (c === '(') {\n code = '';\n }\n else {\n word += c;\n }\n }\n if (word) {\n if (genres.length === 0 && word.match(/^\\d*$/)) {\n word = parseGenreCode(word);\n }\n if (word) {\n genres.push(word);\n }\n }\n return genres;\n}\nfunction parseGenreCode(code) {\n if (code === 'RX')\n return 'Remix';\n if (code === 'CR')\n return 'Cover';\n if (code.match(/^\\d*$/)) {\n return Genres[Number.parseInt(code, 10)];\n }\n}\nexport class FrameParser {\n /**\n * Create id3v2 frame parser\n * @param major - Major version, e.g. (4) for id3v2.4\n * @param warningCollector - Used to collect decode issue\n */\n constructor(major, warningCollector) {\n this.major = major;\n this.warningCollector = warningCollector;\n }\n readData(uint8Array, type, includeCovers) {\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${type}`);\n return;\n }\n const { encoding, bom } = TextEncodingToken.get(uint8Array, 0);\n const length = uint8Array.length;\n let offset = 0;\n let output = []; // ToDo\n const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);\n let fzero;\n debug(`Parsing tag type=${type}, encoding=${encoding}, bom=${bom}`);\n switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {\n case 'T*': // 4.2.1. Text information frames - details\n case 'GRP1': // iTunes-specific ID3v2 grouping field\n case 'GP1': // iTunes-specific ID3v2.2 grouping field\n case 'IPLS': // v2.3: Involved people list\n case 'MVIN':\n case 'MVNM':\n case 'PCS':\n case 'PCST': {\n let text;\n try {\n text = FrameParser.trimNullPadding(util.decodeString(uint8Array.subarray(1), encoding));\n }\n catch (error) {\n if (error instanceof Error) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} header has invalid string value: ${error.message}`);\n break;\n }\n throw error;\n }\n switch (type) {\n case 'TMCL': // Musician credits list\n case 'TIPL': // Involved people list\n case 'IPLS': // Involved people list\n output = FrameParser.functionList(this.splitValue(type, text));\n break;\n case 'TRK':\n case 'TRCK':\n case 'TPOS':\n case 'TIT1':\n case 'TIT2':\n case 'TIT3':\n output = text;\n break;\n case 'TCOM':\n case 'TEXT':\n case 'TOLY':\n case 'TOPE':\n case 'TPE1':\n case 'TSRC':\n // id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n output = this.splitValue(type, text);\n break;\n case 'TCO':\n case 'TCON':\n output = this.splitValue(type, text).map(v => parseGenre(v)).reduce((acc, val) => acc.concat(val), []);\n break;\n case 'PCS':\n case 'PCST':\n // TODO: Why `default` not results `1` but `''`?\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n output = (Array.isArray(output) && output[0] === '') ? 1 : 0;\n break;\n default:\n output = this.major >= 4 ? this.splitValue(type, text) : [text];\n }\n break;\n }\n case 'TXXX': {\n const idAndData = FrameParser.readIdentifierAndData(uint8Array.subarray(1), encoding);\n output = {\n description: idAndData.id,\n text: this.splitValue(type, util.decodeString(idAndData.data, encoding).replace(/\\x00+$/, ''))\n };\n break;\n }\n case 'PIC':\n case 'APIC':\n if (includeCovers) {\n const pic = {};\n uint8Array = uint8Array.subarray(1);\n switch (this.major) {\n case 2:\n pic.format = util.decodeString(uint8Array.subarray(0, 3), 'latin1'); // 'latin1'; // latin1 == iso-8859-1;\n uint8Array = uint8Array.subarray(3);\n break;\n case 3:\n case 4:\n fzero = util.findZero(uint8Array, defaultEnc);\n pic.format = util.decodeString(uint8Array.subarray(0, fzero), defaultEnc);\n uint8Array = uint8Array.subarray(fzero + 1);\n break;\n default:\n throw makeUnexpectedMajorVersionError(this.major);\n }\n pic.format = FrameParser.fixPictureMimeType(pic.format);\n pic.type = AttachedPictureType[uint8Array[0]];\n uint8Array = uint8Array.subarray(1);\n fzero = util.findZero(uint8Array, encoding);\n pic.description = util.decodeString(uint8Array.subarray(0, fzero), encoding);\n uint8Array = uint8Array.subarray(fzero + nullTerminatorLength);\n pic.data = uint8Array;\n output = pic;\n }\n break;\n case 'CNT':\n case 'PCNT':\n output = decodeUintBE(uint8Array);\n break;\n case 'SYLT': {\n const syltHeader = SyncTextHeader.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(SyncTextHeader.len);\n const result = {\n descriptor: '',\n language: syltHeader.language,\n contentType: syltHeader.contentType,\n timeStampFormat: syltHeader.timeStampFormat,\n syncText: []\n };\n let readSyllables = false;\n while (uint8Array.length > 0) {\n const nullStr = FrameParser.readNullTerminatedString(uint8Array, syltHeader.encoding);\n uint8Array = uint8Array.subarray(nullStr.len);\n if (readSyllables) {\n const timestamp = Token.UINT32_BE.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(Token.UINT32_BE.len);\n result.syncText.push({\n text: nullStr.text,\n timestamp\n });\n }\n else {\n result.descriptor = nullStr.text;\n readSyllables = true;\n }\n }\n output = result;\n break;\n }\n case 'ULT':\n case 'USLT':\n case 'COM':\n case 'COMM': {\n const textHeader = TextHeader.get(uint8Array, offset);\n offset += TextHeader.len;\n const descriptorStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n offset += descriptorStr.len;\n const textStr = FrameParser.readNullTerminatedString(uint8Array.subarray(offset), textHeader.encoding);\n const comment = {\n language: textHeader.language,\n descriptor: descriptorStr.text,\n text: textStr.text\n };\n output = comment;\n break;\n }\n case 'UFID': {\n const ufid = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: ufid.id, identifier: ufid.data };\n break;\n }\n case 'PRIV': { // private frame\n const priv = FrameParser.readIdentifierAndData(uint8Array, defaultEnc);\n output = { owner_identifier: priv.id, data: priv.data };\n break;\n }\n case 'POPM': { // Popularimeter\n uint8Array = uint8Array.subarray(offset);\n const emailStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const email = emailStr.text;\n uint8Array = uint8Array.subarray(emailStr.len);\n if (uint8Array.length === 0) {\n this.warningCollector.addWarning(`id3v2.${this.major} type=${type} POPM frame missing rating byte`);\n output = { email, rating: 0, counter: undefined };\n break;\n }\n const rating = Token.UINT8.get(uint8Array, 0);\n const counterBytes = uint8Array.subarray(Token.UINT8.len);\n output = {\n email,\n rating,\n counter: counterBytes.length > 0 ? decodeUintBE(counterBytes) : undefined\n };\n break;\n }\n case 'GEOB': { // General encapsulated object\n // [encoding] <MIME> 0x00 <filename> 0x00/0x00 0x00 <description> 0x00/0x00 0x00 <data>\n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const mimeTypeStr = FrameParser.readNullTerminatedString(uint8Array, urlEnc);\n const mimeType = mimeTypeStr.text;\n uint8Array = uint8Array.subarray(mimeTypeStr.len);\n const filenameStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const filename = filenameStr.text;\n uint8Array = uint8Array.subarray(filenameStr.len);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n const geob = {\n type: mimeType,\n filename,\n description,\n data: uint8Array\n };\n output = geob;\n break;\n }\n // W-Frames:\n case 'WCOM':\n case 'WCOP':\n case 'WOAF':\n case 'WOAR':\n case 'WOAS':\n case 'WORS':\n case 'WPAY':\n case 'WPUB':\n // Decode URL\n output = FrameParser.readNullTerminatedString(uint8Array, urlEnc).text;\n break;\n case 'WXXX': {\n // [encoding] <description> 0x00/0x00 0x00 <url>\n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n const descriptionStr = FrameParser.readNullTerminatedString(uint8Array, encoding);\n const description = descriptionStr.text;\n uint8Array = uint8Array.subarray(descriptionStr.len);\n // URL is always ISO-8859-1\n output = { description, url: FrameParser.trimNullPadding(util.decodeString(uint8Array, defaultEnc)) };\n break;\n }\n case 'WFD':\n case 'WFED': {\n const encoding = TextEncodingToken.get(uint8Array, 0);\n uint8Array = uint8Array.subarray(1);\n output = FrameParser.readNullTerminatedString(uint8Array, encoding).text;\n break;\n }\n case 'MCDI': {\n // Music CD identifier\n output = uint8Array.subarray(0, length);\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#chapter-frame\n case 'CHAP': { // // Chapter frame\n debug(\"Reading CHAP\");\n fzero = util.findZero(uint8Array, defaultEnc);\n const chapter = {\n label: util.decodeString(uint8Array.subarray(0, fzero), defaultEnc),\n info: ChapterInfo.get(uint8Array, fzero + 1),\n frames: new Map()\n };\n offset += fzero + 1 + ChapterInfo.len;\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n chapter.frames.set(subFrame.id, subOutput);\n }\n output = chapter;\n break;\n }\n // ID3v2 Chapters 1.0\n // https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2-chapters-1.0.html#table-of-contents-frame\n case 'CTOC': { // Table of contents frame\n debug('Reading CTOC');\n // Element ID (null-terminated latin1)\n const idEnd = util.findZero(uint8Array, defaultEnc);\n const label = util.decodeString(uint8Array.subarray(0, idEnd), defaultEnc);\n offset = idEnd + 1;\n // Flags\n const flags = uint8Array[offset++];\n const topLevel = (flags & 0x02) !== 0;\n const ordered = (flags & 0x01) !== 0;\n // Child element IDs\n const entryCount = uint8Array[offset++];\n const childElementIds = [];\n for (let i = 0; i < entryCount && offset < length; i++) {\n const end = util.findZero(uint8Array.subarray(offset), defaultEnc);\n const childId = util.decodeString(uint8Array.subarray(offset, offset + end), defaultEnc);\n childElementIds.push(childId);\n offset += end + 1;\n }\n const toc = {\n label,\n flags: { topLevel, ordered },\n childElementIds,\n frames: new Map()\n };\n // Optional embedded sub-frames (e.g. TIT2) follow after the child list\n while (offset < length) {\n const subFrame = readFrameHeader(uint8Array.subarray(offset), this.major, this.warningCollector);\n const headerSize = getFrameHeaderLength(this.major);\n offset += headerSize;\n const subOutput = this.readData(uint8Array.subarray(offset, offset + subFrame.length), subFrame.id, includeCovers);\n offset += subFrame.length;\n toc.frames.set(subFrame.id, subOutput);\n }\n output = toc;\n break;\n }\n default:\n debug(`Warning: unsupported id3v2-tag-type: ${type}`);\n break;\n }\n return output;\n }\n static readNullTerminatedString(uint8Array, encoding) {\n const bomSize = encoding.bom ? 2 : 0;\n const originalLen = uint8Array.length;\n const valueArray = uint8Array.subarray(bomSize);\n const zeroIndex = util.findZero(valueArray, encoding.encoding);\n if (zeroIndex >= valueArray.length) {\n // No terminator found, decode full buffer remainder\n return {\n text: util.decodeString(valueArray, encoding.encoding),\n len: originalLen\n };\n }\n const txt = valueArray.subarray(0, zeroIndex);\n return {\n text: util.decodeString(txt, encoding.encoding),\n len: bomSize + zeroIndex + FrameParser.getNullTerminatorLength(encoding.encoding)\n };\n }\n static fixPictureMimeType(pictureType) {\n pictureType = pictureType.toLocaleLowerCase();\n switch (pictureType) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n }\n return pictureType;\n }\n /**\n * Converts TMCL (Musician credits list) or TIPL (Involved people list)\n * @param entries\n */\n static functionList(entries) {\n const res = {};\n for (let i = 0; i + 1 < entries.length; i += 2) {\n const names = entries[i + 1].split(',');\n res[entries[i]] = res[entries[i]] ? res[entries[i]].concat(names) : names;\n }\n return res;\n }\n /**\n * id3v2.4 defines that multiple T* values are separated by 0x00\n * id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n * @param tag - Tag name\n * @param text - Concatenated tag value\n * @returns Split tag value\n */\n splitValue(tag, text) {\n let values;\n if (this.major < 4) {\n values = text.split(/\\x00/g);\n if (values.length > 1) {\n this.warningCollector.addWarning(`ID3v2.${this.major} ${tag} uses non standard null-separator.`);\n }\n else {\n values = text.split(/\\//g);\n }\n }\n else {\n values = text.split(/\\x00/g);\n }\n return FrameParser.trimArray(values);\n }\n static trimArray(values) {\n return values.map(value => FrameParser.trimNullPadding(value).trim());\n }\n static trimNullPadding(value) {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 0) {\n end--;\n }\n return end === value.length ? value : value.slice(0, end);\n }\n static readIdentifierAndData(uint8Array, encoding) {\n const idStr = FrameParser.readNullTerminatedString(uint8Array, { encoding, bom: false });\n return { id: idStr.text, data: uint8Array.subarray(idStr.len) };\n }\n static getNullTerminatorLength(enc) {\n return enc.startsWith('utf-16') ? 2 : 1;\n }\n}\nexport class Id3v2ContentError extends makeUnexpectedFileContentError('id3v2') {\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n", "import * as Token from 'token-types';\n/**\n * Data portion of `CHAP` sub frame\n */\nexport const ChapterInfo = {\n len: 16,\n get: (buf, off) => {\n const startOffset = Token.UINT32_BE.get(buf, off + 8);\n const endOffset = Token.UINT32_BE.get(buf, off + 12);\n return {\n startTime: Token.UINT32_BE.get(buf, off),\n endTime: Token.UINT32_BE.get(buf, off + 4),\n startOffset: startOffset === 0xFFFFFFFF ? undefined : startOffset,\n endOffset: endOffset === 0xFFFFFFFF ? undefined : endOffset,\n };\n }\n};\n", "// lib/id3v2/FrameHeader.ts\nimport * as Token from 'token-types';\nimport * as util from '../common/Util.js';\nimport { UINT32SYNCSAFE } from './ID3v2Token.js';\nimport { textDecode } from '@borewit/text-codec';\nimport { Id3v2ContentError } from './FrameParser.js';\n/**\n * Frame header length (bytes) depending on ID3v2 major version.\n */\nexport function getFrameHeaderLength(majorVer) {\n switch (majorVer) {\n case 2: return 6;\n case 3:\n case 4: return 10;\n default: throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction readFrameFlags(b) {\n return {\n status: {\n tag_alter_preservation: util.getBit(b, 0, 6),\n file_alter_preservation: util.getBit(b, 0, 5),\n read_only: util.getBit(b, 0, 4)\n },\n format: {\n grouping_identity: util.getBit(b, 1, 7),\n compression: util.getBit(b, 1, 3),\n encryption: util.getBit(b, 1, 2),\n unsynchronisation: util.getBit(b, 1, 1),\n data_length_indicator: util.getBit(b, 1, 0)\n }\n };\n}\n/**\n * Factory: parse a frame header from its header bytes (6 for v2.2, 10 for v2.3/v2.4).\n *\n * Note: It only *parses* and does light validation. It does not read payload bytes.\n */\nexport function readFrameHeader(uint8Array, majorVer, warningCollector) {\n switch (majorVer) {\n case 2:\n return parseFrameHeaderV22(uint8Array, majorVer, warningCollector);\n case 3:\n case 4:\n return parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector);\n default:\n throw makeUnexpectedMajorVersionError(majorVer);\n }\n}\nfunction parseFrameHeaderV22(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 3), 'ascii'),\n length: Token.UINT24_BE.get(uint8Array, 3)\n };\n if (!header.id.match(/^[A-Z0-9]{3}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction parseFrameHeaderV23V24(uint8Array, majorVer, warningCollector) {\n const header = {\n id: textDecode(uint8Array.subarray(0, 4), 'ascii'),\n length: (majorVer === 4 ? UINT32SYNCSAFE : Token.UINT32_BE).get(uint8Array, 4),\n flags: readFrameFlags(uint8Array.subarray(8, 10))\n };\n if (!header.id.match(/^[A-Z0-9]{4}$/)) {\n warningCollector.addWarning(`Invalid ID3v2.${majorVer} frame-header-ID: ${header.id}`);\n }\n return header;\n}\nfunction makeUnexpectedMajorVersionError(majorVer) {\n throw new Id3v2ContentError(`Unexpected majorVer: ${majorVer}`);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["initDebug", "makeUnexpectedMajorVersionError", "encoding", "makeUnexpectedMajorVersionError"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
inspectMatrixDirectRooms,
|
|
3
|
+
persistMatrixDirectRoomMapping
|
|
4
|
+
} from "./chunk-2GFROLI2.js";
|
|
5
|
+
import {
|
|
6
|
+
isStrictDirectRoom
|
|
7
|
+
} from "./chunk-CGFDIH77.js";
|
|
8
|
+
import {
|
|
9
|
+
isMatrixQualifiedUserId,
|
|
10
|
+
normalizeMatrixResolvableTarget
|
|
11
|
+
} from "./chunk-TFD7ZIYD.js";
|
|
12
|
+
import {
|
|
13
|
+
init_shims
|
|
14
|
+
} from "./chunk-G4TIS2SC.js";
|
|
15
|
+
|
|
16
|
+
// src/matrix/send/targets.ts
|
|
17
|
+
init_shims();
|
|
18
|
+
import {
|
|
19
|
+
normalizeLowercaseStringOrEmpty,
|
|
20
|
+
normalizeOptionalStringifiedId
|
|
21
|
+
} from "openclaw/plugin-sdk/text-runtime";
|
|
22
|
+
function normalizeTarget(raw) {
|
|
23
|
+
const trimmed = raw.trim();
|
|
24
|
+
if (!trimmed) {
|
|
25
|
+
throw new Error("Matrix target is required (room:<id> or #alias)");
|
|
26
|
+
}
|
|
27
|
+
return trimmed;
|
|
28
|
+
}
|
|
29
|
+
function normalizeThreadId(raw) {
|
|
30
|
+
return normalizeOptionalStringifiedId(raw) ?? null;
|
|
31
|
+
}
|
|
32
|
+
var MAX_DIRECT_ROOM_CACHE_SIZE = 1024;
|
|
33
|
+
var directRoomCacheByClient = /* @__PURE__ */ new WeakMap();
|
|
34
|
+
function resolveDirectRoomCache(client) {
|
|
35
|
+
const existing = directRoomCacheByClient.get(client);
|
|
36
|
+
if (existing) {
|
|
37
|
+
return existing;
|
|
38
|
+
}
|
|
39
|
+
const created = /* @__PURE__ */ new Map();
|
|
40
|
+
directRoomCacheByClient.set(client, created);
|
|
41
|
+
return created;
|
|
42
|
+
}
|
|
43
|
+
function setDirectRoomCached(client, key, value) {
|
|
44
|
+
const directRoomCache = resolveDirectRoomCache(client);
|
|
45
|
+
directRoomCache.set(key, value);
|
|
46
|
+
if (directRoomCache.size > MAX_DIRECT_ROOM_CACHE_SIZE) {
|
|
47
|
+
const oldest = directRoomCache.keys().next().value;
|
|
48
|
+
if (oldest !== void 0) {
|
|
49
|
+
directRoomCache.delete(oldest);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function resolveDirectRoomId(client, userId) {
|
|
54
|
+
const trimmed = userId.trim();
|
|
55
|
+
if (!isMatrixQualifiedUserId(trimmed)) {
|
|
56
|
+
throw new Error(`Matrix user IDs must be fully qualified (got "${trimmed}")`);
|
|
57
|
+
}
|
|
58
|
+
const selfUserId = (await client.getUserId().catch(() => null))?.trim() || null;
|
|
59
|
+
const directRoomCache = resolveDirectRoomCache(client);
|
|
60
|
+
const cached = directRoomCache.get(trimmed);
|
|
61
|
+
if (cached && await isStrictDirectRoom({ client, roomId: cached, remoteUserId: trimmed, selfUserId })) {
|
|
62
|
+
return cached;
|
|
63
|
+
}
|
|
64
|
+
if (cached) {
|
|
65
|
+
directRoomCache.delete(trimmed);
|
|
66
|
+
}
|
|
67
|
+
const inspection = await inspectMatrixDirectRooms({
|
|
68
|
+
client,
|
|
69
|
+
remoteUserId: trimmed
|
|
70
|
+
});
|
|
71
|
+
if (inspection.activeRoomId) {
|
|
72
|
+
setDirectRoomCached(client, trimmed, inspection.activeRoomId);
|
|
73
|
+
if (inspection.mappedRoomIds[0] !== inspection.activeRoomId) {
|
|
74
|
+
await persistMatrixDirectRoomMapping({
|
|
75
|
+
client,
|
|
76
|
+
remoteUserId: trimmed,
|
|
77
|
+
roomId: inspection.activeRoomId
|
|
78
|
+
}).catch(() => {
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return inspection.activeRoomId;
|
|
82
|
+
}
|
|
83
|
+
throw new Error(`No direct room found for ${trimmed} (m.direct missing)`);
|
|
84
|
+
}
|
|
85
|
+
async function resolveMatrixRoomId(client, raw) {
|
|
86
|
+
const target = normalizeMatrixResolvableTarget(normalizeTarget(raw));
|
|
87
|
+
const lowered = normalizeLowercaseStringOrEmpty(target);
|
|
88
|
+
if (lowered.startsWith("user:")) {
|
|
89
|
+
return await resolveDirectRoomId(client, target.slice("user:".length));
|
|
90
|
+
}
|
|
91
|
+
if (isMatrixQualifiedUserId(target)) {
|
|
92
|
+
return await resolveDirectRoomId(client, target);
|
|
93
|
+
}
|
|
94
|
+
if (target.startsWith("#")) {
|
|
95
|
+
const resolved = await client.resolveRoom(target);
|
|
96
|
+
if (!resolved) {
|
|
97
|
+
throw new Error(`Matrix alias ${target} could not be resolved`);
|
|
98
|
+
}
|
|
99
|
+
return resolved;
|
|
100
|
+
}
|
|
101
|
+
return target;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export {
|
|
105
|
+
normalizeThreadId,
|
|
106
|
+
resolveMatrixRoomId
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=chunk-EBXHW7ZO.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/matrix/send/targets.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n normalizeLowercaseStringOrEmpty,\n normalizeOptionalStringifiedId,\n} from \"openclaw/plugin-sdk/text-runtime\";\nimport { inspectMatrixDirectRooms, persistMatrixDirectRoomMapping } from \"../direct-management.js\";\nimport { isStrictDirectRoom } from \"../direct-room.js\";\nimport type { MatrixClient } from \"../sdk.js\";\nimport { isMatrixQualifiedUserId, normalizeMatrixResolvableTarget } from \"../target-ids.js\";\n\nfunction normalizeTarget(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) {\n throw new Error(\"Matrix target is required (room:<id> or #alias)\");\n }\n return trimmed;\n}\n\nexport function normalizeThreadId(raw?: string | number | null): string | null {\n return normalizeOptionalStringifiedId(raw) ?? null;\n}\n\n// Size-capped to prevent unbounded growth (#4948)\nconst MAX_DIRECT_ROOM_CACHE_SIZE = 1024;\nconst directRoomCacheByClient = new WeakMap<MatrixClient, Map<string, string>>();\n\nfunction resolveDirectRoomCache(client: MatrixClient): Map<string, string> {\n const existing = directRoomCacheByClient.get(client);\n if (existing) {\n return existing;\n }\n const created = new Map<string, string>();\n directRoomCacheByClient.set(client, created);\n return created;\n}\n\nfunction setDirectRoomCached(client: MatrixClient, key: string, value: string): void {\n const directRoomCache = resolveDirectRoomCache(client);\n directRoomCache.set(key, value);\n if (directRoomCache.size > MAX_DIRECT_ROOM_CACHE_SIZE) {\n const oldest = directRoomCache.keys().next().value;\n if (oldest !== undefined) {\n directRoomCache.delete(oldest);\n }\n }\n}\n\nasync function resolveDirectRoomId(client: MatrixClient, userId: string): Promise<string> {\n const trimmed = userId.trim();\n if (!isMatrixQualifiedUserId(trimmed)) {\n throw new Error(`Matrix user IDs must be fully qualified (got \"${trimmed}\")`);\n }\n const selfUserId = (await client.getUserId().catch(() => null))?.trim() || null;\n\n const directRoomCache = resolveDirectRoomCache(client);\n const cached = directRoomCache.get(trimmed);\n if (\n cached &&\n (await isStrictDirectRoom({ client, roomId: cached, remoteUserId: trimmed, selfUserId }))\n ) {\n return cached;\n }\n if (cached) {\n directRoomCache.delete(trimmed);\n }\n\n const inspection = await inspectMatrixDirectRooms({\n client,\n remoteUserId: trimmed,\n });\n if (inspection.activeRoomId) {\n setDirectRoomCached(client, trimmed, inspection.activeRoomId);\n if (inspection.mappedRoomIds[0] !== inspection.activeRoomId) {\n await persistMatrixDirectRoomMapping({\n client,\n remoteUserId: trimmed,\n roomId: inspection.activeRoomId,\n }).catch(() => {\n // Ignore persistence errors when send resolution has already found a usable room.\n });\n }\n return inspection.activeRoomId;\n }\n\n throw new Error(`No direct room found for ${trimmed} (m.direct missing)`);\n}\n\nexport async function resolveMatrixRoomId(client: MatrixClient, raw: string): Promise<string> {\n const target = normalizeMatrixResolvableTarget(normalizeTarget(raw));\n const lowered = normalizeLowercaseStringOrEmpty(target);\n if (lowered.startsWith(\"user:\")) {\n return await resolveDirectRoomId(client, target.slice(\"user:\".length));\n }\n if (isMatrixQualifiedUserId(target)) {\n return await resolveDirectRoomId(client, target);\n }\n if (target.startsWith(\"#\")) {\n const resolved = await client.resolveRoom(target);\n if (!resolved) {\n throw new Error(`Matrix alias ${target} could not be resolved`);\n }\n return resolved;\n }\n return target;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP,SAAS,gBAAgB,KAAqB;AAC5C,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,KAA6C;AAC7E,SAAO,+BAA+B,GAAG,KAAK;AAChD;AAGA,IAAM,6BAA6B;AACnC,IAAM,0BAA0B,oBAAI,QAA2C;AAE/E,SAAS,uBAAuB,QAA2C;AACzE,QAAM,WAAW,wBAAwB,IAAI,MAAM;AACnD,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,QAAM,UAAU,oBAAI,IAAoB;AACxC,0BAAwB,IAAI,QAAQ,OAAO;AAC3C,SAAO;AACT;AAEA,SAAS,oBAAoB,QAAsB,KAAa,OAAqB;AACnF,QAAM,kBAAkB,uBAAuB,MAAM;AACrD,kBAAgB,IAAI,KAAK,KAAK;AAC9B,MAAI,gBAAgB,OAAO,4BAA4B;AACrD,UAAM,SAAS,gBAAgB,KAAK,EAAE,KAAK,EAAE;AAC7C,QAAI,WAAW,QAAW;AACxB,sBAAgB,OAAO,MAAM;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,eAAe,oBAAoB,QAAsB,QAAiC;AACxF,QAAM,UAAU,OAAO,KAAK;AAC5B,MAAI,CAAC,wBAAwB,OAAO,GAAG;AACrC,UAAM,IAAI,MAAM,iDAAiD,OAAO,IAAI;AAAA,EAC9E;AACA,QAAM,cAAc,MAAM,OAAO,UAAU,EAAE,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK;AAE3E,QAAM,kBAAkB,uBAAuB,MAAM;AACrD,QAAM,SAAS,gBAAgB,IAAI,OAAO;AAC1C,MACE,UACC,MAAM,mBAAmB,EAAE,QAAQ,QAAQ,QAAQ,cAAc,SAAS,WAAW,CAAC,GACvF;AACA,WAAO;AAAA,EACT;AACA,MAAI,QAAQ;AACV,oBAAgB,OAAO,OAAO;AAAA,EAChC;AAEA,QAAM,aAAa,MAAM,yBAAyB;AAAA,IAChD;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,MAAI,WAAW,cAAc;AAC3B,wBAAoB,QAAQ,SAAS,WAAW,YAAY;AAC5D,QAAI,WAAW,cAAc,CAAC,MAAM,WAAW,cAAc;AAC3D,YAAM,+BAA+B;AAAA,QACnC;AAAA,QACA,cAAc;AAAA,QACd,QAAQ,WAAW;AAAA,MACrB,CAAC,EAAE,MAAM,MAAM;AAAA,MAEf,CAAC;AAAA,IACH;AACA,WAAO,WAAW;AAAA,EACpB;AAEA,QAAM,IAAI,MAAM,4BAA4B,OAAO,qBAAqB;AAC1E;AAEA,eAAsB,oBAAoB,QAAsB,KAA8B;AAC5F,QAAM,SAAS,gCAAgC,gBAAgB,GAAG,CAAC;AACnE,QAAM,UAAU,gCAAgC,MAAM;AACtD,MAAI,QAAQ,WAAW,OAAO,GAAG;AAC/B,WAAO,MAAM,oBAAoB,QAAQ,OAAO,MAAM,QAAQ,MAAM,CAAC;AAAA,EACvE;AACA,MAAI,wBAAwB,MAAM,GAAG;AACnC,WAAO,MAAM,oBAAoB,QAAQ,MAAM;AAAA,EACjD;AACA,MAAI,OAAO,WAAW,GAAG,GAAG;AAC1B,UAAM,WAAW,MAAM,OAAO,YAAY,MAAM;AAChD,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,gBAAgB,MAAM,wBAAwB;AAAA,IAChE;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/music-metadata/lib/type.js"],
|
|
4
|
+
"sourcesContent": ["export { TrackType, TrackTypeValueToKeyMap } from './matroska/types.js';\nexport { LyricsContentType, TimestampFormat } from './id3v2/ID3v2Token.js';\n"],
|
|
5
|
+
"mappings": ";;;;;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getMatrixApprovalApprovers,
|
|
3
|
+
getMatrixExecApprovalApprovers,
|
|
4
|
+
isMatrixAnyApprovalClientEnabled,
|
|
5
|
+
isMatrixApprovalClientEnabled,
|
|
6
|
+
isMatrixExecApprovalAuthorizedSender,
|
|
7
|
+
isMatrixExecApprovalClientEnabled,
|
|
8
|
+
resolveMatrixExecApprovalTarget,
|
|
9
|
+
shouldHandleMatrixApprovalRequest
|
|
10
|
+
} from "./chunk-F7LNS7G3.js";
|
|
11
|
+
import {
|
|
12
|
+
getMatrixApprovalAuthApprovers,
|
|
13
|
+
matrixApprovalAuth
|
|
14
|
+
} from "./chunk-6EYPDJUD.js";
|
|
15
|
+
import {
|
|
16
|
+
normalizeMatrixApproverId
|
|
17
|
+
} from "./chunk-ZGCATLM5.js";
|
|
18
|
+
import {
|
|
19
|
+
normalizeMatrixUserId
|
|
20
|
+
} from "./chunk-U44IVNP2.js";
|
|
21
|
+
import {
|
|
22
|
+
resolveMatrixTargetIdentity
|
|
23
|
+
} from "./chunk-TFD7ZIYD.js";
|
|
24
|
+
import {
|
|
25
|
+
listMatrixAccountIds
|
|
26
|
+
} from "./chunk-MJ2GW6SU.js";
|
|
27
|
+
import {
|
|
28
|
+
init_shims
|
|
29
|
+
} from "./chunk-G4TIS2SC.js";
|
|
30
|
+
|
|
31
|
+
// src/approval-native.ts
|
|
32
|
+
init_shims();
|
|
33
|
+
import {
|
|
34
|
+
createChannelApprovalCapability,
|
|
35
|
+
createApproverRestrictedNativeApprovalCapability,
|
|
36
|
+
splitChannelApprovalCapability
|
|
37
|
+
} from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
38
|
+
import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
39
|
+
import {
|
|
40
|
+
createChannelNativeOriginTargetResolver,
|
|
41
|
+
resolveApprovalRequestSessionConversation
|
|
42
|
+
} from "openclaw/plugin-sdk/approval-native-runtime";
|
|
43
|
+
import {
|
|
44
|
+
normalizeLowercaseStringOrEmpty,
|
|
45
|
+
normalizeOptionalStringifiedId
|
|
46
|
+
} from "openclaw/plugin-sdk/text-runtime";
|
|
47
|
+
function normalizeComparableTarget(value) {
|
|
48
|
+
const target = resolveMatrixTargetIdentity(value);
|
|
49
|
+
if (!target) {
|
|
50
|
+
return normalizeLowercaseStringOrEmpty(value);
|
|
51
|
+
}
|
|
52
|
+
if (target.kind === "user") {
|
|
53
|
+
return `user:${normalizeMatrixUserId(target.id)}`;
|
|
54
|
+
}
|
|
55
|
+
return `${normalizeLowercaseStringOrEmpty(target.kind)}:${target.id}`;
|
|
56
|
+
}
|
|
57
|
+
function resolveMatrixNativeTarget(raw) {
|
|
58
|
+
const target = resolveMatrixTargetIdentity(raw);
|
|
59
|
+
if (!target) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return target.kind === "user" ? `user:${target.id}` : `room:${target.id}`;
|
|
63
|
+
}
|
|
64
|
+
function resolveTurnSourceMatrixOriginTarget(request) {
|
|
65
|
+
const turnSourceChannel = normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel);
|
|
66
|
+
const turnSourceTo = request.request.turnSourceTo?.trim() || "";
|
|
67
|
+
const target = resolveMatrixNativeTarget(turnSourceTo);
|
|
68
|
+
if (turnSourceChannel !== "matrix" || !target) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
to: target,
|
|
73
|
+
threadId: normalizeOptionalStringifiedId(request.request.turnSourceThreadId)
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function resolveSessionMatrixOriginTarget(sessionTarget) {
|
|
77
|
+
const target = resolveMatrixNativeTarget(sessionTarget.to);
|
|
78
|
+
if (!target) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
to: target,
|
|
83
|
+
threadId: normalizeOptionalStringifiedId(sessionTarget.threadId)
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function matrixTargetsMatch(a, b) {
|
|
87
|
+
return normalizeComparableTarget(a.to) === normalizeComparableTarget(b.to) && (a.threadId ?? "") === (b.threadId ?? "");
|
|
88
|
+
}
|
|
89
|
+
function hasMatrixPluginApprovers(params) {
|
|
90
|
+
return getMatrixApprovalAuthApprovers(params).length > 0;
|
|
91
|
+
}
|
|
92
|
+
function availabilityState(enabled) {
|
|
93
|
+
return enabled ? { kind: "enabled" } : { kind: "disabled" };
|
|
94
|
+
}
|
|
95
|
+
function hasMatrixApprovalApprovers(params) {
|
|
96
|
+
return getMatrixApprovalApprovers({
|
|
97
|
+
cfg: params.cfg,
|
|
98
|
+
accountId: params.accountId,
|
|
99
|
+
approvalKind: params.approvalKind
|
|
100
|
+
}).length > 0;
|
|
101
|
+
}
|
|
102
|
+
function hasAnyMatrixApprovalApprovers(params) {
|
|
103
|
+
return getMatrixExecApprovalApprovers(params).length > 0 || getMatrixApprovalAuthApprovers(params).length > 0;
|
|
104
|
+
}
|
|
105
|
+
function isMatrixPluginAuthorizedSender(params) {
|
|
106
|
+
const normalizedSenderId = params.senderId ? normalizeMatrixApproverId(params.senderId) : void 0;
|
|
107
|
+
if (!normalizedSenderId) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return getMatrixApprovalAuthApprovers(params).includes(normalizedSenderId);
|
|
111
|
+
}
|
|
112
|
+
function resolveSuppressionAccountId(params) {
|
|
113
|
+
return params.target.accountId?.trim() || params.request.request.turnSourceAccountId?.trim() || void 0;
|
|
114
|
+
}
|
|
115
|
+
var resolveMatrixOriginTarget = createChannelNativeOriginTargetResolver({
|
|
116
|
+
channel: "matrix",
|
|
117
|
+
shouldHandleRequest: ({ cfg, accountId, request }) => shouldHandleMatrixApprovalRequest({
|
|
118
|
+
cfg,
|
|
119
|
+
accountId,
|
|
120
|
+
request
|
|
121
|
+
}),
|
|
122
|
+
resolveTurnSourceTarget: resolveTurnSourceMatrixOriginTarget,
|
|
123
|
+
resolveSessionTarget: resolveSessionMatrixOriginTarget,
|
|
124
|
+
targetsMatch: matrixTargetsMatch,
|
|
125
|
+
resolveFallbackTarget: (request) => {
|
|
126
|
+
const sessionConversation = resolveApprovalRequestSessionConversation({
|
|
127
|
+
request,
|
|
128
|
+
channel: "matrix"
|
|
129
|
+
});
|
|
130
|
+
if (!sessionConversation) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
const target = resolveMatrixNativeTarget(sessionConversation.id);
|
|
134
|
+
if (!target) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
to: target,
|
|
139
|
+
threadId: normalizeOptionalStringifiedId(sessionConversation.threadId)
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
function resolveMatrixApproverDmTargets(params) {
|
|
144
|
+
if (!shouldHandleMatrixApprovalRequest(params)) {
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
return getMatrixApprovalApprovers(params).map((approver) => {
|
|
148
|
+
const normalized = normalizeMatrixUserId(approver);
|
|
149
|
+
return normalized ? { to: `user:${normalized}` } : null;
|
|
150
|
+
}).filter((target) => target !== null);
|
|
151
|
+
}
|
|
152
|
+
var matrixNativeApprovalCapability = createApproverRestrictedNativeApprovalCapability({
|
|
153
|
+
channel: "matrix",
|
|
154
|
+
channelLabel: "Matrix",
|
|
155
|
+
describeExecApprovalSetup: ({ accountId }) => {
|
|
156
|
+
const prefix = accountId && accountId !== "default" ? `channels.lobi.accounts.${accountId}` : "channels.lobi";
|
|
157
|
+
return `Approve it from the Web UI or terminal UI for now. Matrix supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`${prefix}.dm.allowFrom\`; leave \`${prefix}.execApprovals.enabled\` unset/\`auto\` or set it to \`true\`.`;
|
|
158
|
+
},
|
|
159
|
+
listAccountIds: listMatrixAccountIds,
|
|
160
|
+
hasApprovers: ({ cfg, accountId }) => hasAnyMatrixApprovalApprovers({
|
|
161
|
+
cfg,
|
|
162
|
+
accountId
|
|
163
|
+
}),
|
|
164
|
+
isExecAuthorizedSender: ({ cfg, accountId, senderId }) => isMatrixExecApprovalAuthorizedSender({ cfg, accountId, senderId }),
|
|
165
|
+
isPluginAuthorizedSender: ({ cfg, accountId, senderId }) => isMatrixPluginAuthorizedSender({
|
|
166
|
+
cfg,
|
|
167
|
+
accountId,
|
|
168
|
+
senderId
|
|
169
|
+
}),
|
|
170
|
+
isNativeDeliveryEnabled: ({ cfg, accountId }) => isMatrixExecApprovalClientEnabled({ cfg, accountId }),
|
|
171
|
+
resolveNativeDeliveryMode: ({ cfg, accountId }) => resolveMatrixExecApprovalTarget({ cfg, accountId }),
|
|
172
|
+
requireMatchingTurnSourceChannel: true,
|
|
173
|
+
resolveSuppressionAccountId,
|
|
174
|
+
resolveOriginTarget: resolveMatrixOriginTarget,
|
|
175
|
+
resolveApproverDmTargets: resolveMatrixApproverDmTargets,
|
|
176
|
+
notifyOriginWhenDmOnly: true,
|
|
177
|
+
nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({
|
|
178
|
+
eventKinds: ["exec", "plugin"],
|
|
179
|
+
isConfigured: ({ cfg, accountId }) => isMatrixAnyApprovalClientEnabled({
|
|
180
|
+
cfg,
|
|
181
|
+
accountId
|
|
182
|
+
}),
|
|
183
|
+
shouldHandle: ({ cfg, accountId, request }) => shouldHandleMatrixApprovalRequest({
|
|
184
|
+
cfg,
|
|
185
|
+
accountId,
|
|
186
|
+
request
|
|
187
|
+
}),
|
|
188
|
+
load: async () => (await import("./src/approval-handler.runtime.js")).matrixApprovalNativeRuntime
|
|
189
|
+
})
|
|
190
|
+
});
|
|
191
|
+
var splitMatrixApprovalCapability = splitChannelApprovalCapability(
|
|
192
|
+
matrixNativeApprovalCapability
|
|
193
|
+
);
|
|
194
|
+
var matrixBaseNativeApprovalAdapter = splitMatrixApprovalCapability.native;
|
|
195
|
+
var matrixBaseDeliveryAdapter = splitMatrixApprovalCapability.delivery;
|
|
196
|
+
var matrixDeliveryAdapter = matrixBaseDeliveryAdapter && {
|
|
197
|
+
...matrixBaseDeliveryAdapter,
|
|
198
|
+
shouldSuppressForwardingFallback: (params) => {
|
|
199
|
+
const accountId = resolveSuppressionAccountId(params);
|
|
200
|
+
if (!hasMatrixApprovalApprovers({
|
|
201
|
+
cfg: params.cfg,
|
|
202
|
+
accountId,
|
|
203
|
+
approvalKind: params.approvalKind
|
|
204
|
+
})) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
return matrixBaseDeliveryAdapter.shouldSuppressForwardingFallback?.(params) ?? false;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
var matrixNativeAdapter = matrixBaseNativeApprovalAdapter && {
|
|
211
|
+
describeDeliveryCapabilities: (params) => {
|
|
212
|
+
const capabilities = matrixBaseNativeApprovalAdapter.describeDeliveryCapabilities(params);
|
|
213
|
+
const hasApprovers = hasMatrixApprovalApprovers({
|
|
214
|
+
cfg: params.cfg,
|
|
215
|
+
accountId: params.accountId,
|
|
216
|
+
approvalKind: params.approvalKind
|
|
217
|
+
});
|
|
218
|
+
const clientEnabled = isMatrixApprovalClientEnabled({
|
|
219
|
+
cfg: params.cfg,
|
|
220
|
+
accountId: params.accountId,
|
|
221
|
+
approvalKind: params.approvalKind
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
...capabilities,
|
|
225
|
+
enabled: capabilities.enabled && hasApprovers && clientEnabled
|
|
226
|
+
};
|
|
227
|
+
},
|
|
228
|
+
resolveOriginTarget: matrixBaseNativeApprovalAdapter.resolveOriginTarget,
|
|
229
|
+
resolveApproverDmTargets: matrixBaseNativeApprovalAdapter.resolveApproverDmTargets
|
|
230
|
+
};
|
|
231
|
+
var matrixApprovalCapability = createChannelApprovalCapability({
|
|
232
|
+
authorizeActorAction: (params) => {
|
|
233
|
+
if (params.approvalKind !== "plugin") {
|
|
234
|
+
return matrixNativeApprovalCapability.authorizeActorAction?.(params) ?? { authorized: true };
|
|
235
|
+
}
|
|
236
|
+
if (!hasMatrixPluginApprovers({
|
|
237
|
+
cfg: params.cfg,
|
|
238
|
+
accountId: params.accountId
|
|
239
|
+
})) {
|
|
240
|
+
return {
|
|
241
|
+
authorized: false,
|
|
242
|
+
reason: "\u274C Matrix plugin approvals are not enabled for this bot account."
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return matrixApprovalAuth.authorizeActorAction(params);
|
|
246
|
+
},
|
|
247
|
+
getActionAvailabilityState: (params) => {
|
|
248
|
+
if (params.approvalKind === "plugin") {
|
|
249
|
+
return availabilityState(
|
|
250
|
+
hasMatrixPluginApprovers({
|
|
251
|
+
cfg: params.cfg,
|
|
252
|
+
accountId: params.accountId
|
|
253
|
+
})
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
return matrixNativeApprovalCapability.getActionAvailabilityState?.(params) ?? {
|
|
257
|
+
kind: "disabled"
|
|
258
|
+
};
|
|
259
|
+
},
|
|
260
|
+
getExecInitiatingSurfaceState: (params) => matrixNativeApprovalCapability.getExecInitiatingSurfaceState?.(params) ?? { kind: "disabled" },
|
|
261
|
+
describeExecApprovalSetup: matrixNativeApprovalCapability.describeExecApprovalSetup,
|
|
262
|
+
delivery: matrixDeliveryAdapter,
|
|
263
|
+
nativeRuntime: matrixNativeApprovalCapability.nativeRuntime,
|
|
264
|
+
native: matrixNativeAdapter,
|
|
265
|
+
render: matrixNativeApprovalCapability.render
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
export {
|
|
269
|
+
matrixApprovalCapability
|
|
270
|
+
};
|
|
271
|
+
//# sourceMappingURL=chunk-ER2XTD2S.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/approval-native.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n createChannelApprovalCapability,\n createApproverRestrictedNativeApprovalCapability,\n splitChannelApprovalCapability,\n} from \"openclaw/plugin-sdk/approval-delivery-runtime\";\nimport { createLazyChannelApprovalNativeRuntimeAdapter } from \"openclaw/plugin-sdk/approval-handler-adapter-runtime\";\nimport type { ChannelApprovalNativeRuntimeAdapter } from \"openclaw/plugin-sdk/approval-handler-runtime\";\nimport {\n createChannelNativeOriginTargetResolver,\n resolveApprovalRequestSessionConversation,\n} from \"openclaw/plugin-sdk/approval-native-runtime\";\nimport type { ExecApprovalRequest, PluginApprovalRequest } from \"openclaw/plugin-sdk/infra-runtime\";\nimport {\n normalizeLowercaseStringOrEmpty,\n normalizeOptionalStringifiedId,\n} from \"openclaw/plugin-sdk/text-runtime\";\nimport { getMatrixApprovalAuthApprovers, matrixApprovalAuth } from \"./approval-auth.js\";\nimport { normalizeMatrixApproverId } from \"./approval-ids.js\";\nimport {\n getMatrixApprovalApprovers,\n getMatrixExecApprovalApprovers,\n isMatrixAnyApprovalClientEnabled,\n isMatrixApprovalClientEnabled,\n isMatrixExecApprovalClientEnabled,\n isMatrixExecApprovalAuthorizedSender,\n resolveMatrixExecApprovalTarget,\n shouldHandleMatrixApprovalRequest,\n} from \"./exec-approvals.js\";\nimport { listMatrixAccountIds } from \"./matrix/accounts.js\";\nimport { normalizeMatrixUserId } from \"./matrix/monitor/allowlist.js\";\nimport { resolveMatrixTargetIdentity } from \"./matrix/target-ids.js\";\nimport type { CoreConfig } from \"./types.js\";\n\ntype ApprovalRequest = ExecApprovalRequest | PluginApprovalRequest;\ntype ApprovalKind = \"exec\" | \"plugin\";\ntype MatrixOriginTarget = { to: string; threadId?: string };\n\nfunction normalizeComparableTarget(value: string): string {\n const target = resolveMatrixTargetIdentity(value);\n if (!target) {\n return normalizeLowercaseStringOrEmpty(value);\n }\n if (target.kind === \"user\") {\n return `user:${normalizeMatrixUserId(target.id)}`;\n }\n return `${normalizeLowercaseStringOrEmpty(target.kind)}:${target.id}`;\n}\n\nfunction resolveMatrixNativeTarget(raw: string): string | null {\n const target = resolveMatrixTargetIdentity(raw);\n if (!target) {\n return null;\n }\n return target.kind === \"user\" ? `user:${target.id}` : `room:${target.id}`;\n}\n\nfunction resolveTurnSourceMatrixOriginTarget(request: ApprovalRequest): MatrixOriginTarget | null {\n const turnSourceChannel = normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel);\n const turnSourceTo = request.request.turnSourceTo?.trim() || \"\";\n const target = resolveMatrixNativeTarget(turnSourceTo);\n if (turnSourceChannel !== \"matrix\" || !target) {\n return null;\n }\n return {\n to: target,\n threadId: normalizeOptionalStringifiedId(request.request.turnSourceThreadId),\n };\n}\n\nfunction resolveSessionMatrixOriginTarget(sessionTarget: {\n to: string;\n threadId?: string | number | null;\n}): MatrixOriginTarget | null {\n const target = resolveMatrixNativeTarget(sessionTarget.to);\n if (!target) {\n return null;\n }\n return {\n to: target,\n threadId: normalizeOptionalStringifiedId(sessionTarget.threadId),\n };\n}\n\nfunction matrixTargetsMatch(a: MatrixOriginTarget, b: MatrixOriginTarget): boolean {\n return (\n normalizeComparableTarget(a.to) === normalizeComparableTarget(b.to) &&\n (a.threadId ?? \"\") === (b.threadId ?? \"\")\n );\n}\n\nfunction hasMatrixPluginApprovers(params: { cfg: CoreConfig; accountId?: string | null }): boolean {\n return getMatrixApprovalAuthApprovers(params).length > 0;\n}\n\nfunction availabilityState(enabled: boolean) {\n return enabled ? ({ kind: \"enabled\" } as const) : ({ kind: \"disabled\" } as const);\n}\n\nfunction hasMatrixApprovalApprovers(params: {\n cfg: CoreConfig;\n accountId?: string | null;\n approvalKind: ApprovalKind;\n}): boolean {\n return (\n getMatrixApprovalApprovers({\n cfg: params.cfg,\n accountId: params.accountId,\n approvalKind: params.approvalKind,\n }).length > 0\n );\n}\n\nfunction hasAnyMatrixApprovalApprovers(params: {\n cfg: CoreConfig;\n accountId?: string | null;\n}): boolean {\n return (\n getMatrixExecApprovalApprovers(params).length > 0 ||\n getMatrixApprovalAuthApprovers(params).length > 0\n );\n}\n\nfunction isMatrixPluginAuthorizedSender(params: {\n cfg: CoreConfig;\n accountId?: string | null;\n senderId?: string | null;\n}): boolean {\n const normalizedSenderId = params.senderId\n ? normalizeMatrixApproverId(params.senderId)\n : undefined;\n if (!normalizedSenderId) {\n return false;\n }\n return getMatrixApprovalAuthApprovers(params).includes(normalizedSenderId);\n}\n\nfunction resolveSuppressionAccountId(params: {\n target: { accountId?: string | null };\n request: { request: { turnSourceAccountId?: string | null } };\n}): string | undefined {\n return (\n params.target.accountId?.trim() ||\n params.request.request.turnSourceAccountId?.trim() ||\n undefined\n );\n}\n\nconst resolveMatrixOriginTarget = createChannelNativeOriginTargetResolver({\n channel: \"matrix\",\n shouldHandleRequest: ({ cfg, accountId, request }) =>\n shouldHandleMatrixApprovalRequest({\n cfg,\n accountId,\n request,\n }),\n resolveTurnSourceTarget: resolveTurnSourceMatrixOriginTarget,\n resolveSessionTarget: resolveSessionMatrixOriginTarget,\n targetsMatch: matrixTargetsMatch,\n resolveFallbackTarget: (request) => {\n const sessionConversation = resolveApprovalRequestSessionConversation({\n request,\n channel: \"matrix\",\n });\n if (!sessionConversation) {\n return null;\n }\n const target = resolveMatrixNativeTarget(sessionConversation.id);\n if (!target) {\n return null;\n }\n return {\n to: target,\n threadId: normalizeOptionalStringifiedId(sessionConversation.threadId),\n };\n },\n});\n\nfunction resolveMatrixApproverDmTargets(params: {\n cfg: CoreConfig;\n accountId?: string | null;\n approvalKind: ApprovalKind;\n request: ApprovalRequest;\n}): { to: string }[] {\n if (!shouldHandleMatrixApprovalRequest(params)) {\n return [];\n }\n return getMatrixApprovalApprovers(params)\n .map((approver) => {\n const normalized = normalizeMatrixUserId(approver);\n return normalized ? { to: `user:${normalized}` } : null;\n })\n .filter((target): target is { to: string } => target !== null);\n}\n\nconst matrixNativeApprovalCapability = createApproverRestrictedNativeApprovalCapability({\n channel: \"matrix\",\n channelLabel: \"Matrix\",\n describeExecApprovalSetup: ({ accountId }) => {\n const prefix =\n accountId && accountId !== \"default\"\n ? `channels.lobi.accounts.${accountId}`\n : \"channels.lobi\";\n return `Approve it from the Web UI or terminal UI for now. Matrix supports native exec approvals for this account. Configure \\`${prefix}.execApprovals.approvers\\` or \\`${prefix}.dm.allowFrom\\`; leave \\`${prefix}.execApprovals.enabled\\` unset/\\`auto\\` or set it to \\`true\\`.`;\n },\n listAccountIds: listMatrixAccountIds,\n hasApprovers: ({ cfg, accountId }) =>\n hasAnyMatrixApprovalApprovers({\n cfg: cfg as CoreConfig,\n accountId,\n }),\n isExecAuthorizedSender: ({ cfg, accountId, senderId }) =>\n isMatrixExecApprovalAuthorizedSender({ cfg, accountId, senderId }),\n isPluginAuthorizedSender: ({ cfg, accountId, senderId }) =>\n isMatrixPluginAuthorizedSender({\n cfg: cfg as CoreConfig,\n accountId,\n senderId,\n }),\n isNativeDeliveryEnabled: ({ cfg, accountId }) =>\n isMatrixExecApprovalClientEnabled({ cfg, accountId }),\n resolveNativeDeliveryMode: ({ cfg, accountId }) =>\n resolveMatrixExecApprovalTarget({ cfg, accountId }),\n requireMatchingTurnSourceChannel: true,\n resolveSuppressionAccountId,\n resolveOriginTarget: resolveMatrixOriginTarget,\n resolveApproverDmTargets: resolveMatrixApproverDmTargets,\n notifyOriginWhenDmOnly: true,\n nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({\n eventKinds: [\"exec\", \"plugin\"],\n isConfigured: ({ cfg, accountId }) =>\n isMatrixAnyApprovalClientEnabled({\n cfg,\n accountId,\n }),\n shouldHandle: ({ cfg, accountId, request }) =>\n shouldHandleMatrixApprovalRequest({\n cfg,\n accountId,\n request,\n }),\n load: async () =>\n (await import(\"./approval-handler.runtime.js\"))\n .matrixApprovalNativeRuntime as unknown as ChannelApprovalNativeRuntimeAdapter,\n }),\n});\n\nconst splitMatrixApprovalCapability = splitChannelApprovalCapability(\n matrixNativeApprovalCapability,\n);\nconst matrixBaseNativeApprovalAdapter = splitMatrixApprovalCapability.native;\nconst matrixBaseDeliveryAdapter = splitMatrixApprovalCapability.delivery;\ntype MatrixForwardingSuppressionParams = Parameters<\n NonNullable<NonNullable<typeof matrixBaseDeliveryAdapter>[\"shouldSuppressForwardingFallback\"]>\n>[0];\nconst matrixDeliveryAdapter = matrixBaseDeliveryAdapter && {\n ...matrixBaseDeliveryAdapter,\n shouldSuppressForwardingFallback: (params: MatrixForwardingSuppressionParams) => {\n const accountId = resolveSuppressionAccountId(params);\n if (\n !hasMatrixApprovalApprovers({\n cfg: params.cfg as CoreConfig,\n accountId,\n approvalKind: params.approvalKind,\n })\n ) {\n return false;\n }\n return matrixBaseDeliveryAdapter.shouldSuppressForwardingFallback?.(params) ?? false;\n },\n};\nconst matrixNativeAdapter = matrixBaseNativeApprovalAdapter && {\n describeDeliveryCapabilities: (\n params: Parameters<typeof matrixBaseNativeApprovalAdapter.describeDeliveryCapabilities>[0],\n ) => {\n const capabilities = matrixBaseNativeApprovalAdapter.describeDeliveryCapabilities(params);\n const hasApprovers = hasMatrixApprovalApprovers({\n cfg: params.cfg as CoreConfig,\n accountId: params.accountId,\n approvalKind: params.approvalKind,\n });\n const clientEnabled = isMatrixApprovalClientEnabled({\n cfg: params.cfg,\n accountId: params.accountId,\n approvalKind: params.approvalKind,\n });\n return {\n ...capabilities,\n enabled: capabilities.enabled && hasApprovers && clientEnabled,\n };\n },\n resolveOriginTarget: matrixBaseNativeApprovalAdapter.resolveOriginTarget,\n resolveApproverDmTargets: matrixBaseNativeApprovalAdapter.resolveApproverDmTargets,\n};\n\nexport const matrixApprovalCapability = createChannelApprovalCapability({\n authorizeActorAction: (params) => {\n if (params.approvalKind !== \"plugin\") {\n return matrixNativeApprovalCapability.authorizeActorAction?.(params) ?? { authorized: true };\n }\n if (\n !hasMatrixPluginApprovers({\n cfg: params.cfg as CoreConfig,\n accountId: params.accountId,\n })\n ) {\n return {\n authorized: false,\n reason: \"\u274C Matrix plugin approvals are not enabled for this bot account.\",\n } as const;\n }\n return matrixApprovalAuth.authorizeActorAction(params);\n },\n getActionAvailabilityState: (params) => {\n if (params.approvalKind === \"plugin\") {\n return availabilityState(\n hasMatrixPluginApprovers({\n cfg: params.cfg as CoreConfig,\n accountId: params.accountId,\n }),\n );\n }\n return (\n matrixNativeApprovalCapability.getActionAvailabilityState?.(params) ?? {\n kind: \"disabled\",\n }\n );\n },\n getExecInitiatingSurfaceState: (params) =>\n matrixNativeApprovalCapability.getExecInitiatingSurfaceState?.(params) ??\n ({ kind: \"disabled\" } as const),\n describeExecApprovalSetup: matrixNativeApprovalCapability.describeExecApprovalSetup,\n delivery: matrixDeliveryAdapter,\n nativeRuntime: matrixNativeApprovalCapability.nativeRuntime,\n native: matrixNativeAdapter,\n render: matrixNativeApprovalCapability.render,\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_shims
|
|
3
|
+
} from "./chunk-G4TIS2SC.js";
|
|
4
|
+
|
|
5
|
+
// src/matrix/sdk/idb-persistence-lock.ts
|
|
6
|
+
init_shims();
|
|
7
|
+
var MATRIX_IDB_PERSIST_INTERVAL_MS = 6e4;
|
|
8
|
+
var IDB_SNAPSHOT_LOCK_STALE_MS = 5 * 6e4;
|
|
9
|
+
var IDB_SNAPSHOT_LOCK_RETRY_BASE = {
|
|
10
|
+
factor: 2,
|
|
11
|
+
minTimeout: 50,
|
|
12
|
+
maxTimeout: 5e3,
|
|
13
|
+
randomize: true
|
|
14
|
+
};
|
|
15
|
+
function computeRetryDelayMs(retries, attempt) {
|
|
16
|
+
return Math.min(
|
|
17
|
+
retries.maxTimeout,
|
|
18
|
+
Math.max(retries.minTimeout, retries.minTimeout * retries.factor ** attempt)
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
function computeMinimumRetryWindowMs(retries) {
|
|
22
|
+
let total = 0;
|
|
23
|
+
const attempts = Math.max(1, retries.retries + 1);
|
|
24
|
+
for (let attempt = 0; attempt < attempts - 1; attempt += 1) {
|
|
25
|
+
total += computeRetryDelayMs(retries, attempt);
|
|
26
|
+
}
|
|
27
|
+
return total;
|
|
28
|
+
}
|
|
29
|
+
function resolveRetriesForMinimumWindowMs(retries, minimumWindowMs) {
|
|
30
|
+
const resolved = {
|
|
31
|
+
...retries,
|
|
32
|
+
retries: 0
|
|
33
|
+
};
|
|
34
|
+
while (computeMinimumRetryWindowMs(resolved) < minimumWindowMs) {
|
|
35
|
+
resolved.retries += 1;
|
|
36
|
+
}
|
|
37
|
+
return resolved;
|
|
38
|
+
}
|
|
39
|
+
var MATRIX_IDB_SNAPSHOT_LOCK_OPTIONS = {
|
|
40
|
+
// Wait longer than one periodic persist interval so a concurrent restore
|
|
41
|
+
// or large snapshot dump finishes instead of forcing warn-and-continue.
|
|
42
|
+
retries: resolveRetriesForMinimumWindowMs(
|
|
43
|
+
IDB_SNAPSHOT_LOCK_RETRY_BASE,
|
|
44
|
+
MATRIX_IDB_PERSIST_INTERVAL_MS
|
|
45
|
+
),
|
|
46
|
+
stale: IDB_SNAPSHOT_LOCK_STALE_MS
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export {
|
|
50
|
+
MATRIX_IDB_PERSIST_INTERVAL_MS,
|
|
51
|
+
computeMinimumRetryWindowMs,
|
|
52
|
+
MATRIX_IDB_SNAPSHOT_LOCK_OPTIONS
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-ERXO3674.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/matrix/sdk/idb-persistence-lock.ts"],
|
|
4
|
+
"sourcesContent": ["import type { FileLockOptions } from \"openclaw/plugin-sdk/infra-runtime\";\n\nexport const MATRIX_IDB_PERSIST_INTERVAL_MS = 60_000;\n\nconst IDB_SNAPSHOT_LOCK_STALE_MS = 5 * 60_000;\nconst IDB_SNAPSHOT_LOCK_RETRY_BASE = {\n factor: 2,\n minTimeout: 50,\n maxTimeout: 5_000,\n randomize: true,\n} satisfies Omit<FileLockOptions[\"retries\"], \"retries\">;\n\nfunction computeRetryDelayMs(retries: FileLockOptions[\"retries\"], attempt: number): number {\n return Math.min(\n retries.maxTimeout,\n Math.max(retries.minTimeout, retries.minTimeout * retries.factor ** attempt),\n );\n}\n\nexport function computeMinimumRetryWindowMs(retries: FileLockOptions[\"retries\"]): number {\n let total = 0;\n const attempts = Math.max(1, retries.retries + 1);\n for (let attempt = 0; attempt < attempts - 1; attempt += 1) {\n total += computeRetryDelayMs(retries, attempt);\n }\n return total;\n}\n\nfunction resolveRetriesForMinimumWindowMs(\n retries: Omit<FileLockOptions[\"retries\"], \"retries\">,\n minimumWindowMs: number,\n): FileLockOptions[\"retries\"] {\n const resolved: FileLockOptions[\"retries\"] = {\n ...retries,\n retries: 0,\n };\n while (computeMinimumRetryWindowMs(resolved) < minimumWindowMs) {\n resolved.retries += 1;\n }\n return resolved;\n}\n\nexport const MATRIX_IDB_SNAPSHOT_LOCK_OPTIONS: FileLockOptions = {\n // Wait longer than one periodic persist interval so a concurrent restore\n // or large snapshot dump finishes instead of forcing warn-and-continue.\n retries: resolveRetriesForMinimumWindowMs(\n IDB_SNAPSHOT_LOCK_RETRY_BASE,\n MATRIX_IDB_PERSIST_INTERVAL_MS,\n ),\n stale: IDB_SNAPSHOT_LOCK_STALE_MS,\n};\n"],
|
|
5
|
+
"mappings": ";;;;;AAAA;AAEO,IAAM,iCAAiC;AAE9C,IAAM,6BAA6B,IAAI;AACvC,IAAM,+BAA+B;AAAA,EACnC,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,SAAS,oBAAoB,SAAqC,SAAyB;AACzF,SAAO,KAAK;AAAA,IACV,QAAQ;AAAA,IACR,KAAK,IAAI,QAAQ,YAAY,QAAQ,aAAa,QAAQ,UAAU,OAAO;AAAA,EAC7E;AACF;AAEO,SAAS,4BAA4B,SAA6C;AACvF,MAAI,QAAQ;AACZ,QAAM,WAAW,KAAK,IAAI,GAAG,QAAQ,UAAU,CAAC;AAChD,WAAS,UAAU,GAAG,UAAU,WAAW,GAAG,WAAW,GAAG;AAC1D,aAAS,oBAAoB,SAAS,OAAO;AAAA,EAC/C;AACA,SAAO;AACT;AAEA,SAAS,iCACP,SACA,iBAC4B;AAC5B,QAAM,WAAuC;AAAA,IAC3C,GAAG;AAAA,IACH,SAAS;AAAA,EACX;AACA,SAAO,4BAA4B,QAAQ,IAAI,iBAAiB;AAC9D,aAAS,WAAW;AAAA,EACtB;AACA,SAAO;AACT;AAEO,IAAM,mCAAoD;AAAA;AAAA;AAAA,EAG/D,SAAS;AAAA,IACP;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|