@costrict/csc 4.0.5 → 4.0.7
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/README.md +15 -0
- package/dist/{chunk-7pfa478f.js → chunk-01yymsz6.js} +16 -16
- package/dist/{chunk-381axhkg.js → chunk-07y6jv3h.js} +3 -3
- package/dist/{chunk-24e25s3h.js → chunk-0e6d7s0j.js} +1 -1
- package/dist/{chunk-52tk9vq4.js → chunk-0hc0azmt.js} +25 -25
- package/dist/{chunk-yq0e1vbr.js → chunk-0jyvbp69.js} +27 -27
- package/dist/{chunk-jdabxq24.js → chunk-0nmk925g.js} +5 -5
- package/dist/{chunk-4d9bywzd.js → chunk-0vq5gwqh.js} +1 -1
- package/dist/{chunk-8db0c0z2.js → chunk-0zs1dh2a.js} +33 -33
- package/dist/{chunk-x46veg46.js → chunk-175vt0mw.js} +1 -1
- package/dist/{chunk-jhaf8e2t.js → chunk-1abvy0mw.js} +24 -24
- package/dist/{chunk-xyh08jpm.js → chunk-1bztm3ta.js} +24 -24
- package/dist/{chunk-8fxvkn6g.js → chunk-1c4scy79.js} +2 -2
- package/dist/{chunk-71ptxz0w.js → chunk-1jd9gmbs.js} +1 -1
- package/dist/{chunk-pfjb68fx.js → chunk-1rjkkc24.js} +2 -2
- package/dist/{chunk-4g5nvh92.js → chunk-234pddm4.js} +1 -1
- package/dist/{chunk-c2wjqfxa.js → chunk-24mw3jzn.js} +25 -25
- package/dist/{chunk-r6r0heh4.js → chunk-29bzzvbe.js} +3 -3
- package/dist/{chunk-d20gvf1p.js → chunk-2d3fy7ns.js} +3 -3
- package/dist/{chunk-zd7ftnd0.js → chunk-2gj32j1b.js} +4 -4
- package/dist/{chunk-f6kfvezc.js → chunk-2hnwfpsp.js} +3 -3
- package/dist/{chunk-h0p49ypw.js → chunk-2k8xwhpv.js} +33 -33
- package/dist/{chunk-jcck08pa.js → chunk-2wft9x0c.js} +26 -26
- package/dist/{chunk-zvffthkn.js → chunk-2x3tnx7f.js} +34 -34
- package/dist/{chunk-w3jk4zrh.js → chunk-2zf696x5.js} +24 -24
- package/dist/{chunk-2p4eesfa.js → chunk-3850xe11.js} +24 -24
- package/dist/{chunk-4b0pe90d.js → chunk-3cjdmdrc.js} +25 -25
- package/dist/{chunk-5pnqgsv4.js → chunk-3m41h5pq.js} +1 -1
- package/dist/{chunk-v1bc0k7r.js → chunk-3mpfwtgp.js} +25 -25
- package/dist/{chunk-8sba81p1.js → chunk-3nbesgj4.js} +1 -1
- package/dist/{chunk-sdw4pkat.js → chunk-3vtezrw4.js} +1 -1
- package/dist/{chunk-9svnj49d.js → chunk-3w81r965.js} +2924 -3434
- package/dist/{chunk-ssdgf1bt.js → chunk-40q1y955.js} +24 -24
- package/dist/{chunk-aahtgv6t.js → chunk-44r9krxs.js} +1 -1
- package/dist/{chunk-cxytr6ke.js → chunk-49xa46kd.js} +1 -1
- package/dist/{chunk-vd2cdqer.js → chunk-4g15gstk.js} +5 -5
- package/dist/{chunk-txq07t1t.js → chunk-4gbe9tkr.js} +24 -24
- package/dist/{chunk-7h58vakp.js → chunk-4ke89pwf.js} +25 -25
- package/dist/{chunk-spb70nw0.js → chunk-4r317th6.js} +4 -4
- package/dist/{chunk-9vxn5hr7.js → chunk-4rs8n32v.js} +4 -4
- package/dist/{chunk-bwy9pa2a.js → chunk-4sfjymzb.js} +2 -2
- package/dist/{chunk-thnkgdqf.js → chunk-4xe2e94e.js} +25 -25
- package/dist/{chunk-v9mb8wyh.js → chunk-4y1cxfew.js} +78 -78
- package/dist/{chunk-sca0gdmn.js → chunk-4ymrn7qv.js} +1 -1
- package/dist/{chunk-36k4p0e8.js → chunk-4zz0wbtm.js} +1 -1
- package/dist/{chunk-hnfwnrdw.js → chunk-519scq6w.js} +24 -24
- package/dist/{chunk-c0cxm1jj.js → chunk-54m09576.js} +24 -24
- package/dist/{chunk-erqq5705.js → chunk-55nvgn9d.js} +2 -2
- package/dist/{chunk-cdv319m8.js → chunk-55vfz8eq.js} +1 -1
- package/dist/{chunk-jwf80scb.js → chunk-5daxqv14.js} +25 -25
- package/dist/{chunk-vs0hwycc.js → chunk-5dej9gvh.js} +2 -2
- package/dist/{chunk-mgbjn0ry.js → chunk-5kt12a8s.js} +1 -1
- package/dist/{chunk-k0bqymfw.js → chunk-5kyd7552.js} +2 -2
- package/dist/{chunk-b9n20qcw.js → chunk-5vsjd4gf.js} +7 -7
- package/dist/{chunk-4r7jf6h7.js → chunk-62p7c3ma.js} +7 -7
- package/dist/{chunk-t4360128.js → chunk-69dbs3j4.js} +30 -30
- package/dist/{chunk-h50wemgt.js → chunk-6a7kt618.js} +8 -8
- package/dist/{chunk-xdhd191v.js → chunk-6de2bhp9.js} +24 -24
- package/dist/{chunk-mm6hffs4.js → chunk-6khdhz07.js} +24 -24
- package/dist/{chunk-xt17cf7n.js → chunk-6paghnkb.js} +21 -20
- package/dist/{chunk-1zh5bbh0.js → chunk-6rbwfkwr.js} +36 -36
- package/dist/{chunk-g7f6rhkv.js → chunk-774x4aqd.js} +33 -33
- package/dist/{chunk-jzheakwg.js → chunk-7g2db6yb.js} +24 -24
- package/dist/{chunk-ke1bzwj0.js → chunk-7zpc67td.js} +24 -24
- package/dist/{chunk-ryb0h1z5.js → chunk-81d5qf02.js} +2 -2
- package/dist/{chunk-we086xcr.js → chunk-8c1y1nvm.js} +1 -1
- package/dist/{chunk-j3khjf4a.js → chunk-8mjeg422.js} +1 -1
- package/dist/{chunk-eqrenafc.js → chunk-8n437319.js} +3 -3
- package/dist/{chunk-b183xr8z.js → chunk-8njrxrbc.js} +2 -2
- package/dist/{chunk-2xq2cy9m.js → chunk-8rcw640f.js} +29 -29
- package/dist/{chunk-1c3k1g6e.js → chunk-8wphf6a8.js} +1 -1
- package/dist/{chunk-dqpsg3x6.js → chunk-8xv0wmjc.js} +25 -25
- package/dist/{chunk-8yhh34se.js → chunk-97h7981s.js} +25 -25
- package/dist/{chunk-q99z5w71.js → chunk-9bj03d4q.js} +1 -1
- package/dist/{chunk-89p21yqs.js → chunk-9mbm2sdm.js} +24 -24
- package/dist/{chunk-b2dttpvp.js → chunk-9nfmmvnj.js} +30 -30
- package/dist/{chunk-q68qcqnd.js → chunk-9tbptg5y.js} +1 -1
- package/dist/{chunk-gn36711e.js → chunk-a2n6yzqv.js} +1 -1
- package/dist/{chunk-zyy7th0a.js → chunk-a4h3j9c0.js} +6 -0
- package/dist/{chunk-cnkwshve.js → chunk-a4wj0dzh.js} +2 -2
- package/dist/{chunk-0d4p6r24.js → chunk-a6q11te3.js} +9 -9
- package/dist/{chunk-9962psf2.js → chunk-a87vjfsv.js} +27 -27
- package/dist/{chunk-tvrpmrzn.js → chunk-a8ksa0tn.js} +2 -2
- package/dist/{chunk-xcbm675k.js → chunk-a8kvy6r8.js} +2 -2
- package/dist/{chunk-gneehjp8.js → chunk-a93s9y7d.js} +2 -2
- package/dist/{chunk-872211k4.js → chunk-ad8hpn52.js} +1 -1
- package/dist/{chunk-1bbvgt3p.js → chunk-adsskz37.js} +3 -3
- package/dist/{chunk-r1zjw4gp.js → chunk-af4rn5ry.js} +1 -1
- package/dist/{chunk-b9mgqx58.js → chunk-affmygx1.js} +1 -1
- package/dist/{chunk-0d43nxnk.js → chunk-agbtp3r5.js} +3 -3
- package/dist/{chunk-svyfbay6.js → chunk-ahqa22fc.js} +2 -2
- package/dist/{chunk-s9nd7cyj.js → chunk-amek08r3.js} +26 -26
- package/dist/{chunk-8ehhzphf.js → chunk-ayp00xct.js} +24 -24
- package/dist/{chunk-tx1zp6k9.js → chunk-b4gy7qxa.js} +24 -24
- package/dist/{chunk-30kmyxwn.js → chunk-b5z7efgh.js} +30 -30
- package/dist/{chunk-pj2h71rb.js → chunk-bf0j7mtf.js} +1 -1
- package/dist/{chunk-gjkekgkm.js → chunk-bjzz5jnv.js} +27 -27
- package/dist/{chunk-deeqzmz8.js → chunk-bq3cw3y3.js} +24 -24
- package/dist/{chunk-qst4b9as.js → chunk-bsbwgk3z.js} +2 -2
- package/dist/{chunk-3dt68zn5.js → chunk-bw98bx70.js} +1 -1
- package/dist/{chunk-fps1h69y.js → chunk-c0yfbesp.js} +24 -24
- package/dist/{chunk-av497x84.js → chunk-c2cq3hqm.js} +2 -2
- package/dist/{chunk-y7r4awy2.js → chunk-ccfgt017.js} +2 -2
- package/dist/{chunk-pzna8nzx.js → chunk-cpwbzwz6.js} +24 -24
- package/dist/{chunk-fyq9f1r4.js → chunk-csph54hh.js} +1 -1
- package/dist/{chunk-j3ww1b8w.js → chunk-cy245pr6.js} +24 -24
- package/dist/{chunk-bakrp6by.js → chunk-cytvwyah.js} +9 -9
- package/dist/{chunk-4hwyxaeq.js → chunk-d1khc93r.js} +26 -26
- package/dist/{chunk-f6begf39.js → chunk-d1nbm1ys.js} +25 -25
- package/dist/{chunk-e7x5yj2h.js → chunk-d2pyx3nw.js} +25 -25
- package/dist/{chunk-wbhz1kax.js → chunk-d4zr9mt5.js} +2 -2
- package/dist/{chunk-nxrm815g.js → chunk-ddshg56k.js} +2 -2
- package/dist/{chunk-yc2ay8fz.js → chunk-dfmhj8rk.js} +1 -1
- package/dist/{chunk-m4th1xcy.js → chunk-dh2wjwph.js} +4 -4
- package/dist/{chunk-k4mg16w6.js → chunk-djma0ja2.js} +9 -9
- package/dist/{chunk-5kgmwm72.js → chunk-dmnbhjg3.js} +2 -2
- package/dist/{chunk-qt8j21yc.js → chunk-dppng82a.js} +31 -31
- package/dist/{chunk-91scsdr2.js → chunk-dpqdf1gn.js} +24 -24
- package/dist/{chunk-tbrzz94r.js → chunk-dwpz9tw1.js} +35 -35
- package/dist/{chunk-epkh4aat.js → chunk-e2gty32t.js} +4 -4
- package/dist/{chunk-rynkredv.js → chunk-e83pr4fx.js} +49 -49
- package/dist/{chunk-tgmxbtrk.js → chunk-efx0jwh9.js} +2 -2
- package/dist/{chunk-ptw6r102.js → chunk-en9j7fbc.js} +24 -24
- package/dist/{chunk-f05a5t1g.js → chunk-es4bgrgn.js} +25 -25
- package/dist/{chunk-gckjpwer.js → chunk-escng0z5.js} +26 -26
- package/dist/{chunk-03a7ns5s.js → chunk-f4q0kyes.js} +1 -1
- package/dist/{chunk-a4wba4ee.js → chunk-f6yfe8by.js} +5 -5
- package/dist/{chunk-91fnfkf9.js → chunk-f8ez712p.js} +27 -27
- package/dist/{chunk-ehvhhmg2.js → chunk-fddbvt9a.js} +24 -24
- package/dist/{chunk-jr6arg95.js → chunk-fn7kj69j.js} +3 -3
- package/dist/{chunk-g3zh09cs.js → chunk-fncs86kc.js} +24 -24
- package/dist/{chunk-aa2jk5ec.js → chunk-ftqv63sg.js} +25 -25
- package/dist/{chunk-sekayrhn.js → chunk-fybaxtbf.js} +3 -3
- package/dist/{chunk-6svr4g5y.js → chunk-fywbbx8f.js} +24 -24
- package/dist/{chunk-2whdc8zz.js → chunk-g086f8y9.js} +1 -1
- package/dist/{chunk-4grs5afv.js → chunk-g3vd8drd.js} +1 -1
- package/dist/{chunk-s1gf9fzs.js → chunk-g8q9e36c.js} +1 -1
- package/dist/{chunk-g2ddxeq0.js → chunk-ga7kzrjt.js} +3 -3
- package/dist/{chunk-nre8a00v.js → chunk-ghchj1ps.js} +27 -27
- package/dist/{chunk-b78pzw80.js → chunk-h4x5dems.js} +39 -39
- package/dist/{chunk-8wxvkw8d.js → chunk-h5agawnz.js} +2 -2
- package/dist/{chunk-5s80z8bj.js → chunk-h6ewt42y.js} +24 -24
- package/dist/{chunk-s23ksgx0.js → chunk-h7q4j9tv.js} +36 -36
- package/dist/{chunk-e0nvbjhe.js → chunk-h9f93nb3.js} +2 -2
- package/dist/{chunk-pb5csk8f.js → chunk-h9teyqgw.js} +24 -24
- package/dist/{chunk-zwm57zy3.js → chunk-hbzfsxwr.js} +24 -24
- package/dist/{chunk-55pz9658.js → chunk-hgch0xzr.js} +1 -1
- package/dist/{chunk-7kdnj6r5.js → chunk-hh3snp8a.js} +2 -2
- package/dist/{chunk-94jwb8h8.js → chunk-hnv54bek.js} +1 -1
- package/dist/{chunk-06daydfw.js → chunk-ht5nwqf4.js} +25 -25
- package/dist/{chunk-ysvkq1vy.js → chunk-hvxc53vx.js} +4 -4
- package/dist/{chunk-gm3xyt0n.js → chunk-j58jk5be.js} +7 -7
- package/dist/{chunk-b3x56xw6.js → chunk-jk4kvshe.js} +25 -25
- package/dist/{chunk-a8w9fre5.js → chunk-jw9243fa.js} +2 -2
- package/dist/{chunk-cy9y3g9c.js → chunk-jx15pd6n.js} +3 -3
- package/dist/{chunk-3p3r8awv.js → chunk-k11kvep6.js} +1 -1
- package/dist/{chunk-vdw3tpqy.js → chunk-k3bczqwd.js} +28 -28
- package/dist/{chunk-zhmhyt38.js → chunk-k8nvkgwj.js} +38 -38
- package/dist/{chunk-8vwcxhjg.js → chunk-k91n6rvs.js} +27 -27
- package/dist/{chunk-pa2aeq9e.js → chunk-k9bxfjt0.js} +32 -32
- package/dist/{chunk-yw9303pb.js → chunk-kce43ast.js} +11 -11
- package/dist/{chunk-wckky1kf.js → chunk-kffwpfka.js} +3 -3
- package/dist/{chunk-6837xx50.js → chunk-kj7ashp0.js} +17 -17
- package/dist/{chunk-hsyh3ht5.js → chunk-kjfs2vaf.js} +24 -24
- package/dist/{chunk-htqgje52.js → chunk-kmkcgttc.js} +26 -26
- package/dist/{chunk-ra1n1z0c.js → chunk-kmmab3q2.js} +2 -2
- package/dist/{chunk-96ac88tt.js → chunk-kp1wvy2w.js} +1 -1
- package/dist/{chunk-pgf6xysn.js → chunk-kv8wc1yf.js} +2 -2
- package/dist/{chunk-32rcf02k.js → chunk-kxx8f81d.js} +17 -17
- package/dist/{chunk-9ks4hkyv.js → chunk-m4ryy3kz.js} +25 -25
- package/dist/{chunk-rf9vga8z.js → chunk-mm5tmm1t.js} +51 -27
- package/dist/{chunk-a5vsq9cy.js → chunk-mn6tm502.js} +2 -2
- package/dist/{chunk-85jw2w2x.js → chunk-mq1a96hp.js} +35 -35
- package/dist/{chunk-p3bcc8q8.js → chunk-mrpfbdqg.js} +26 -26
- package/dist/{chunk-3m5d2kwd.js → chunk-mw6mm2qc.js} +26 -26
- package/dist/{chunk-mq26zsme.js → chunk-n7jt62pr.js} +27 -27
- package/dist/{chunk-c2e4y5dn.js → chunk-n9c5d76d.js} +3 -3
- package/dist/{chunk-9nvdx365.js → chunk-ndpf0v43.js} +24 -24
- package/dist/{chunk-qt0k08nw.js → chunk-nhyrvj9d.js} +38 -38
- package/dist/{chunk-4v0pzqmq.js → chunk-nkd5wmr1.js} +2 -2
- package/dist/{chunk-degs4pmz.js → chunk-nkreca9z.js} +4 -4
- package/dist/{chunk-0bf745n6.js → chunk-np06ryz0.js} +2 -2
- package/dist/{chunk-c0jj717y.js → chunk-nq2envz5.js} +2 -2
- package/dist/{chunk-c7ncsekp.js → chunk-nw852ghf.js} +39 -25
- package/dist/{chunk-ydgsnc70.js → chunk-p2b21m3t.js} +3 -3
- package/dist/{chunk-msyn852e.js → chunk-p3re6rah.js} +1 -1
- package/dist/{chunk-8fvt9r29.js → chunk-p6hhdmab.js} +30 -30
- package/dist/{chunk-cpmv1jg1.js → chunk-p71ta08d.js} +1 -1
- package/dist/{chunk-3djy352h.js → chunk-p7gc7s7v.js} +5 -5
- package/dist/{chunk-s6rchtpq.js → chunk-pbe4e87s.js} +24 -24
- package/dist/{chunk-das7sqxf.js → chunk-pg0q4pwk.js} +2 -2
- package/dist/{chunk-8nsmkgac.js → chunk-pjmpmm7h.js} +27 -27
- package/dist/{chunk-srtcyav5.js → chunk-ps93mdfb.js} +24 -24
- package/dist/{chunk-v890zxjh.js → chunk-pv8r67ks.js} +24 -24
- package/dist/{chunk-b66fr7fs.js → chunk-px6vr4bb.js} +2 -2
- package/dist/{chunk-a8z3cmge.js → chunk-qfdasm1m.js} +8 -8
- package/dist/{chunk-40txw5vw.js → chunk-qgxh55n4.js} +26 -26
- package/dist/{chunk-5p9szceb.js → chunk-qzb401r2.js} +1 -1
- package/dist/{chunk-nwj1t73f.js → chunk-r0pash3d.js} +25 -25
- package/dist/{chunk-3qksgf50.js → chunk-r306gjpc.js} +1 -1
- package/dist/{chunk-jh3g1h2m.js → chunk-r5c5e00x.js} +2 -2
- package/dist/{chunk-wg0d4shw.js → chunk-r5w7sh0d.js} +2 -2
- package/dist/{chunk-1dbz25dk.js → chunk-r858nh35.js} +24 -24
- package/dist/{chunk-mkcbbspz.js → chunk-rf8vzkc0.js} +24 -24
- package/dist/{chunk-8e2v15zy.js → chunk-rjx99ypw.js} +1 -1
- package/dist/{chunk-q6kttwf6.js → chunk-s4g85h7g.js} +2 -2
- package/dist/{chunk-cj93y6v4.js → chunk-s80qrsmv.js} +2 -2
- package/dist/{chunk-bf68vqnt.js → chunk-skzyqbm0.js} +174 -436
- package/dist/{chunk-43pqyz7x.js → chunk-swn4hx9p.js} +2 -2
- package/dist/{chunk-y4b897ek.js → chunk-t45y15j4.js} +1 -1
- package/dist/{chunk-p173c51d.js → chunk-t725ckx0.js} +2 -2
- package/dist/{chunk-ys6ctp3c.js → chunk-t89aybme.js} +3 -3
- package/dist/{chunk-5chc8z8n.js → chunk-tjxtyv3f.js} +1 -1
- package/dist/{chunk-3t41eh7n.js → chunk-tmb177bz.js} +25 -25
- package/dist/{chunk-dw02dt93.js → chunk-tmm7pgjj.js} +27 -27
- package/dist/{chunk-981dc4d2.js → chunk-tq2jbqpq.js} +4 -4
- package/dist/{chunk-xmj20j9w.js → chunk-tq58gq2m.js} +1 -1
- package/dist/{chunk-hdkf83nm.js → chunk-tqxc89x7.js} +24 -24
- package/dist/{chunk-x33anyzd.js → chunk-tr893w7r.js} +24 -24
- package/dist/{chunk-67ex9rnd.js → chunk-tw38dfnj.js} +25 -25
- package/dist/{chunk-2hdktzjd.js → chunk-tyw4d27r.js} +24 -24
- package/dist/{chunk-q17esyxh.js → chunk-v53b2jkf.js} +2 -2
- package/dist/{chunk-3rr330xr.js → chunk-v839cwwy.js} +25 -25
- package/dist/{chunk-d61srzjw.js → chunk-v8y338dh.js} +114 -61
- package/dist/{chunk-7rh6ws9p.js → chunk-va27rhej.js} +33 -33
- package/dist/{chunk-7x4tde6q.js → chunk-va5h75dc.js} +24 -24
- package/dist/{chunk-60fbc7y7.js → chunk-vgsb4fz8.js} +24 -24
- package/dist/{chunk-zn27z1n9.js → chunk-vh877sjm.js} +26 -26
- package/dist/chunk-vjwartm5.js +455 -0
- package/dist/{chunk-84r7ze95.js → chunk-vmr0kw02.js} +1 -1
- package/dist/{chunk-z47zsr3f.js → chunk-w13azkx7.js} +24 -24
- package/dist/{chunk-2y6bv8mp.js → chunk-w16xyvrd.js} +25 -25
- package/dist/{chunk-s7xzavdg.js → chunk-w2jgsss9.js} +2 -2
- package/dist/{chunk-zzykgkph.js → chunk-w3a8zcg8.js} +5 -5
- package/dist/{chunk-8kqdnkkh.js → chunk-w82418rj.js} +1 -1
- package/dist/{chunk-fnc95ck8.js → chunk-we2bpgx8.js} +1 -1
- package/dist/{chunk-9zjvwht8.js → chunk-wfxhnna2.js} +1 -1
- package/dist/{chunk-hkbjsxr5.js → chunk-wsxpvh37.js} +11 -10
- package/dist/{chunk-2jx4kafd.js → chunk-wy039c1a.js} +27 -27
- package/dist/{chunk-b7van57x.js → chunk-x1ppem6p.js} +2 -2
- package/dist/{chunk-nnw29ezr.js → chunk-x3vdpejs.js} +2 -2
- package/dist/{chunk-9zvsj7b5.js → chunk-x5azrnp3.js} +24 -24
- package/dist/{chunk-gafvwfpg.js → chunk-x83tm474.js} +1 -1
- package/dist/{chunk-mf1zbwh9.js → chunk-xcda44wq.js} +24 -24
- package/dist/{chunk-bzm15s0d.js → chunk-xneqj8f1.js} +1 -1
- package/dist/{chunk-2gdcc9xa.js → chunk-xp04ynsd.js} +24 -24
- package/dist/{chunk-whas4b6c.js → chunk-xpbw7frh.js} +3 -3
- package/dist/{chunk-dcy4yhmx.js → chunk-xqmvewjg.js} +3 -3
- package/dist/{chunk-6fecngep.js → chunk-xv414749.js} +1 -1
- package/dist/{chunk-e51ayxz6.js → chunk-xw20s6zh.js} +2 -2
- package/dist/{chunk-61v89yt3.js → chunk-xxx1jxjj.js} +1 -1
- package/dist/{chunk-3dyj1fqs.js → chunk-xzpvje25.js} +2 -2
- package/dist/{chunk-kvb1xp5b.js → chunk-y1m13kac.js} +24 -24
- package/dist/{chunk-xz775vz4.js → chunk-y3gb3rcg.js} +24 -24
- package/dist/{chunk-e92z3mma.js → chunk-y71rmvs7.js} +24 -24
- package/dist/{chunk-bnf2s6m6.js → chunk-ycf8vzqn.js} +25 -25
- package/dist/{chunk-jytvzpqv.js → chunk-yjdcape6.js} +2 -2
- package/dist/{chunk-c58vpgh1.js → chunk-ynrkjkgy.js} +24 -24
- package/dist/{chunk-5dm6af6g.js → chunk-yr0wym15.js} +1 -1
- package/dist/{chunk-gqqy616g.js → chunk-ywh5tj6z.js} +5 -5
- package/dist/{chunk-fqcserhk.js → chunk-yxds0gzb.js} +4 -4
- package/dist/{chunk-91wvyz0j.js → chunk-yyashkce.js} +28 -28
- package/dist/{chunk-qc9dbg7c.js → chunk-z4cm5ta4.js} +2 -2
- package/dist/{chunk-t6keftkw.js → chunk-zekhmnqv.js} +3 -3
- package/dist/{chunk-s4ncrmd8.js → chunk-zeptytrq.js} +2 -2
- package/dist/{chunk-sq3cem22.js → chunk-zmq9hvbe.js} +25 -25
- package/dist/{chunk-23mmypzf.js → chunk-znfm1fmc.js} +1 -1
- package/dist/{chunk-xvwnb277.js → chunk-znmbgvhh.js} +2 -2
- package/dist/{chunk-v1mewt1d.js → chunk-zwn8gdmb.js} +77 -77
- package/dist/cli-node.js +418 -10
- package/dist/cli.js +9 -9
- package/package.json +27 -20
- package/dist/chunk-rs3fergy.js +0 -32
package/dist/cli-node.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Bun API polyfill for Node.js runtime
|
|
2
|
+
// Bun API polyfill for Node.js runtime — makes target: 'bun' output runnable under Node.js
|
|
3
3
|
if (typeof globalThis.Bun === "undefined") {
|
|
4
|
-
const
|
|
4
|
+
const cp = await import("child_process");
|
|
5
5
|
const { resolve, delimiter } = await import("path");
|
|
6
|
-
const { accessSync, constants: { X_OK } } = await import("fs");
|
|
6
|
+
const { accessSync, constants: { X_OK }, statSync } = await import("fs");
|
|
7
|
+
const fsp = await import("fs/promises");
|
|
8
|
+
|
|
9
|
+
// ── Bun.which ─────────────────────────────────────────────────────────
|
|
10
|
+
// 沿 PATH 查找可执行文件路径
|
|
7
11
|
function which(bin) {
|
|
8
12
|
const isWin = process.platform === "win32";
|
|
9
13
|
const pathExt = isWin ? (process.env.PATHEXT || ".EXE").split(";") : [""];
|
|
@@ -15,13 +19,11 @@ if (typeof globalThis.Bun === "undefined") {
|
|
|
15
19
|
}
|
|
16
20
|
return null;
|
|
17
21
|
}
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
function $(parts, ...args) {
|
|
22
|
-
throw new Error("Bun.$ shell API is not available in Node.js. Use Bun runtime for this feature.");
|
|
23
|
-
}
|
|
22
|
+
|
|
23
|
+
// ── Bun.hash ──────────────────────────────────────────────────────────
|
|
24
|
+
// FNV-1a 32-bit 散列,与 Bun.hash 行为对齐
|
|
24
25
|
function hash(data, seed) {
|
|
26
|
+
if (typeof data !== "string") return 0;
|
|
25
27
|
let h = ((seed || 0) ^ 0x811c9dc5) >>> 0;
|
|
26
28
|
for (let i = 0; i < data.length; i++) {
|
|
27
29
|
h ^= data.charCodeAt(i);
|
|
@@ -29,6 +31,412 @@ if (typeof globalThis.Bun === "undefined") {
|
|
|
29
31
|
}
|
|
30
32
|
return h;
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
|
|
35
|
+
// ── Bun.$ ─────────────────────────────────────────────────────────────
|
|
36
|
+
// Bun shell template tag,仅在 computer-use-input/darwin 中使用
|
|
37
|
+
// 提供 stub 使顶层解构 var { $ } = globalThis.Bun 不崩溃
|
|
38
|
+
function $(parts, ...args) {
|
|
39
|
+
throw new Error("Bun.$ shell API is not available in Node.js. Use Bun runtime for this feature.");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ── Bun.spawn ─────────────────────────────────────────────────────────
|
|
43
|
+
// 异步子进程启动,返回与 Bun.Subprocess 兼容的对象
|
|
44
|
+
//
|
|
45
|
+
// 调用签名(本代码库实际使用的模式):
|
|
46
|
+
// Bun.spawn([cmd, ...args], { stdin, stdout, stderr, env, argv0 })
|
|
47
|
+
// Bun.spawn({ cmd: [cmd, ...args], stdin, stdout, stderr }) — 不存在,但防错
|
|
48
|
+
//
|
|
49
|
+
// 返回值需支持:
|
|
50
|
+
// proc.stdin → Writable (当 stdin: 'pipe' 时)
|
|
51
|
+
// proc.stdout → ReadableStream<Uint8Array> (当 stdout: 'pipe' 时)
|
|
52
|
+
// proc.stderr → ReadableStream<Uint8Array> (当 stderr: 'pipe' 时)
|
|
53
|
+
// proc.exited → Promise<number> (退出码)
|
|
54
|
+
// proc.kill() → 终止进程
|
|
55
|
+
// proc.pid → 进程 ID
|
|
56
|
+
function spawn(cmdOrOpts, opts) {
|
|
57
|
+
let cmd, spawnOpts;
|
|
58
|
+
if (Array.isArray(cmdOrOpts)) {
|
|
59
|
+
cmd = cmdOrOpts;
|
|
60
|
+
spawnOpts = opts || {};
|
|
61
|
+
} else {
|
|
62
|
+
const o = cmdOrOpts || {};
|
|
63
|
+
cmd = o.cmd;
|
|
64
|
+
spawnOpts = o;
|
|
65
|
+
}
|
|
66
|
+
if (!Array.isArray(cmd) || cmd.length === 0) {
|
|
67
|
+
throw new TypeError("Bun.spawn requires a non-empty command array");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 解析 stdin/stdout/stderr 管道配置
|
|
71
|
+
const toStdio = (v) => {
|
|
72
|
+
if (v === "pipe") return "pipe";
|
|
73
|
+
if (v === "ignore") return "ignore";
|
|
74
|
+
if (v === "inherit") return "inherit";
|
|
75
|
+
return v == null ? "pipe" : "pipe";
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const nodeOpts = {
|
|
79
|
+
stdio: [toStdio(spawnOpts.stdin), toStdio(spawnOpts.stdout), toStdio(spawnOpts.stderr)],
|
|
80
|
+
env: spawnOpts.env || process.env,
|
|
81
|
+
windowsHide: true,
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// 处理 argv0:Bun 用 argv0 重命名进程,Node 中通过 spawn 的第一个参数传递
|
|
85
|
+
const executable = spawnOpts.argv0 || cmd[0];
|
|
86
|
+
const args = spawnOpts.argv0 ? cmd : cmd.slice(1);
|
|
87
|
+
|
|
88
|
+
const child = cp.spawn(executable, args, nodeOpts);
|
|
89
|
+
|
|
90
|
+
// 构建 Bun 兼容的 stdin 封装
|
|
91
|
+
let bunStdin = null;
|
|
92
|
+
if (spawnOpts.stdin === "pipe" || spawnOpts.stdin == null) {
|
|
93
|
+
bunStdin = child.stdin;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 构建 Bun 兼容的 stdout/stderr 封装
|
|
97
|
+
// Bun.spawn 返回 ReadableStream<Uint8Array>,Node 返回 Readable
|
|
98
|
+
// 需要转换以支持 .getReader() 和 new Response(stream).text()
|
|
99
|
+
function toReadableStream(nodeReadable) {
|
|
100
|
+
if (!nodeReadable) return null;
|
|
101
|
+
if (nodeReadable instanceof ReadableStream) return nodeReadable;
|
|
102
|
+
return new ReadableStream({
|
|
103
|
+
start(controller) {
|
|
104
|
+
nodeReadable.on("data", (chunk) => controller.enqueue(new Uint8Array(chunk)));
|
|
105
|
+
nodeReadable.on("end", () => controller.close());
|
|
106
|
+
nodeReadable.on("error", (err) => controller.error(err));
|
|
107
|
+
},
|
|
108
|
+
cancel() {
|
|
109
|
+
nodeReadable.destroy();
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const bunStdout = toReadableStream(child.stdout);
|
|
115
|
+
const bunStderr = toReadableStream(child.stderr);
|
|
116
|
+
|
|
117
|
+
// 构建 exited Promise
|
|
118
|
+
const exited = new Promise((resolve) => {
|
|
119
|
+
child.on("close", (code) => resolve(code ?? 0));
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
stdin: bunStdin,
|
|
124
|
+
stdout: bunStdout,
|
|
125
|
+
stderr: bunStderr,
|
|
126
|
+
exited,
|
|
127
|
+
pid: child.pid,
|
|
128
|
+
kill(sig) { child.kill(sig || "SIGTERM"); },
|
|
129
|
+
get exitCode() { return child.exitCode; },
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ── Bun.spawnSync ─────────────────────────────────────────────────────
|
|
134
|
+
// 同步子进程执行,返回与 Bun.SpawnSyncResult 兼容的对象
|
|
135
|
+
//
|
|
136
|
+
// 调用签名(本代码库实际使用的模式):
|
|
137
|
+
// Bun.spawnSync({ cmd: [cmd, ...args], stdin, stdout, stderr, env, timeout })
|
|
138
|
+
// Bun.spawnSync({ cmd: [cmd, ...args], stdin: Buffer, stdout: 'pipe' })
|
|
139
|
+
//
|
|
140
|
+
// 返回值需支持:
|
|
141
|
+
// result.stdout → Uint8Array | null
|
|
142
|
+
// result.stderr → Uint8Array | null
|
|
143
|
+
// result.exitCode → number
|
|
144
|
+
function spawnSync(optsOrCmd) {
|
|
145
|
+
let cmd, syncOpts;
|
|
146
|
+
if (optsOrCmd && typeof optsOrCmd === "object" && !Array.isArray(optsOrCmd)) {
|
|
147
|
+
syncOpts = optsOrCmd;
|
|
148
|
+
cmd = syncOpts.cmd;
|
|
149
|
+
} else {
|
|
150
|
+
throw new TypeError("Bun.spawnSync requires an options object with 'cmd' property");
|
|
151
|
+
}
|
|
152
|
+
if (!Array.isArray(cmd) || cmd.length === 0) {
|
|
153
|
+
throw new TypeError("Bun.spawnSync requires a non-empty cmd array");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const toStdio = (v) => {
|
|
157
|
+
if (v === "pipe") return "pipe";
|
|
158
|
+
if (v === "ignore") return "ignore";
|
|
159
|
+
if (v === "inherit") return "inherit";
|
|
160
|
+
return v == null ? "pipe" : "pipe";
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const nodeOpts = {
|
|
164
|
+
stdio: [toStdio(syncOpts.stdin), toStdio(syncOpts.stdout), toStdio(syncOpts.stderr)],
|
|
165
|
+
env: syncOpts.env || process.env,
|
|
166
|
+
windowsHide: true,
|
|
167
|
+
timeout: syncOpts.timeout,
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
// 如果 stdin 是 Buffer 或 string,将其作为输入传入
|
|
171
|
+
if (Buffer.isBuffer(syncOpts.stdin) || typeof syncOpts.stdin === "string") {
|
|
172
|
+
nodeOpts.input = Buffer.from(syncOpts.stdin);
|
|
173
|
+
nodeOpts.stdio[0] = "pipe";
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const result = cp.spawnSync(cmd[0], cmd.slice(1), nodeOpts);
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
stdout: result.stdout ? Uint8Array.from(Buffer.isBuffer(result.stdout) ? result.stdout : Buffer.from(result.stdout)) : null,
|
|
180
|
+
stderr: result.stderr ? Uint8Array.from(Buffer.isBuffer(result.stderr) ? result.stderr : Buffer.from(result.stderr)) : null,
|
|
181
|
+
exitCode: result.status ?? 1,
|
|
182
|
+
success: result.status === 0,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// ── Bun.file ──────────────────────────────────────────────────────────
|
|
187
|
+
// 返回类 BunFile 对象,支持 .arrayBuffer()、.text()、.json()、.exists()
|
|
188
|
+
// 本代码库中仅 linux.ts 使用:Bun.file(path).arrayBuffer()
|
|
189
|
+
function bunFile(filePath) {
|
|
190
|
+
return {
|
|
191
|
+
async arrayBuffer() {
|
|
192
|
+
const buf = await fsp.readFile(filePath);
|
|
193
|
+
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
194
|
+
},
|
|
195
|
+
async text() {
|
|
196
|
+
return await fsp.readFile(filePath, "utf-8");
|
|
197
|
+
},
|
|
198
|
+
async json() {
|
|
199
|
+
return JSON.parse(await fsp.readFile(filePath, "utf-8"));
|
|
200
|
+
},
|
|
201
|
+
async exists() {
|
|
202
|
+
try { await fsp.access(filePath); return true; } catch { return false; }
|
|
203
|
+
},
|
|
204
|
+
get size() {
|
|
205
|
+
try { return statSync(filePath).size; } catch { return 0; }
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// ── Bun.gc ────────────────────────────────────────────────────────────
|
|
211
|
+
// Node.js 的 V8 GC 是自动的,无需手动触发;暴露为 no-op
|
|
212
|
+
function gc() {}
|
|
213
|
+
|
|
214
|
+
// ── Bun.generateHeapSnapshot ──────────────────────────────────────────
|
|
215
|
+
// Node.js 用 v8.getHeapSnapshot() 替代
|
|
216
|
+
function generateHeapSnapshot() {
|
|
217
|
+
const v8 = require("v8");
|
|
218
|
+
const stream = v8.getHeapSnapshot();
|
|
219
|
+
const chunks = [];
|
|
220
|
+
for (const chunk of stream) chunks.push(chunk);
|
|
221
|
+
return Buffer.concat(chunks).toString("utf-8");
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// ── Bun.embeddedFiles ─────────────────────────────────────────────────
|
|
225
|
+
// npm 包中不存在嵌入文件
|
|
226
|
+
const embeddedFiles = [];
|
|
227
|
+
|
|
228
|
+
// ── Bun.semver ────────────────────────────────────────────────────────
|
|
229
|
+
// Bun 内置 semver 比较,产物中通过 typeof Bun 守卫调用
|
|
230
|
+
// 用 semver 包的子集实现 order 和 satisfies
|
|
231
|
+
// semver.order(a, b): 1 if a>b, 0 if a==b, -1 if a<b
|
|
232
|
+
const semver = {
|
|
233
|
+
order(a, b) {
|
|
234
|
+
const pa = parseSemver(a);
|
|
235
|
+
const pb = parseSemver(b);
|
|
236
|
+
if (!pa || !pb) return 0;
|
|
237
|
+
const cmp = pa[0] - pb[0] || pa[1] - pb[1] || pa[2] - pb[2];
|
|
238
|
+
return cmp > 0 ? 1 : cmp < 0 ? -1 : 0;
|
|
239
|
+
},
|
|
240
|
+
satisfies(version, range) {
|
|
241
|
+
// 简化的 range 解析:支持 >=x.y.z, ^x.y.z, ~x.y.z, x.y.z, >x.y.z, <x.y.z, <=x.y.z, x.y.z - a.b.c
|
|
242
|
+
const pv = parseSemver(version);
|
|
243
|
+
if (!pv) return false;
|
|
244
|
+
const r = range.trim();
|
|
245
|
+
// 范围用 || 分隔
|
|
246
|
+
const ors = r.split("||").map(s => s.trim());
|
|
247
|
+
for (const part of ors) {
|
|
248
|
+
if (satisfiesRange(pv, part)) return true;
|
|
249
|
+
}
|
|
250
|
+
return false;
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// 解析 x.y.z 为 [major, minor, patch],忽略 pre-release
|
|
255
|
+
function parseSemver(v) {
|
|
256
|
+
if (!v) return null;
|
|
257
|
+
const m = String(v).match(/(\d+)\.(\d+)\.(\d+)/);
|
|
258
|
+
if (!m) return null;
|
|
259
|
+
return [Number(m[1]), Number(m[2]), Number(m[3])];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function satisfiesRange(pv, range) {
|
|
263
|
+
// 空范围或 * 匹配所有
|
|
264
|
+
if (!range || range === "*") return true;
|
|
265
|
+
// 空格分隔的 AND 条件
|
|
266
|
+
const conditions = range.split(/\s+/).filter(Boolean);
|
|
267
|
+
for (const cond of conditions) {
|
|
268
|
+
if (!satisfiesCondition(pv, cond)) return false;
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function satisfiesCondition(pv, cond) {
|
|
274
|
+
if (cond === "*") return true;
|
|
275
|
+
// ^x.y.z — 兼容 major
|
|
276
|
+
let m = cond.match(/^\^(\d+)\.(\d+)\.(\d+)/);
|
|
277
|
+
if (m) {
|
|
278
|
+
const [_, M, m2, p] = m.map(Number);
|
|
279
|
+
return pv[0] === M && (pv[0] > 0 ? pv[1] >= m2 || (pv[1] === m2 && pv[2] >= p) : pv[1] === m2 && pv[2] >= p) || pv[0] === M && pv[1] > m2;
|
|
280
|
+
}
|
|
281
|
+
// ~x.y.z — 兼容 major.minor
|
|
282
|
+
m = cond.match(/^~(>?=?(\d+)\.(\d+)\.(\d+))/);
|
|
283
|
+
if (m) {
|
|
284
|
+
const raw = m[1];
|
|
285
|
+
const cm = raw.match(/(\d+)\.(\d+)\.(\d+)/);
|
|
286
|
+
if (cm) {
|
|
287
|
+
const [_, M, m2] = cm.map(Number);
|
|
288
|
+
return pv[0] === M && pv[1] === m2 && pv[2] >= Number(cm[3]);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// ~x.y
|
|
292
|
+
m = cond.match(/^~(\d+)\.(\d+)/);
|
|
293
|
+
if (m) {
|
|
294
|
+
const [_, M, m2] = m.map(Number);
|
|
295
|
+
return pv[0] === M && pv[1] === m2;
|
|
296
|
+
}
|
|
297
|
+
// >=x.y.z
|
|
298
|
+
m = cond.match(/^>=(\d+)\.(\d+)\.(\d+)/);
|
|
299
|
+
if (m) {
|
|
300
|
+
const [_, M, m2, p] = m.map(Number);
|
|
301
|
+
return pv[0] > M || (pv[0] === M && pv[1] > m2) || (pv[0] === M && pv[1] === m2 && pv[2] >= p);
|
|
302
|
+
}
|
|
303
|
+
// >x.y.z
|
|
304
|
+
m = cond.match(/^>(\d+)\.(\d+)\.(\d+)/);
|
|
305
|
+
if (m) {
|
|
306
|
+
const [_, M, m2, p] = m.map(Number);
|
|
307
|
+
return pv[0] > M || (pv[0] === M && pv[1] > m2) || (pv[0] === M && pv[1] === m2 && pv[2] > p);
|
|
308
|
+
}
|
|
309
|
+
// <=x.y.z
|
|
310
|
+
m = cond.match(/^<=(\d+)\.(\d+)\.(\d+)/);
|
|
311
|
+
if (m) {
|
|
312
|
+
const [_, M, m2, p] = m.map(Number);
|
|
313
|
+
return pv[0] < M || (pv[0] === M && pv[1] < m2) || (pv[0] === M && pv[1] === m2 && pv[2] <= p);
|
|
314
|
+
}
|
|
315
|
+
// <x.y.z
|
|
316
|
+
m = cond.match(/^<(\d+)\.(\d+)\.(\d+)/);
|
|
317
|
+
if (m) {
|
|
318
|
+
const [_, M, m2, p] = m.map(Number);
|
|
319
|
+
return pv[0] < M || (pv[0] === M && pv[1] < m2) || (pv[0] === M && pv[1] === m2 && pv[2] < p);
|
|
320
|
+
}
|
|
321
|
+
// 精确匹配 x.y.z
|
|
322
|
+
m = cond.match(/^(\d+)\.(\d+)\.(\d+)$/);
|
|
323
|
+
if (m) {
|
|
324
|
+
const [_, M, m2, p] = m.map(Number);
|
|
325
|
+
return pv[0] === M && pv[1] === m2 && pv[2] === p;
|
|
326
|
+
}
|
|
327
|
+
// x.y.z - a.b.c 范围
|
|
328
|
+
m = cond.match(/^(\d+\.\d+\.\d+)\s*-\s*(\d+\.\d+\.\d+)$/);
|
|
329
|
+
if (m) {
|
|
330
|
+
const lo = parseSemver(m[1]);
|
|
331
|
+
const hi = parseSemver(m[2]);
|
|
332
|
+
if (!lo || !hi) return false;
|
|
333
|
+
const ordLo = semver.order([pv[0], pv[1], pv[2]].join("."), lo.join(".")) >= 0;
|
|
334
|
+
const ordHi = semver.order([pv[0], pv[1], pv[2]].join("."), hi.join(".")) <= 0;
|
|
335
|
+
return ordLo && ordHi;
|
|
336
|
+
}
|
|
337
|
+
// 无法识别,宽松通过
|
|
338
|
+
return true;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// ── Bun.YAML ──────────────────────────────────────────────────────────
|
|
342
|
+
// Bun 内置 YAML 解析器,产物中通过 typeof Bun 守卫调用
|
|
343
|
+
// 降级到 yaml 包(已作为依赖存在)
|
|
344
|
+
const YAML = {
|
|
345
|
+
parse(input) {
|
|
346
|
+
try {
|
|
347
|
+
const yaml = require("yaml");
|
|
348
|
+
return yaml.parse(input);
|
|
349
|
+
} catch {
|
|
350
|
+
throw new Error("Bun.YAML polyfill: 'yaml' package not available. Install it or use Bun runtime.");
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
// ── Bun.version ───────────────────────────────────────────────────────
|
|
356
|
+
// Bun 运行时版本字符串,用于 typeof 检测
|
|
357
|
+
const version = "1.2.0-polyfill";
|
|
358
|
+
|
|
359
|
+
// ── Bun.stringWidth ───────────────────────────────────────────────────
|
|
360
|
+
// 东亚宽度感知的字符串显示宽度,产物中有 typeof 守卫降级
|
|
361
|
+
// 提供基础实现,按 CJK 字符双宽计算
|
|
362
|
+
function stringWidth(str) {
|
|
363
|
+
let w = 0;
|
|
364
|
+
for (const ch of str) {
|
|
365
|
+
const code = ch.codePointAt(0);
|
|
366
|
+
if (code >= 0x1100 && (
|
|
367
|
+
code <= 0x115F ||
|
|
368
|
+
code === 0x2329 || code === 0x232A ||
|
|
369
|
+
(code >= 0x2E80 && code <= 0xA4CF && code !== 0x303F) ||
|
|
370
|
+
(code >= 0xAC00 && code <= 0xD7A3) ||
|
|
371
|
+
(code >= 0xF900 && code <= 0xFAFF) ||
|
|
372
|
+
(code >= 0xFE10 && code <= 0xFE19) ||
|
|
373
|
+
(code >= 0xFE30 && code <= 0xFE6F) ||
|
|
374
|
+
(code >= 0xFF01 && code <= 0xFF60) ||
|
|
375
|
+
(code >= 0xFFE0 && code <= 0xFFE6) ||
|
|
376
|
+
(code >= 0x1F300 && code <= 0x1F9FF) ||
|
|
377
|
+
(code >= 0x20000 && code <= 0x2FFFD) ||
|
|
378
|
+
(code >= 0x30000 && code <= 0x3FFFD)
|
|
379
|
+
)) {
|
|
380
|
+
w += 2;
|
|
381
|
+
} else if (code >= 0x20) {
|
|
382
|
+
w += 1;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return w;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// ── Bun.wrapAnsi ──────────────────────────────────────────────────────
|
|
389
|
+
// ANSI 转义序列感知的自动换行,产物中有 typeof 守卫降级到 null
|
|
390
|
+
// 提供 stub 即可
|
|
391
|
+
const wrapAnsi = null;
|
|
392
|
+
|
|
393
|
+
// ── Bun.listen ────────────────────────────────────────────────────────
|
|
394
|
+
// Daemon 模式专用 TCP 监听,feature-gated (DAEMON)
|
|
395
|
+
// Node.js 中用 net.Server 替代
|
|
396
|
+
function listen(opts) {
|
|
397
|
+
const net = require("net");
|
|
398
|
+
const server = net.createServer((socket) => {
|
|
399
|
+
if (opts.socket && opts.socket.data) {
|
|
400
|
+
socket.data = { ...opts.socket.data() };
|
|
401
|
+
}
|
|
402
|
+
if (opts.socket && opts.socket.open) {
|
|
403
|
+
opts.socket.open(socket);
|
|
404
|
+
}
|
|
405
|
+
socket.on("data", (data) => {
|
|
406
|
+
if (opts.socket && opts.socket.data) {
|
|
407
|
+
opts.socket.data(socket, data);
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
socket.on("close", () => {
|
|
411
|
+
if (opts.socket && opts.socket.close) {
|
|
412
|
+
opts.socket.close(socket);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
socket.on("error", () => {});
|
|
416
|
+
});
|
|
417
|
+
server.listen(opts.port || 0, opts.hostname || "0.0.0.0", () => {
|
|
418
|
+
const addr = server.address();
|
|
419
|
+
server.port = addr.port;
|
|
420
|
+
});
|
|
421
|
+
return server;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
globalThis.Bun = {
|
|
425
|
+
which,
|
|
426
|
+
$,
|
|
427
|
+
hash,
|
|
428
|
+
spawn,
|
|
429
|
+
spawnSync,
|
|
430
|
+
file: bunFile,
|
|
431
|
+
gc,
|
|
432
|
+
generateHeapSnapshot,
|
|
433
|
+
embeddedFiles,
|
|
434
|
+
semver,
|
|
435
|
+
YAML,
|
|
436
|
+
version,
|
|
437
|
+
stringWidth,
|
|
438
|
+
wrapAnsi,
|
|
439
|
+
listen,
|
|
440
|
+
};
|
|
33
441
|
}
|
|
34
442
|
import "./cli.js"
|
package/dist/cli.js
CHANGED
|
@@ -45,7 +45,7 @@ if (false) {}
|
|
|
45
45
|
async function main() {
|
|
46
46
|
const args = process.argv.slice(2);
|
|
47
47
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
48
|
-
console.log(`${"4.0.
|
|
48
|
+
console.log(`${"4.0.7"} (CoStrict)`);
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
const { profileCheckpoint } = await import("./chunk-1nmcmem8.js");
|
|
@@ -53,7 +53,7 @@ async function main() {
|
|
|
53
53
|
if (false) {}
|
|
54
54
|
if (process.argv[2] === "--claude-in-chrome-mcp") {
|
|
55
55
|
profileCheckpoint("cli_claude_in_chrome_mcp_path");
|
|
56
|
-
const { runClaudeInChromeMcpServer } = await import("./chunk-
|
|
56
|
+
const { runClaudeInChromeMcpServer } = await import("./chunk-mw6mm2qc.js");
|
|
57
57
|
await runClaudeInChromeMcpServer();
|
|
58
58
|
return;
|
|
59
59
|
} else if (process.argv[2] === "--chrome-native-host") {
|
|
@@ -63,21 +63,21 @@ async function main() {
|
|
|
63
63
|
return;
|
|
64
64
|
} else if (process.argv[2] === "--computer-use-mcp") {
|
|
65
65
|
profileCheckpoint("cli_computer_use_mcp_path");
|
|
66
|
-
const { runComputerUseMcpServer } = await import("./chunk-
|
|
66
|
+
const { runComputerUseMcpServer } = await import("./chunk-qfdasm1m.js");
|
|
67
67
|
await runComputerUseMcpServer();
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
70
|
if (args[0] === "--daemon-worker") {
|
|
71
|
-
const { runDaemonWorker } = await import("./chunk-
|
|
71
|
+
const { runDaemonWorker } = await import("./chunk-774x4aqd.js");
|
|
72
72
|
await runDaemonWorker(args[1]);
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
if (false) {}
|
|
76
76
|
if (args[0] === "daemon") {
|
|
77
77
|
profileCheckpoint("cli_daemon_path");
|
|
78
|
-
const { enableConfigs } = await import("./chunk-
|
|
78
|
+
const { enableConfigs } = await import("./chunk-hnv54bek.js");
|
|
79
79
|
enableConfigs();
|
|
80
|
-
const { initSinks } = await import("./chunk-
|
|
80
|
+
const { initSinks } = await import("./chunk-p7gc7s7v.js");
|
|
81
81
|
initSinks();
|
|
82
82
|
const { daemonMain } = await import("./chunk-yj2t6a2t.js");
|
|
83
83
|
await daemonMain(args.slice(1));
|
|
@@ -98,11 +98,11 @@ async function main() {
|
|
|
98
98
|
const hasTmuxFlag = args.includes("--tmux") || args.includes("--tmux=classic");
|
|
99
99
|
if (hasTmuxFlag && (args.includes("-w") || args.includes("--worktree") || args.some((a) => a.startsWith("--worktree=")))) {
|
|
100
100
|
profileCheckpoint("cli_tmux_worktree_fast_path");
|
|
101
|
-
const { enableConfigs } = await import("./chunk-
|
|
101
|
+
const { enableConfigs } = await import("./chunk-hnv54bek.js");
|
|
102
102
|
enableConfigs();
|
|
103
103
|
const { isWorktreeModeEnabled } = await import("./chunk-pwwa7s62.js");
|
|
104
104
|
if (isWorktreeModeEnabled()) {
|
|
105
|
-
const { execIntoTmuxWorktree } = await import("./chunk-
|
|
105
|
+
const { execIntoTmuxWorktree } = await import("./chunk-fncs86kc.js");
|
|
106
106
|
const result = await execIntoTmuxWorktree(args);
|
|
107
107
|
if (result.handled) {
|
|
108
108
|
return;
|
|
@@ -122,7 +122,7 @@ async function main() {
|
|
|
122
122
|
const { startCapturingEarlyInput } = await import("./chunk-qtfc6wdh.js");
|
|
123
123
|
startCapturingEarlyInput();
|
|
124
124
|
profileCheckpoint("cli_before_main_import");
|
|
125
|
-
const { main: cliMain } = await import("./chunk-
|
|
125
|
+
const { main: cliMain } = await import("./chunk-skzyqbm0.js");
|
|
126
126
|
profileCheckpoint("cli_after_main_import");
|
|
127
127
|
await cliMain();
|
|
128
128
|
profileCheckpoint("cli_after_main_complete");
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@costrict/csc",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.7",
|
|
4
4
|
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "CSC — CoStrict多模型终端 AI 编程助手,支持 Anthropic/OpenAI/Gemini/Grok 等多种 API 端点",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "claude-code-best <claude-code-best@proton.me>",
|
|
8
8
|
"repository": {
|
|
@@ -14,21 +14,26 @@
|
|
|
14
14
|
"url": "https://github.com/y574444354/csc/issues"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
|
-
"
|
|
18
|
-
"
|
|
17
|
+
"csc",
|
|
18
|
+
"costrict",
|
|
19
19
|
"cli",
|
|
20
20
|
"ai",
|
|
21
21
|
"coding-assistant",
|
|
22
22
|
"terminal",
|
|
23
|
-
"repl"
|
|
23
|
+
"repl",
|
|
24
|
+
"multi-model",
|
|
25
|
+
"anthropic",
|
|
26
|
+
"openai",
|
|
27
|
+
"gemini",
|
|
28
|
+
"grok"
|
|
24
29
|
],
|
|
25
30
|
"engines": {
|
|
26
|
-
"
|
|
31
|
+
"node": ">=18.0.0"
|
|
27
32
|
},
|
|
28
33
|
"bin": {
|
|
29
|
-
"csc": "dist/cli.js",
|
|
34
|
+
"csc": "dist/cli-node.js",
|
|
30
35
|
"csc-bun": "dist/cli-bun.js",
|
|
31
|
-
"claude-code-best": "dist/cli.js"
|
|
36
|
+
"claude-code-best": "dist/cli-node.js"
|
|
32
37
|
},
|
|
33
38
|
"workspaces": [
|
|
34
39
|
"packages/*",
|
|
@@ -55,16 +60,16 @@
|
|
|
55
60
|
"postinstall": "node scripts/postinstall.cjs && node scripts/setup-chrome-mcp.mjs",
|
|
56
61
|
"docs:dev": "npx mintlify dev",
|
|
57
62
|
"generate:skills": "bun run scripts/generate-skills.ts",
|
|
63
|
+
"typecheck": "tsc --noEmit",
|
|
58
64
|
"rcs": "bun run scripts/rcs.ts"
|
|
59
65
|
},
|
|
60
66
|
"dependencies": {
|
|
61
|
-
"@claude-code-best/mcp-chrome-bridge": "^2.0.7"
|
|
67
|
+
"@claude-code-best/mcp-chrome-bridge": "^2.0.7",
|
|
68
|
+
"undici": "^7.24.6",
|
|
69
|
+
"ws": "^8.20.0",
|
|
70
|
+
"yaml": "^2.8.3"
|
|
62
71
|
},
|
|
63
72
|
"devDependencies": {
|
|
64
|
-
"@types/he": "^1.2.3",
|
|
65
|
-
"@langfuse/otel": "^5.1.0",
|
|
66
|
-
"@langfuse/tracing": "^5.1.0",
|
|
67
|
-
"@types/lodash-es": "^4.17.12",
|
|
68
73
|
"@alcalzone/ansi-tokenize": "^0.3.0",
|
|
69
74
|
"@ant/claude-for-chrome-mcp": "workspace:*",
|
|
70
75
|
"@ant/computer-use-input": "workspace:*",
|
|
@@ -78,9 +83,6 @@
|
|
|
78
83
|
"@anthropic-ai/sdk": "^0.80.0",
|
|
79
84
|
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
|
80
85
|
"@anthropic/ink": "workspace:*",
|
|
81
|
-
"@claude-code-best/builtin-tools": "workspace:*",
|
|
82
|
-
"@claude-code-best/agent-tools": "workspace:*",
|
|
83
|
-
"@claude-code-best/mcp-client": "workspace:*",
|
|
84
86
|
"@aws-sdk/client-bedrock": "^3.1020.0",
|
|
85
87
|
"@aws-sdk/client-bedrock-runtime": "^3.1020.0",
|
|
86
88
|
"@aws-sdk/client-sts": "^3.1020.0",
|
|
@@ -88,8 +90,13 @@
|
|
|
88
90
|
"@aws-sdk/credential-providers": "^3.1020.0",
|
|
89
91
|
"@azure/identity": "^4.13.1",
|
|
90
92
|
"@biomejs/biome": "^2.4.10",
|
|
93
|
+
"@claude-code-best/agent-tools": "workspace:*",
|
|
94
|
+
"@claude-code-best/builtin-tools": "workspace:*",
|
|
95
|
+
"@claude-code-best/mcp-client": "workspace:*",
|
|
91
96
|
"@commander-js/extra-typings": "^14.0.0",
|
|
92
97
|
"@growthbook/growthbook": "^1.6.5",
|
|
98
|
+
"@langfuse/otel": "^5.1.0",
|
|
99
|
+
"@langfuse/tracing": "^5.1.0",
|
|
93
100
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
94
101
|
"@opentelemetry/api": "^1.9.1",
|
|
95
102
|
"@opentelemetry/api-logs": "^0.214.0",
|
|
@@ -112,8 +119,11 @@
|
|
|
112
119
|
"@sentry/node": "^10.47.0",
|
|
113
120
|
"@smithy/core": "^3.23.13",
|
|
114
121
|
"@smithy/node-http-handler": "^4.5.1",
|
|
115
|
-
"@types/bun": "^1.3.
|
|
122
|
+
"@types/bun": "^1.3.12",
|
|
116
123
|
"@types/cacache": "^20.0.1",
|
|
124
|
+
"@types/he": "^1.2.3",
|
|
125
|
+
"@types/lodash-es": "^4.17.12",
|
|
126
|
+
"@types/node": "^25.6.0",
|
|
117
127
|
"@types/picomatch": "^4.0.3",
|
|
118
128
|
"@types/plist": "^3.0.5",
|
|
119
129
|
"@types/proper-lockfile": "^4.1.4",
|
|
@@ -180,16 +190,13 @@
|
|
|
180
190
|
"turndown": "^7.2.2",
|
|
181
191
|
"type-fest": "^5.5.0",
|
|
182
192
|
"typescript": "^6.0.2",
|
|
183
|
-
"undici": "^7.24.6",
|
|
184
193
|
"url-handler-napi": "workspace:*",
|
|
185
194
|
"usehooks-ts": "^3.1.1",
|
|
186
195
|
"vscode-jsonrpc": "^8.2.1",
|
|
187
196
|
"vscode-languageserver-protocol": "^3.17.5",
|
|
188
197
|
"vscode-languageserver-types": "^3.17.5",
|
|
189
198
|
"wrap-ansi": "^10.0.0",
|
|
190
|
-
"ws": "^8.20.0",
|
|
191
199
|
"xss": "^1.0.15",
|
|
192
|
-
"yaml": "^2.8.3",
|
|
193
200
|
"zod": "^4.3.6"
|
|
194
201
|
}
|
|
195
202
|
}
|
package/dist/chunk-rs3fergy.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import {
|
|
3
|
-
has1mContext,
|
|
4
|
-
init_auth,
|
|
5
|
-
init_context,
|
|
6
|
-
isClaudeAISubscriber
|
|
7
|
-
} from "./chunk-hkbjsxr5.js";
|
|
8
|
-
import {
|
|
9
|
-
__esm
|
|
10
|
-
} from "./chunk-qp2qdcda.js";
|
|
11
|
-
|
|
12
|
-
// src/utils/extraUsage.ts
|
|
13
|
-
function isBilledAsExtraUsage(model, isFastMode, isOpus1mMerged) {
|
|
14
|
-
if (!isClaudeAISubscriber())
|
|
15
|
-
return false;
|
|
16
|
-
if (isFastMode)
|
|
17
|
-
return true;
|
|
18
|
-
if (model === null || !has1mContext(model))
|
|
19
|
-
return false;
|
|
20
|
-
const m = model.toLowerCase().replace(/\[1m\]$/, "").trim();
|
|
21
|
-
const isOpus46 = m === "opus" || m.includes("opus-4-6");
|
|
22
|
-
const isSonnet46 = m === "sonnet" || m.includes("sonnet-4-6");
|
|
23
|
-
if (isOpus46 && isOpus1mMerged)
|
|
24
|
-
return false;
|
|
25
|
-
return isOpus46 || isSonnet46;
|
|
26
|
-
}
|
|
27
|
-
var init_extraUsage = __esm(() => {
|
|
28
|
-
init_auth();
|
|
29
|
-
init_context();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
export { isBilledAsExtraUsage, init_extraUsage };
|