zeed 0.30.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_experiments/bitcask.cjs +1 -1
- package/dist/_experiments/bitcask.cjs.map +1 -1
- package/dist/_experiments/bitcask.js +1 -1
- package/dist/_experiments/bitcask.js.map +1 -1
- package/dist/browser/base64.cjs +1 -1
- package/dist/browser/base64.js +1 -1
- package/dist/browser/gravatar.cjs +1 -1
- package/dist/browser/gravatar.js +1 -1
- package/dist/browser/index.cjs +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/localstorage.cjs +1 -1
- package/dist/browser/localstorage.js +1 -1
- package/dist/browser/log/index.cjs +1 -1
- package/dist/browser/log/index.js +1 -1
- package/dist/browser/log/log-browser-factory.cjs +1 -1
- package/dist/browser/log/log-browser-factory.js +1 -1
- package/dist/browser/log/log-browser.cjs +1 -1
- package/dist/browser/log/log-browser.js +1 -1
- package/dist/browser/log/log-colors.cjs +1 -1
- package/dist/browser/log/log-colors.js +1 -1
- package/dist/browser/log/log-context-browser.cjs +1 -1
- package/dist/browser/log/log-context-browser.js +1 -1
- package/dist/chunk-2DA6AL7I.cjs +2 -0
- package/dist/chunk-2DA6AL7I.cjs.map +1 -0
- package/dist/chunk-2TNLYCZH.cjs +2 -0
- package/dist/chunk-2TNLYCZH.cjs.map +1 -0
- package/dist/chunk-2UQU3IBA.cjs +2 -0
- package/dist/chunk-2UQU3IBA.cjs.map +1 -0
- package/dist/chunk-2WAMDDFH.js +2 -0
- package/dist/chunk-2WAMDDFH.js.map +1 -0
- package/dist/chunk-2Z7S5FYI.cjs +2 -0
- package/dist/chunk-2Z7S5FYI.cjs.map +1 -0
- package/dist/chunk-33LXA4K5.js +2 -0
- package/dist/chunk-33LXA4K5.js.map +1 -0
- package/dist/chunk-356FY6N3.cjs +2 -0
- package/dist/chunk-356FY6N3.cjs.map +1 -0
- package/dist/chunk-36WQ4IKW.js +2 -0
- package/dist/chunk-36WQ4IKW.js.map +1 -0
- package/dist/chunk-3DRSNK6I.js +2 -0
- package/dist/chunk-3DRSNK6I.js.map +1 -0
- package/dist/chunk-3JFLQVWD.js +2 -0
- package/dist/chunk-3JFLQVWD.js.map +1 -0
- package/dist/chunk-3RVCZS3K.js +2 -0
- package/dist/chunk-3RVCZS3K.js.map +1 -0
- package/dist/chunk-3UFYPVLE.js +2 -0
- package/dist/chunk-3UFYPVLE.js.map +1 -0
- package/dist/chunk-3VVHI55F.js +2 -0
- package/dist/chunk-3VVHI55F.js.map +1 -0
- package/dist/chunk-46BA4GIH.cjs +2 -0
- package/dist/chunk-46BA4GIH.cjs.map +1 -0
- package/dist/chunk-4AGAYWJZ.js +3 -0
- package/dist/chunk-4AGAYWJZ.js.map +1 -0
- package/dist/chunk-4EMMKCLM.js +2 -0
- package/dist/chunk-4EMMKCLM.js.map +1 -0
- package/dist/chunk-4J5M4POX.cjs +2 -0
- package/dist/chunk-4J5M4POX.cjs.map +1 -0
- package/dist/chunk-4LJGPR3T.js +2 -0
- package/dist/chunk-4LJGPR3T.js.map +1 -0
- package/dist/chunk-4O66UBI4.js +2 -0
- package/dist/chunk-4O66UBI4.js.map +1 -0
- package/dist/chunk-4SFHSXQB.cjs +2 -0
- package/dist/chunk-4SFHSXQB.cjs.map +1 -0
- package/dist/chunk-4WJ6G6TB.js +3 -0
- package/dist/chunk-4WJ6G6TB.js.map +1 -0
- package/dist/chunk-4XMXPBU6.js +4 -0
- package/dist/chunk-4XMXPBU6.js.map +1 -0
- package/dist/chunk-4ZGW73OY.js +7 -0
- package/dist/chunk-4ZGW73OY.js.map +1 -0
- package/dist/chunk-573BOCQJ.cjs +4 -0
- package/dist/chunk-573BOCQJ.cjs.map +1 -0
- package/dist/chunk-5BKHUJEL.cjs +2 -0
- package/dist/chunk-5BKHUJEL.cjs.map +1 -0
- package/dist/chunk-5GKJ7XS3.js +2 -0
- package/dist/chunk-5GKJ7XS3.js.map +1 -0
- package/dist/chunk-5KCCXCKX.js +2 -0
- package/dist/chunk-5KCCXCKX.js.map +1 -0
- package/dist/chunk-5LJX2B5U.cjs +7 -0
- package/dist/chunk-5LJX2B5U.cjs.map +1 -0
- package/dist/chunk-5NKC2EQJ.js +2 -0
- package/dist/chunk-5XASXL7S.cjs +2 -0
- package/dist/chunk-5XASXL7S.cjs.map +1 -0
- package/dist/chunk-5YA3GKS6.js +2 -0
- package/dist/chunk-5YA3GKS6.js.map +1 -0
- package/dist/chunk-664DO52P.cjs +2 -0
- package/dist/chunk-664DO52P.cjs.map +1 -0
- package/dist/chunk-6EQDC7VW.js +2 -0
- package/dist/chunk-6EQDC7VW.js.map +1 -0
- package/dist/chunk-6KJ2KN5I.cjs +2 -0
- package/dist/chunk-6KJ2KN5I.cjs.map +1 -0
- package/dist/chunk-6PAAV5JC.js +2 -0
- package/dist/chunk-6PAAV5JC.js.map +1 -0
- package/dist/chunk-6VBMDFEN.js +2 -0
- package/dist/chunk-6VBMDFEN.js.map +1 -0
- package/dist/chunk-6YOH5J2L.cjs +2 -0
- package/dist/chunk-6YOH5J2L.cjs.map +1 -0
- package/dist/chunk-6YZ44WGL.js +2 -0
- package/dist/chunk-6YZ44WGL.js.map +1 -0
- package/dist/chunk-735P6WKL.cjs +2 -0
- package/dist/chunk-735P6WKL.cjs.map +1 -0
- package/dist/chunk-74FSD5GL.cjs +2 -0
- package/dist/chunk-74FSD5GL.cjs.map +1 -0
- package/dist/chunk-7E743PHO.cjs +2 -0
- package/dist/chunk-7E743PHO.cjs.map +1 -0
- package/dist/chunk-7FZWUO5Y.js +2 -0
- package/dist/chunk-7FZWUO5Y.js.map +1 -0
- package/dist/chunk-7KVXRLFA.js +2 -0
- package/dist/chunk-7KVXRLFA.js.map +1 -0
- package/dist/chunk-7PFLOISU.js +2 -0
- package/dist/chunk-7PFLOISU.js.map +1 -0
- package/dist/chunk-7QVUB3F6.js +2 -0
- package/dist/chunk-7QVUB3F6.js.map +1 -0
- package/dist/chunk-7RB3DVDJ.cjs +2 -0
- package/dist/chunk-7RB3DVDJ.cjs.map +1 -0
- package/dist/chunk-7UA33BQW.cjs +2 -0
- package/dist/chunk-7UA33BQW.cjs.map +1 -0
- package/dist/chunk-7ZAKESWB.js +2 -0
- package/dist/chunk-7ZAKESWB.js.map +1 -0
- package/dist/chunk-A3GICSD3.js +2 -0
- package/dist/chunk-A3GICSD3.js.map +1 -0
- package/dist/chunk-AH7ZMSSE.cjs +2 -0
- package/dist/chunk-AH7ZMSSE.cjs.map +1 -0
- package/dist/chunk-AHDJ25ET.cjs +2 -0
- package/dist/chunk-AHDJ25ET.cjs.map +1 -0
- package/dist/chunk-ALQOXSUC.cjs +2 -0
- package/dist/chunk-ALQOXSUC.cjs.map +1 -0
- package/dist/chunk-AMTND5E7.js +3 -0
- package/dist/chunk-AMTND5E7.js.map +1 -0
- package/dist/chunk-AWVUZMP6.js +2 -0
- package/dist/chunk-AWVUZMP6.js.map +1 -0
- package/dist/chunk-B2XPF5R4.cjs +2 -0
- package/dist/chunk-B2XPF5R4.cjs.map +1 -0
- package/dist/chunk-BD6SRKBH.cjs +2 -0
- package/dist/chunk-BD6SRKBH.cjs.map +1 -0
- package/dist/chunk-BECJLJLE.js +2 -0
- package/dist/chunk-BECJLJLE.js.map +1 -0
- package/dist/chunk-BG2T6PCH.js +3 -0
- package/dist/chunk-BG2T6PCH.js.map +1 -0
- package/dist/chunk-BK23A7JR.cjs +2 -0
- package/dist/chunk-BK23A7JR.cjs.map +1 -0
- package/dist/chunk-BNLACAUM.cjs +2 -0
- package/dist/chunk-BNLACAUM.cjs.map +1 -0
- package/dist/chunk-BOPTOHBX.cjs +2 -0
- package/dist/chunk-BOPTOHBX.cjs.map +1 -0
- package/dist/chunk-BPKEIC4K.js +2 -0
- package/dist/chunk-BPKEIC4K.js.map +1 -0
- package/dist/chunk-BPWOWVF7.cjs +2 -0
- package/dist/chunk-BPWOWVF7.cjs.map +1 -0
- package/dist/chunk-C3K57SFI.js +2 -0
- package/dist/chunk-C3K57SFI.js.map +1 -0
- package/dist/chunk-C7CD7VGT.cjs +2 -0
- package/dist/chunk-C7CD7VGT.cjs.map +1 -0
- package/dist/chunk-CAPXDOMI.cjs +2 -0
- package/dist/chunk-CAPXDOMI.cjs.map +1 -0
- package/dist/chunk-CESLI4UB.js +2 -0
- package/dist/chunk-CESLI4UB.js.map +1 -0
- package/dist/chunk-CGQVOMRY.cjs +2 -0
- package/dist/chunk-CGQVOMRY.cjs.map +1 -0
- package/dist/chunk-CHUK5BAO.js +2 -0
- package/dist/chunk-CHUK5BAO.js.map +1 -0
- package/dist/chunk-CJJEPS3S.js +2 -0
- package/dist/chunk-CJJEPS3S.js.map +1 -0
- package/dist/chunk-DCIYTIVV.js +2 -0
- package/dist/chunk-DCIYTIVV.js.map +1 -0
- package/dist/chunk-DE27NHZF.js +2 -0
- package/dist/chunk-DE27NHZF.js.map +1 -0
- package/dist/chunk-DKE2SU6L.js +2 -0
- package/dist/chunk-DKE2SU6L.js.map +1 -0
- package/dist/chunk-DKRJCI55.js +2 -0
- package/dist/chunk-DKRJCI55.js.map +1 -0
- package/dist/chunk-DNA22P2P.js +2 -0
- package/dist/chunk-DNA22P2P.js.map +1 -0
- package/dist/chunk-DTJO6YRX.js +2 -0
- package/dist/chunk-DTJO6YRX.js.map +1 -0
- package/dist/chunk-DUWPMFWE.js +2 -0
- package/dist/chunk-DUWPMFWE.js.map +1 -0
- package/dist/chunk-E3XFPPHL.js +2 -0
- package/dist/chunk-E3XFPPHL.js.map +1 -0
- package/dist/chunk-EDPEKNWY.js +2 -0
- package/dist/chunk-EDPEKNWY.js.map +1 -0
- package/dist/chunk-EDSVVQKJ.cjs +2 -0
- package/dist/chunk-EDSVVQKJ.cjs.map +1 -0
- package/dist/chunk-EHBBJYSJ.js +2 -0
- package/dist/chunk-EHBBJYSJ.js.map +1 -0
- package/dist/chunk-EKJTR2UV.js +2 -0
- package/dist/chunk-EKJTR2UV.js.map +1 -0
- package/dist/chunk-ELEMAZEF.cjs +2 -0
- package/dist/chunk-ELEMAZEF.cjs.map +1 -0
- package/dist/chunk-ESODSJEY.js +2 -0
- package/dist/chunk-ESODSJEY.js.map +1 -0
- package/dist/chunk-EWCM2YDA.cjs +2 -0
- package/dist/chunk-EWCM2YDA.cjs.map +1 -0
- package/dist/chunk-F2B4OXR3.js +2 -0
- package/dist/chunk-F2B4OXR3.js.map +1 -0
- package/dist/chunk-F4GRMBV3.cjs +2 -0
- package/dist/chunk-F4GRMBV3.cjs.map +1 -0
- package/dist/chunk-FEFDFQGF.cjs +2 -0
- package/dist/chunk-FEFDFQGF.cjs.map +1 -0
- package/dist/chunk-FG7OTMAN.js +2 -0
- package/dist/chunk-FG7OTMAN.js.map +1 -0
- package/dist/chunk-FS34EYGN.cjs +2 -0
- package/dist/chunk-FS34EYGN.cjs.map +1 -0
- package/dist/chunk-G3CV2GDT.cjs +2 -0
- package/dist/chunk-G3CV2GDT.cjs.map +1 -0
- package/dist/chunk-G5ZK4DLC.js +8 -0
- package/dist/chunk-G5ZK4DLC.js.map +1 -0
- package/dist/chunk-GAJVPW4Z.js +2 -0
- package/dist/chunk-GAJVPW4Z.js.map +1 -0
- package/dist/chunk-GAOCL7A2.js +2 -0
- package/dist/chunk-GAOCL7A2.js.map +1 -0
- package/dist/chunk-GEA7A4S2.js +2 -0
- package/dist/chunk-GEA7A4S2.js.map +1 -0
- package/dist/chunk-GKWNGFS2.js +2 -0
- package/dist/chunk-GKWNGFS2.js.map +1 -0
- package/dist/chunk-GZLUG4MW.js +2 -0
- package/dist/chunk-GZLUG4MW.js.map +1 -0
- package/dist/chunk-H4WNOG2M.js +2 -0
- package/dist/chunk-H4WNOG2M.js.map +1 -0
- package/dist/chunk-HAXPVYWL.cjs +2 -0
- package/dist/chunk-HAXPVYWL.cjs.map +1 -0
- package/dist/chunk-HY7JVEEC.cjs +8 -0
- package/dist/chunk-HY7JVEEC.cjs.map +1 -0
- package/dist/chunk-HZC2RTNS.cjs +2 -0
- package/dist/chunk-HZC2RTNS.cjs.map +1 -0
- package/dist/chunk-I5HBI6EC.cjs +2 -0
- package/dist/chunk-I5HBI6EC.cjs.map +1 -0
- package/dist/chunk-IA2OMOCB.cjs +5 -0
- package/dist/chunk-IA2OMOCB.cjs.map +1 -0
- package/dist/chunk-IFQI6QWA.js +2 -0
- package/dist/chunk-IFQI6QWA.js.map +1 -0
- package/dist/chunk-IJE3VBKC.cjs +2 -0
- package/dist/chunk-IJE3VBKC.cjs.map +1 -0
- package/dist/chunk-IMDJWNYI.js +2 -0
- package/dist/chunk-IMDJWNYI.js.map +1 -0
- package/dist/chunk-IRWPUQDQ.js +2 -0
- package/dist/chunk-IRWPUQDQ.js.map +1 -0
- package/dist/chunk-IYBY6ENO.js +2 -0
- package/dist/chunk-IYBY6ENO.js.map +1 -0
- package/dist/chunk-J4QBVZBL.cjs +2 -0
- package/dist/chunk-J4QBVZBL.cjs.map +1 -0
- package/dist/chunk-JAKUA4CC.cjs +2 -0
- package/dist/chunk-JAKUA4CC.cjs.map +1 -0
- package/dist/chunk-JDYZOWCH.js +5 -0
- package/dist/chunk-JDYZOWCH.js.map +1 -0
- package/dist/chunk-JEUNF2E5.js +2 -0
- package/dist/chunk-JEUNF2E5.js.map +1 -0
- package/dist/chunk-JI2SU7DD.js +3 -0
- package/dist/chunk-JI2SU7DD.js.map +1 -0
- package/dist/chunk-JIGM7UIK.cjs +2 -0
- package/dist/chunk-JIGM7UIK.cjs.map +1 -0
- package/dist/chunk-JJKWFF7B.cjs +2 -0
- package/dist/chunk-JJKWFF7B.cjs.map +1 -0
- package/dist/chunk-JLR4JDBT.cjs +2 -0
- package/dist/chunk-JLR4JDBT.cjs.map +1 -0
- package/dist/chunk-JTGBINRM.js +3 -0
- package/dist/chunk-JTGBINRM.js.map +1 -0
- package/dist/chunk-JTU7AMO4.cjs +2 -0
- package/dist/chunk-JTU7AMO4.cjs.map +1 -0
- package/dist/chunk-JTXS32AJ.js +2 -0
- package/dist/chunk-JTXS32AJ.js.map +1 -0
- package/dist/chunk-JU2ZJK7V.js +2 -0
- package/dist/chunk-JU2ZJK7V.js.map +1 -0
- package/dist/chunk-K7WC72DE.js +2 -0
- package/dist/chunk-K7WC72DE.js.map +1 -0
- package/dist/chunk-KFNJHRCB.cjs +2 -0
- package/dist/chunk-KFNJHRCB.cjs.map +1 -0
- package/dist/chunk-KIBCXH3E.cjs +2 -0
- package/dist/chunk-KIBCXH3E.cjs.map +1 -0
- package/dist/chunk-L2K4IPFV.js +2 -0
- package/dist/chunk-L2K4IPFV.js.map +1 -0
- package/dist/chunk-L5C7BHMX.cjs +2 -0
- package/dist/chunk-L5C7BHMX.cjs.map +1 -0
- package/dist/chunk-L5O4ALWK.js +2 -0
- package/dist/chunk-L5O4ALWK.js.map +1 -0
- package/dist/chunk-L64LE746.cjs +2 -0
- package/dist/chunk-L64LE746.cjs.map +1 -0
- package/dist/chunk-L6SJJRKH.js +2 -0
- package/dist/chunk-L6SJJRKH.js.map +1 -0
- package/dist/chunk-L7AYZUM4.cjs +4 -0
- package/dist/chunk-L7AYZUM4.cjs.map +1 -0
- package/dist/chunk-LEWY2ZUN.js +2 -0
- package/dist/chunk-LEWY2ZUN.js.map +1 -0
- package/dist/chunk-LF5ISG66.js +2 -0
- package/dist/chunk-LF5ISG66.js.map +1 -0
- package/dist/chunk-LGCIN6JD.cjs +2 -0
- package/dist/chunk-LGCIN6JD.cjs.map +1 -0
- package/dist/chunk-LH2HC3SU.cjs +3 -0
- package/dist/chunk-LH2HC3SU.cjs.map +1 -0
- package/dist/chunk-LJ47LTYI.js +2 -0
- package/dist/chunk-LJ47LTYI.js.map +1 -0
- package/dist/chunk-LLRM7AW7.cjs +2 -0
- package/dist/chunk-LLRM7AW7.cjs.map +1 -0
- package/dist/chunk-LWZRNWDZ.js +2 -0
- package/dist/chunk-LWZRNWDZ.js.map +1 -0
- package/dist/chunk-LXMVVR3R.js +2 -0
- package/dist/chunk-LXMVVR3R.js.map +1 -0
- package/dist/chunk-M55SKGQK.js +2 -0
- package/dist/chunk-M55SKGQK.js.map +1 -0
- package/dist/chunk-MJ5QCGLD.js +2 -0
- package/dist/chunk-MJ5QCGLD.js.map +1 -0
- package/dist/chunk-MJG262P5.cjs +2 -0
- package/dist/chunk-MJG262P5.cjs.map +1 -0
- package/dist/chunk-MKVMNYMW.js +2 -0
- package/dist/chunk-MKVMNYMW.js.map +1 -0
- package/dist/chunk-MNUDDM7L.js +2 -0
- package/dist/chunk-MPU7CBX7.cjs +2 -0
- package/dist/chunk-MPU7CBX7.cjs.map +1 -0
- package/dist/chunk-MQFII6MR.cjs +2 -0
- package/dist/chunk-MQFII6MR.cjs.map +1 -0
- package/dist/chunk-MXWOW7YV.cjs +2 -0
- package/dist/chunk-MXWOW7YV.cjs.map +1 -0
- package/dist/chunk-MZ6M6CGX.cjs +2 -0
- package/dist/chunk-MZ6M6CGX.cjs.map +1 -0
- package/dist/chunk-MZXR2OHD.js +2 -0
- package/dist/chunk-MZXR2OHD.js.map +1 -0
- package/dist/chunk-N7XCSNC7.cjs +2 -0
- package/dist/chunk-N7XCSNC7.cjs.map +1 -0
- package/dist/chunk-NLKATUWT.cjs +2 -0
- package/dist/chunk-NLKATUWT.cjs.map +1 -0
- package/dist/chunk-NRT3HHRU.cjs +2 -0
- package/dist/chunk-NRT3HHRU.cjs.map +1 -0
- package/dist/chunk-O374Z5NR.cjs +2 -0
- package/dist/chunk-O374Z5NR.cjs.map +1 -0
- package/dist/chunk-O5QH7LLM.cjs +2 -0
- package/dist/chunk-O5QH7LLM.cjs.map +1 -0
- package/dist/chunk-OBGRJOU2.cjs +2 -0
- package/dist/chunk-OBGRJOU2.cjs.map +1 -0
- package/dist/chunk-OFBUT6DG.js +2 -0
- package/dist/chunk-OFBUT6DG.js.map +1 -0
- package/dist/chunk-OFD5OA4D.cjs +2 -0
- package/dist/chunk-OFD5OA4D.cjs.map +1 -0
- package/dist/chunk-OLRCP6EG.cjs +3 -0
- package/dist/chunk-OLRCP6EG.cjs.map +1 -0
- package/dist/chunk-ONPGFM6G.cjs +2 -0
- package/dist/chunk-ONPGFM6G.cjs.map +1 -0
- package/dist/chunk-OUECSWGN.js +2 -0
- package/dist/chunk-OUECSWGN.js.map +1 -0
- package/dist/chunk-OVU5QT5W.cjs +2 -0
- package/dist/chunk-OVU5QT5W.cjs.map +1 -0
- package/dist/chunk-OX6Y3BMM.cjs +2 -0
- package/dist/chunk-OX6Y3BMM.cjs.map +1 -0
- package/dist/chunk-P7XCQ7WV.cjs +2 -0
- package/dist/chunk-P7XCQ7WV.cjs.map +1 -0
- package/dist/chunk-PGWYCFBN.js +2 -0
- package/dist/chunk-PGWYCFBN.js.map +1 -0
- package/dist/chunk-PKTW5XZA.js +2 -0
- package/dist/chunk-PKTW5XZA.js.map +1 -0
- package/dist/chunk-PUVOET32.cjs +2 -0
- package/dist/chunk-PUVOET32.cjs.map +1 -0
- package/dist/chunk-QBRZK66W.js +4 -0
- package/dist/chunk-QBRZK66W.js.map +1 -0
- package/dist/chunk-QIKYGLDI.cjs +2 -0
- package/dist/chunk-QIKYGLDI.cjs.map +1 -0
- package/dist/chunk-QMEJAKAQ.js +2 -0
- package/dist/chunk-QMEJAKAQ.js.map +1 -0
- package/dist/chunk-QPEDLXS5.cjs +2 -0
- package/dist/chunk-QPEDLXS5.cjs.map +1 -0
- package/dist/chunk-QZDQUXTS.cjs +2 -0
- package/dist/chunk-QZDQUXTS.cjs.map +1 -0
- package/dist/chunk-R74LEJVE.cjs +2 -0
- package/dist/chunk-R74LEJVE.cjs.map +1 -0
- package/dist/chunk-RAXM7FU3.cjs +2 -0
- package/dist/chunk-RAXM7FU3.cjs.map +1 -0
- package/dist/chunk-RMNY7B3P.cjs +2 -0
- package/dist/chunk-RMNY7B3P.cjs.map +1 -0
- package/dist/chunk-RRIQPQ4L.js +2 -0
- package/dist/chunk-RRIQPQ4L.js.map +1 -0
- package/dist/chunk-S5MOVNFZ.js +2 -0
- package/dist/chunk-S5MOVNFZ.js.map +1 -0
- package/dist/chunk-SCMIPQZH.js +2 -0
- package/dist/chunk-SCMIPQZH.js.map +1 -0
- package/dist/chunk-SINRSKMZ.js +2 -0
- package/dist/chunk-SINRSKMZ.js.map +1 -0
- package/dist/chunk-SOQFZNT5.js +2 -0
- package/dist/chunk-SOQFZNT5.js.map +1 -0
- package/dist/chunk-STZTE6KH.cjs +3 -0
- package/dist/chunk-STZTE6KH.cjs.map +1 -0
- package/dist/chunk-SU5CYW6K.cjs +2 -0
- package/dist/chunk-SU5CYW6K.cjs.map +1 -0
- package/dist/chunk-TRFNFCHU.cjs +2 -0
- package/dist/chunk-TRFNFCHU.cjs.map +1 -0
- package/dist/chunk-TZIJSJIN.cjs +3 -0
- package/dist/chunk-TZIJSJIN.cjs.map +1 -0
- package/dist/chunk-U2A3BCZK.cjs +2 -0
- package/dist/chunk-U2A3BCZK.cjs.map +1 -0
- package/dist/chunk-U5PG2BGY.js +2 -0
- package/dist/chunk-U5PG2BGY.js.map +1 -0
- package/dist/chunk-UCS53L2H.cjs +2 -0
- package/dist/chunk-UCS53L2H.cjs.map +1 -0
- package/dist/chunk-UJNQPYIF.js +2 -0
- package/dist/chunk-UJNQPYIF.js.map +1 -0
- package/dist/chunk-UKHQYLKV.js +2 -0
- package/dist/chunk-UKHQYLKV.js.map +1 -0
- package/dist/chunk-UMYL2PX5.js +2 -0
- package/dist/chunk-UMYL2PX5.js.map +1 -0
- package/dist/chunk-UNJZ22WX.js +2 -0
- package/dist/chunk-UNJZ22WX.js.map +1 -0
- package/dist/chunk-UU3C5532.cjs +2 -0
- package/dist/chunk-UU3C5532.cjs.map +1 -0
- package/dist/chunk-UV7JEZC2.js +2 -0
- package/dist/chunk-UV7JEZC2.js.map +1 -0
- package/dist/chunk-V6T5OEPF.js +3 -0
- package/dist/chunk-V6T5OEPF.js.map +1 -0
- package/dist/chunk-V7PT2XFC.cjs +2 -0
- package/dist/chunk-V7PT2XFC.cjs.map +1 -0
- package/dist/chunk-VCC6K24Y.cjs +2 -0
- package/dist/chunk-VCC6K24Y.cjs.map +1 -0
- package/dist/chunk-VIBF2JX4.js +2 -0
- package/dist/chunk-VIBF2JX4.js.map +1 -0
- package/dist/chunk-VKDJH4XY.js +2 -0
- package/dist/chunk-VKDJH4XY.js.map +1 -0
- package/dist/chunk-VS72RVG5.js +2 -0
- package/dist/chunk-VS72RVG5.js.map +1 -0
- package/dist/chunk-VWJZWXTJ.cjs +2 -0
- package/dist/chunk-VWJZWXTJ.cjs.map +1 -0
- package/dist/chunk-W4WB3XUA.cjs +2 -0
- package/dist/chunk-W4WB3XUA.cjs.map +1 -0
- package/dist/chunk-W7JECVVW.cjs +2 -0
- package/dist/chunk-W7JECVVW.cjs.map +1 -0
- package/dist/chunk-WBVYH6AD.cjs +2 -0
- package/dist/chunk-WBVYH6AD.cjs.map +1 -0
- package/dist/chunk-WCOWHFZD.cjs +2 -0
- package/dist/chunk-WCOWHFZD.cjs.map +1 -0
- package/dist/chunk-WIEJE3NV.cjs +3 -0
- package/dist/chunk-WIEJE3NV.cjs.map +1 -0
- package/dist/chunk-WQ3XRIU3.js +2 -0
- package/dist/chunk-WQ3XRIU3.js.map +1 -0
- package/dist/chunk-WSRQ3X55.cjs +2 -0
- package/dist/chunk-WSRQ3X55.cjs.map +1 -0
- package/dist/chunk-X57X7BQP.cjs +3 -0
- package/dist/chunk-X57X7BQP.cjs.map +1 -0
- package/dist/chunk-X6OPSTQX.js +2 -0
- package/dist/chunk-X6OPSTQX.js.map +1 -0
- package/dist/chunk-X764QBCC.cjs +2 -0
- package/dist/chunk-X764QBCC.cjs.map +1 -0
- package/dist/chunk-XBDYQAT5.cjs +2 -0
- package/dist/chunk-XBDYQAT5.cjs.map +1 -0
- package/dist/chunk-XD6CEML3.cjs +2 -0
- package/dist/chunk-XD6CEML3.cjs.map +1 -0
- package/dist/chunk-XH7UHZOF.cjs +2 -0
- package/dist/chunk-XH7UHZOF.cjs.map +1 -0
- package/dist/chunk-XI5OG3BF.js +2 -0
- package/dist/chunk-XI5OG3BF.js.map +1 -0
- package/dist/chunk-XMUXVBF2.cjs +2 -0
- package/dist/chunk-XMUXVBF2.cjs.map +1 -0
- package/dist/chunk-XX5NP5VA.cjs +2 -0
- package/dist/chunk-XX5NP5VA.cjs.map +1 -0
- package/dist/chunk-Y3DZI3Y4.js +2 -0
- package/dist/chunk-Y3DZI3Y4.js.map +1 -0
- package/dist/chunk-YK5F7E3W.js +2 -0
- package/dist/chunk-YK5F7E3W.js.map +1 -0
- package/dist/chunk-YMRND74M.cjs +2 -0
- package/dist/chunk-YMRND74M.cjs.map +1 -0
- package/dist/chunk-YTXUPPAQ.js +2 -0
- package/dist/chunk-YTXUPPAQ.js.map +1 -0
- package/dist/chunk-YY4O3W2T.cjs +2 -0
- package/dist/chunk-YY4O3W2T.cjs.map +1 -0
- package/dist/chunk-YZZXGDL3.js +2 -0
- package/dist/chunk-YZZXGDL3.js.map +1 -0
- package/dist/chunk-Z7QS7VD4.cjs +2 -0
- package/dist/chunk-Z7QS7VD4.cjs.map +1 -0
- package/dist/chunk-ZCSTDMMY.cjs +2 -0
- package/dist/chunk-ZCSTDMMY.cjs.map +1 -0
- package/dist/chunk-ZT2C4IG3.js +2 -0
- package/dist/chunk-ZT2C4IG3.js.map +1 -0
- package/dist/chunk-ZZAUZPWH.cjs +3 -0
- package/dist/chunk-ZZAUZPWH.cjs.map +1 -0
- package/dist/chunk-ZZSSJORW.cjs +2 -0
- package/dist/chunk-ZZSSJORW.cjs.map +1 -0
- package/dist/common/assert.cjs +1 -1
- package/dist/common/assert.js +1 -1
- package/dist/common/bin/index.cjs +1 -1
- package/dist/common/bin/index.js +1 -1
- package/dist/common/bin/lib0/binary.cjs +1 -1
- package/dist/common/bin/lib0/binary.js +1 -1
- package/dist/common/bin/lib0/buffer.cjs +1 -1
- package/dist/common/bin/lib0/buffer.cjs.map +1 -1
- package/dist/common/bin/lib0/buffer.js +1 -1
- package/dist/common/bin/lib0/buffer.js.map +1 -1
- package/dist/common/bin/lib0/create.cjs +1 -1
- package/dist/common/bin/lib0/create.js +1 -1
- package/dist/common/bin/lib0/decoding.cjs +1 -1
- package/dist/common/bin/lib0/decoding.js +1 -1
- package/dist/common/bin/lib0/encoding.cjs +1 -1
- package/dist/common/bin/lib0/encoding.js +1 -1
- package/dist/common/bin/lib0/string.cjs +1 -1
- package/dist/common/bin/lib0/string.js +1 -1
- package/dist/common/crypto/aes-sealed.cjs +1 -1
- package/dist/common/crypto/aes-sealed.js +1 -1
- package/dist/common/crypto/crypto.cjs +1 -1
- package/dist/common/crypto/crypto.js +1 -1
- package/dist/common/crypto/index.cjs +1 -1
- package/dist/common/crypto/index.js +1 -1
- package/dist/common/crypto/xaes.cjs +1 -1
- package/dist/common/crypto/xaes.js +1 -1
- package/dist/common/csv.cjs +1 -1
- package/dist/common/csv.js +1 -1
- package/dist/common/data/array.cjs +1 -1
- package/dist/common/data/array.js +1 -1
- package/dist/common/data/basex-secure.cjs +1 -1
- package/dist/common/data/basex-secure.js +1 -1
- package/dist/common/data/basex.cjs +1 -1
- package/dist/common/data/basex.js +1 -1
- package/dist/common/data/bin.cjs +1 -1
- package/dist/common/data/bin.js +1 -1
- package/dist/common/data/camelcase.cjs +1 -1
- package/dist/common/data/camelcase.js +1 -1
- package/dist/common/data/convert.cjs +1 -1
- package/dist/common/data/convert.js +1 -1
- package/dist/common/data/datauri.cjs +1 -1
- package/dist/common/data/datauri.js +1 -1
- package/dist/common/data/day-legacy.cjs +1 -1
- package/dist/common/data/day-legacy.js +1 -1
- package/dist/common/data/day.cjs +1 -1
- package/dist/common/data/day.js +1 -1
- package/dist/common/data/decimal.cjs +1 -1
- package/dist/common/data/decimal.js +1 -1
- package/dist/common/data/deep.cjs +1 -1
- package/dist/common/data/deep.js +1 -1
- package/dist/common/data/diff.cjs +1 -1
- package/dist/common/data/diff.js +1 -1
- package/dist/common/data/distributed.cjs +1 -1
- package/dist/common/data/distributed.js +1 -1
- package/dist/common/data/format.cjs +1 -1
- package/dist/common/data/format.js +1 -1
- package/dist/common/data/html.cjs +1 -1
- package/dist/common/data/html.js +1 -1
- package/dist/common/data/index.cjs +1 -1
- package/dist/common/data/index.js +1 -1
- package/dist/common/data/is.cjs +1 -1
- package/dist/common/data/is.js +1 -1
- package/dist/common/data/json.cjs +1 -1
- package/dist/common/data/json.js +1 -1
- package/dist/common/data/list.cjs +1 -1
- package/dist/common/data/list.js +1 -1
- package/dist/common/data/math.cjs +1 -1
- package/dist/common/data/math.js +1 -1
- package/dist/common/data/message.cjs +1 -1
- package/dist/common/data/message.js +1 -1
- package/dist/common/data/object-changes.cjs +1 -1
- package/dist/common/data/object-changes.js +1 -1
- package/dist/common/data/object.cjs +1 -1
- package/dist/common/data/object.js +1 -1
- package/dist/common/data/orderby.cjs +1 -1
- package/dist/common/data/orderby.js +1 -1
- package/dist/common/data/path.cjs +1 -1
- package/dist/common/data/path.js +1 -1
- package/dist/common/data/regexp.cjs +1 -1
- package/dist/common/data/regexp.js +1 -1
- package/dist/common/data/rounding.cjs +1 -1
- package/dist/common/data/rounding.js +1 -1
- package/dist/common/data/signal.cjs +1 -1
- package/dist/common/data/signal.js +1 -1
- package/dist/common/data/sortable.cjs +1 -1
- package/dist/common/data/sortable.js +1 -1
- package/dist/common/data/sorted.cjs +1 -1
- package/dist/common/data/sorted.js +1 -1
- package/dist/common/data/string-deburr.cjs +1 -1
- package/dist/common/data/string-deburr.js +1 -1
- package/dist/common/data/string-hash-fnv.cjs +1 -1
- package/dist/common/data/string-hash-fnv.js +1 -1
- package/dist/common/data/string-hash-pool.cjs +1 -1
- package/dist/common/data/string-hash-pool.js +1 -1
- package/dist/common/data/url.cjs +1 -1
- package/dist/common/data/url.js +1 -1
- package/dist/common/data/utils.cjs +1 -1
- package/dist/common/data/utils.js +1 -1
- package/dist/common/data/wordlist.cjs +1 -1
- package/dist/common/data/wordlist.js +1 -1
- package/dist/common/data/xrx.cjs +1 -1
- package/dist/common/data/xrx.js +1 -1
- package/dist/common/dispose-defer.cjs +1 -1
- package/dist/common/dispose-defer.js +1 -1
- package/dist/common/dispose-utils.cjs +1 -1
- package/dist/common/dispose-utils.js +1 -1
- package/dist/common/exec/index.cjs +1 -1
- package/dist/common/exec/index.js +1 -1
- package/dist/common/exec/mutex.cjs +1 -1
- package/dist/common/exec/mutex.js +1 -1
- package/dist/common/exec/pool.cjs +1 -1
- package/dist/common/exec/pool.js +1 -1
- package/dist/common/exec/progress.cjs +1 -1
- package/dist/common/exec/progress.js +1 -1
- package/dist/common/exec/promise.cjs +1 -1
- package/dist/common/exec/promise.js +1 -1
- package/dist/common/exec/queue.cjs +1 -1
- package/dist/common/exec/queue.js +1 -1
- package/dist/common/exec/throttle-debounce.cjs +1 -1
- package/dist/common/exec/throttle-debounce.js +1 -1
- package/dist/common/global.cjs +1 -1
- package/dist/common/global.js +1 -1
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.js +1 -1
- package/dist/common/localhost.cjs +1 -1
- package/dist/common/localhost.js +1 -1
- package/dist/common/log/index.cjs +1 -1
- package/dist/common/log/index.js +1 -1
- package/dist/common/log/log-base.cjs +1 -1
- package/dist/common/log/log-base.js +1 -1
- package/dist/common/log/log-colors.cjs +1 -1
- package/dist/common/log/log-colors.js +1 -1
- package/dist/common/log/log-config.cjs +1 -1
- package/dist/common/log/log-config.js +1 -1
- package/dist/common/log/log-console-capture.cjs +1 -1
- package/dist/common/log/log-console-capture.js +1 -1
- package/dist/common/log/log-console-original.cjs +1 -1
- package/dist/common/log/log-console-original.js +1 -1
- package/dist/common/log/log-console.cjs +1 -1
- package/dist/common/log/log-console.js +1 -1
- package/dist/common/log/log-context.cjs +1 -1
- package/dist/common/log/log-context.js +1 -1
- package/dist/common/log/log-filter.cjs +1 -1
- package/dist/common/log/log-filter.js +1 -1
- package/dist/common/log/log-memory.cjs +1 -1
- package/dist/common/log/log-memory.js +1 -1
- package/dist/common/log/log-noop.cjs +1 -1
- package/dist/common/log/log-noop.js +1 -1
- package/dist/common/log/log.cjs +1 -1
- package/dist/common/log/log.js +1 -1
- package/dist/common/msg/channel-debug.cjs +1 -1
- package/dist/common/msg/channel-debug.js +1 -1
- package/dist/common/msg/channel-local.cjs +1 -1
- package/dist/common/msg/channel-local.js +1 -1
- package/dist/common/msg/channel-resilient.cjs +1 -1
- package/dist/common/msg/channel-resilient.js +1 -1
- package/dist/common/msg/channel.cjs +1 -1
- package/dist/common/msg/channel.js +1 -1
- package/dist/common/msg/emitter.cjs +1 -1
- package/dist/common/msg/emitter.js +1 -1
- package/dist/common/msg/encoder.cjs +1 -1
- package/dist/common/msg/encoder.js +1 -1
- package/dist/common/msg/index.cjs +1 -1
- package/dist/common/msg/index.js +1 -1
- package/dist/common/msg/messages.cjs +1 -1
- package/dist/common/msg/messages.js +1 -1
- package/dist/common/msg/pubsub.cjs +1 -1
- package/dist/common/msg/pubsub.js +1 -1
- package/dist/common/msg/rpc.cjs +1 -1
- package/dist/common/msg/rpc.js +1 -1
- package/dist/common/network.cjs +1 -1
- package/dist/common/network.js +1 -1
- package/dist/common/platform.cjs +1 -1
- package/dist/common/platform.js +1 -1
- package/dist/common/schema/export-json-schema.cjs +1 -1
- package/dist/common/schema/export-json-schema.js +1 -1
- package/dist/common/schema/export-swift.cjs +1 -1
- package/dist/common/schema/export-swift.js +1 -1
- package/dist/common/schema/export-typescript.cjs +1 -1
- package/dist/common/schema/export-typescript.js +1 -1
- package/dist/common/schema/index.cjs +1 -1
- package/dist/common/schema/index.js +1 -1
- package/dist/common/schema/parse-args.cjs +1 -1
- package/dist/common/schema/parse-args.js +1 -1
- package/dist/common/schema/parse-env.cjs +1 -1
- package/dist/common/schema/parse-env.js +1 -1
- package/dist/common/schema/parse-object.cjs +1 -1
- package/dist/common/schema/parse-object.js +1 -1
- package/dist/common/schema/schema.cjs +1 -1
- package/dist/common/schema/schema.d.cts +125 -8
- package/dist/common/schema/schema.d.ts +125 -8
- package/dist/common/schema/schema.js +1 -1
- package/dist/common/schema/utils.cjs +1 -1
- package/dist/common/schema/utils.js +1 -1
- package/dist/common/schema/z-collection.cjs +1 -1
- package/dist/common/schema/z-collection.js +1 -1
- package/dist/common/schema/z.cjs +1 -1
- package/dist/common/schema/z.js +1 -1
- package/dist/common/storage/index.cjs +1 -1
- package/dist/common/storage/index.js +1 -1
- package/dist/common/storage/memstorage.cjs +1 -1
- package/dist/common/storage/memstorage.js +1 -1
- package/dist/common/test.cjs +1 -1
- package/dist/common/test.js +1 -1
- package/dist/common/time.cjs +1 -1
- package/dist/common/time.js +1 -1
- package/dist/common/timeout.cjs +1 -1
- package/dist/common/timeout.js +1 -1
- package/dist/common/utils.cjs +1 -1
- package/dist/common/utils.js +1 -1
- package/dist/common/uuid.cjs +1 -1
- package/dist/common/uuid.js +1 -1
- package/dist/index.all.cjs +1 -1
- package/dist/index.all.js +1 -1
- package/dist/index.browser.cjs +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.jsr.cjs +1 -1
- package/dist/index.jsr.js +1 -1
- package/dist/index.node.cjs +1 -1
- package/dist/index.node.js +1 -1
- package/dist/node/args.cjs +1 -1
- package/dist/node/args.js +1 -1
- package/dist/node/clipboard.cjs +1 -1
- package/dist/node/clipboard.js +1 -1
- package/dist/node/crypto.cjs +1 -1
- package/dist/node/crypto.js +1 -1
- package/dist/node/env.cjs +1 -1
- package/dist/node/env.js +1 -1
- package/dist/node/files-async.cjs +1 -1
- package/dist/node/files-async.js +1 -1
- package/dist/node/files.cjs +1 -1
- package/dist/node/files.js +1 -1
- package/dist/node/filestorage.cjs +1 -1
- package/dist/node/filestorage.js +1 -1
- package/dist/node/fs.cjs +1 -1
- package/dist/node/fs.js +1 -1
- package/dist/node/glob.cjs +1 -1
- package/dist/node/glob.js +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/log/index.cjs +1 -1
- package/dist/node/log/index.js +1 -1
- package/dist/node/log/log-context-node.cjs +1 -1
- package/dist/node/log/log-context-node.js +1 -1
- package/dist/node/log/log-file.cjs +1 -1
- package/dist/node/log/log-file.js +1 -1
- package/dist/node/log/log-node.cjs +1 -1
- package/dist/node/log/log-node.js +1 -1
- package/dist/node/log/log-util.cjs +1 -1
- package/dist/node/log/log-util.js +1 -1
- package/dist/node/open-browser.cjs +1 -1
- package/dist/node/open-browser.cjs.map +1 -1
- package/dist/node/open-browser.js +1 -1
- package/dist/node/open-browser.js.map +1 -1
- package/package.json +1 -1
- package/src/common/schema/parse-args.spec.ts +0 -3
- package/src/common/schema/rpc.spec.ts +0 -14
- package/src/common/schema/schema-improvements.spec.ts +233 -0
- package/src/common/schema/schema.spec.ts +174 -0
- package/src/common/schema/schema.ts +255 -48
- package/dist/chunk-26J4SA3M.cjs +0 -2
- package/dist/chunk-26J4SA3M.cjs.map +0 -1
- package/dist/chunk-2COZNZSC.js +0 -2
- package/dist/chunk-2COZNZSC.js.map +0 -1
- package/dist/chunk-2GP2IOPV.js +0 -2
- package/dist/chunk-2GP2IOPV.js.map +0 -1
- package/dist/chunk-2TGLRPFV.js +0 -2
- package/dist/chunk-2TGLRPFV.js.map +0 -1
- package/dist/chunk-32SBFUFB.js +0 -4
- package/dist/chunk-32SBFUFB.js.map +0 -1
- package/dist/chunk-3A7OZZKW.js +0 -2
- package/dist/chunk-3A7OZZKW.js.map +0 -1
- package/dist/chunk-3AJWXPKM.js +0 -2
- package/dist/chunk-3AJWXPKM.js.map +0 -1
- package/dist/chunk-3E5MOHIU.js +0 -3
- package/dist/chunk-3E5MOHIU.js.map +0 -1
- package/dist/chunk-3REOR55V.js +0 -2
- package/dist/chunk-3REOR55V.js.map +0 -1
- package/dist/chunk-3VEGCRLF.cjs +0 -2
- package/dist/chunk-3VEGCRLF.cjs.map +0 -1
- package/dist/chunk-43KHDLTX.cjs +0 -2
- package/dist/chunk-43KHDLTX.cjs.map +0 -1
- package/dist/chunk-4BCQFFXI.js +0 -2
- package/dist/chunk-4BCQFFXI.js.map +0 -1
- package/dist/chunk-4BUMEKE4.js +0 -2
- package/dist/chunk-4BUMEKE4.js.map +0 -1
- package/dist/chunk-4C666HHU.js +0 -2
- package/dist/chunk-4F2DX6E6.cjs +0 -2
- package/dist/chunk-4F2DX6E6.cjs.map +0 -1
- package/dist/chunk-4JQ372FR.cjs +0 -2
- package/dist/chunk-4JQ372FR.cjs.map +0 -1
- package/dist/chunk-4LIUGZHX.js +0 -2
- package/dist/chunk-4LIUGZHX.js.map +0 -1
- package/dist/chunk-52HQV7KW.cjs +0 -2
- package/dist/chunk-52HQV7KW.cjs.map +0 -1
- package/dist/chunk-5CHPHDA5.cjs +0 -2
- package/dist/chunk-5CHPHDA5.cjs.map +0 -1
- package/dist/chunk-5EVRNC2Z.js +0 -2
- package/dist/chunk-5EVRNC2Z.js.map +0 -1
- package/dist/chunk-5GA65MNR.js +0 -2
- package/dist/chunk-5GA65MNR.js.map +0 -1
- package/dist/chunk-5NFRGZ3B.js +0 -2
- package/dist/chunk-5NFRGZ3B.js.map +0 -1
- package/dist/chunk-5P4XZHKJ.cjs +0 -2
- package/dist/chunk-5P4XZHKJ.cjs.map +0 -1
- package/dist/chunk-5TJTQRWT.js +0 -2
- package/dist/chunk-5TJTQRWT.js.map +0 -1
- package/dist/chunk-5W7DNVOJ.cjs +0 -2
- package/dist/chunk-5W7DNVOJ.cjs.map +0 -1
- package/dist/chunk-5XRQCNBP.cjs +0 -2
- package/dist/chunk-5XRQCNBP.cjs.map +0 -1
- package/dist/chunk-6U6Q5CBH.cjs +0 -2
- package/dist/chunk-6U6Q5CBH.cjs.map +0 -1
- package/dist/chunk-6XD4WLTB.js +0 -2
- package/dist/chunk-6XD4WLTB.js.map +0 -1
- package/dist/chunk-724WHMXL.cjs +0 -2
- package/dist/chunk-724WHMXL.cjs.map +0 -1
- package/dist/chunk-73VPDAYP.js +0 -2
- package/dist/chunk-73VPDAYP.js.map +0 -1
- package/dist/chunk-76UOP7N2.cjs +0 -2
- package/dist/chunk-76UOP7N2.cjs.map +0 -1
- package/dist/chunk-7ADMZQFX.cjs +0 -2
- package/dist/chunk-7ADMZQFX.cjs.map +0 -1
- package/dist/chunk-7AQ7JFDC.js +0 -2
- package/dist/chunk-7AQ7JFDC.js.map +0 -1
- package/dist/chunk-7BGQUYAZ.js +0 -2
- package/dist/chunk-7BGQUYAZ.js.map +0 -1
- package/dist/chunk-7GXBHCFX.cjs +0 -2
- package/dist/chunk-7GXBHCFX.cjs.map +0 -1
- package/dist/chunk-7HNIMHUU.js +0 -2
- package/dist/chunk-7HNIMHUU.js.map +0 -1
- package/dist/chunk-7N5S4JIQ.cjs +0 -2
- package/dist/chunk-7N5S4JIQ.cjs.map +0 -1
- package/dist/chunk-7R62RY44.js +0 -2
- package/dist/chunk-7R62RY44.js.map +0 -1
- package/dist/chunk-7WEQTYF3.cjs +0 -2
- package/dist/chunk-7WEQTYF3.cjs.map +0 -1
- package/dist/chunk-A6CD24LS.cjs +0 -4
- package/dist/chunk-A6CD24LS.cjs.map +0 -1
- package/dist/chunk-ADRHWFB6.cjs +0 -2
- package/dist/chunk-ADRHWFB6.cjs.map +0 -1
- package/dist/chunk-AFDLKI5M.js +0 -2
- package/dist/chunk-AFDLKI5M.js.map +0 -1
- package/dist/chunk-AIRCBRKO.js +0 -2
- package/dist/chunk-AIRCBRKO.js.map +0 -1
- package/dist/chunk-AJCQLY4Z.js +0 -2
- package/dist/chunk-AJCQLY4Z.js.map +0 -1
- package/dist/chunk-AT5AILNI.cjs +0 -2
- package/dist/chunk-AT5AILNI.cjs.map +0 -1
- package/dist/chunk-AYXXI3YJ.cjs +0 -5
- package/dist/chunk-AYXXI3YJ.cjs.map +0 -1
- package/dist/chunk-B2UENKLM.js +0 -2
- package/dist/chunk-B2UENKLM.js.map +0 -1
- package/dist/chunk-B6LFBEWI.js +0 -2
- package/dist/chunk-B6LFBEWI.js.map +0 -1
- package/dist/chunk-BBLSC52Q.cjs +0 -4
- package/dist/chunk-BBLSC52Q.cjs.map +0 -1
- package/dist/chunk-BNWABQDO.cjs +0 -2
- package/dist/chunk-BNWABQDO.cjs.map +0 -1
- package/dist/chunk-BP5KZK4I.cjs +0 -2
- package/dist/chunk-BP5KZK4I.cjs.map +0 -1
- package/dist/chunk-BQTR3A4K.js +0 -2
- package/dist/chunk-BQTR3A4K.js.map +0 -1
- package/dist/chunk-BW6ELDI7.js +0 -2
- package/dist/chunk-BW6ELDI7.js.map +0 -1
- package/dist/chunk-C3NS435H.cjs +0 -2
- package/dist/chunk-C3NS435H.cjs.map +0 -1
- package/dist/chunk-CFF4Z5HZ.cjs +0 -7
- package/dist/chunk-CFF4Z5HZ.cjs.map +0 -1
- package/dist/chunk-CVDVGMPF.js +0 -2
- package/dist/chunk-CVDVGMPF.js.map +0 -1
- package/dist/chunk-CW7OVU6D.cjs +0 -2
- package/dist/chunk-CW7OVU6D.cjs.map +0 -1
- package/dist/chunk-DKA7SDJX.cjs +0 -3
- package/dist/chunk-DKA7SDJX.cjs.map +0 -1
- package/dist/chunk-DVSS4UAR.cjs +0 -2
- package/dist/chunk-DVSS4UAR.cjs.map +0 -1
- package/dist/chunk-DXHVEEEI.cjs +0 -2
- package/dist/chunk-DXHVEEEI.cjs.map +0 -1
- package/dist/chunk-DZIYRR7H.js +0 -2
- package/dist/chunk-DZIYRR7H.js.map +0 -1
- package/dist/chunk-E53J4GBD.js +0 -2
- package/dist/chunk-E53J4GBD.js.map +0 -1
- package/dist/chunk-E5EKG6PL.js +0 -2
- package/dist/chunk-E5EKG6PL.js.map +0 -1
- package/dist/chunk-E6PH6OKK.js +0 -7
- package/dist/chunk-E6PH6OKK.js.map +0 -1
- package/dist/chunk-EAAIEE4K.cjs +0 -2
- package/dist/chunk-EAAIEE4K.cjs.map +0 -1
- package/dist/chunk-EBYN6644.cjs +0 -2
- package/dist/chunk-EBYN6644.cjs.map +0 -1
- package/dist/chunk-ECVG4NHM.cjs +0 -2
- package/dist/chunk-ECVG4NHM.cjs.map +0 -1
- package/dist/chunk-EMCY65KO.js +0 -4
- package/dist/chunk-EMCY65KO.js.map +0 -1
- package/dist/chunk-ENHBQFAF.cjs +0 -2
- package/dist/chunk-ENHBQFAF.cjs.map +0 -1
- package/dist/chunk-ERHUQJ6A.cjs +0 -2
- package/dist/chunk-ERHUQJ6A.cjs.map +0 -1
- package/dist/chunk-EVBOIENK.js +0 -2
- package/dist/chunk-EVBOIENK.js.map +0 -1
- package/dist/chunk-F3B4PUVX.cjs +0 -2
- package/dist/chunk-F3B4PUVX.cjs.map +0 -1
- package/dist/chunk-FGKXP3IS.js +0 -2
- package/dist/chunk-FGKXP3IS.js.map +0 -1
- package/dist/chunk-FGSAM2EO.js +0 -2
- package/dist/chunk-FGSAM2EO.js.map +0 -1
- package/dist/chunk-FN5CFPXQ.js +0 -2
- package/dist/chunk-FN5CFPXQ.js.map +0 -1
- package/dist/chunk-FQ2HVUI7.cjs +0 -2
- package/dist/chunk-FQ2HVUI7.cjs.map +0 -1
- package/dist/chunk-FSTYJF4S.js +0 -2
- package/dist/chunk-FSTYJF4S.js.map +0 -1
- package/dist/chunk-FUSILOAB.cjs +0 -3
- package/dist/chunk-FUSILOAB.cjs.map +0 -1
- package/dist/chunk-FWJ2ABR5.cjs +0 -2
- package/dist/chunk-FWJ2ABR5.cjs.map +0 -1
- package/dist/chunk-G37LJPPZ.js +0 -2
- package/dist/chunk-G37LJPPZ.js.map +0 -1
- package/dist/chunk-G7HVDV5R.js +0 -2
- package/dist/chunk-G7HVDV5R.js.map +0 -1
- package/dist/chunk-GB7I2F7Y.cjs +0 -2
- package/dist/chunk-GB7I2F7Y.cjs.map +0 -1
- package/dist/chunk-GBX4HAEG.js +0 -2
- package/dist/chunk-GBX4HAEG.js.map +0 -1
- package/dist/chunk-GDL7YFPS.js +0 -2
- package/dist/chunk-GDL7YFPS.js.map +0 -1
- package/dist/chunk-GG45GWL7.js +0 -2
- package/dist/chunk-GG45GWL7.js.map +0 -1
- package/dist/chunk-GT4N4FBQ.js +0 -2
- package/dist/chunk-GT4N4FBQ.js.map +0 -1
- package/dist/chunk-GTJBWCIQ.cjs +0 -2
- package/dist/chunk-GTJBWCIQ.cjs.map +0 -1
- package/dist/chunk-H3BFRDMP.js +0 -2
- package/dist/chunk-H3BFRDMP.js.map +0 -1
- package/dist/chunk-H4TY2DOX.cjs +0 -2
- package/dist/chunk-H4TY2DOX.cjs.map +0 -1
- package/dist/chunk-HBZHLYXW.cjs +0 -2
- package/dist/chunk-HBZHLYXW.cjs.map +0 -1
- package/dist/chunk-HEUNLZAT.cjs +0 -3
- package/dist/chunk-HEUNLZAT.cjs.map +0 -1
- package/dist/chunk-HKBWBHQ3.cjs +0 -2
- package/dist/chunk-HKBWBHQ3.cjs.map +0 -1
- package/dist/chunk-HKJ6OHSP.cjs +0 -2
- package/dist/chunk-HKJ6OHSP.cjs.map +0 -1
- package/dist/chunk-HKZMJ5RY.js +0 -2
- package/dist/chunk-HKZMJ5RY.js.map +0 -1
- package/dist/chunk-HQ5GBV6C.cjs +0 -2
- package/dist/chunk-HQ5GBV6C.cjs.map +0 -1
- package/dist/chunk-HZKHV5HH.js +0 -2
- package/dist/chunk-HZKHV5HH.js.map +0 -1
- package/dist/chunk-I2X5KYDE.js +0 -2
- package/dist/chunk-I2X5KYDE.js.map +0 -1
- package/dist/chunk-I3VOQYLP.js +0 -2
- package/dist/chunk-I3VOQYLP.js.map +0 -1
- package/dist/chunk-IDMQH4MY.js +0 -8
- package/dist/chunk-IDMQH4MY.js.map +0 -1
- package/dist/chunk-IFGA5PSV.js +0 -2
- package/dist/chunk-IFGA5PSV.js.map +0 -1
- package/dist/chunk-IHRIOXDZ.cjs +0 -2
- package/dist/chunk-IHRIOXDZ.cjs.map +0 -1
- package/dist/chunk-IJA2PNJX.cjs +0 -2
- package/dist/chunk-IJA2PNJX.cjs.map +0 -1
- package/dist/chunk-IJCUAU7T.cjs +0 -2
- package/dist/chunk-IJCUAU7T.cjs.map +0 -1
- package/dist/chunk-IV2DPA6C.js +0 -2
- package/dist/chunk-IV2DPA6C.js.map +0 -1
- package/dist/chunk-J2B2VW5N.js +0 -2
- package/dist/chunk-J2B2VW5N.js.map +0 -1
- package/dist/chunk-J6FUR3GH.js +0 -3
- package/dist/chunk-J6FUR3GH.js.map +0 -1
- package/dist/chunk-J7IIWYKU.js +0 -2
- package/dist/chunk-J7IIWYKU.js.map +0 -1
- package/dist/chunk-JAS4XWZG.js +0 -2
- package/dist/chunk-JAS4XWZG.js.map +0 -1
- package/dist/chunk-JBQRGN2V.cjs +0 -2
- package/dist/chunk-JBQRGN2V.cjs.map +0 -1
- package/dist/chunk-JKAUJPHU.cjs +0 -2
- package/dist/chunk-JKAUJPHU.cjs.map +0 -1
- package/dist/chunk-JQXSUJUH.js +0 -2
- package/dist/chunk-JQXSUJUH.js.map +0 -1
- package/dist/chunk-JZXUNJFX.cjs +0 -2
- package/dist/chunk-JZXUNJFX.cjs.map +0 -1
- package/dist/chunk-K56GN7HM.js +0 -2
- package/dist/chunk-K56GN7HM.js.map +0 -1
- package/dist/chunk-K7TIJWZY.js +0 -2
- package/dist/chunk-K7TIJWZY.js.map +0 -1
- package/dist/chunk-KBTBAY4R.js +0 -2
- package/dist/chunk-KBTBAY4R.js.map +0 -1
- package/dist/chunk-KITREJ2W.js +0 -2
- package/dist/chunk-KITREJ2W.js.map +0 -1
- package/dist/chunk-KTPQGIUJ.js +0 -2
- package/dist/chunk-KWBPYDJC.cjs +0 -2
- package/dist/chunk-KWBPYDJC.cjs.map +0 -1
- package/dist/chunk-KZUVW6PP.cjs +0 -2
- package/dist/chunk-KZUVW6PP.cjs.map +0 -1
- package/dist/chunk-L6SDCMB4.cjs +0 -2
- package/dist/chunk-L6SDCMB4.cjs.map +0 -1
- package/dist/chunk-LG7MULWM.js +0 -2
- package/dist/chunk-LG7MULWM.js.map +0 -1
- package/dist/chunk-LKCAGRU7.cjs +0 -2
- package/dist/chunk-LKCAGRU7.cjs.map +0 -1
- package/dist/chunk-LKMQLTOV.cjs +0 -2
- package/dist/chunk-LKMQLTOV.cjs.map +0 -1
- package/dist/chunk-LNKIVGPB.js +0 -2
- package/dist/chunk-LNKIVGPB.js.map +0 -1
- package/dist/chunk-LQA56AWJ.cjs +0 -2
- package/dist/chunk-LQA56AWJ.cjs.map +0 -1
- package/dist/chunk-LQLGZSXU.js +0 -3
- package/dist/chunk-LQLGZSXU.js.map +0 -1
- package/dist/chunk-LZAJKLTJ.js +0 -2
- package/dist/chunk-LZAJKLTJ.js.map +0 -1
- package/dist/chunk-LZLXQOIJ.js +0 -2
- package/dist/chunk-LZLXQOIJ.js.map +0 -1
- package/dist/chunk-M4G6J7DP.cjs +0 -2
- package/dist/chunk-M4G6J7DP.cjs.map +0 -1
- package/dist/chunk-M5VU6FQN.js +0 -2
- package/dist/chunk-M5VU6FQN.js.map +0 -1
- package/dist/chunk-MJRMY35Y.js +0 -2
- package/dist/chunk-MJRMY35Y.js.map +0 -1
- package/dist/chunk-MNCNDW56.cjs +0 -3
- package/dist/chunk-MNCNDW56.cjs.map +0 -1
- package/dist/chunk-MWNIB3O5.js +0 -2
- package/dist/chunk-MWNIB3O5.js.map +0 -1
- package/dist/chunk-MYXHW467.js +0 -2
- package/dist/chunk-MYXHW467.js.map +0 -1
- package/dist/chunk-MZOAQKNJ.cjs +0 -2
- package/dist/chunk-MZOAQKNJ.cjs.map +0 -1
- package/dist/chunk-N7FU5CN3.js +0 -2
- package/dist/chunk-N7FU5CN3.js.map +0 -1
- package/dist/chunk-N7XQZD7O.cjs +0 -2
- package/dist/chunk-N7XQZD7O.cjs.map +0 -1
- package/dist/chunk-NNXUQ4F6.js +0 -3
- package/dist/chunk-NNXUQ4F6.js.map +0 -1
- package/dist/chunk-NRZLSOHT.cjs +0 -2
- package/dist/chunk-NRZLSOHT.cjs.map +0 -1
- package/dist/chunk-NV7ABJAH.cjs +0 -2
- package/dist/chunk-NV7ABJAH.cjs.map +0 -1
- package/dist/chunk-O7SD3C3B.js +0 -2
- package/dist/chunk-O7SD3C3B.js.map +0 -1
- package/dist/chunk-OGNA32Q7.js +0 -2
- package/dist/chunk-OGNA32Q7.js.map +0 -1
- package/dist/chunk-OR7Q7U5S.cjs +0 -2
- package/dist/chunk-OR7Q7U5S.cjs.map +0 -1
- package/dist/chunk-OSJGUOU2.cjs +0 -2
- package/dist/chunk-OSJGUOU2.cjs.map +0 -1
- package/dist/chunk-P6R4QNHH.js +0 -2
- package/dist/chunk-P6R4QNHH.js.map +0 -1
- package/dist/chunk-PG72FO3W.js +0 -2
- package/dist/chunk-PG72FO3W.js.map +0 -1
- package/dist/chunk-PJ6OWWAO.js +0 -2
- package/dist/chunk-PJ6OWWAO.js.map +0 -1
- package/dist/chunk-PKFYJ3XQ.cjs +0 -2
- package/dist/chunk-PKFYJ3XQ.cjs.map +0 -1
- package/dist/chunk-PM3JFDEY.js +0 -2
- package/dist/chunk-PM3JFDEY.js.map +0 -1
- package/dist/chunk-POH7XFY2.js +0 -2
- package/dist/chunk-POH7XFY2.js.map +0 -1
- package/dist/chunk-PQ7IVXKD.js +0 -3
- package/dist/chunk-PQ7IVXKD.js.map +0 -1
- package/dist/chunk-PQVHV3AJ.cjs +0 -2
- package/dist/chunk-PQVHV3AJ.cjs.map +0 -1
- package/dist/chunk-PVD4WJLP.cjs +0 -3
- package/dist/chunk-PVD4WJLP.cjs.map +0 -1
- package/dist/chunk-PWWR4H26.cjs +0 -2
- package/dist/chunk-PWWR4H26.cjs.map +0 -1
- package/dist/chunk-PXMDKRU2.js +0 -2
- package/dist/chunk-PXMDKRU2.js.map +0 -1
- package/dist/chunk-QHU5L465.cjs +0 -2
- package/dist/chunk-QHU5L465.cjs.map +0 -1
- package/dist/chunk-QQLWSF3G.cjs +0 -2
- package/dist/chunk-QQLWSF3G.cjs.map +0 -1
- package/dist/chunk-QQWKTUAQ.js +0 -2
- package/dist/chunk-QQWKTUAQ.js.map +0 -1
- package/dist/chunk-QSTP2ZQT.cjs +0 -2
- package/dist/chunk-QSTP2ZQT.cjs.map +0 -1
- package/dist/chunk-R7S74OGU.cjs +0 -2
- package/dist/chunk-R7S74OGU.cjs.map +0 -1
- package/dist/chunk-RB65W3QR.js +0 -2
- package/dist/chunk-RB65W3QR.js.map +0 -1
- package/dist/chunk-RCH2BZO5.cjs +0 -2
- package/dist/chunk-RCH2BZO5.cjs.map +0 -1
- package/dist/chunk-RU7X5L2G.cjs +0 -2
- package/dist/chunk-RU7X5L2G.cjs.map +0 -1
- package/dist/chunk-RURDQSYN.js +0 -3
- package/dist/chunk-RURDQSYN.js.map +0 -1
- package/dist/chunk-RZABA46L.js +0 -2
- package/dist/chunk-RZABA46L.js.map +0 -1
- package/dist/chunk-S43EDRFK.cjs +0 -2
- package/dist/chunk-S43EDRFK.cjs.map +0 -1
- package/dist/chunk-S5IT2K2G.js +0 -2
- package/dist/chunk-S5IT2K2G.js.map +0 -1
- package/dist/chunk-SEHLU66E.cjs +0 -2
- package/dist/chunk-SEHLU66E.cjs.map +0 -1
- package/dist/chunk-SLY6XQ6Y.cjs +0 -2
- package/dist/chunk-SLY6XQ6Y.cjs.map +0 -1
- package/dist/chunk-SMI723SR.js +0 -2
- package/dist/chunk-SMI723SR.js.map +0 -1
- package/dist/chunk-STAFIEKA.cjs +0 -2
- package/dist/chunk-STAFIEKA.cjs.map +0 -1
- package/dist/chunk-T53YLSK3.js +0 -2
- package/dist/chunk-T53YLSK3.js.map +0 -1
- package/dist/chunk-T5KO3KAJ.js +0 -3
- package/dist/chunk-T5KO3KAJ.js.map +0 -1
- package/dist/chunk-T6G6S6LA.cjs +0 -2
- package/dist/chunk-T6G6S6LA.cjs.map +0 -1
- package/dist/chunk-TNZGMZGR.cjs +0 -2
- package/dist/chunk-TNZGMZGR.cjs.map +0 -1
- package/dist/chunk-TRLTZEHW.cjs +0 -2
- package/dist/chunk-TRLTZEHW.cjs.map +0 -1
- package/dist/chunk-TV3I6EFK.js +0 -2
- package/dist/chunk-TV3I6EFK.js.map +0 -1
- package/dist/chunk-TXTYPELC.cjs +0 -2
- package/dist/chunk-TXTYPELC.cjs.map +0 -1
- package/dist/chunk-TY2IJCPS.js +0 -2
- package/dist/chunk-TY2IJCPS.js.map +0 -1
- package/dist/chunk-U2LVGYTF.cjs +0 -2
- package/dist/chunk-U2LVGYTF.cjs.map +0 -1
- package/dist/chunk-U3RSWYDX.cjs +0 -2
- package/dist/chunk-U3RSWYDX.cjs.map +0 -1
- package/dist/chunk-UCH47FT7.js +0 -2
- package/dist/chunk-UCH47FT7.js.map +0 -1
- package/dist/chunk-UKSSXBSQ.cjs +0 -2
- package/dist/chunk-UKSSXBSQ.cjs.map +0 -1
- package/dist/chunk-ULSUCKWK.js +0 -2
- package/dist/chunk-ULSUCKWK.js.map +0 -1
- package/dist/chunk-UZFK2QSV.cjs +0 -2
- package/dist/chunk-UZFK2QSV.cjs.map +0 -1
- package/dist/chunk-V3T5WC5I.js +0 -2
- package/dist/chunk-V3T5WC5I.js.map +0 -1
- package/dist/chunk-V6I2SY4L.js +0 -2
- package/dist/chunk-V6I2SY4L.js.map +0 -1
- package/dist/chunk-V7KEBZAU.cjs +0 -2
- package/dist/chunk-V7KEBZAU.cjs.map +0 -1
- package/dist/chunk-VFR5TEQE.cjs +0 -2
- package/dist/chunk-VFR5TEQE.cjs.map +0 -1
- package/dist/chunk-VHPUN6W2.cjs +0 -2
- package/dist/chunk-VHPUN6W2.cjs.map +0 -1
- package/dist/chunk-VOAQ3XQN.js +0 -2
- package/dist/chunk-VOAQ3XQN.js.map +0 -1
- package/dist/chunk-VWEGHC6U.js +0 -2
- package/dist/chunk-VWEGHC6U.js.map +0 -1
- package/dist/chunk-W6S6UDYI.js +0 -2
- package/dist/chunk-W6S6UDYI.js.map +0 -1
- package/dist/chunk-W7FYGPET.cjs +0 -2
- package/dist/chunk-W7FYGPET.cjs.map +0 -1
- package/dist/chunk-WOKDGMI5.js +0 -2
- package/dist/chunk-WOKDGMI5.js.map +0 -1
- package/dist/chunk-WR5SBVCT.cjs +0 -2
- package/dist/chunk-WR5SBVCT.cjs.map +0 -1
- package/dist/chunk-WZKI7A6I.js +0 -2
- package/dist/chunk-WZKI7A6I.js.map +0 -1
- package/dist/chunk-X4RCMSVN.cjs +0 -2
- package/dist/chunk-X4RCMSVN.cjs.map +0 -1
- package/dist/chunk-X6MWJIJG.js +0 -2
- package/dist/chunk-X6MWJIJG.js.map +0 -1
- package/dist/chunk-X75HL5HY.cjs +0 -2
- package/dist/chunk-X75HL5HY.cjs.map +0 -1
- package/dist/chunk-XCVIZUFR.cjs +0 -2
- package/dist/chunk-XCVIZUFR.cjs.map +0 -1
- package/dist/chunk-XFCINYAY.js +0 -2
- package/dist/chunk-XFCINYAY.js.map +0 -1
- package/dist/chunk-XHBPFXWQ.cjs +0 -2
- package/dist/chunk-XHBPFXWQ.cjs.map +0 -1
- package/dist/chunk-XI5IORSL.cjs +0 -2
- package/dist/chunk-XI5IORSL.cjs.map +0 -1
- package/dist/chunk-XJNO2MEG.js +0 -2
- package/dist/chunk-XJNO2MEG.js.map +0 -1
- package/dist/chunk-XOS4E3TQ.cjs +0 -8
- package/dist/chunk-XOS4E3TQ.cjs.map +0 -1
- package/dist/chunk-XPPN27ZF.js +0 -2
- package/dist/chunk-XPPN27ZF.js.map +0 -1
- package/dist/chunk-XT67IKLC.cjs +0 -2
- package/dist/chunk-XT67IKLC.cjs.map +0 -1
- package/dist/chunk-XY5PAARQ.js +0 -2
- package/dist/chunk-XY5PAARQ.js.map +0 -1
- package/dist/chunk-Y2O3QKGL.cjs +0 -3
- package/dist/chunk-Y2O3QKGL.cjs.map +0 -1
- package/dist/chunk-Y4CZHSBV.cjs +0 -2
- package/dist/chunk-Y4CZHSBV.cjs.map +0 -1
- package/dist/chunk-Y4JWMUGQ.cjs +0 -3
- package/dist/chunk-Y4JWMUGQ.cjs.map +0 -1
- package/dist/chunk-YC2ZBAEO.cjs +0 -2
- package/dist/chunk-YC2ZBAEO.cjs.map +0 -1
- package/dist/chunk-YCUMMZUS.cjs +0 -2
- package/dist/chunk-YCUMMZUS.cjs.map +0 -1
- package/dist/chunk-YKQSST44.cjs +0 -2
- package/dist/chunk-YKQSST44.cjs.map +0 -1
- package/dist/chunk-Z65G5XK5.js +0 -2
- package/dist/chunk-Z65G5XK5.js.map +0 -1
- package/dist/chunk-ZCIYOMDX.cjs +0 -2
- package/dist/chunk-ZCIYOMDX.cjs.map +0 -1
- package/dist/chunk-ZCZ6PN5V.cjs +0 -2
- package/dist/chunk-ZCZ6PN5V.cjs.map +0 -1
- package/dist/chunk-ZE3ISGNE.cjs +0 -2
- package/dist/chunk-ZE3ISGNE.cjs.map +0 -1
- package/dist/chunk-ZFGAU6WJ.cjs +0 -2
- package/dist/chunk-ZFGAU6WJ.cjs.map +0 -1
- package/dist/chunk-ZHCZJIQB.cjs +0 -2
- package/dist/chunk-ZHCZJIQB.cjs.map +0 -1
- package/dist/chunk-ZK63MJOU.js +0 -5
- package/dist/chunk-ZK63MJOU.js.map +0 -1
- package/dist/chunk-ZMKLRLPE.js +0 -2
- package/dist/chunk-ZMKLRLPE.js.map +0 -1
- package/dist/chunk-ZN3QH3MM.js +0 -2
- package/dist/chunk-ZN3QH3MM.js.map +0 -1
- /package/dist/{chunk-4C666HHU.js.map → chunk-5NKC2EQJ.js.map} +0 -0
- /package/dist/{chunk-KTPQGIUJ.js.map → chunk-MNUDDM7L.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }require('../chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkP7XCQ7WVcjs = require('../chunk-P7XCQ7WV.cjs');var _fs = require('fs'); var s = _interopRequireWildcard(_fs);var _path = require('path'); var p = _interopRequireWildcard(_path);var _promises = require('fs/promises');var l=17,v=class v{constructor(t,e={}){this.keydir=new Map;this.activeFile=null;this.activeFileId=0;this.activeOffset=0;this.openFiles=new Map;this.dirname=t,this.readWrite=e.readWrite!==!1,this.syncOnPut=e.syncOnPut===!0,s.existsSync(t)||s.mkdirSync(t,{recursive:!0}),this.loadFiles(),this.readWrite&&this.rollover()}listDataFiles(){return s.readdirSync(this.dirname).filter(t=>t.endsWith(".data")).sort()}loadFiles(){for(let t of this.listDataFiles()){let e=parseInt(t.split(".")[0],10),i=p.join(this.dirname,t),n=s.openSync(i,"r"),r=0;for(;;){let o=Buffer.alloc(l);if(s.readSync(n,o,0,l,r)<l)break;let c=o.readUInt32BE(0),d=o.readUInt32BE(4),u=o.readUInt8(8)===1,y=o.readBigUInt64BE(9),m=Buffer.alloc(c);s.readSync(n,m,0,c,r+l);let B=l+c+d;this.keydir.set(m.toString("binary"),{fileId:e,offset:r,size:B,timestamp:y,tombstone:u}),r+=B}s.closeSync(n)}}rollover(){let t=this.listDataFiles().map(r=>parseInt(r.split(".")[0],10)),e=t.length?Math.max(...t)+1:1,i=`${e.toString().padStart(8,"0")}.data`,n=p.join(this.dirname,i);this.activeFile=s.createWriteStream(n,{flags:"a"}),this.activeFileId=e,this.activeOffset=s.existsSync(n)?s.statSync(n).size:0}async put(t,e){if(!this.readWrite)throw new Error("Read-only mode");let i=Buffer.isBuffer(t)?t:Buffer.from(t),n=Buffer.isBuffer(e)?e:Buffer.from(e),r=BigInt(Date.now()),o=0,a=Buffer.alloc(l);a.writeUInt32BE(i.length,0),a.writeUInt32BE(n.length,4),a.writeUInt8(o,8),a.writeBigUInt64BE(r,9);let c=Buffer.concat([a,i,n]),d=this.activeOffset;await new Promise((u,y)=>{this.activeFile.write(c,m=>m?y(m):u())}),this.syncOnPut&&this.activeFile&&s.fsyncSync(this.activeFile.fd),this.keydir.set(i.toString("binary"),{fileId:this.activeFileId,offset:d,size:c.length,timestamp:r,tombstone:!1}),this.activeOffset+=c.length,this.activeOffset>32*1024*1024&&(this.activeFile.close(),this.rollover())}async get(t){let e=Buffer.isBuffer(t)?t:Buffer.from(t),i=this.keydir.get(e.toString("binary"));if(!i||i.tombstone)return null;let n=this.openFiles.get(i.fileId);if(!n){let u=p.join(this.dirname,`${i.fileId.toString().padStart(8,"0")}.data`);n=await _promises.open.call(void 0, u,"r"),this.openFiles.set(i.fileId,n)}let r=Buffer.alloc(l);await n.read(r,0,l,i.offset);let o=r.readUInt32BE(0),a=r.readUInt32BE(4),c=Buffer.alloc(o);await n.read(c,0,o,i.offset+l);let d=Buffer.alloc(a);return await n.read(d,0,a,i.offset+l+o),d}async delete(t){if(!this.readWrite)throw new Error("Read-only mode");let e=Buffer.isBuffer(t)?t:Buffer.from(t),i=BigInt(Date.now()),n=1,r=Buffer.alloc(l);r.writeUInt32BE(e.length,0),r.writeUInt32BE(0,4),r.writeUInt8(n,8),r.writeBigUInt64BE(i,9);let o=Buffer.concat([r,e]),a=this.activeOffset;await new Promise((c,d)=>{this.activeFile.write(o,u=>u?d(u):c())}),this.syncOnPut&&this.activeFile&&s.fsyncSync(this.activeFile.fd),this.keydir.set(e.toString("binary"),{fileId:this.activeFileId,offset:a,size:o.length,timestamp:i,tombstone:!0}),this.activeOffset+=o.length,this.activeOffset>32*1024*1024&&(this.activeFile.close(),this.rollover())}listKeys(){return Array.from(this.keydir.entries()).filter(([t,e])=>!e.tombstone).map(([t,e])=>t)}async fold(t,e){for(let[i,n]of this.keydir.entries())if(!n.tombstone){let r=await this.get(i);e=t(i,r,e)}return e}async merge(){let t=new Map;for(let[a,c]of this.keydir.entries())c.tombstone||t.set(a,c);let e=this.listDataFiles().map(a=>parseInt(a.split(".")[0],10)),i=e.length?Math.max(...e)+1:1,n=`${i.toString().padStart(8,"0")}.data`,r=p.join(this.dirname,n),o=s.createWriteStream(r,{flags:"a"});for(let[a,c]of t.entries()){let d=await this.get(a),u=Buffer.from(a,"binary"),y=Buffer.alloc(l);y.writeUInt32BE(u.length,0),y.writeUInt32BE(d.length,4),y.writeUInt8(0,8),y.writeBigUInt64BE(c.timestamp,9);let m=Buffer.concat([y,u,d]);await new Promise((B,I)=>{o.write(m,w=>w?I(w):B())})}o.close();for(let a of e)if(a!==this.activeFileId&&a!==i)try{s.unlinkSync(p.join(this.dirname,`${a.toString().padStart(8,"0")}.data`))}catch (e2){}this.loadFiles()}sync(){this.activeFile&&s.fsyncSync(this.activeFile.fd)}async close(){this.activeFile&&this.activeFile.end();for(let t of this.openFiles.values())await t.close();this.openFiles.clear()}};_chunkP7XCQ7WVcjs.a.call(void 0, v,"Bitcask");var g=v;function k(f,t){return new g(f,t)}_chunkP7XCQ7WVcjs.a.call(void 0, k,"open");async function E(f,t){let e=await f.get(t);return e===null?"not found":e}_chunkP7XCQ7WVcjs.a.call(void 0, E,"get");async function U(f,t,e){return await f.put(t,e),"ok"}_chunkP7XCQ7WVcjs.a.call(void 0, U,"put");async function x(f,t){return await f.delete(t),"ok"}_chunkP7XCQ7WVcjs.a.call(void 0, x,"del");function O(f){return f.listKeys()}_chunkP7XCQ7WVcjs.a.call(void 0, O,"listKeys");async function P(f,t,e){return await f.fold(t,e)}_chunkP7XCQ7WVcjs.a.call(void 0, P,"fold");async function W(f){let t=new g(f,{readWrite:!0});return await t.merge(),t.close(),"ok"}_chunkP7XCQ7WVcjs.a.call(void 0, W,"merge");function z(f){return f.sync(),"ok"}_chunkP7XCQ7WVcjs.a.call(void 0, z,"sync");async function D(f){return await f.close(),"ok"}_chunkP7XCQ7WVcjs.a.call(void 0, D,"close");exports.Bitcask = g; exports.close = D; exports.del = x; exports.fold = P; exports.get = E; exports.listKeys = O; exports.merge = W; exports.open = k; exports.put = U; exports.sync = z;
|
|
2
2
|
//# sourceMappingURL=bitcask.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","../../src/_experiments/bitcask.ts"],"names":["ENTRY_HEADER_SIZE","Bitcask","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","sourcesContent":[null,"// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","../../src/_experiments/bitcask.ts"],"names":["ENTRY_HEADER_SIZE","_Bitcask","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","sourcesContent":[null,"// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunk-
|
|
1
|
+
import{a as h}from"../chunk-5NKC2EQJ.js";import*as s from"fs";import*as p from"path";import{open as F}from"fs/promises";var l=17,v=class v{constructor(t,e={}){this.keydir=new Map;this.activeFile=null;this.activeFileId=0;this.activeOffset=0;this.openFiles=new Map;this.dirname=t,this.readWrite=e.readWrite!==!1,this.syncOnPut=e.syncOnPut===!0,s.existsSync(t)||s.mkdirSync(t,{recursive:!0}),this.loadFiles(),this.readWrite&&this.rollover()}listDataFiles(){return s.readdirSync(this.dirname).filter(t=>t.endsWith(".data")).sort()}loadFiles(){for(let t of this.listDataFiles()){let e=parseInt(t.split(".")[0],10),i=p.join(this.dirname,t),n=s.openSync(i,"r"),r=0;for(;;){let o=Buffer.alloc(l);if(s.readSync(n,o,0,l,r)<l)break;let c=o.readUInt32BE(0),d=o.readUInt32BE(4),u=o.readUInt8(8)===1,y=o.readBigUInt64BE(9),m=Buffer.alloc(c);s.readSync(n,m,0,c,r+l);let B=l+c+d;this.keydir.set(m.toString("binary"),{fileId:e,offset:r,size:B,timestamp:y,tombstone:u}),r+=B}s.closeSync(n)}}rollover(){let t=this.listDataFiles().map(r=>parseInt(r.split(".")[0],10)),e=t.length?Math.max(...t)+1:1,i=`${e.toString().padStart(8,"0")}.data`,n=p.join(this.dirname,i);this.activeFile=s.createWriteStream(n,{flags:"a"}),this.activeFileId=e,this.activeOffset=s.existsSync(n)?s.statSync(n).size:0}async put(t,e){if(!this.readWrite)throw new Error("Read-only mode");let i=Buffer.isBuffer(t)?t:Buffer.from(t),n=Buffer.isBuffer(e)?e:Buffer.from(e),r=BigInt(Date.now()),o=0,a=Buffer.alloc(l);a.writeUInt32BE(i.length,0),a.writeUInt32BE(n.length,4),a.writeUInt8(o,8),a.writeBigUInt64BE(r,9);let c=Buffer.concat([a,i,n]),d=this.activeOffset;await new Promise((u,y)=>{this.activeFile.write(c,m=>m?y(m):u())}),this.syncOnPut&&this.activeFile&&s.fsyncSync(this.activeFile.fd),this.keydir.set(i.toString("binary"),{fileId:this.activeFileId,offset:d,size:c.length,timestamp:r,tombstone:!1}),this.activeOffset+=c.length,this.activeOffset>32*1024*1024&&(this.activeFile.close(),this.rollover())}async get(t){let e=Buffer.isBuffer(t)?t:Buffer.from(t),i=this.keydir.get(e.toString("binary"));if(!i||i.tombstone)return null;let n=this.openFiles.get(i.fileId);if(!n){let u=p.join(this.dirname,`${i.fileId.toString().padStart(8,"0")}.data`);n=await F(u,"r"),this.openFiles.set(i.fileId,n)}let r=Buffer.alloc(l);await n.read(r,0,l,i.offset);let o=r.readUInt32BE(0),a=r.readUInt32BE(4),c=Buffer.alloc(o);await n.read(c,0,o,i.offset+l);let d=Buffer.alloc(a);return await n.read(d,0,a,i.offset+l+o),d}async delete(t){if(!this.readWrite)throw new Error("Read-only mode");let e=Buffer.isBuffer(t)?t:Buffer.from(t),i=BigInt(Date.now()),n=1,r=Buffer.alloc(l);r.writeUInt32BE(e.length,0),r.writeUInt32BE(0,4),r.writeUInt8(n,8),r.writeBigUInt64BE(i,9);let o=Buffer.concat([r,e]),a=this.activeOffset;await new Promise((c,d)=>{this.activeFile.write(o,u=>u?d(u):c())}),this.syncOnPut&&this.activeFile&&s.fsyncSync(this.activeFile.fd),this.keydir.set(e.toString("binary"),{fileId:this.activeFileId,offset:a,size:o.length,timestamp:i,tombstone:!0}),this.activeOffset+=o.length,this.activeOffset>32*1024*1024&&(this.activeFile.close(),this.rollover())}listKeys(){return Array.from(this.keydir.entries()).filter(([t,e])=>!e.tombstone).map(([t,e])=>t)}async fold(t,e){for(let[i,n]of this.keydir.entries())if(!n.tombstone){let r=await this.get(i);e=t(i,r,e)}return e}async merge(){let t=new Map;for(let[a,c]of this.keydir.entries())c.tombstone||t.set(a,c);let e=this.listDataFiles().map(a=>parseInt(a.split(".")[0],10)),i=e.length?Math.max(...e)+1:1,n=`${i.toString().padStart(8,"0")}.data`,r=p.join(this.dirname,n),o=s.createWriteStream(r,{flags:"a"});for(let[a,c]of t.entries()){let d=await this.get(a),u=Buffer.from(a,"binary"),y=Buffer.alloc(l);y.writeUInt32BE(u.length,0),y.writeUInt32BE(d.length,4),y.writeUInt8(0,8),y.writeBigUInt64BE(c.timestamp,9);let m=Buffer.concat([y,u,d]);await new Promise((B,I)=>{o.write(m,w=>w?I(w):B())})}o.close();for(let a of e)if(a!==this.activeFileId&&a!==i)try{s.unlinkSync(p.join(this.dirname,`${a.toString().padStart(8,"0")}.data`))}catch{}this.loadFiles()}sync(){this.activeFile&&s.fsyncSync(this.activeFile.fd)}async close(){this.activeFile&&this.activeFile.end();for(let t of this.openFiles.values())await t.close();this.openFiles.clear()}};h(v,"Bitcask");var g=v;function k(f,t){return new g(f,t)}h(k,"open");async function E(f,t){let e=await f.get(t);return e===null?"not found":e}h(E,"get");async function U(f,t,e){return await f.put(t,e),"ok"}h(U,"put");async function x(f,t){return await f.delete(t),"ok"}h(x,"del");function O(f){return f.listKeys()}h(O,"listKeys");async function P(f,t,e){return await f.fold(t,e)}h(P,"fold");async function W(f){let t=new g(f,{readWrite:!0});return await t.merge(),t.close(),"ok"}h(W,"merge");function z(f){return f.sync(),"ok"}h(z,"sync");async function D(f){return await f.close(),"ok"}h(D,"close");export{g as Bitcask,D as close,x as del,P as fold,E as get,O as listKeys,W as merge,k as open,U as put,z as sync};
|
|
2
2
|
//# sourceMappingURL=bitcask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/_experiments/bitcask.ts"],"sourcesContent":["// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"],"mappings":"6BAEA,UAAYA,MAAQ,KACpB,UAAYC,MAAU,OACtB,OAAqB,QAAQC,MAAgB,cAE7C,IAAMC,EAAoB,GAUbC,EAAN,KAAc,CAUnB,YAAYC,EAAiBC,EAAqD,CAAC,EAAG,CANtF,KAAQ,OAAmC,IAAI,IAC/C,KAAQ,WAAoC,KAC5C,KAAQ,aAAuB,EAC/B,KAAQ,aAAuB,EAC/B,KAAQ,UAAqC,IAAI,IAG/C,KAAK,QAAUD,EACf,KAAK,UAAYC,EAAK,YAAc,GACpC,KAAK,UAAYA,EAAK,YAAc,GAC5B,aAAWD,CAAO,GAAM,YAAUA,EAAS,CAAE,UAAW,EAAK,CAAC,EACtE,KAAK,UAAU,EACX,KAAK,WAAW,KAAK,SAAS,CACpC,CAEQ,eAA0B,CAChC,OAAU,cAAY,KAAK,OAAO,EAAE,OAAOE,GAAKA,EAAE,SAAS,OAAO,CAAC,EAAE,KAAK,CAC5E,CAEQ,WAAY,CAClB,QAAWC,KAAS,KAAK,cAAc,EAAG,CACxC,IAAMC,EAAS,SAASD,EAAM,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,EACzCE,EAAgB,OAAK,KAAK,QAASF,CAAK,EACxCG,EAAQ,WAASD,EAAU,GAAG,EAChCE,EAAS,EACb,OAAa,CACX,IAAMC,EAAS,OAAO,MAAMV,CAAiB,EAE7C,GADqB,WAASQ,EAAIE,EAAQ,EAAGV,EAAmBS,CAAM,EACtDT,EAAmB,MACnC,IAAMW,EAAUD,EAAO,aAAa,CAAC,EAC/BE,EAAYF,EAAO,aAAa,CAAC,EACjCG,EAAYH,EAAO,UAAU,CAAC,IAAM,EACpCI,EAAYJ,EAAO,gBAAgB,CAAC,EACpCK,EAAM,OAAO,MAAMJ,CAAO,EAC7B,WAASH,EAAIO,EAAK,EAAGJ,EAASF,EAAST,CAAiB,EAE3D,IAAMgB,EAAYhB,EAAoBW,EAAUC,EAChD,KAAK,OAAO,IAAIG,EAAI,SAAS,QAAQ,EAAG,CACtC,OAAAT,EACA,OAAAG,EACA,KAAMO,EACN,UAAAF,EACA,UAAAD,CACF,CAAC,EACDJ,GAAUO,CACZ,CACG,YAAUR,CAAE,CACjB,CACF,CAEQ,UAAW,CACjB,IAAMS,EAAU,KAAK,cAAc,EAAE,IAAIb,GAAK,SAASA,EAAE,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,CAAC,EACrEc,EAASD,EAAQ,OAAS,KAAK,IAAI,GAAGA,CAAO,EAAI,EAAI,EACrDZ,EAAQ,GAAGa,EAAO,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,QAC7CX,EAAgB,OAAK,KAAK,QAASF,CAAK,EAC9C,KAAK,WAAgB,oBAAkBE,EAAU,CAAE,MAAO,GAAI,CAAC,EAC/D,KAAK,aAAeW,EACpB,KAAK,aAAkB,aAAWX,CAAQ,EAAO,WAASA,CAAQ,EAAE,KAAO,CAC7E,CAEA,MAAM,IAAIQ,EAAsBI,EAAwB,CACtD,GAAI,CAAC,KAAK,UAAW,MAAM,IAAI,MAAM,gBAAgB,EACrD,IAAMC,EAAS,OAAO,SAASL,CAAG,EAAIA,EAAM,OAAO,KAAKA,CAAG,EACrDM,EAAW,OAAO,SAASF,CAAK,EAAIA,EAAQ,OAAO,KAAKA,CAAK,EAC7DL,EAAY,OAAO,KAAK,IAAI,CAAC,EAC7BD,EAAY,EACZH,EAAS,OAAO,MAAMV,CAAiB,EAC7CU,EAAO,cAAcU,EAAO,OAAQ,CAAC,EACrCV,EAAO,cAAcW,EAAS,OAAQ,CAAC,EACvCX,EAAO,WAAWG,EAAW,CAAC,EAC9BH,EAAO,iBAAiBI,EAAW,CAAC,EACpC,IAAMQ,EAAQ,OAAO,OAAO,CAACZ,EAAQU,EAAQC,CAAQ,CAAC,EAChDZ,EAAS,KAAK,aACpB,MAAM,IAAI,QAAc,CAACc,EAASC,IAAW,CAC3C,KAAK,WAAY,MAAMF,EAAOG,GAAQA,EAAMD,EAAOC,CAAG,EAAIF,EAAQ,CAAE,CACtE,CAAC,EACG,KAAK,WAAa,KAAK,YACtB,YAAW,KAAK,WAAmB,EAAE,EAE1C,KAAK,OAAO,IAAIH,EAAO,SAAS,QAAQ,EAAG,CACzC,OAAQ,KAAK,aACb,OAAAX,EACA,KAAMa,EAAM,OACZ,UAAAR,EACA,UAAW,EACb,CAAC,EACD,KAAK,cAAgBQ,EAAM,OACvB,KAAK,aAAe,GAAK,KAAO,OAClC,KAAK,WAAY,MAAM,EACvB,KAAK,SAAS,EAElB,CAEA,MAAM,IAAIP,EAA8C,CACtD,IAAMK,EAAS,OAAO,SAASL,CAAG,EAAIA,EAAM,OAAO,KAAKA,CAAG,EACrDW,EAAO,KAAK,OAAO,IAAIN,EAAO,SAAS,QAAQ,CAAC,EACtD,GAAI,CAACM,GAAQA,EAAK,UAAW,OAAO,KACpC,IAAIC,EAAK,KAAK,UAAU,IAAID,EAAK,MAAM,EACvC,GAAI,CAACC,EAAI,CACP,IAAMtB,EAAa,OAAK,KAAK,QAAS,GAAGqB,EAAK,OAAO,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,OAAO,EACvFC,EAAK,MAAM5B,EAASM,EAAO,GAAG,EAC9B,KAAK,UAAU,IAAIqB,EAAK,OAAQC,CAAE,CACpC,CACA,IAAMjB,EAAS,OAAO,MAAMV,CAAiB,EAC7C,MAAM2B,EAAG,KAAKjB,EAAQ,EAAGV,EAAmB0B,EAAK,MAAM,EACvD,IAAMf,EAAUD,EAAO,aAAa,CAAC,EAC/BE,EAAYF,EAAO,aAAa,CAAC,EACjCkB,EAAU,OAAO,MAAMjB,CAAO,EACpC,MAAMgB,EAAG,KAAKC,EAAS,EAAGjB,EAASe,EAAK,OAAS1B,CAAiB,EAClE,IAAMmB,EAAQ,OAAO,MAAMP,CAAS,EACpC,aAAMe,EAAG,KAAKR,EAAO,EAAGP,EAAWc,EAAK,OAAS1B,EAAoBW,CAAO,EACrEQ,CACT,CAEA,MAAM,OAAOJ,EAAsB,CACjC,GAAI,CAAC,KAAK,UAAW,MAAM,IAAI,MAAM,gBAAgB,EACrD,IAAMK,EAAS,OAAO,SAASL,CAAG,EAAIA,EAAM,OAAO,KAAKA,CAAG,EACrDD,EAAY,OAAO,KAAK,IAAI,CAAC,EAC7BD,EAAY,EACZH,EAAS,OAAO,MAAMV,CAAiB,EAC7CU,EAAO,cAAcU,EAAO,OAAQ,CAAC,EACrCV,EAAO,cAAc,EAAG,CAAC,EACzBA,EAAO,WAAWG,EAAW,CAAC,EAC9BH,EAAO,iBAAiBI,EAAW,CAAC,EACpC,IAAMQ,EAAQ,OAAO,OAAO,CAACZ,EAAQU,CAAM,CAAC,EACtCX,EAAS,KAAK,aACpB,MAAM,IAAI,QAAc,CAACc,EAASC,IAAW,CAC3C,KAAK,WAAY,MAAMF,EAAOG,GAAQA,EAAMD,EAAOC,CAAG,EAAIF,EAAQ,CAAE,CACtE,CAAC,EACG,KAAK,WAAa,KAAK,YACtB,YAAW,KAAK,WAAmB,EAAE,EAE1C,KAAK,OAAO,IAAIH,EAAO,SAAS,QAAQ,EAAG,CACzC,OAAQ,KAAK,aACb,OAAAX,EACA,KAAMa,EAAM,OACZ,UAAAR,EACA,UAAW,EACb,CAAC,EACD,KAAK,cAAgBQ,EAAM,OACvB,KAAK,aAAe,GAAK,KAAO,OAClC,KAAK,WAAY,MAAM,EACvB,KAAK,SAAS,EAElB,CAEA,UAAqB,CACnB,OAAO,MAAM,KAAK,KAAK,OAAO,QAAQ,CAAC,EAAE,OAAO,CAAC,CAACO,EAAGC,CAAC,IAAM,CAACA,EAAE,SAAS,EAAE,IAAI,CAAC,CAACC,EAAGF,CAAC,IAAME,CAAC,CAC7F,CAEA,MAAM,KAAQC,EAAyCC,EAAqB,CAC1E,OAAW,CAACF,EAAGL,CAAI,IAAK,KAAK,OAAO,QAAQ,EAC1C,GAAI,CAACA,EAAK,UAAW,CACnB,IAAMI,EAAI,MAAM,KAAK,IAAIC,CAAC,EAC1BE,EAAOD,EAAGD,EAAGD,EAAIG,CAAI,CACvB,CAEF,OAAOA,CACT,CAEA,MAAM,OAAQ,CAEZ,IAAMC,EAAiC,IAAI,IAC3C,OAAW,CAACH,EAAGL,CAAI,IAAK,KAAK,OAAO,QAAQ,EACrCA,EAAK,WAAWQ,EAAK,IAAIH,EAAGL,CAAI,EAEvC,IAAMT,EAAU,KAAK,cAAc,EAAE,IAAIb,GAAK,SAASA,EAAE,MAAM,GAAG,EAAE,CAAC,EAAG,EAAE,CAAC,EACrEc,EAASD,EAAQ,OAAS,KAAK,IAAI,GAAGA,CAAO,EAAI,EAAI,EACrDZ,EAAQ,GAAGa,EAAO,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,QAC7CX,EAAgB,OAAK,KAAK,QAASF,CAAK,EACxC,EAAO,oBAAkBE,EAAU,CAAE,MAAO,GAAI,CAAC,EACvD,OAAW,CAACwB,EAAGL,CAAI,IAAKQ,EAAK,QAAQ,EAAG,CACtC,IAAMJ,EAAI,MAAM,KAAK,IAAIC,CAAC,EACpBX,EAAS,OAAO,KAAKW,EAAG,QAAQ,EAChCrB,EAAS,OAAO,MAAMV,CAAiB,EAC7CU,EAAO,cAAcU,EAAO,OAAQ,CAAC,EACrCV,EAAO,cAAcoB,EAAG,OAAQ,CAAC,EACjCpB,EAAO,WAAW,EAAG,CAAC,EACtBA,EAAO,iBAAiBgB,EAAK,UAAW,CAAC,EACzC,IAAMJ,EAAQ,OAAO,OAAO,CAACZ,EAAQU,EAAQU,CAAE,CAAC,EAChD,MAAM,IAAI,QAAc,CAACP,EAASC,IAAW,CAC3C,EAAE,MAAMF,EAAOG,GAAQA,EAAMD,EAAOC,CAAG,EAAIF,EAAQ,CAAE,CACvD,CAAC,CACH,CACA,EAAE,MAAM,EACR,QAAWY,KAAOlB,EAChB,GAAIkB,IAAQ,KAAK,cAAgBA,IAAQjB,EACvC,GAAI,CACC,aAAgB,OAAK,KAAK,QAAS,GAAGiB,EAAI,SAAS,EAAE,SAAS,EAAG,GAAG,CAAC,OAAO,CAAC,CAClF,MAAQ,CAAE,CAGd,KAAK,UAAU,CACjB,CAEA,MAAO,CACD,KAAK,YAAe,YAAW,KAAK,WAAmB,EAAE,CAC/D,CAEA,MAAM,OAAQ,CACR,KAAK,YAAY,KAAK,WAAW,IAAI,EACzC,QAAWR,KAAM,KAAK,UAAU,OAAO,EAAG,MAAMA,EAAG,MAAM,EACzD,KAAK,UAAU,MAAM,CACvB,CACF,EAGO,SAASS,EAAKlC,EAAiBC,EAAqD,CACzF,OAAO,IAAIF,EAAQC,EAASC,CAAI,CAClC,CACA,eAAsBkC,EAAIC,EAAiBvB,EAAsB,CAC/D,IAAMe,EAAI,MAAMQ,EAAO,IAAIvB,CAAG,EAC9B,OAAOe,IAAM,KAAO,YAAcA,CACpC,CACA,eAAsBS,EAAID,EAAiBvB,EAAsBI,EAAwB,CACvF,aAAMmB,EAAO,IAAIvB,EAAKI,CAAK,EACpB,IACT,CACA,eAAsBqB,EAAIF,EAAiBvB,EAAsB,CAC/D,aAAMuB,EAAO,OAAOvB,CAAG,EAChB,IACT,CACO,SAAS0B,EAASH,EAAiB,CACxC,OAAOA,EAAO,SAAS,CACzB,CACA,eAAsBI,EAAQJ,EAAiBN,EAAyCC,EAAS,CAC/F,OAAO,MAAMK,EAAO,KAAKN,EAAIC,CAAI,CACnC,CACA,eAAsBU,EAAMzC,EAAiB,CAC3C,IAAM0C,EAAI,IAAI3C,EAAQC,EAAS,CAAE,UAAW,EAAK,CAAC,EAClD,aAAM0C,EAAE,MAAM,EACdA,EAAE,MAAM,EACD,IACT,CACO,SAASC,EAAKP,EAAiB,CACpC,OAAAA,EAAO,KAAK,EACL,IACT,CACA,eAAsBQ,EAAMR,EAAiB,CAC3C,aAAMA,EAAO,MAAM,EACZ,IACT","names":["fs","path","openFile","ENTRY_HEADER_SIZE","Bitcask","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId","value","keyBuf","valueBuf","entry","resolve","reject","err","meta","fh","keyRead","_","v","k","fn","acc0","live","fid","open","get","handle","put","del","listKeys","fold","merge","h","sync","close"]}
|
|
1
|
+
{"version":3,"sources":["../../src/_experiments/bitcask.ts"],"sourcesContent":["// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"],"mappings":"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","names":["fs","path","openFile","ENTRY_HEADER_SIZE","_Bitcask","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId","value","keyBuf","valueBuf","entry","resolve","reject","err","meta","fh","openFile","keyRead","_","v","k","fn","acc0","live","fid","__name","Bitcask","open","get","handle","put","del","listKeys","fold","merge","h","sync","close"]}
|
package/dist/browser/base64.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkR74LEJVEcjs = require('../chunk-R74LEJVE.cjs');require('../chunk-P7XCQ7WV.cjs');exports.urlBase64ToUint8Array = _chunkR74LEJVEcjs.a;
|
|
2
2
|
//# sourceMappingURL=base64.cjs.map
|
package/dist/browser/base64.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-LJ47LTYI.js";import"../chunk-5NKC2EQJ.js";export{a as urlBase64ToUint8Array};
|
|
2
2
|
//# sourceMappingURL=base64.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkC7CD7VGTcjs = require('../chunk-C7CD7VGT.cjs');require('../chunk-P7XCQ7WV.cjs');exports.gravatarURLByEmail = _chunkC7CD7VGTcjs.a;
|
|
2
2
|
//# sourceMappingURL=gravatar.cjs.map
|
package/dist/browser/gravatar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-7QVUB3F6.js";import"../chunk-5NKC2EQJ.js";export{a as gravatarURLByEmail};
|
|
2
2
|
//# sourceMappingURL=gravatar.js.map
|
package/dist/browser/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-KPU7ZOUH.cjs');require('../chunk-ULLUQLTA.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-KPU7ZOUH.cjs');require('../chunk-ULLUQLTA.cjs');var _chunkHAXPVYWLcjs = require('../chunk-HAXPVYWL.cjs');require('../chunk-G3CV2GDT.cjs');var _chunk5XASXL7Scjs = require('../chunk-5XASXL7S.cjs');var _chunkAH7ZMSSEcjs = require('../chunk-AH7ZMSSE.cjs');var _chunkV7PT2XFCcjs = require('../chunk-V7PT2XFC.cjs');require('../chunk-N7XCSNC7.cjs');require('../chunk-UU3C5532.cjs');require('../chunk-QPEDLXS5.cjs');require('../chunk-SEQAFKIV.cjs');require('../chunk-O374Z5NR.cjs');require('../chunk-BOPTOHBX.cjs');require('../chunk-BNLACAUM.cjs');require('../chunk-2DA6AL7I.cjs');require('../chunk-OFD5OA4D.cjs');var _chunkR74LEJVEcjs = require('../chunk-R74LEJVE.cjs');var _chunkC7CD7VGTcjs = require('../chunk-C7CD7VGT.cjs');require('../chunk-P7XCQ7WV.cjs');exports.LocalStorage = _chunkV7PT2XFCcjs.a; exports.LoggerBrowserHandler = _chunk5XASXL7Scjs.a; exports.LoggerBrowserSetupDebugFactory = _chunkHAXPVYWLcjs.a; exports.browserSupportsColors = _chunkAH7ZMSSEcjs.a; exports.gravatarURLByEmail = _chunkC7CD7VGTcjs.a; exports.urlBase64ToUint8Array = _chunkR74LEJVEcjs.a;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunk-WAROIE2O.js";import"../chunk-OR7Z43J5.js";import{a as f}from"../chunk-
|
|
1
|
+
import"../chunk-WAROIE2O.js";import"../chunk-OR7Z43J5.js";import{a as f}from"../chunk-DE27NHZF.js";import"../chunk-X6OPSTQX.js";import{a as e}from"../chunk-VKDJH4XY.js";import{a as d}from"../chunk-F2B4OXR3.js";import{a as c}from"../chunk-3RVCZS3K.js";import"../chunk-FG7OTMAN.js";import"../chunk-L6SJJRKH.js";import"../chunk-DTJO6YRX.js";import"../chunk-RZR3ECDT.js";import"../chunk-UMYL2PX5.js";import"../chunk-JU2ZJK7V.js";import"../chunk-VIBF2JX4.js";import"../chunk-MKVMNYMW.js";import"../chunk-SCMIPQZH.js";import{a}from"../chunk-LJ47LTYI.js";import{a as b}from"../chunk-7QVUB3F6.js";import"../chunk-5NKC2EQJ.js";export{c as LocalStorage,e as LoggerBrowserHandler,f as LoggerBrowserSetupDebugFactory,d as browserSupportsColors,b as gravatarURLByEmail,a as urlBase64ToUint8Array};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkV7PT2XFCcjs = require('../chunk-V7PT2XFC.cjs');require('../chunk-OFD5OA4D.cjs');require('../chunk-P7XCQ7WV.cjs');exports.LocalStorage = _chunkV7PT2XFCcjs.a;
|
|
2
2
|
//# sourceMappingURL=localstorage.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-3RVCZS3K.js";import"../chunk-SCMIPQZH.js";import"../chunk-5NKC2EQJ.js";export{a as LocalStorage};
|
|
2
2
|
//# sourceMappingURL=localstorage.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../chunk-ULLUQLTA.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../chunk-ULLUQLTA.cjs');var _chunkHAXPVYWLcjs = require('../../chunk-HAXPVYWL.cjs');require('../../chunk-G3CV2GDT.cjs');var _chunk5XASXL7Scjs = require('../../chunk-5XASXL7S.cjs');var _chunkAH7ZMSSEcjs = require('../../chunk-AH7ZMSSE.cjs');require('../../chunk-N7XCSNC7.cjs');require('../../chunk-UU3C5532.cjs');require('../../chunk-QPEDLXS5.cjs');require('../../chunk-SEQAFKIV.cjs');require('../../chunk-O374Z5NR.cjs');require('../../chunk-BOPTOHBX.cjs');require('../../chunk-BNLACAUM.cjs');require('../../chunk-2DA6AL7I.cjs');require('../../chunk-OFD5OA4D.cjs');require('../../chunk-P7XCQ7WV.cjs');exports.LoggerBrowserHandler = _chunk5XASXL7Scjs.a; exports.LoggerBrowserSetupDebugFactory = _chunkHAXPVYWLcjs.a; exports.browserSupportsColors = _chunkAH7ZMSSEcjs.a;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../../chunk-OR7Z43J5.js";import{a as c}from"../../chunk-
|
|
1
|
+
import"../../chunk-OR7Z43J5.js";import{a as c}from"../../chunk-DE27NHZF.js";import"../../chunk-X6OPSTQX.js";import{a as b}from"../../chunk-VKDJH4XY.js";import{a}from"../../chunk-F2B4OXR3.js";import"../../chunk-FG7OTMAN.js";import"../../chunk-L6SJJRKH.js";import"../../chunk-DTJO6YRX.js";import"../../chunk-RZR3ECDT.js";import"../../chunk-UMYL2PX5.js";import"../../chunk-JU2ZJK7V.js";import"../../chunk-VIBF2JX4.js";import"../../chunk-MKVMNYMW.js";import"../../chunk-SCMIPQZH.js";import"../../chunk-5NKC2EQJ.js";export{b as LoggerBrowserHandler,c as LoggerBrowserSetupDebugFactory,a as browserSupportsColors};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkHAXPVYWLcjs = require('../../chunk-HAXPVYWL.cjs');require('../../chunk-G3CV2GDT.cjs');require('../../chunk-AH7ZMSSE.cjs');require('../../chunk-N7XCSNC7.cjs');require('../../chunk-UU3C5532.cjs');require('../../chunk-QPEDLXS5.cjs');require('../../chunk-SEQAFKIV.cjs');require('../../chunk-O374Z5NR.cjs');require('../../chunk-BOPTOHBX.cjs');require('../../chunk-BNLACAUM.cjs');require('../../chunk-OFD5OA4D.cjs');require('../../chunk-P7XCQ7WV.cjs');exports.LoggerBrowserSetupDebugFactory = _chunkHAXPVYWLcjs.a;
|
|
2
2
|
//# sourceMappingURL=log-browser-factory.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-DE27NHZF.js";import"../../chunk-X6OPSTQX.js";import"../../chunk-F2B4OXR3.js";import"../../chunk-FG7OTMAN.js";import"../../chunk-L6SJJRKH.js";import"../../chunk-DTJO6YRX.js";import"../../chunk-RZR3ECDT.js";import"../../chunk-UMYL2PX5.js";import"../../chunk-JU2ZJK7V.js";import"../../chunk-VIBF2JX4.js";import"../../chunk-SCMIPQZH.js";import"../../chunk-5NKC2EQJ.js";export{a as LoggerBrowserSetupDebugFactory};
|
|
2
2
|
//# sourceMappingURL=log-browser-factory.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk5XASXL7Scjs = require('../../chunk-5XASXL7S.cjs');require('../../chunk-AH7ZMSSE.cjs');require('../../chunk-N7XCSNC7.cjs');require('../../chunk-UU3C5532.cjs');require('../../chunk-QPEDLXS5.cjs');require('../../chunk-SEQAFKIV.cjs');require('../../chunk-O374Z5NR.cjs');require('../../chunk-BOPTOHBX.cjs');require('../../chunk-BNLACAUM.cjs');require('../../chunk-2DA6AL7I.cjs');require('../../chunk-OFD5OA4D.cjs');require('../../chunk-P7XCQ7WV.cjs');exports.LoggerBrowserHandler = _chunk5XASXL7Scjs.a;
|
|
2
2
|
//# sourceMappingURL=log-browser.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-VKDJH4XY.js";import"../../chunk-F2B4OXR3.js";import"../../chunk-FG7OTMAN.js";import"../../chunk-L6SJJRKH.js";import"../../chunk-DTJO6YRX.js";import"../../chunk-RZR3ECDT.js";import"../../chunk-UMYL2PX5.js";import"../../chunk-JU2ZJK7V.js";import"../../chunk-VIBF2JX4.js";import"../../chunk-MKVMNYMW.js";import"../../chunk-SCMIPQZH.js";import"../../chunk-5NKC2EQJ.js";export{a as LoggerBrowserHandler};
|
|
2
2
|
//# sourceMappingURL=log-browser.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkAH7ZMSSEcjs = require('../../chunk-AH7ZMSSE.cjs');require('../../chunk-P7XCQ7WV.cjs');exports.browserSupportsColors = _chunkAH7ZMSSEcjs.a;
|
|
2
2
|
//# sourceMappingURL=log-colors.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-F2B4OXR3.js";import"../../chunk-5NKC2EQJ.js";export{a as browserSupportsColors};
|
|
2
2
|
//# sourceMappingURL=log-colors.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk46BA4GIHcjs = require('../../chunk-46BA4GIH.cjs');require('../../chunk-HAXPVYWL.cjs');require('../../chunk-G3CV2GDT.cjs');require('../../chunk-5XASXL7S.cjs');require('../../chunk-AH7ZMSSE.cjs');require('../../chunk-CGQVOMRY.cjs');require('../../chunk-L5C7BHMX.cjs');require('../../chunk-N7XCSNC7.cjs');require('../../chunk-RMNY7B3P.cjs');require('../../chunk-NRT3HHRU.cjs');require('../../chunk-ALQOXSUC.cjs');require('../../chunk-UU3C5532.cjs');require('../../chunk-QPEDLXS5.cjs');require('../../chunk-SEQAFKIV.cjs');require('../../chunk-O374Z5NR.cjs');require('../../chunk-BOPTOHBX.cjs');require('../../chunk-BNLACAUM.cjs');require('../../chunk-2DA6AL7I.cjs');require('../../chunk-OFD5OA4D.cjs');require('../../chunk-P7XCQ7WV.cjs');exports.Logger = _chunk46BA4GIHcjs.a; exports.LoggerFromConfig = _chunk46BA4GIHcjs.b;
|
|
2
2
|
//# sourceMappingURL=log-context-browser.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-EHBBJYSJ.js";import"../../chunk-DE27NHZF.js";import"../../chunk-X6OPSTQX.js";import"../../chunk-VKDJH4XY.js";import"../../chunk-F2B4OXR3.js";import"../../chunk-SINRSKMZ.js";import"../../chunk-CHUK5BAO.js";import"../../chunk-FG7OTMAN.js";import"../../chunk-XI5OG3BF.js";import"../../chunk-CESLI4UB.js";import"../../chunk-DCIYTIVV.js";import"../../chunk-L6SJJRKH.js";import"../../chunk-DTJO6YRX.js";import"../../chunk-RZR3ECDT.js";import"../../chunk-UMYL2PX5.js";import"../../chunk-JU2ZJK7V.js";import"../../chunk-VIBF2JX4.js";import"../../chunk-MKVMNYMW.js";import"../../chunk-SCMIPQZH.js";import"../../chunk-5NKC2EQJ.js";export{a as Logger,b as LoggerFromConfig};
|
|
2
2
|
//# sourceMappingURL=log-context-browser.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var u;function a(e=Date.UTC(2e3,0,1,0,0,0,0)){u=e}_chunkP7XCQ7WVcjs.a.call(void 0, a,"setTimestampTest");function c(){return _nullishCoalesce(u, () => (Date.now()))}_chunkP7XCQ7WVcjs.a.call(void 0, c,"getTimestamp");function d(){return Math.floor(c()/1e3)}_chunkP7XCQ7WVcjs.a.call(void 0, d,"getTimestampInSeconds");function T(e){return new Date(e*1e3)}_chunkP7XCQ7WVcjs.a.call(void 0, T,"dateFromSeconds");function s(e){return e>999?`${(e/1e3).toFixed(1)} s`:`${e.toFixed(2)} ms`}_chunkP7XCQ7WVcjs.a.call(void 0, s,"formatMilliseconds");function p(...e){for(let n of e){if(n instanceof Date)return n;if(typeof n=="string"){let o=null;if(n.includes(":"))try{o=new Date(n)}catch (e2){}if(!(o instanceof Date)){let r=/(\d\d\d\d)-(\d\d)-(\d\d)/.exec(n);r&&(o=new Date(+r[1],+r[2]-1,+r[3],12,0))}if(o instanceof Date)return o}}}_chunkP7XCQ7WVcjs.a.call(void 0, p,"parseDate");function i(){return typeof performance<"u"?performance.now():Date.now()}_chunkP7XCQ7WVcjs.a.call(void 0, i,"getPerformanceTimestamp");function M(){let e=i();return function(){let n=i()-e;return s(n)}}_chunkP7XCQ7WVcjs.a.call(void 0, M,"duration");function f(e){return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())}_chunkP7XCQ7WVcjs.a.call(void 0, f,"datetimeToLocal");function x(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}_chunkP7XCQ7WVcjs.a.call(void 0, x,"datetimeToUTC");function _(e,n=!0){return e<=0?0:n&&e<1e12?e:Math.floor(e/1e3)}_chunkP7XCQ7WVcjs.a.call(void 0, _,"timestampMillisecondsToSeconds");function l(e,n=!0){return e<=0?0:n&&e>1e12?e:Math.floor(e*1e3)}_chunkP7XCQ7WVcjs.a.call(void 0, l,"timestampSecondsToMilliseconds");var g=31536e6,E= exports.n =31536e3,m= exports.o =2592e6,S= exports.p =2592e3,I= exports.q =6048e5,U= exports.r =604800,D= exports.s =864e5,C= exports.t =86400,b= exports.u =36e5,w= exports.v =3600,h= exports.w =6e4,H= exports.x =60;exports.a = a; exports.b = c; exports.c = d; exports.d = T; exports.e = s; exports.f = p; exports.g = i; exports.h = M; exports.i = f; exports.j = x; exports.k = _; exports.l = l; exports.m = g; exports.n = E; exports.o = m; exports.p = S; exports.q = I; exports.r = U; exports.s = D; exports.t = C; exports.u = b; exports.v = w; exports.w = h; exports.x = H;
|
|
2
|
+
//# sourceMappingURL=chunk-2DA6AL7I.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2DA6AL7I.cjs","../src/common/time.ts"],"names":["testModeTime","setTimestampTest","ts","__name","getTimestamp","getTimestampInSeconds","dateFromSeconds","formatMilliseconds","ms"],"mappings":"AAAA,qOAAwC,ICApCA,CAAAA,CAEG,SAASC,CAAAA,CAAiBC,CAAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAA,CAAM,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAG,CACtEF,CAAAA,CAAeE,CACjB,CAFgBC,iCAAAA,CAAAF,CAAA,kBAAA,CAAA,CAOT,SAASG,CAAAA,CAAAA,CAAuB,CACrC,wBAAOJ,CAAAA,SAAgB,IAAA,CAAK,GAAA,CAAI,GAClC,CAFgBG,iCAAAA,CAAAC,CAAA,cAAA,CAAA,CAOT,SAASC,CAAAA,CAAAA,CAAgC,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAMD,CAAAA,CAAa,CAAA,CAAI,GAAI,CACzC,CAFgBD,iCAAAA,CAAAE,CAAA,uBAAA,CAAA,CAOT,SAASC,CAAAA,CAAgBJ,CAAAA,CAAkB,CAChD,OAAO,IAAI,IAAA,CAAKA,CAAAA,CAAK,GAAI,CAC3B,CAFgBC,iCAAAA,CAAAG,CAAA,iBAAA,CAAA,CAMT,SAASC,CAAAA,CAAmBC,CAAAA,CAAoB,CACrD,OAAOA,CAAAA,CAAK,GAAA,CAAM,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2DA6AL7I.cjs","sourcesContent":[null,"let testModeTime: number | undefined\n\nexport function setTimestampTest(ts = Date.UTC(2000, 0, 1, 0, 0, 0, 0)) {\n testModeTime = ts\n}\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport function getTimestamp(): number {\n return testModeTime ?? Date.now()\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function getTimestampInSeconds(): number {\n return Math.floor(getTimestamp() / 1000)\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function dateFromSeconds(ts: number): Date {\n return new Date(ts * 1000)\n}\n\n// typeof performance !== \"undefined\" ? performance.now() : new Date().getTime()\n\nexport function formatMilliseconds(ms: number): string {\n return ms > 999 ? `${(ms / 1000).toFixed(1)} s` : `${ms.toFixed(2)} ms`\n}\n\n/**\n * Parses the given date candidates and returns the first valid Date object found.\n *\n * @param dateCandidates - The date candidates to parse, which can be either strings or Date objects.\n * @returns The parsed Date object, or undefined if no valid date is found.\n */\nexport function parseDate(\n ...dateCandidates: (string | Date)[]\n): Date | undefined {\n for (const dateCandidate of dateCandidates) {\n if (dateCandidate instanceof Date)\n return dateCandidate\n\n if (typeof dateCandidate === 'string') {\n let date = null\n if (dateCandidate.includes(':')) {\n try {\n date = new Date(dateCandidate)\n }\n catch (err) {}\n }\n if (!(date instanceof Date)) {\n const m = /(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/.exec(dateCandidate)\n if (m)\n date = new Date(+m[1], +m[2] - 1, +m[3], 12, 0)\n }\n if (date instanceof Date)\n return date\n }\n }\n}\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport function getPerformanceTimestamp(): number {\n return typeof performance !== 'undefined' ? performance.now() : Date.now()\n}\n\nexport function duration(): () => string {\n const t0 = getPerformanceTimestamp()\n\n return function (): string {\n const duration = getPerformanceTimestamp() - t0\n return formatMilliseconds(duration)\n\n // if (duration > 500)\n // return `${(duration / 1000).toFixed(4)}s`\n\n // // https://elijahmanor.com/format-js-numbers\n // // https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n // return duration.toLocaleString('en-US', {\n // style: 'unit',\n // unit: 'millisecond',\n // notation: 'compact',\n // compactDisplay: 'long',\n // })\n }\n}\n\n/** If you parsed a date without time zone, you may need to shift it to local time */\nexport function datetimeToLocal(fromDate: Date): Date {\n return new Date(\n fromDate.getUTCFullYear(),\n fromDate.getUTCMonth(),\n fromDate.getUTCDate(),\n fromDate.getUTCHours(),\n fromDate.getUTCMinutes(),\n fromDate.getUTCSeconds(),\n fromDate.getUTCMilliseconds(),\n )\n}\n\n/** If you parsed a date without time zone, you may need to shift it to UTC time */\nexport function datetimeToUTC(fromDate: Date): Date {\n return new Date(Date.UTC(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n ))\n}\n\n// const tsMs2000 = 946684800000 // same as Jan 11 1970 in ms\n// const tsMs2500 = 16725225600000 // same as Jul 13 1970 in ms\n// 1000000000000\n\n/** ms -> s with simple check. Assume low values are already ms */\nexport function timestampMillisecondsToSeconds(ts: number, smart = true): number {\n if (ts <= 0)\n return 0\n if (smart && ts < 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in seconds?', ts)\n }\n return Math.floor(ts / 1000)\n}\n\n/** s -> ms with simple check. Assume high values are already ms */\nexport function timestampSecondsToMilliseconds(ts: number, smart = true): number {\n if (ts <= 0)\n return 0\n if (smart && ts > 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in milliseconds?', ts)\n }\n return Math.floor(ts * 1000)\n}\n\nexport const TIME_YEAR_MS = 31536000000 // 365 * 24 * 60 * 60 * 1000\nexport const TIME_YEAR_S = 31536000 // 365 * 24 * 60 * 60\nexport const TIME_MONTH_MS = 2592000000 // 30 * 24 * 60 * 60 * 1000\nexport const TIME_MONTH_S = 2592000 // 30 * 24 * 60 * 60\nexport const TIME_WEEK_MS = 604800000 // 7 * 24 * 60 * 60 * 1000\nexport const TIME_WEEK_S = 604800 // 7 * 24 * 60 * 60\nexport const TIME_DAY_MS = 86400000 // 24 * 60 * 60 * 1000\nexport const TIME_DAY_S = 86400 // 24 * 60 * 60\nexport const TIME_HOUR_MS = 3600000 // 60 * 60 * 1000\nexport const TIME_HOUR_S = 3600 // 60 * 60\nexport const TIME_MINUTE_MS = 60000 // 60 * 1000\nexport const TIME_MINUTE_S = 60 // 60\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2UQU3IBAcjs = require('./chunk-2UQU3IBA.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');function g(){let t=new Map,o=new Map;function i(n){let r=o.get(n);if(r==null){if(r=_chunk2UQU3IBAcjs.a.call(void 0, n),t.has(r))throw new Error(`Hash for '${n}' is already in use for '${t.get(r)}`);t.set(r,n),o.set(n,r)}return r}_chunkP7XCQ7WVcjs.a.call(void 0, i,"hash");function a(n){return t.get(n)}return _chunkP7XCQ7WVcjs.a.call(void 0, a,"stringForHash"),{hash:i,stringForHash:a}}_chunkP7XCQ7WVcjs.a.call(void 0, g,"useStringHashPool");exports.a = g;
|
|
2
|
+
//# sourceMappingURL=chunk-2TNLYCZH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2TNLYCZH.cjs","../src/common/data/string-hash-pool.ts"],"names":["useStringHashPool","hashToString","stringToHash","hash","s","v","stringHashFNV1a"],"mappings":"AAAA,iIAAwC,wDAAyC,SCEjEA,CAAAA,CAAAA,CAAoB,CAClC,IAAMC,CAAAA,CAAoC,IAAI,GAAA,CACxCC,CAAAA,CAAoC,IAAI,GAAA,CAE9C,SAASC,CAAAA,CAAKC,CAAAA,CAAW,CACvB,IAAIC,CAAAA,CAAwBH,CAAAA,CAAa,GAAA,CAAIE,CAAC,CAAA,CAC9C,EAAA,CAAIC,CAAAA,EAAK,IAAA,CAAM,CAEb,EAAA,CADAA,CAAAA,CAAIC,iCAAAA,CAAiB,CAAA,CACjBL,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAA,CACpB,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAaD,CAAC,CAAA,yBAAA,EAA4BH,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAC,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2TNLYCZH.cjs","sourcesContent":[null,"import { stringHashFNV1a } from './string-hash-fnv'\n\nexport function useStringHashPool() {\n const hashToString: Map<number, string> = new Map()\n const stringToHash: Map<string, number> = new Map()\n\n function hash(s: string) {\n let v: number | undefined = stringToHash.get(s)\n if (v == null) {\n v = stringHashFNV1a(s)\n if (hashToString.has(v))\n throw new Error(`Hash for '${s}' is already in use for '${hashToString.get(v)}`)\n hashToString.set(v, s)\n stringToHash.set(s, v)\n }\n return v\n }\n\n function stringForHash(v: number) {\n return hashToString.get(v)\n }\n\n return {\n hash,\n stringForHash,\n }\n}\n\nexport type UseStringHashPool = ReturnType<typeof useStringHashPool>\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');function f(o){let c=o.length,n,i,t=0,e=40389,l=0,r=33052;for(i=0;i<c;i++)n=o.charCodeAt(i),n<128?e^=n:n<2048?(e^=n>>6|192,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n&63|128):(n&64512)===55296&&i+1<c&&(o.charCodeAt(i+1)&64512)===56320?(n=65536+((n&1023)<<10)+(o.charCodeAt(++i)&1023),e^=n>>18|240,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n>>12&63|128,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n>>6&63|128,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n&63|128):(e^=n>>12|224,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n>>6&63|128,t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535,e^=n&63|128),t=e*403,l=r*403,l+=e<<8,r=l+(t>>>16)&65535,e=t&65535;return(r<<16>>>0)+e}_chunkP7XCQ7WVcjs.a.call(void 0, f,"stringHashFNV1a");exports.a = f;
|
|
2
|
+
//# sourceMappingURL=chunk-2UQU3IBA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2UQU3IBA.cjs","../src/common/data/string-hash-fnv.ts"],"names":["stringHashFNV1a","str","l","c","t0","v0","t1","v1","__name"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-2UQU3IBA.cjs","sourcesContent":[null,"// Why FNV-1a (32-bit) https://softwareengineering.stackexchange.com/a/250750/366573\n// A simple implementation https://gist.github.com/vaiorabbit/5657561\n// This implementation https://github.com/tjwebb/fnv-plus/blob/master/index.js#L341\n// Alternative implementation https://github.com/sindresorhus/fnv1a\n\nexport function stringHashFNV1a(str: string): number {\n const l = str.length\n let c: number\n let i: number\n let t0 = 0\n let v0 = 0x9DC5\n let t1 = 0\n let v1 = 0x811C\n\n for (i = 0; i < l; i++) {\n c = str.charCodeAt(i)\n if (c < 128) {\n v0 ^= c\n }\n else if (c < 2048) {\n v0 ^= (c >> 6) | 192\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else if (((c & 64512) === 55296) && (i + 1) < l && ((str.charCodeAt(i + 1) & 64512) === 56320)) {\n c = 65536 + ((c & 1023) << 10) + (str.charCodeAt(++i) & 1023)\n v0 ^= (c >> 18) | 240\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 12) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else {\n v0 ^= (c >> 12) | 224\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n }\n\n return ((v1 << 16) >>> 0) + v0\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as o}from"./chunk-XI5OG3BF.js";import{a as r}from"./chunk-5NKC2EQJ.js";function a(...n){throw o()?.("assert")?.fatal(...n),new Error(`${n.map(String).join(" ")}`)}r(a,"fatal");function e(n,...t){(n==null||typeof n=="number"&&Number.isNaN(n)||!n)&&a(...t)}r(e,"assert");function f(n,...t){e(n,...t)}r(f,"assertCondition");export{a,e as b,f as c};
|
|
2
|
+
//# sourceMappingURL=chunk-2WAMDDFH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/assert.ts"],"sourcesContent":["import { getGlobalLoggerIfExists } from './log/log'\n\n/** Always throws. */\nexport function fatal(...messages: any[]): never {\n getGlobalLoggerIfExists()?.('assert')?.fatal(...messages)\n throw new Error(`${messages.map(String).join(' ')}`)\n}\n\n/** Throws if condition is not truthy. */\nexport function assert(condition: unknown, ...messages: any[]): asserts condition {\n if (condition == null || (typeof condition === 'number' && Number.isNaN(condition)) || !condition)\n fatal(...messages)\n}\n\n/** Alias for `assert` for better differentiation to unit test's assert function. */\nexport function assertCondition(condition: unknown, ...messages: any[]): asserts condition {\n assert(condition, ...messages)\n}\n"],"mappings":"gFAGO,SAASA,KAASC,EAAwB,CAC/C,MAAAC,EAAwB,IAAI,QAAQ,GAAG,MAAM,GAAGD,CAAQ,EAClD,IAAI,MAAM,GAAGA,EAAS,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,CACrD,CAHgBE,EAAAH,EAAA,SAMT,SAASI,EAAOC,KAAuBJ,EAAoC,EAC5EI,GAAa,MAAS,OAAOA,GAAc,UAAY,OAAO,MAAMA,CAAS,GAAM,CAACA,IACtFL,EAAM,GAAGC,CAAQ,CACrB,CAHgBE,EAAAC,EAAA,UAMT,SAASE,EAAgBD,KAAuBJ,EAAoC,CACzFG,EAAOC,EAAW,GAAGJ,CAAQ,CAC/B,CAFgBE,EAAAG,EAAA","names":["fatal","messages","getGlobalLoggerIfExists","__name","assert","condition","assertCondition"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkWSRQ3X55cjs = require('./chunk-WSRQ3X55.cjs');var _chunkJAKUA4CCcjs = require('./chunk-JAKUA4CC.cjs');var _chunkZ7QS7VD4cjs = require('./chunk-Z7QS7VD4.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var s={string:"string",number:"number",boolean:"boolean",int:"integer"};function g(r){_chunkZ7QS7VD4cjs.b.call(void 0, _chunkWSRQ3X55cjs.e.call(void 0, r),"schema should be a flat object");function o(p){let l=_nullishCoalesce(_nullishCoalesce(s[p.type], () => (p.type)), () => ("object")),n={},a=[];return _chunkJAKUA4CCcjs.a.call(void 0, p._object,(e,t)=>{let b=_nullishCoalesce(s[t.type], () => (t.type));n[e]={type:b};let u=t._enumValues;u&&(n[e].enum=u),t._default!==void 0&&(n[e].default=t._default),_optionalChain([t, 'access', _ => _._meta, 'optionalAccess', _2 => _2.desc])&&(n[e].description=t._meta.desc),t._optional!==!0&&a.push(e),t.type==="array"&&t._type&&(n[e].items=o(t._type)),t.type==="object"&&t._object&&Object.assign(n[e],o(t._object)),t.type==="union"&&Array.isArray(t._union)&&(n[e].type=t._union.map(y=>_nullishCoalesce(s[y.type], () => (y.type))))}),{type:l,additionalProperties:!1,properties:n,...a.length>0?{required:a}:{}}}return _chunkP7XCQ7WVcjs.a.call(void 0, o,"transformSchema"),{$schema:"http://json-schema.org/draft-07/schema#",...o(r)}}_chunkP7XCQ7WVcjs.a.call(void 0, g,"schemaExportJsonSchema");function T(r){let o=g(r);return JSON.stringify(o,null,2)}_chunkP7XCQ7WVcjs.a.call(void 0, T,"schemaExportJsonSchemaString");exports.a = g; exports.b = T;
|
|
2
|
+
//# sourceMappingURL=chunk-2Z7S5FYI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2Z7S5FYI.cjs","../src/common/schema/export-json-schema.ts"],"names":["_mapJsonSchemaType","schemaExportJsonSchema","schema","assert","isSchemaObjectFlat","transformSchema","type","properties","required","objectMap","key","enumValues","s","__name","schemaExportJsonSchemaString","jsonSchema"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAyC,ICK7JA,CAAAA,CAA6C,CACjD,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,QAAA,CACR,OAAA,CAAS,SAAA,CACT,GAAA,CAAK,SACP,CAAA,CAEO,SAASC,CAAAA,CAA0BC,CAAAA,CAAsC,CAC9EC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,SAASC,CAAAA,CAAgBH,CAAAA,CAAwB,CAC/C,IAAMI,CAAAA,mCAAON,CAAAA,CAAmBE,CAAAA,CAAO,IAAI,CAAA,SAAKA,CAAAA,CAAO,MAAA,SAAQ,UAAA,CACzDK,CAAAA,CAAkC,CAAC,CAAA,CACnCC,CAAAA,CAAqB,CAAC,CAAA,CAE5B,OAAAC,iCAAAA,CAAUP,CAAO,OAAA,CAAU,CAACQ,CAAAA,CAAKR,CAAAA,CAAAA,EAAgB,CAC/C,IAAMI,CAAAA,kBAAON,CAAAA,CAAmBE,CAAAA,CAAO,IAAI,CAAA,SAAKA,CAAAA,CAAO,MAAA,CACvDK,CAAAA,CAAWG,CAAG,CAAA,CAAI,CAAE,IAAA,CAAAJ,CAAK,CAAA,CACzB,IAAMK,CAAAA,CAAcT,CAAAA,CAAe,WAAA,CAC/BS,CAAAA,EAAAA,CACFJ,CAAAA,CAAWG,CAAG,CAAA,CAAE,IAAA,CAAOC,CAAAA,CAAAA,CAErBT,CAAAA,CAAO,QAAA,GAAa,KAAA,CAAA,EAAA,CACtBK,CAAAA,CAAWG,CAAG,CAAA,CAAE,OAAA,CAAUR,CAAAA,CAAO,QAAA,CAAA,iBAE/BA,CAAAA,mBAAO,KAAA,6BAAO,MAAA,EAAA,CAChBK,CAAAA,CAAWG,CAAG,CAAA,CAAE,WAAA,CAAcR,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAA,CAEzCA,CAAAA,CAAO,SAAA,GAAc,CAAA,CAAA,EACvBM,CAAAA,CAAS,IAAA,CAAKE,CAAG,CAAA,CAEfR,CAAAA,CAAO,IAAA,GAAS,OAAA,EAAWA,CAAAA,CAAO,KAAA,EAAA,CACpCK,CAAAA,CAAWG,CAAG,CAAA,CAAE,KAAA,CAAQL,CAAAA,CAAgBH,CAAAA,CAAO,KAAK,CAAA,CAAA,CAElDA,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAO,OAAA,EACrC,MAAA,CAAO,MAAA,CAAOK,CAAAA,CAAWG,CAAG,CAAA,CAAGL,CAAAA,CAAgBH,CAAAA,CAAO,OAAO,CAAC,CAAA,CAG5DA,CAAAA,CAAO,IAAA,GAAS,OAAA,EAAW,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAO,MAAM,CAAA,EAAA,CACxDK,CAAAA,CAAWG,CAAG,CAAA,CAAE,IAAA,CAAOR,CAAAA,CAAO,MAAA,CAAO,GAAA,CAAKU,CAAAA,mBAAWZ,CAAAA,CAAmBY,CAAAA,CAAE,IAAI,CAAA,SAAKA,CAAAA,CAAE,MAAI,CAAA,CAE7F,CAAC,CAAA,CAEM,CACL,IAAA,CAAAN,CAAAA,CACA,oBAAA,CAAsB,CAAA,CAAA,CACtB,UAAA,CAAAC,CAAAA,CACA,GAAIC,CAAAA,CAAS,MAAA,CAAS,CAAA,CAAI,CAAE,QAAA,CAAAA,CAAS,CAAA,CAAI,CAAC,CAC5C,CACF,CAvCS,OAAAK,iCAAAA,CAAAR,CAAA,iBAAA,CAAA,CAyCF,CACL,OAAA,CAAS,yCAAA,CACT,GAAGA,CAAAA,CAAgBH,CAAM,CAC3B,CACF,CAhDgBW,iCAAAA,CAAAZ,CAAA,wBAAA,CAAA,CAkDT,SAASa,CAAAA,CAAgCZ,CAAAA,CAAyB,CACvE,IAAMa,CAAAA,CAAad,CAAAA,CAAuBC,CAAM,CAAA,CAChD,OAAO,IAAA,CAAK,SAAA,CAAUa,CAAAA,CAAY,IAAA,CAAM,CAAC,CAC3C,CAHgBF,iCAAAA,CAAAC,CAAA,8BAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2Z7S5FYI.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\nconst _mapJsonSchemaType: Record<string, string> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n int: 'integer',\n}\n\nexport function schemaExportJsonSchema<T>(schema: Type<T>): Record<string, any> {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n function transformSchema(schema: Type<any>): any {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type ?? 'object'\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n objectMap(schema._object!, (key, schema: any) => {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type\n properties[key] = { type }\n const enumValues = (schema as any)._enumValues\n if (enumValues) {\n properties[key].enum = enumValues\n }\n if (schema._default !== undefined) {\n properties[key].default = schema._default\n }\n if (schema._meta?.desc) {\n properties[key].description = schema._meta.desc\n }\n if (schema._optional !== true) {\n required.push(key)\n }\n if (schema.type === 'array' && schema._type) {\n properties[key].items = transformSchema(schema._type)\n }\n if (schema.type === 'object' && schema._object) {\n Object.assign(properties[key], transformSchema(schema._object))\n }\n // Handle union types (e.g., z.union)\n if (schema.type === 'union' && Array.isArray(schema._union)) {\n properties[key].type = schema._union.map((s: any) => _mapJsonSchemaType[s.type] ?? s.type) // todo complex types\n }\n })\n\n return {\n type,\n additionalProperties: false,\n properties,\n ...(required.length > 0 ? { required } : {}),\n }\n }\n\n return {\n $schema: 'http://json-schema.org/draft-07/schema#',\n ...transformSchema(schema),\n }\n}\n\nexport function schemaExportJsonSchemaString<T>(schema: Type<T>): string {\n const jsonSchema = schemaExportJsonSchema(schema)\n return JSON.stringify(jsonSchema, null, 2)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as t}from"./chunk-GAOCL7A2.js";import{a as n}from"./chunk-5NKC2EQJ.js";var c=100,i=/^\.+/,l=/\.+$/,s=/[<>:"/\\|?*\u0000-\u001F\u0080-\u009F]+/g;function o(){return s}n(o,"filenameReservedRegex");function u(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}n(u,"windowsReservedNameRegex");function d(e,r="_"){if(typeof e!="string")throw new TypeError("Expected a string");if(o().test(r))throw new Error("Replacement string cannot contain reserved filename characters");let a=`(${t(r)})+`;return e=e.replace(o(),r).replace(i,r).replace(l,"").replace(new RegExp(a,"gm"),r).trim(),e=u().test(e)?e+r:e,e.slice(0,c)}n(d,"toValidFilename");export{d as a};
|
|
2
|
+
//# sourceMappingURL=chunk-33LXA4K5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/data/path.ts"],"sourcesContent":["// https://github.com/sindresorhus/filenamify/blob/main/filenamify.js\n/* eslint-disable no-control-regex */\n\nimport { escapeRegExp } from './regexp'\n\nconst MAX_FILENAME_LENGTH = 100\n\n// const reControlChars = /[\\u0000-\\u001F\\u0080-\\u009F]/g\nconst reRelativePath = /^\\.+/\nconst reTrailingPeriods = /\\.+$/\nconst reFilenameIllegal = /[<>:\"/\\\\|?*\\u0000-\\u001F\\u0080-\\u009F]+/g // https://superuser.com/questions/358855/what-characters-are-safe-in-cross-platform-file-names-for-linux-windows-and-os/358861#358861\n\nfunction filenameReservedRegex() {\n return reFilenameIllegal // /[<>:\"/\\\\|?*\\u0000-\\u001F]/g\n}\n\nfunction windowsReservedNameRegex() {\n return /^(con|prn|aux|nul|com\\d|lpt\\d)$/i\n}\n\n/** Ensure a valid file name. Unsupported characters get a `replacement`, default: `_` */\nexport function toValidFilename(string: string, replacement = '_'): string | never {\n if (typeof string !== 'string')\n throw new TypeError('Expected a string')\n\n if (filenameReservedRegex().test(replacement))\n throw new Error('Replacement string cannot contain reserved filename characters')\n\n const reReplacement = `(${escapeRegExp(replacement)})+`\n\n string = string\n .replace(filenameReservedRegex(), replacement)\n .replace(reRelativePath, replacement)\n .replace(reTrailingPeriods, '')\n .replace(new RegExp(reReplacement, 'gm'), replacement) // collapse\n .trim()\n\n string = windowsReservedNameRegex().test(string) ? string + replacement : string\n\n return string.slice(0, MAX_FILENAME_LENGTH)\n}\n"],"mappings":"gFAKA,IAAMA,EAAsB,IAGtBC,EAAiB,OACjBC,EAAoB,OACpBC,EAAoB,2CAE1B,SAASC,GAAwB,CAC/B,OAAOD,CACT,CAFSE,EAAAD,EAAA,yBAIT,SAASE,GAA2B,CAClC,MAAO,kCACT,CAFSD,EAAAC,EAAA,4BAKF,SAASC,EAAgBC,EAAgBC,EAAc,IAAqB,CACjF,GAAI,OAAOD,GAAW,SACpB,MAAM,IAAI,UAAU,mBAAmB,EAEzC,GAAIJ,EAAsB,EAAE,KAAKK,CAAW,EAC1C,MAAM,IAAI,MAAM,gEAAgE,EAElF,IAAMC,EAAgB,IAAIC,EAAaF,CAAW,CAAC,KAEnD,OAAAD,EAASA,EACN,QAAQJ,EAAsB,EAAGK,CAAW,EAC5C,QAAQR,EAAgBQ,CAAW,EACnC,QAAQP,EAAmB,EAAE,EAC7B,QAAQ,IAAI,OAAOQ,EAAe,IAAI,EAAGD,CAAW,EACpD,KAAK,EAERD,EAASF,EAAyB,EAAE,KAAKE,CAAM,EAAIA,EAASC,EAAcD,EAEnEA,EAAO,MAAM,EAAGR,CAAmB,CAC5C,CAnBgBK,EAAAE,EAAA","names":["MAX_FILENAME_LENGTH","reRelativePath","reTrailingPeriods","reFilenameIllegal","filenameReservedRegex","__name","windowsReservedNameRegex","toValidFilename","string","replacement","reReplacement","escapeRegExp"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkO374Z5NRcjs = require('./chunk-O374Z5NR.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');function p(e,r,n=new WeakSet){if(e===r)return!0;if(n.has(r)||(_chunkO374Z5NRcjs.d.call(void 0, r)||n.add(r),!(e instanceof Object)||!(r instanceof Object))||e.constructor!==r.constructor||e.length!==r.length)return!1;for(let i in e){if(!e.hasOwnProperty(i))continue;if(!r.hasOwnProperty(i))return!1;let f=e[i],t=r[i];if(!p(f,t,n))return!1}for(let i in r)if(r.hasOwnProperty(i)&&!e.hasOwnProperty(i))return!1;return!0}_chunkP7XCQ7WVcjs.a.call(void 0, p,"deepEqual");function d(e,r=new WeakSet){if(r.has(e))return"[Circular ~]";if(_chunkO374Z5NRcjs.d.call(void 0, e)||r.add(e),_chunkO374Z5NRcjs.f.call(void 0, e)){for(let n in e)if(e.hasOwnProperty(n)){if(e[n]===void 0){delete e[n];continue}d(e[n],r)}}else if(_chunkO374Z5NRcjs.e.call(void 0, e))for(let n=e.length-1;n>=0;n--)e[n]===void 0&&e.splice(n,1);return e}_chunkP7XCQ7WVcjs.a.call(void 0, d,"deepStripUndefinedInPlace");function a(e,...r){for(let n of r)_chunkO374Z5NRcjs.a.call(void 0, e)||(e={}),!(n==null||!_chunkO374Z5NRcjs.a.call(void 0, n))&&Object.keys(n).forEach(i=>{let f=e[i],t=n[i];Array.isArray(f)&&Array.isArray(t)?e[i]=f.concat(t):_chunkO374Z5NRcjs.a.call(void 0, f)&&_chunkO374Z5NRcjs.a.call(void 0, t)?e[i]=a(Object.assign({},f),t):e[i]=t});return e}_chunkP7XCQ7WVcjs.a.call(void 0, a,"deepMerge");exports.a = p; exports.b = d; exports.c = a;
|
|
2
|
+
//# sourceMappingURL=chunk-356FY6N3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-356FY6N3.cjs","../src/common/data/deep.ts"],"names":["deepEqual","a","b","hash","isPrimitive","p","aa","bb","__name","deepStripUndefinedInPlace","isRecord","isArray","i","deepMerge","target","sources","source","isObject","key","targetValue","sourceValue"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-356FY6N3.cjs","sourcesContent":[null,"/* eslint-disable no-prototype-builtins */\n\nimport { isArray, isObject, isPrimitive, isRecord } from './is'\n\nexport function deepEqual(a: any, b: any, hash = new WeakSet()) {\n // if both x and y are null or undefined and exactly the same\n if (a === b)\n return true\n\n // Cyclic\n if (hash.has(b)) {\n // console.log('cyclic')\n return false\n }\n\n if (!isPrimitive(b))\n hash.add(b)\n\n // if they are not strictly equal, they both need to be Objects\n if (!(a instanceof Object) || !(b instanceof Object))\n return false\n\n // they must have the exact same prototype chain, the closest we can do is\n // test there constructor.\n if (a.constructor !== b.constructor)\n return false\n\n // Shortcut to avoid to many loops\n if (a.length !== b.length)\n return false\n\n for (const p in a) {\n // other properties were tested using x.constructor === y.constructor\n if (!a.hasOwnProperty(p))\n continue\n\n // allows to compare x[ p ] and y[ p ] when set to undefined\n if (!b.hasOwnProperty(p))\n return false\n\n const aa = a[p]\n const bb = b[p]\n\n // if they have the same strict value or identity then they are equal\n // if (aa === bb) {\n // console.log('eq', typeof bb)\n // if (bb != null) hash.set(bb, true)\n // continue\n // }\n //\n // // Numbers, Strings, Functions, Booleans must be strictly equal\n // if (typeof (aa) !== 'object') {\n // return false\n // }\n\n // Objects and Arrays must be tested recursively\n if (!deepEqual(aa, bb, hash))\n return false\n }\n\n // allows x[ p ] to be set to undefined\n for (const p in b) {\n if (b.hasOwnProperty(p) && !a.hasOwnProperty(p))\n return false\n }\n\n return true\n}\n\n/** Strip properties with value `undefined` in place */\nexport function deepStripUndefinedInPlace(a: any, hash:WeakSet<object> = new WeakSet()) {\n // Cyclic\n if (hash.has(a))\n return '[Circular ~]'\n if (!isPrimitive(a))\n hash.add(a)\n\n if (isRecord(a)) {\n for (const p in a) {\n if (!a.hasOwnProperty(p))\n continue\n if (a[p] === undefined) {\n delete a[p]\n continue\n }\n deepStripUndefinedInPlace(a[p], hash)\n }\n }\n else if (isArray(a)) {\n for (let i = a.length - 1; i >= 0; i--) {\n if (a[i] === undefined)\n a.splice(i, 1)\n }\n }\n // else ignore\n\n return a\n}\n\nexport function deepMerge(target: any, ...sources: any[]) {\n // todo cyclic protection\n for (const source of sources) {\n if (!isObject(target))\n target = {}\n\n if (source == null || !isObject(source))\n continue\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key]\n const sourceValue = (source as any)[key]\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue))\n target[key] = targetValue.concat(sourceValue)\n else if (isObject(targetValue) && isObject(sourceValue))\n target[key] = deepMerge(Object.assign({}, targetValue), sourceValue)\n else\n target[key] = sourceValue\n })\n }\n\n return target\n}\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClonePrimitives(obj, hash = new WeakMap()) {\n//\n// // primitives\n// if (Object(obj) !== obj) {\n// // log('Primitive', obj)\n// return obj\n// }\n//\n// // cyclic reference\n// if (hash.has(obj)) {\n// return hash.get(obj)\n// }\n//\n// let result\n//\n// // primitives as objects like new String(), new Number()\n// if (\n// obj instanceof String ||\n// obj instanceof Number ||\n// obj instanceof BigInt ||\n// obj instanceof Boolean ||\n// obj instanceof Symbol\n// ) {\n// result = new obj.constructor(obj.valueOf())\n// // hash.set(obj, result)\n// return result\n// }\n//\n// // log('Obj', obj)\n//\n// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) => [key, deepClonePrimitives(val, hash)]))\n// } else if (obj instanceof Date) {\n// result = new Date(obj)\n// } else if (obj instanceof RegExp) {\n// result = new RegExp(obj.source, obj.flags)\n// } else if (Array.isArray(obj)) {\n// result = Array.from(obj, val => deepClonePrimitives(val, hash))\n// } else if (obj.constructor) {\n// result = new obj.constructor()\n// log('bj object', result)\n// } else if (obj instanceof Function || typeof obj === 'function') {\n// log('Keep object', obj, Object.getPrototypeOf(obj))\n// result = obj\n// } else {\n// result = Object.create(null)\n// }\n//\n// hash.set(obj, result)\n//\n// return Object.assign(result, ...Object.keys(obj).map(key => ({\n// [key]: deepClonePrimitives(obj[key], hash),\n// })))\n// }\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as r}from"./chunk-5NKC2EQJ.js";var f;function b(e=20000101){f=e}r(b,"setDayTest");var c=864e5;function D(e){return Math.floor(e/1e4)}r(D,"dayYear");function m(e){return Math.floor(e/100%100)}r(m,"dayMonth");function V(e){return Math.floor(e%100)}r(V,"dayDay");function T(e){return[D(e),m(e),V(e)]}r(T,"dayToParts");function y(e,t=!1){return t?new Date(`${d(e)}T00:00:00.000Z`):new Date(e/1e4,Math.max(0,e/100%100-1),Math.max(1,e%100))}r(y,"dayToDate");function p(){return f??u(new Date)}r(p,"dayFromToday");function M(e,t=!1){if(typeof e=="number")return e<100?void 0:e;if(typeof e=="string")return s(e);if(Array.isArray(e)&&e.length>=1)return l(...e);if(e instanceof Date)return u(e,t)}r(M,"dayFromAny");function g(e){return y(e,!0)}r(g,"dayToDateUTC");function S(e){return y(e,!0)}r(S,"dayToDateGMT");function u(e,t=!1){return t?s(e.toISOString()):e.getFullYear()*1e4+(e.getMonth()+1)*100+e.getDate()}r(u,"dayFromDate");function h(e){return u(e,!0)}r(h,"dayFromDateUTC");function F(e){return u(e,!0)}r(F,"dayFromDateGMT");function w(e,t=!0){return Math.floor(y(e,t).getTime()/1e3)}r(w,"dayToTimestampSeconds");function i(e,t=!0){return y(e,t).getTime()}r(i,"dayToTimestamp");function x(e,t=!0){return u(new Date(e),t)}r(x,"dayFromTimestamp");function A(e,t=!0){return u(new Date(Math.floor(e*1e3)),t)}r(A,"dayFromTimestampSeconds");function d(e,t="-"){let n=String(e);return n.slice(0,4)+t+n.slice(4,6)+t+n.slice(6,8)}r(d,"dayToString");function l(e,t=1,n=1){if(!(t<1||t>12||n<1||n>31))return e*1e4+t*100+n}r(l,"dayFromParts");function s(e){let t=String(e).replace(/\D/g,"").slice(0,8);if(t.length===8)return+t}r(s,"dayFromString");function I(e,t=0){let n=D(e),a=m(e);return t!==0&&(a+=t,n+=Math.floor((a-1)/12),a=Math.floor((a-1)%12)+1,a===0&&(a=12)),l(n,a,1)}r(I,"dayMonthStart");function Y(e,t=0){let n=D(e);return l(n+t,1,1)}r(Y,"dayYearStart");function o(e,t){return x(i(e)+t*c)}r(o,"dayOffset");function C(e,t){return Math.round((i(t)-i(e))/c)}r(C,"dayDiff");function G(e,t){let n=[];for(t==null&&(t=p()),e<0&&(e=o(t,e+1));e<=t;)n.push(e),e=o(e,1);return n}r(G,"dayRange");function*O(e,t){let n=[];for(t==null&&(t=p()),e<0&&(e=o(t,e+1));e<=t;)yield e,e=o(e,1);return n}r(O,"dayIterator");export{b as a,c as b,D as c,m as d,V as e,T as f,y as g,p as h,M as i,g as j,S as k,u as l,h as m,F as n,w as o,i as p,x as q,A as r,d as s,l as t,s as u,I as v,Y as w,o as x,C as y,G as z,O as A};
|
|
2
|
+
//# sourceMappingURL=chunk-36WQ4IKW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/data/day.ts"],"sourcesContent":["// Functional Variant\n\nlet testModeDay: number | undefined\n\nexport function setDayTest(ts = 20000101) {\n testModeDay = ts\n}\n\nexport const DAY_MS = 86400000 // 1000 * 60 * 60 * 24\n\nexport type DayValue = number\n\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\nexport function dayFromToday(): DayValue {\n return testModeDay ?? dayFromDate(new Date())\n}\n\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/** @deprecated use dayToDateUTC */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/// Timestamp in miliseconds\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/// Timestamp in miliseconds\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc) \n}\n\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/// Day value from parts, returns undefined if invalid\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n\n/// Day value from string, returns undefined if invalid\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * DAY_MS)\n}\n\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / DAY_MS)\n}\n\n/** List of dates for loops */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n"],"mappings":"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","names":["testModeDay","setDayTest","ts","__name","DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc","dayToString","dayFromToday","dayFromDate","dayFromAny","value","dayFromString","dayFromParts","dayToDateUTC","dayToDateGMT","date","dayFromDateUTC","dayFromDateGMT","dayToTimestampSeconds","dayToTimestamp","dayFromTimestamp","ms","dayFromTimestampSeconds","sep","baseString","year","month","string","dayMonthStart","offset","dayYearStart","dayOffset","dayDiff","left","right","dayRange","list","dayIterator"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as s,d as m,i as a,j as D}from"./chunk-GEA7A4S2.js";import{a as n}from"./chunk-3UFYPVLE.js";import{E as x,F as U,H as l,I as A}from"./chunk-BG2T6PCH.js";import{b as g}from"./chunk-MKVMNYMW.js";import{a as r}from"./chunk-5NKC2EQJ.js";var u=16;function f(){return n(u)}r(f,"uuidBytes");function h(t=f()){return a(t,22)}r(h,"uuidB62");function w(t){return a(t,22)}r(w,"uuidEncodeB62");function I(t){return D(t,u)}r(I,"uuidDecodeB62");function M(t=f()){return s(t,26)}r(M,"uuidB32");function _(t){return s(t,26)}r(_,"uuidEncodeB32");function R(t){return m(t,u)}r(R,"uuidDecodeB32");var S="10000000-1000-4000-8000-100000000000";function T(){return typeof crypto<"u"&&crypto.randomUUID!=null?crypto.randomUUID():S.replace(/[018]/g,t=>(t^n(1)[0]&15>>t/4).toString(16))}r(T,"uuidv4");function V(t){let e=l(t);return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}r(V,"uuidEncodeV4");function k(t){return A(t.replace(/-/g,""))}r(k,"uuidDecodeV4");var B=16e11;function q(t){let e=new Uint8Array([0,0,0,0,0,0]),d=e.length-1;for(let c=0;c<e.length;c++){let p=t&255;e[d-c]=p,t=(t-p)/256}return e}r(q,"longToByteArray");function b(){let t=g()-B;return new Uint8Array([...q(t),...n(10)])}r(b,"suidBytes");function K(){return F(b())}r(K,"suid");function N(t){return v($(t))}r(N,"suidDate");function v(t){return new Date(B+t.slice(0,6).reduce((e,d)=>e*256+d,0))}r(v,"suidBytesDate");function O(){return new Uint32Array(n(4))[0]}r(O,"uuid32bit");var y={base62:{uuid:h,uuidDecode:I,uuidEncode:w},base32:{uuid:M,uuidDecode:R,uuidEncode:_},uuidv4:{uuid:T,uuidDecode:k,uuidEncode:V},test:{uuid:r(()=>H("test"),"uuid"),uuidDecode:r(t=>U(t),"uuidDecode"),uuidEncode:r(t=>x(t),"uuidEncode")}},o="base62",E=!1;function P(t,e=!1){t==="test"&&C("test"),o=t??"base62",E=e}r(P,"setUuidDefaultEncoding");function Q(){return y[o].uuid(E?b():f())}r(Q,"uuid");function $(t){return y[o].uuidDecode(t)}r($,"uuidDecode");function F(t){return y[o].uuidEncode(t)}r(F,"uuidEncode");function W(t){try{return $(t).length===u}catch{}return!1}r(W,"uuidIsValid");var i={};function H(t="id"){return i[t]==null&&(i[t]=0),`${t}-${i[t]++}`}r(H,"uname");function C(t="id"){i[t]=0}r(C,"unameReset");var L=0;function X(){return`id-${L++}`}r(X,"qid");export{f as a,h as b,w as c,I as d,M as e,_ as f,R as g,T as h,V as i,k as j,b as k,K as l,N as m,v as n,O as o,P as p,Q as q,$ as r,F as s,W as t,H as u,C as v,X as w};
|
|
2
|
+
//# sourceMappingURL=chunk-3DRSNK6I.js.map
|