jialing-code 1.1.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/README.md +97 -0
- package/dist/chunk-065m026w.js +97 -0
- package/dist/chunk-06saje2v.js +39 -0
- package/dist/chunk-0731m51q.js +8 -0
- package/dist/chunk-0975ccyw.js +265 -0
- package/dist/chunk-09n3fjx5.js +67 -0
- package/dist/chunk-0bdjdzew.js +41 -0
- package/dist/chunk-0ce6kd7y.js +212 -0
- package/dist/chunk-0e1xsncc.js +969 -0
- package/dist/chunk-0m2861gw.js +154 -0
- package/dist/chunk-0paqc2yw.js +15 -0
- package/dist/chunk-0rg6yrhy.js +99 -0
- package/dist/chunk-0sakxrcf.js +643 -0
- package/dist/chunk-0v9hwxvz.js +105 -0
- package/dist/chunk-0vkfrmqm.js +690 -0
- package/dist/chunk-0vvfnhhv.js +248 -0
- package/dist/chunk-0w4rsycj.js +145 -0
- package/dist/chunk-0x9b2nmd.js +63 -0
- package/dist/chunk-0xjaqda8.js +1124 -0
- package/dist/chunk-1141xmr4.js +8 -0
- package/dist/chunk-13d1842d.js +154 -0
- package/dist/chunk-1921a6yb.js +32 -0
- package/dist/chunk-1ad8mk9g.js +527 -0
- package/dist/chunk-1ax41pws.js +28 -0
- package/dist/chunk-1c8z1b5v.js +16 -0
- package/dist/chunk-1cbn5kxf.js +7 -0
- package/dist/chunk-1eapde8a.js +726 -0
- package/dist/chunk-1h2famwb.js +49 -0
- package/dist/chunk-1jggnf7z.js +85 -0
- package/dist/chunk-1k92pn9c.js +32 -0
- package/dist/chunk-1qakq4sn.js +802 -0
- package/dist/chunk-1rvz0433.js +722 -0
- package/dist/chunk-1xkekb9y.js +19 -0
- package/dist/chunk-238g70xa.js +36 -0
- package/dist/chunk-24ge0eqa.js +106 -0
- package/dist/chunk-278vghwm.js +5395 -0
- package/dist/chunk-27xc1csx.js +104 -0
- package/dist/chunk-2a42s11t.js +412 -0
- package/dist/chunk-2aa02aw6.js +438 -0
- package/dist/chunk-2eykm0j0.js +20 -0
- package/dist/chunk-2gzv8nrw.js +205 -0
- package/dist/chunk-2k995y2x.js +880 -0
- package/dist/chunk-2nayx6q1.js +63 -0
- package/dist/chunk-2sd2w2h4.js +44 -0
- package/dist/chunk-2tw2ve8h.js +145 -0
- package/dist/chunk-30rst83v.js +168 -0
- package/dist/chunk-3aavh06g.js +1581 -0
- package/dist/chunk-3b0yvt2h.js +469 -0
- package/dist/chunk-3be7ka25.js +56 -0
- package/dist/chunk-3c25bcsw.js +17 -0
- package/dist/chunk-3dyxka97.js +584 -0
- package/dist/chunk-3f7rypmf.js +16544 -0
- package/dist/chunk-3fsd7f51.js +93 -0
- package/dist/chunk-3gqdqmzb.js +75 -0
- package/dist/chunk-3h8a89gy.js +46 -0
- package/dist/chunk-3m84sret.js +71 -0
- package/dist/chunk-3nb7j3js.js +96 -0
- package/dist/chunk-3p08nvn2.js +98 -0
- package/dist/chunk-3r09htpc.js +318 -0
- package/dist/chunk-3r24h7t6.js +113 -0
- package/dist/chunk-3rkfxjtq.js +80 -0
- package/dist/chunk-3tmk7dc2.js +604 -0
- package/dist/chunk-3w6s9m5w.js +16 -0
- package/dist/chunk-43qjymy5.js +92 -0
- package/dist/chunk-44fpr6jq.js +434 -0
- package/dist/chunk-45kxdsp8.js +444 -0
- package/dist/chunk-495d85x1.js +8066 -0
- package/dist/chunk-4ba796se.js +1095 -0
- package/dist/chunk-4g3v8y12.js +23 -0
- package/dist/chunk-4h53xj8n.js +3445 -0
- package/dist/chunk-4jm600zv.js +13 -0
- package/dist/chunk-4jy9dtwk.js +116 -0
- package/dist/chunk-4p60dd45.js +55 -0
- package/dist/chunk-4z0jsrqg.js +81 -0
- package/dist/chunk-4zfkzkt6.js +37 -0
- package/dist/chunk-55wgxwa9.js +13877 -0
- package/dist/chunk-5dbk24zg.js +890 -0
- package/dist/chunk-5hzvp4va.js +115 -0
- package/dist/chunk-5kbt1mbt.js +500 -0
- package/dist/chunk-5pen7vr8.js +176 -0
- package/dist/chunk-5r280eng.js +198 -0
- package/dist/chunk-5srym52s.js +88 -0
- package/dist/chunk-600kg7k6.js +41 -0
- package/dist/chunk-616w0qj3.js +160 -0
- package/dist/chunk-62jw1t8c.js +94 -0
- package/dist/chunk-62xmt9mk.js +372 -0
- package/dist/chunk-64bvg7c3.js +229 -0
- package/dist/chunk-65yhe4s0.js +281 -0
- package/dist/chunk-6aewh27m.js +102 -0
- package/dist/chunk-6bd8brc4.js +48 -0
- package/dist/chunk-6dj5t602.js +341 -0
- package/dist/chunk-6exxdk1p.js +6956 -0
- package/dist/chunk-6f5j8fs0.js +752 -0
- package/dist/chunk-6g62sjpf.js +328 -0
- package/dist/chunk-6gecq2ta.js +1493 -0
- package/dist/chunk-6gr3c3w9.js +378 -0
- package/dist/chunk-6kpbgc5w.js +23 -0
- package/dist/chunk-6kseqw79.js +154 -0
- package/dist/chunk-6mxm1qd0.js +40764 -0
- package/dist/chunk-6n2qgm9v.js +8 -0
- package/dist/chunk-6tq2v3rk.js +186 -0
- package/dist/chunk-6wsdhj3v.js +93 -0
- package/dist/chunk-6zw9fhgb.js +4389 -0
- package/dist/chunk-71grc1mw.js +111 -0
- package/dist/chunk-73rpbt04.js +1947 -0
- package/dist/chunk-748feghg.js +604 -0
- package/dist/chunk-75e8gtg9.js +84 -0
- package/dist/chunk-75th4717.js +780 -0
- package/dist/chunk-760252na.js +101 -0
- package/dist/chunk-7739pg2c.js +4261 -0
- package/dist/chunk-778fnx46.js +472 -0
- package/dist/chunk-77g09znh.js +391 -0
- package/dist/chunk-7aw745vx.js +40175 -0
- package/dist/chunk-7m2nd8da.js +110 -0
- package/dist/chunk-7n35vjtw.js +444 -0
- package/dist/chunk-7n5ss4sh.js +144 -0
- package/dist/chunk-7rjnxcfe.js +107 -0
- package/dist/chunk-7sb5axvf.js +122 -0
- package/dist/chunk-7wm5s02e.js +216 -0
- package/dist/chunk-7ymfj7m3.js +151 -0
- package/dist/chunk-7z8j9qfn.js +121 -0
- package/dist/chunk-7zsapntc.js +216 -0
- package/dist/chunk-805fhkfh.js +908 -0
- package/dist/chunk-80k1nj24.js +253 -0
- package/dist/chunk-83hfzbx3.js +10 -0
- package/dist/chunk-85cypsdd.js +92 -0
- package/dist/chunk-8760caxf.js +2644 -0
- package/dist/chunk-88f6egg6.js +387 -0
- package/dist/chunk-88r7kwgj.js +22 -0
- package/dist/chunk-89e1v45e.js +463 -0
- package/dist/chunk-8bedvdm1.js +32 -0
- package/dist/chunk-8c4x4vdz.js +177 -0
- package/dist/chunk-8hq5kk3y.js +44 -0
- package/dist/chunk-8ngxagxq.js +18 -0
- package/dist/chunk-8tnsngw2.js +31 -0
- package/dist/chunk-8wjnca8h.js +307 -0
- package/dist/chunk-8y12jxg8.js +10 -0
- package/dist/chunk-8ymf4e6z.js +48 -0
- package/dist/chunk-90wp6wez.js +10510 -0
- package/dist/chunk-92bp5bnf.js +650 -0
- package/dist/chunk-92q8sx5z.js +90 -0
- package/dist/chunk-958rtmtx.js +10476 -0
- package/dist/chunk-9e2kqv5g.js +125 -0
- package/dist/chunk-9f4f1hy5.js +281 -0
- package/dist/chunk-9gbamk79.js +93 -0
- package/dist/chunk-9k5s3ryh.js +167 -0
- package/dist/chunk-9xzfqm15.js +97 -0
- package/dist/chunk-9zgdvbm6.js +110 -0
- package/dist/chunk-a0p3q8jw.js +24 -0
- package/dist/chunk-a22sayzp.js +220 -0
- package/dist/chunk-a8ejc632.js +3094 -0
- package/dist/chunk-a8gj9d9z.js +120 -0
- package/dist/chunk-a9vdeb6y.js +258 -0
- package/dist/chunk-a9yev47v.js +674 -0
- package/dist/chunk-a9zh40sj.js +48 -0
- package/dist/chunk-ack5mfba.js +105 -0
- package/dist/chunk-ae76ded0.js +30 -0
- package/dist/chunk-akjw4dh6.js +538 -0
- package/dist/chunk-asc6wz4q.js +1188 -0
- package/dist/chunk-atqejh3p.js +273 -0
- package/dist/chunk-atv2e6b7.js +61 -0
- package/dist/chunk-axvvkwz8.js +1551 -0
- package/dist/chunk-azgz7kj9.js +38 -0
- package/dist/chunk-b3zave8q.js +275 -0
- package/dist/chunk-b4wg70y1.js +54 -0
- package/dist/chunk-b8b13qn2.js +100 -0
- package/dist/chunk-bg3mt9bm.js +28 -0
- package/dist/chunk-bh4jvcjn.js +91 -0
- package/dist/chunk-bhdt6k7w.js +15 -0
- package/dist/chunk-bm1qb16p.js +17 -0
- package/dist/chunk-bpvsd1j1.js +266 -0
- package/dist/chunk-bqfnp99q.js +477 -0
- package/dist/chunk-bsbmmfyt.js +17 -0
- package/dist/chunk-bsbt34jm.js +42 -0
- package/dist/chunk-c78akdhr.js +458 -0
- package/dist/chunk-cdz5yb0r.js +57 -0
- package/dist/chunk-cfv996bs.js +22 -0
- package/dist/chunk-cgfdkzhb.js +12 -0
- package/dist/chunk-ckh4r5er.js +257 -0
- package/dist/chunk-cmgjnvn9.js +89 -0
- package/dist/chunk-cpjgvay8.js +687 -0
- package/dist/chunk-crfryjx9.js +276 -0
- package/dist/chunk-ctw5jwcd.js +213 -0
- package/dist/chunk-cvy3vntc.js +65 -0
- package/dist/chunk-cwbzz504.js +94 -0
- package/dist/chunk-cy2hswr1.js +15 -0
- package/dist/chunk-cyejkay3.js +222 -0
- package/dist/chunk-d18z9pna.js +106 -0
- package/dist/chunk-d5cq0n0v.js +162 -0
- package/dist/chunk-db45aryp.js +50 -0
- package/dist/chunk-de8nqh0z.js +790 -0
- package/dist/chunk-dfw6h350.js +2336 -0
- package/dist/chunk-dgqrcy74.js +48 -0
- package/dist/chunk-dn75ptgd.js +184 -0
- package/dist/chunk-dnh7jtpb.js +37 -0
- package/dist/chunk-dpshyv9m.js +90 -0
- package/dist/chunk-dt8cdvnm.js +642 -0
- package/dist/chunk-dtxby6fr.js +306 -0
- package/dist/chunk-dv1wfr85.js +6373 -0
- package/dist/chunk-dw363edx.js +1154 -0
- package/dist/chunk-dwrdacck.js +62 -0
- package/dist/chunk-dxnnv5e3.js +276 -0
- package/dist/chunk-e3g8q4cn.js +1646 -0
- package/dist/chunk-e3m9k9s2.js +542 -0
- package/dist/chunk-e4q49asn.js +155 -0
- package/dist/chunk-e5pntxye.js +37 -0
- package/dist/chunk-e7393td6.js +42 -0
- package/dist/chunk-ead42yrh.js +87 -0
- package/dist/chunk-eb90vwvr.js +152 -0
- package/dist/chunk-ecvwk9hg.js +250 -0
- package/dist/chunk-edjd6aay.js +173 -0
- package/dist/chunk-eg0h8mtm.js +130 -0
- package/dist/chunk-ehtwnxpg.js +1591 -0
- package/dist/chunk-ek686gx1.js +94 -0
- package/dist/chunk-eqp1rfft.js +17 -0
- package/dist/chunk-evhwt0ar.js +1015 -0
- package/dist/chunk-ewadzrm8.js +103 -0
- package/dist/chunk-ewsgsw9h.js +172291 -0
- package/dist/chunk-f0pa0r7e.js +3198 -0
- package/dist/chunk-f2mhrmww.js +62 -0
- package/dist/chunk-f39zxvwn.js +401 -0
- package/dist/chunk-f46z54tq.js +374 -0
- package/dist/chunk-f5ma3nh5.js +3436 -0
- package/dist/chunk-f60q23az.js +3038 -0
- package/dist/chunk-f6v2nz57.js +107 -0
- package/dist/chunk-f6yjan38.js +38 -0
- package/dist/chunk-fbv4apne.js +51 -0
- package/dist/chunk-fem4s778.js +70 -0
- package/dist/chunk-fezm1kn8.js +376 -0
- package/dist/chunk-fm1n3ysp.js +6108 -0
- package/dist/chunk-frg83bfw.js +225 -0
- package/dist/chunk-fscm8db0.js +692 -0
- package/dist/chunk-fyc5fepv.js +10 -0
- package/dist/chunk-g0j0t6qk.js +26 -0
- package/dist/chunk-g0nc1ftf.js +849 -0
- package/dist/chunk-g338npwr.js +1061 -0
- package/dist/chunk-g3t0act8.js +8 -0
- package/dist/chunk-g75w4hw3.js +26 -0
- package/dist/chunk-g8vp82en.js +1866 -0
- package/dist/chunk-gax0fcbx.js +182 -0
- package/dist/chunk-gsz4dh3y.js +606 -0
- package/dist/chunk-gtfffm7h.js +440 -0
- package/dist/chunk-gver9zb9.js +420 -0
- package/dist/chunk-gyj242zr.js +20 -0
- package/dist/chunk-h0qngp9w.js +157 -0
- package/dist/chunk-h14kemnk.js +123 -0
- package/dist/chunk-h8wj1a74.js +8960 -0
- package/dist/chunk-h9mcb2eg.js +87 -0
- package/dist/chunk-h9nh2980.js +91 -0
- package/dist/chunk-hakdhagh.js +16606 -0
- package/dist/chunk-hbc6ymdv.js +55 -0
- package/dist/chunk-hh7cmy4k.js +20 -0
- package/dist/chunk-hjhc4cpt.js +69 -0
- package/dist/chunk-hjwez8qc.js +5018 -0
- package/dist/chunk-hk9xz7gk.js +118 -0
- package/dist/chunk-hqmz36b3.js +552 -0
- package/dist/chunk-hrzerbfw.js +1299 -0
- package/dist/chunk-hs8ph4p8.js +8 -0
- package/dist/chunk-ht1xwrnd.js +716 -0
- package/dist/chunk-hvmfg2dc.js +338 -0
- package/dist/chunk-hx2tr4ep.js +7189 -0
- package/dist/chunk-hzhe8ygc.js +547 -0
- package/dist/chunk-j2k4p94p.js +55 -0
- package/dist/chunk-j3a4p81y.js +184 -0
- package/dist/chunk-j49g6g3s.js +57 -0
- package/dist/chunk-j5d5hp9h.js +71 -0
- package/dist/chunk-j64ga6ta.js +8035 -0
- package/dist/chunk-j7tyxan1.js +116 -0
- package/dist/chunk-j8v4774z.js +424 -0
- package/dist/chunk-jafes477.js +29 -0
- package/dist/chunk-jd32zbps.js +15 -0
- package/dist/chunk-jdgeec04.js +4249 -0
- package/dist/chunk-jftd4jq5.js +4521 -0
- package/dist/chunk-jkxqhv6y.js +812 -0
- package/dist/chunk-jmfr6h0n.js +120 -0
- package/dist/chunk-jn4aabmx.js +40 -0
- package/dist/chunk-jnhkref0.js +30 -0
- package/dist/chunk-jsbpm1gz.js +27 -0
- package/dist/chunk-jtcyjc3k.js +5802 -0
- package/dist/chunk-jx817w05.js +11 -0
- package/dist/chunk-jzmz18nn.js +65 -0
- package/dist/chunk-k0p9w03v.js +4957 -0
- package/dist/chunk-k3dcdnck.js +89 -0
- package/dist/chunk-k3wadzcd.js +88 -0
- package/dist/chunk-kaeshsk1.js +713 -0
- package/dist/chunk-kbkey9ed.js +522 -0
- package/dist/chunk-kcwfhqbb.js +196 -0
- package/dist/chunk-key6jr7p.js +224 -0
- package/dist/chunk-knay8cy9.js +173 -0
- package/dist/chunk-kr3rg2y1.js +95 -0
- package/dist/chunk-kwekc97v.js +18 -0
- package/dist/chunk-m06q12hg.js +61 -0
- package/dist/chunk-m2mcpbhk.js +43 -0
- package/dist/chunk-m8v220gz.js +71 -0
- package/dist/chunk-mgpqy78h.js +208 -0
- package/dist/chunk-mkejwh4t.js +16 -0
- package/dist/chunk-mptyw5n1.js +107 -0
- package/dist/chunk-mqajm0dp.js +66 -0
- package/dist/chunk-mrksbgxj.js +490 -0
- package/dist/chunk-msjfc5ba.js +246 -0
- package/dist/chunk-mt25echc.js +6157 -0
- package/dist/chunk-mt3jfnr8.js +277 -0
- package/dist/chunk-mtn242d4.js +9300 -0
- package/dist/chunk-mzfkvave.js +169 -0
- package/dist/chunk-n0qaeaa5.js +256 -0
- package/dist/chunk-n1erf6kh.js +22820 -0
- package/dist/chunk-n2avk1r2.js +61 -0
- package/dist/chunk-n6atnpcq.js +765 -0
- package/dist/chunk-n7ttdtk0.js +641 -0
- package/dist/chunk-ncnfzby5.js +822 -0
- package/dist/chunk-ncnr1jtf.js +2058 -0
- package/dist/chunk-nerv0jvx.js +74 -0
- package/dist/chunk-ngd2abep.js +90 -0
- package/dist/chunk-nka1g8f4.js +773 -0
- package/dist/chunk-nnaxkc2z.js +128 -0
- package/dist/chunk-npyrtj8j.js +691 -0
- package/dist/chunk-nq0fxyxh.js +752 -0
- package/dist/chunk-nrmffak7.js +114 -0
- package/dist/chunk-nsz546wq.js +1170 -0
- package/dist/chunk-nt837qt9.js +21 -0
- package/dist/chunk-nv64x1z5.js +86 -0
- package/dist/chunk-nxsh6de2.js +1711 -0
- package/dist/chunk-nz4getcr.js +40 -0
- package/dist/chunk-p1f607pa.js +83 -0
- package/dist/chunk-p2816w9z.js +1486 -0
- package/dist/chunk-p2d5nh3g.js +342 -0
- package/dist/chunk-p4r5y02t.js +90 -0
- package/dist/chunk-p7g7pf3f.js +336 -0
- package/dist/chunk-pb4ad8r2.js +110 -0
- package/dist/chunk-pbrhz0zr.js +716 -0
- package/dist/chunk-ps49ymvj.js +43 -0
- package/dist/chunk-pwnt3veb.js +103 -0
- package/dist/chunk-pwwa7s62.js +11 -0
- package/dist/chunk-px3w0kde.js +299 -0
- package/dist/chunk-pzn777jb.js +756 -0
- package/dist/chunk-q25bjaev.js +15 -0
- package/dist/chunk-q5by3da6.js +8 -0
- package/dist/chunk-q6av622g.js +38 -0
- package/dist/chunk-q6xkvtf2.js +1318 -0
- package/dist/chunk-q81jx1tq.js +476 -0
- package/dist/chunk-qehb6fk5.js +339 -0
- package/dist/chunk-qj1avx1q.js +87 -0
- package/dist/chunk-qn2dxr66.js +105 -0
- package/dist/chunk-qnfx3qtx.js +617 -0
- package/dist/chunk-qp18kd4h.js +48 -0
- package/dist/chunk-qp2qdcda.js +100 -0
- package/dist/chunk-qpjy9tcf.js +133 -0
- package/dist/chunk-qqfa0dqg.js +2343 -0
- package/dist/chunk-qwh3htcz.js +202 -0
- package/dist/chunk-qz2x630m.js +49145 -0
- package/dist/chunk-r3vakcs1.js +496 -0
- package/dist/chunk-r66hz8j6.js +34 -0
- package/dist/chunk-r6b58y3x.js +17 -0
- package/dist/chunk-rekp48rk.js +62 -0
- package/dist/chunk-rn0v1hk8.js +34 -0
- package/dist/chunk-rs1xrs6m.js +534 -0
- package/dist/chunk-rs45skes.js +123 -0
- package/dist/chunk-rzszqp82.js +524 -0
- package/dist/chunk-s274nv8k.js +8 -0
- package/dist/chunk-s3pzvdss.js +50 -0
- package/dist/chunk-s9mesaw0.js +26840 -0
- package/dist/chunk-sd36yzx8.js +954 -0
- package/dist/chunk-sdj9b9wh.js +782 -0
- package/dist/chunk-sdw2q69p.js +227 -0
- package/dist/chunk-sfgp9cc0.js +130 -0
- package/dist/chunk-spqaamnc.js +63 -0
- package/dist/chunk-spzrs4df.js +73 -0
- package/dist/chunk-sxkr7k43.js +55 -0
- package/dist/chunk-szj5wvdy.js +28 -0
- package/dist/chunk-t0rgmccj.js +39 -0
- package/dist/chunk-t1nnzjgg.js +17 -0
- package/dist/chunk-t94fcnt8.js +566 -0
- package/dist/chunk-tjaqa99q.js +125 -0
- package/dist/chunk-tjq2evtw.js +328 -0
- package/dist/chunk-ts2p6bv1.js +224 -0
- package/dist/chunk-ttk5dzz8.js +25 -0
- package/dist/chunk-tw0q7ynt.js +59 -0
- package/dist/chunk-v02jkvgy.js +131 -0
- package/dist/chunk-v084bqt3.js +1529 -0
- package/dist/chunk-v0amythm.js +164 -0
- package/dist/chunk-v1kzp02e.js +785 -0
- package/dist/chunk-v1mgv1et.js +15 -0
- package/dist/chunk-v399mzxk.js +58 -0
- package/dist/chunk-v3gm2day.js +8 -0
- package/dist/chunk-v43hrrxp.js +71 -0
- package/dist/chunk-v6aqb2aj.js +102 -0
- package/dist/chunk-v78fj8by.js +145 -0
- package/dist/chunk-v7qmhjdn.js +1921 -0
- package/dist/chunk-v9smspw2.js +4301 -0
- package/dist/chunk-vdw93s4h.js +2431 -0
- package/dist/chunk-vest0y6x.js +3830 -0
- package/dist/chunk-vf5sd1nq.js +12 -0
- package/dist/chunk-vratq94g.js +349 -0
- package/dist/chunk-vrz7t3m3.js +20 -0
- package/dist/chunk-vtb185z9.js +70 -0
- package/dist/chunk-vx01rvg8.js +654 -0
- package/dist/chunk-vyc0rjyx.js +31 -0
- package/dist/chunk-vyjeh50y.js +2149 -0
- package/dist/chunk-vzpffsza.js +269 -0
- package/dist/chunk-w2ef3kxk.js +3353 -0
- package/dist/chunk-w2z5pqd3.js +336 -0
- package/dist/chunk-w3whm4mn.js +432 -0
- package/dist/chunk-w7wgpqcp.js +157 -0
- package/dist/chunk-waa00cvb.js +301 -0
- package/dist/chunk-wb0qm4es.js +155 -0
- package/dist/chunk-wbkahkdc.js +27 -0
- package/dist/chunk-wfz0qffj.js +3939 -0
- package/dist/chunk-wn0cx0pt.js +283 -0
- package/dist/chunk-wv6gzt9c.js +726 -0
- package/dist/chunk-wx42ycm4.js +998 -0
- package/dist/chunk-wxkpgy05.js +268 -0
- package/dist/chunk-wzpdet3m.js +843 -0
- package/dist/chunk-x0mwzt38.js +714 -0
- package/dist/chunk-x592wbfh.js +244 -0
- package/dist/chunk-x5pqsp9r.js +100 -0
- package/dist/chunk-x679thag.js +825 -0
- package/dist/chunk-x8b7vft8.js +132 -0
- package/dist/chunk-x8cftch7.js +119 -0
- package/dist/chunk-x9q7r885.js +348 -0
- package/dist/chunk-xawkt0vb.js +1585 -0
- package/dist/chunk-xdw5dv00.js +8 -0
- package/dist/chunk-xe9cc860.js +287 -0
- package/dist/chunk-xjr9c3vt.js +101 -0
- package/dist/chunk-xk7zaqta.js +21933 -0
- package/dist/chunk-xktbmawc.js +678 -0
- package/dist/chunk-xn6yw46v.js +140 -0
- package/dist/chunk-xsq9ae7x.js +90 -0
- package/dist/chunk-xszk7n10.js +14358 -0
- package/dist/chunk-xt8a5r1t.js +84 -0
- package/dist/chunk-xydyndkv.js +195 -0
- package/dist/chunk-xzt10yc5.js +60 -0
- package/dist/chunk-y04y95dr.js +91 -0
- package/dist/chunk-y1784krc.js +19 -0
- package/dist/chunk-y1x32h3x.js +128 -0
- package/dist/chunk-y3s7aww5.js +99 -0
- package/dist/chunk-y47cg3kz.js +42 -0
- package/dist/chunk-y7kzvepn.js +469 -0
- package/dist/chunk-y89kbsyc.js +287 -0
- package/dist/chunk-yd87p1c3.js +159 -0
- package/dist/chunk-yf3yw8fw.js +105 -0
- package/dist/chunk-ygbf0ezx.js +1391 -0
- package/dist/chunk-yjbxnshv.js +208 -0
- package/dist/chunk-ynednmqd.js +192 -0
- package/dist/chunk-yvhez44y.js +259 -0
- package/dist/chunk-ywxd4qw4.js +22 -0
- package/dist/chunk-yzrmgpy4.js +117 -0
- package/dist/chunk-z0b2vb24.js +862 -0
- package/dist/chunk-z1zj044v.js +655 -0
- package/dist/chunk-z2dp53wn.js +17 -0
- package/dist/chunk-z3w0xasa.js +165 -0
- package/dist/chunk-z7ycmrb3.js +644 -0
- package/dist/chunk-zh11tdkb.js +347 -0
- package/dist/chunk-zk2wsm7d.js +15 -0
- package/dist/chunk-zqfqcf22.js +229 -0
- package/dist/chunk-zqk2j8px.js +699 -0
- package/dist/chunk-zqvsc10j.js +2833 -0
- package/dist/chunk-zsfxha74.js +17655 -0
- package/dist/chunk-zvc4snyb.js +117 -0
- package/dist/cli.js +194 -0
- package/package.json +173 -0
|
@@ -0,0 +1,714 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
color,
|
|
4
|
+
init_color,
|
|
5
|
+
init_ink,
|
|
6
|
+
init_supports_hyperlinks,
|
|
7
|
+
supportsHyperlinks
|
|
8
|
+
} from "./chunk-s9mesaw0.js";
|
|
9
|
+
import {
|
|
10
|
+
getCurrentProjectConfig,
|
|
11
|
+
getGlobalConfig,
|
|
12
|
+
init_config1 as init_config,
|
|
13
|
+
init_file,
|
|
14
|
+
init_source,
|
|
15
|
+
isDirEmpty,
|
|
16
|
+
saveCurrentProjectConfig,
|
|
17
|
+
saveGlobalConfig,
|
|
18
|
+
source_default
|
|
19
|
+
} from "./chunk-3f7rypmf.js";
|
|
20
|
+
import {
|
|
21
|
+
addItemToJSONCArray,
|
|
22
|
+
init_json,
|
|
23
|
+
safeParseJSONC
|
|
24
|
+
} from "./chunk-e3g8q4cn.js";
|
|
25
|
+
import {
|
|
26
|
+
getPlatform,
|
|
27
|
+
init_platform
|
|
28
|
+
} from "./chunk-tjaqa99q.js";
|
|
29
|
+
import {
|
|
30
|
+
env,
|
|
31
|
+
init_env
|
|
32
|
+
} from "./chunk-w2z5pqd3.js";
|
|
33
|
+
import {
|
|
34
|
+
execFileNoThrow,
|
|
35
|
+
init_execFileNoThrow
|
|
36
|
+
} from "./chunk-hx2tr4ep.js";
|
|
37
|
+
import {
|
|
38
|
+
init_log,
|
|
39
|
+
logError
|
|
40
|
+
} from "./chunk-p7g7pf3f.js";
|
|
41
|
+
import {
|
|
42
|
+
getCwd,
|
|
43
|
+
init_cwd
|
|
44
|
+
} from "./chunk-8bedvdm1.js";
|
|
45
|
+
import {
|
|
46
|
+
getFsImplementation,
|
|
47
|
+
init_debug,
|
|
48
|
+
init_errors,
|
|
49
|
+
init_fsOperations,
|
|
50
|
+
init_slowOperations,
|
|
51
|
+
isFsInaccessible,
|
|
52
|
+
jsonParse,
|
|
53
|
+
jsonStringify,
|
|
54
|
+
logForDebugging
|
|
55
|
+
} from "./chunk-nxsh6de2.js";
|
|
56
|
+
import {
|
|
57
|
+
init_memoize,
|
|
58
|
+
memoize_default
|
|
59
|
+
} from "./chunk-hqmz36b3.js";
|
|
60
|
+
import {
|
|
61
|
+
__esm
|
|
62
|
+
} from "./chunk-qp2qdcda.js";
|
|
63
|
+
|
|
64
|
+
// src/projectOnboardingState.ts
|
|
65
|
+
import { join } from "path";
|
|
66
|
+
function getSteps() {
|
|
67
|
+
const hasClaudeMd = getFsImplementation().existsSync(join(getCwd(), "CLAUDE.md"));
|
|
68
|
+
const isWorkspaceDirEmpty = isDirEmpty(getCwd());
|
|
69
|
+
return [
|
|
70
|
+
{
|
|
71
|
+
key: "workspace",
|
|
72
|
+
text: "Ask Claude to create a new app or clone a repository",
|
|
73
|
+
isComplete: false,
|
|
74
|
+
isCompletable: true,
|
|
75
|
+
isEnabled: isWorkspaceDirEmpty
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: "claudemd",
|
|
79
|
+
text: "Run /init to create a CLAUDE.md file with instructions for Claude",
|
|
80
|
+
isComplete: hasClaudeMd,
|
|
81
|
+
isCompletable: true,
|
|
82
|
+
isEnabled: !isWorkspaceDirEmpty
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
function isProjectOnboardingComplete() {
|
|
87
|
+
return getSteps().filter(({ isCompletable, isEnabled }) => isCompletable && isEnabled).every(({ isComplete }) => isComplete);
|
|
88
|
+
}
|
|
89
|
+
function maybeMarkProjectOnboardingComplete() {
|
|
90
|
+
if (getCurrentProjectConfig().hasCompletedProjectOnboarding) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (isProjectOnboardingComplete()) {
|
|
94
|
+
saveCurrentProjectConfig((current) => ({
|
|
95
|
+
...current,
|
|
96
|
+
hasCompletedProjectOnboarding: true
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function incrementProjectOnboardingSeenCount() {
|
|
101
|
+
saveCurrentProjectConfig((current) => ({
|
|
102
|
+
...current,
|
|
103
|
+
projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
var shouldShowProjectOnboarding;
|
|
107
|
+
var init_projectOnboardingState = __esm(() => {
|
|
108
|
+
init_memoize();
|
|
109
|
+
init_config();
|
|
110
|
+
init_cwd();
|
|
111
|
+
init_file();
|
|
112
|
+
init_fsOperations();
|
|
113
|
+
shouldShowProjectOnboarding = memoize_default(() => {
|
|
114
|
+
const projectConfig = getCurrentProjectConfig();
|
|
115
|
+
if (projectConfig.hasCompletedProjectOnboarding || projectConfig.projectOnboardingSeenCount >= 4 || process.env.IS_DEMO) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return !isProjectOnboardingComplete();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// src/utils/appleTerminalBackup.ts
|
|
123
|
+
import { stat } from "fs/promises";
|
|
124
|
+
import { homedir } from "os";
|
|
125
|
+
import { join as join2 } from "path";
|
|
126
|
+
function markTerminalSetupInProgress(backupPath) {
|
|
127
|
+
saveGlobalConfig((current) => ({
|
|
128
|
+
...current,
|
|
129
|
+
appleTerminalSetupInProgress: true,
|
|
130
|
+
appleTerminalBackupPath: backupPath
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
function markTerminalSetupComplete() {
|
|
134
|
+
saveGlobalConfig((current) => ({
|
|
135
|
+
...current,
|
|
136
|
+
appleTerminalSetupInProgress: false
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
function getTerminalRecoveryInfo() {
|
|
140
|
+
const config = getGlobalConfig();
|
|
141
|
+
return {
|
|
142
|
+
inProgress: config.appleTerminalSetupInProgress ?? false,
|
|
143
|
+
backupPath: config.appleTerminalBackupPath || null
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function getTerminalPlistPath() {
|
|
147
|
+
return join2(homedir(), "Library", "Preferences", "com.apple.Terminal.plist");
|
|
148
|
+
}
|
|
149
|
+
async function backupTerminalPreferences() {
|
|
150
|
+
const terminalPlistPath = getTerminalPlistPath();
|
|
151
|
+
const backupPath = `${terminalPlistPath}.bak`;
|
|
152
|
+
try {
|
|
153
|
+
const { code } = await execFileNoThrow("defaults", [
|
|
154
|
+
"export",
|
|
155
|
+
"com.apple.Terminal",
|
|
156
|
+
terminalPlistPath
|
|
157
|
+
]);
|
|
158
|
+
if (code !== 0) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
await stat(terminalPlistPath);
|
|
163
|
+
} catch {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
await execFileNoThrow("defaults", [
|
|
167
|
+
"export",
|
|
168
|
+
"com.apple.Terminal",
|
|
169
|
+
backupPath
|
|
170
|
+
]);
|
|
171
|
+
markTerminalSetupInProgress(backupPath);
|
|
172
|
+
return backupPath;
|
|
173
|
+
} catch (error) {
|
|
174
|
+
logError(error);
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function checkAndRestoreTerminalBackup() {
|
|
179
|
+
const { inProgress, backupPath } = getTerminalRecoveryInfo();
|
|
180
|
+
if (!inProgress) {
|
|
181
|
+
return { status: "no_backup" };
|
|
182
|
+
}
|
|
183
|
+
if (!backupPath) {
|
|
184
|
+
markTerminalSetupComplete();
|
|
185
|
+
return { status: "no_backup" };
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
await stat(backupPath);
|
|
189
|
+
} catch {
|
|
190
|
+
markTerminalSetupComplete();
|
|
191
|
+
return { status: "no_backup" };
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
const { code } = await execFileNoThrow("defaults", [
|
|
195
|
+
"import",
|
|
196
|
+
"com.apple.Terminal",
|
|
197
|
+
backupPath
|
|
198
|
+
]);
|
|
199
|
+
if (code !== 0) {
|
|
200
|
+
return { status: "failed", backupPath };
|
|
201
|
+
}
|
|
202
|
+
await execFileNoThrow("killall", ["cfprefsd"]);
|
|
203
|
+
markTerminalSetupComplete();
|
|
204
|
+
return { status: "restored" };
|
|
205
|
+
} catch (restoreError) {
|
|
206
|
+
logError(new Error(`Failed to restore Terminal.app settings with: ${restoreError}`));
|
|
207
|
+
markTerminalSetupComplete();
|
|
208
|
+
return { status: "failed", backupPath };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
var init_appleTerminalBackup = __esm(() => {
|
|
212
|
+
init_config();
|
|
213
|
+
init_execFileNoThrow();
|
|
214
|
+
init_log();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
// src/utils/completionCache.ts
|
|
218
|
+
import { homedir as homedir2 } from "os";
|
|
219
|
+
import { dirname, join as join3 } from "path";
|
|
220
|
+
function detectShell() {
|
|
221
|
+
const shell = process.env.SHELL || "";
|
|
222
|
+
const home = homedir2();
|
|
223
|
+
const claudeDir = join3(home, ".claude");
|
|
224
|
+
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
225
|
+
const cacheFile = join3(claudeDir, "completion.zsh");
|
|
226
|
+
return {
|
|
227
|
+
name: "zsh",
|
|
228
|
+
rcFile: join3(home, ".zshrc"),
|
|
229
|
+
cacheFile,
|
|
230
|
+
completionLine: `[[ -f "${cacheFile}" ]] && source "${cacheFile}"`,
|
|
231
|
+
shellFlag: "zsh"
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
if (shell.endsWith("/bash") || shell.endsWith("/bash.exe")) {
|
|
235
|
+
const cacheFile = join3(claudeDir, "completion.bash");
|
|
236
|
+
return {
|
|
237
|
+
name: "bash",
|
|
238
|
+
rcFile: join3(home, ".bashrc"),
|
|
239
|
+
cacheFile,
|
|
240
|
+
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
|
|
241
|
+
shellFlag: "bash"
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (shell.endsWith("/fish") || shell.endsWith("/fish.exe")) {
|
|
245
|
+
const xdg = process.env.XDG_CONFIG_HOME || join3(home, ".config");
|
|
246
|
+
const cacheFile = join3(claudeDir, "completion.fish");
|
|
247
|
+
return {
|
|
248
|
+
name: "fish",
|
|
249
|
+
rcFile: join3(xdg, "fish", "config.fish"),
|
|
250
|
+
cacheFile,
|
|
251
|
+
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
|
|
252
|
+
shellFlag: "fish"
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
async function regenerateCompletionCache() {
|
|
258
|
+
const shell = detectShell();
|
|
259
|
+
if (!shell) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
logForDebugging(`update: Regenerating ${shell.name} completion cache`);
|
|
263
|
+
const claudeBin = process.argv[1] || "claude";
|
|
264
|
+
const result = await execFileNoThrow(claudeBin, [
|
|
265
|
+
"completion",
|
|
266
|
+
shell.shellFlag,
|
|
267
|
+
"--output",
|
|
268
|
+
shell.cacheFile
|
|
269
|
+
]);
|
|
270
|
+
if (result.code !== 0) {
|
|
271
|
+
logForDebugging(`update: Failed to regenerate ${shell.name} completion cache`);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
logForDebugging(`update: Regenerated ${shell.name} completion cache at ${shell.cacheFile}`);
|
|
275
|
+
}
|
|
276
|
+
var init_completionCache = __esm(() => {
|
|
277
|
+
init_color();
|
|
278
|
+
init_supports_hyperlinks();
|
|
279
|
+
init_debug();
|
|
280
|
+
init_errors();
|
|
281
|
+
init_execFileNoThrow();
|
|
282
|
+
init_log();
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// src/commands/terminalSetup/terminalSetup.tsx
|
|
286
|
+
import { randomBytes } from "crypto";
|
|
287
|
+
import { copyFile, mkdir, readFile, writeFile } from "fs/promises";
|
|
288
|
+
import { homedir as homedir3, platform } from "os";
|
|
289
|
+
import { dirname as dirname2, join as join4 } from "path";
|
|
290
|
+
import { pathToFileURL } from "url";
|
|
291
|
+
function isVSCodeRemoteSSH() {
|
|
292
|
+
const askpassMain = process.env.VSCODE_GIT_ASKPASS_MAIN ?? "";
|
|
293
|
+
const path = process.env.PATH ?? "";
|
|
294
|
+
return askpassMain.includes(".vscode-server") || askpassMain.includes(".cursor-server") || askpassMain.includes(".windsurf-server") || path.includes(".vscode-server") || path.includes(".cursor-server") || path.includes(".windsurf-server");
|
|
295
|
+
}
|
|
296
|
+
function getNativeCSIuTerminalDisplayName() {
|
|
297
|
+
if (!env.terminal || !(env.terminal in NATIVE_CSIU_TERMINALS)) {
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
return NATIVE_CSIU_TERMINALS[env.terminal] ?? null;
|
|
301
|
+
}
|
|
302
|
+
function formatPathLink(filePath) {
|
|
303
|
+
if (!supportsHyperlinks()) {
|
|
304
|
+
return filePath;
|
|
305
|
+
}
|
|
306
|
+
const fileUrl = pathToFileURL(filePath).href;
|
|
307
|
+
return `\x1B]8;;${fileUrl}\x07${filePath}\x1B]8;;\x07`;
|
|
308
|
+
}
|
|
309
|
+
function shouldOfferTerminalSetup() {
|
|
310
|
+
return platform() === "darwin" && env.terminal === "Apple_Terminal" || env.terminal === "vscode" || env.terminal === "cursor" || env.terminal === "windsurf" || env.terminal === "alacritty" || env.terminal === "zed";
|
|
311
|
+
}
|
|
312
|
+
async function setupTerminal(theme) {
|
|
313
|
+
let result = "";
|
|
314
|
+
switch (env.terminal) {
|
|
315
|
+
case "Apple_Terminal":
|
|
316
|
+
result = await enableOptionAsMetaForTerminal(theme);
|
|
317
|
+
break;
|
|
318
|
+
case "vscode":
|
|
319
|
+
result = await installBindingsForVSCodeTerminal("VSCode", theme);
|
|
320
|
+
break;
|
|
321
|
+
case "cursor":
|
|
322
|
+
result = await installBindingsForVSCodeTerminal("Cursor", theme);
|
|
323
|
+
break;
|
|
324
|
+
case "windsurf":
|
|
325
|
+
result = await installBindingsForVSCodeTerminal("Windsurf", theme);
|
|
326
|
+
break;
|
|
327
|
+
case "alacritty":
|
|
328
|
+
result = await installBindingsForAlacritty(theme);
|
|
329
|
+
break;
|
|
330
|
+
case "zed":
|
|
331
|
+
result = await installBindingsForZed(theme);
|
|
332
|
+
break;
|
|
333
|
+
case null:
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
saveGlobalConfig((current) => {
|
|
337
|
+
if (["vscode", "cursor", "windsurf", "alacritty", "zed"].includes(env.terminal ?? "")) {
|
|
338
|
+
if (current.shiftEnterKeyBindingInstalled === true)
|
|
339
|
+
return current;
|
|
340
|
+
return {
|
|
341
|
+
...current,
|
|
342
|
+
shiftEnterKeyBindingInstalled: true
|
|
343
|
+
};
|
|
344
|
+
} else if (env.terminal === "Apple_Terminal") {
|
|
345
|
+
if (current.optionAsMetaKeyInstalled === true)
|
|
346
|
+
return current;
|
|
347
|
+
return {
|
|
348
|
+
...current,
|
|
349
|
+
optionAsMetaKeyInstalled: true
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
return current;
|
|
353
|
+
});
|
|
354
|
+
maybeMarkProjectOnboardingComplete();
|
|
355
|
+
if (false) {}
|
|
356
|
+
return result;
|
|
357
|
+
}
|
|
358
|
+
function isShiftEnterKeyBindingInstalled() {
|
|
359
|
+
return getGlobalConfig().shiftEnterKeyBindingInstalled === true;
|
|
360
|
+
}
|
|
361
|
+
function hasUsedBackslashReturn() {
|
|
362
|
+
return getGlobalConfig().hasUsedBackslashReturn === true;
|
|
363
|
+
}
|
|
364
|
+
function markBackslashReturnUsed() {
|
|
365
|
+
const config = getGlobalConfig();
|
|
366
|
+
if (!config.hasUsedBackslashReturn) {
|
|
367
|
+
saveGlobalConfig((current) => ({
|
|
368
|
+
...current,
|
|
369
|
+
hasUsedBackslashReturn: true
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
async function call(onDone, context, _args) {
|
|
374
|
+
if (env.terminal && env.terminal in NATIVE_CSIU_TERMINALS) {
|
|
375
|
+
const message = `Shift+Enter is natively supported in ${NATIVE_CSIU_TERMINALS[env.terminal]}.
|
|
376
|
+
|
|
377
|
+
No configuration needed. Just use Shift+Enter to add newlines.`;
|
|
378
|
+
onDone(message);
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
381
|
+
if (!shouldOfferTerminalSetup()) {
|
|
382
|
+
const terminalName = env.terminal || "your current terminal";
|
|
383
|
+
const currentPlatform = getPlatform();
|
|
384
|
+
let platformTerminals = "";
|
|
385
|
+
if (currentPlatform === "macos") {
|
|
386
|
+
platformTerminals = ` \u2022 macOS: Apple Terminal
|
|
387
|
+
`;
|
|
388
|
+
} else if (currentPlatform === "windows") {
|
|
389
|
+
platformTerminals = ` \u2022 Windows: Windows Terminal
|
|
390
|
+
`;
|
|
391
|
+
}
|
|
392
|
+
const message = `Terminal setup cannot be run from ${terminalName}.
|
|
393
|
+
|
|
394
|
+
This command configures a convenient Shift+Enter shortcut for multi-line prompts.
|
|
395
|
+
${source_default.dim("Note: You can already use backslash (\\\\) + return to add newlines.")}
|
|
396
|
+
|
|
397
|
+
To set up the shortcut (optional):
|
|
398
|
+
1. Exit tmux/screen temporarily
|
|
399
|
+
2. Run /terminal-setup directly in one of these terminals:
|
|
400
|
+
${platformTerminals} \u2022 IDE: VSCode, Cursor, Windsurf, Zed
|
|
401
|
+
\u2022 Other: Alacritty
|
|
402
|
+
3. Return to tmux/screen - settings will persist
|
|
403
|
+
|
|
404
|
+
${source_default.dim("Note: iTerm2, WezTerm, Ghostty, Kitty, and Warp support Shift+Enter natively.")}`;
|
|
405
|
+
onDone(message);
|
|
406
|
+
return null;
|
|
407
|
+
}
|
|
408
|
+
const result = await setupTerminal(context.options.theme);
|
|
409
|
+
onDone(result);
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
|
|
413
|
+
if (isVSCodeRemoteSSH()) {
|
|
414
|
+
return `${color("warning", theme)(`Cannot install keybindings from a remote ${editor} session.`)}${EOL}${EOL}${editor} keybindings must be installed on your local machine, not the remote server.${EOL}${EOL}To install the Shift+Enter keybinding:${EOL}1. Open ${editor} on your local machine (not connected to remote)${EOL}2. Open the Command Palette (Cmd/Ctrl+Shift+P) \u2192 "Preferences: Open Keyboard Shortcuts (JSON)"${EOL}3. Add this keybinding (the file must be a JSON array):${EOL}${EOL}${source_default.dim(`[
|
|
415
|
+
{
|
|
416
|
+
"key": "shift+enter",
|
|
417
|
+
"command": "workbench.action.terminal.sendSequence",
|
|
418
|
+
"args": { "text": "\\u001b\\r" },
|
|
419
|
+
"when": "terminalFocus"
|
|
420
|
+
}
|
|
421
|
+
]`)}${EOL}`;
|
|
422
|
+
}
|
|
423
|
+
const editorDir = editor === "VSCode" ? "Code" : editor;
|
|
424
|
+
const userDirPath = join4(homedir3(), platform() === "win32" ? join4("AppData", "Roaming", editorDir, "User") : platform() === "darwin" ? join4("Library", "Application Support", editorDir, "User") : join4(".config", editorDir, "User"));
|
|
425
|
+
const keybindingsPath = join4(userDirPath, "keybindings.json");
|
|
426
|
+
try {
|
|
427
|
+
await mkdir(userDirPath, {
|
|
428
|
+
recursive: true
|
|
429
|
+
});
|
|
430
|
+
let content = "[]";
|
|
431
|
+
let keybindings = [];
|
|
432
|
+
let fileExists = false;
|
|
433
|
+
try {
|
|
434
|
+
content = await readFile(keybindingsPath, {
|
|
435
|
+
encoding: "utf-8"
|
|
436
|
+
});
|
|
437
|
+
fileExists = true;
|
|
438
|
+
keybindings = safeParseJSONC(content) ?? [];
|
|
439
|
+
} catch (e) {
|
|
440
|
+
if (!isFsInaccessible(e))
|
|
441
|
+
throw e;
|
|
442
|
+
}
|
|
443
|
+
if (fileExists) {
|
|
444
|
+
const randomSha = randomBytes(4).toString("hex");
|
|
445
|
+
const backupPath = `${keybindingsPath}.${randomSha}.bak`;
|
|
446
|
+
try {
|
|
447
|
+
await copyFile(keybindingsPath, backupPath);
|
|
448
|
+
} catch {
|
|
449
|
+
return `${color("warning", theme)(`Error backing up existing ${editor} terminal keybindings. Bailing out.`)}${EOL}${source_default.dim(`See ${formatPathLink(keybindingsPath)}`)}${EOL}${source_default.dim(`Backup path: ${formatPathLink(backupPath)}`)}${EOL}`;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
const existingBinding = keybindings.find((binding) => binding.key === "shift+enter" && binding.command === "workbench.action.terminal.sendSequence" && binding.when === "terminalFocus");
|
|
453
|
+
if (existingBinding) {
|
|
454
|
+
return `${color("warning", theme)(`Found existing ${editor} terminal Shift+Enter key binding. Remove it to continue.`)}${EOL}${source_default.dim(`See ${formatPathLink(keybindingsPath)}`)}${EOL}`;
|
|
455
|
+
}
|
|
456
|
+
const newKeybinding = {
|
|
457
|
+
key: "shift+enter",
|
|
458
|
+
command: "workbench.action.terminal.sendSequence",
|
|
459
|
+
args: {
|
|
460
|
+
text: "\x1B\r"
|
|
461
|
+
},
|
|
462
|
+
when: "terminalFocus"
|
|
463
|
+
};
|
|
464
|
+
const updatedContent = addItemToJSONCArray(content, newKeybinding);
|
|
465
|
+
await writeFile(keybindingsPath, updatedContent, {
|
|
466
|
+
encoding: "utf-8"
|
|
467
|
+
});
|
|
468
|
+
return `${color("success", theme)(`Installed ${editor} terminal Shift+Enter key binding`)}${EOL}${source_default.dim(`See ${formatPathLink(keybindingsPath)}`)}${EOL}`;
|
|
469
|
+
} catch (error) {
|
|
470
|
+
logError(error);
|
|
471
|
+
throw new Error(`Failed to install ${editor} terminal Shift+Enter key binding`);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
async function enableOptionAsMetaForProfile(profileName) {
|
|
475
|
+
const {
|
|
476
|
+
code: addCode
|
|
477
|
+
} = await execFileNoThrow("/usr/libexec/PlistBuddy", ["-c", `Add :'Window Settings':'${profileName}':useOptionAsMetaKey bool true`, getTerminalPlistPath()]);
|
|
478
|
+
if (addCode !== 0) {
|
|
479
|
+
const {
|
|
480
|
+
code: setCode
|
|
481
|
+
} = await execFileNoThrow("/usr/libexec/PlistBuddy", ["-c", `Set :'Window Settings':'${profileName}':useOptionAsMetaKey true`, getTerminalPlistPath()]);
|
|
482
|
+
if (setCode !== 0) {
|
|
483
|
+
logError(new Error(`Failed to enable Option as Meta key for Terminal.app profile: ${profileName}`));
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
async function disableAudioBellForProfile(profileName) {
|
|
490
|
+
const {
|
|
491
|
+
code: addCode
|
|
492
|
+
} = await execFileNoThrow("/usr/libexec/PlistBuddy", ["-c", `Add :'Window Settings':'${profileName}':Bell bool false`, getTerminalPlistPath()]);
|
|
493
|
+
if (addCode !== 0) {
|
|
494
|
+
const {
|
|
495
|
+
code: setCode
|
|
496
|
+
} = await execFileNoThrow("/usr/libexec/PlistBuddy", ["-c", `Set :'Window Settings':'${profileName}':Bell false`, getTerminalPlistPath()]);
|
|
497
|
+
if (setCode !== 0) {
|
|
498
|
+
logError(new Error(`Failed to disable audio bell for Terminal.app profile: ${profileName}`));
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return true;
|
|
503
|
+
}
|
|
504
|
+
async function enableOptionAsMetaForTerminal(theme) {
|
|
505
|
+
try {
|
|
506
|
+
const backupPath = await backupTerminalPreferences();
|
|
507
|
+
if (!backupPath) {
|
|
508
|
+
throw new Error("Failed to create backup of Terminal.app preferences, bailing out");
|
|
509
|
+
}
|
|
510
|
+
const {
|
|
511
|
+
stdout: defaultProfile,
|
|
512
|
+
code: readCode
|
|
513
|
+
} = await execFileNoThrow("defaults", ["read", "com.apple.Terminal", "Default Window Settings"]);
|
|
514
|
+
if (readCode !== 0 || !defaultProfile.trim()) {
|
|
515
|
+
throw new Error("Failed to read default Terminal.app profile");
|
|
516
|
+
}
|
|
517
|
+
const {
|
|
518
|
+
stdout: startupProfile,
|
|
519
|
+
code: startupCode
|
|
520
|
+
} = await execFileNoThrow("defaults", ["read", "com.apple.Terminal", "Startup Window Settings"]);
|
|
521
|
+
if (startupCode !== 0 || !startupProfile.trim()) {
|
|
522
|
+
throw new Error("Failed to read startup Terminal.app profile");
|
|
523
|
+
}
|
|
524
|
+
let wasAnyProfileUpdated = false;
|
|
525
|
+
const defaultProfileName = defaultProfile.trim();
|
|
526
|
+
const optionAsMetaEnabled = await enableOptionAsMetaForProfile(defaultProfileName);
|
|
527
|
+
const audioBellDisabled = await disableAudioBellForProfile(defaultProfileName);
|
|
528
|
+
if (optionAsMetaEnabled || audioBellDisabled) {
|
|
529
|
+
wasAnyProfileUpdated = true;
|
|
530
|
+
}
|
|
531
|
+
const startupProfileName = startupProfile.trim();
|
|
532
|
+
if (startupProfileName !== defaultProfileName) {
|
|
533
|
+
const startupOptionAsMetaEnabled = await enableOptionAsMetaForProfile(startupProfileName);
|
|
534
|
+
const startupAudioBellDisabled = await disableAudioBellForProfile(startupProfileName);
|
|
535
|
+
if (startupOptionAsMetaEnabled || startupAudioBellDisabled) {
|
|
536
|
+
wasAnyProfileUpdated = true;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!wasAnyProfileUpdated) {
|
|
540
|
+
throw new Error("Failed to enable Option as Meta key or disable audio bell for any Terminal.app profile");
|
|
541
|
+
}
|
|
542
|
+
await execFileNoThrow("killall", ["cfprefsd"]);
|
|
543
|
+
markTerminalSetupComplete();
|
|
544
|
+
return `${color("success", theme)(`Configured Terminal.app settings:`)}${EOL}${color("success", theme)('- Enabled "Use Option as Meta key"')}${EOL}${color("success", theme)("- Switched to visual bell")}${EOL}${source_default.dim("Option+Enter will now enter a newline.")}${EOL}${source_default.dim("You must restart Terminal.app for changes to take effect.", theme)}${EOL}`;
|
|
545
|
+
} catch (error) {
|
|
546
|
+
logError(error);
|
|
547
|
+
const restoreResult = await checkAndRestoreTerminalBackup();
|
|
548
|
+
const errorMessage = "Failed to enable Option as Meta key for Terminal.app.";
|
|
549
|
+
if (restoreResult.status === "restored") {
|
|
550
|
+
throw new Error(`${errorMessage} Your settings have been restored from backup.`);
|
|
551
|
+
} else if (restoreResult.status === "failed") {
|
|
552
|
+
throw new Error(`${errorMessage} Restoring from backup failed, try manually with: defaults import com.apple.Terminal ${restoreResult.backupPath}`);
|
|
553
|
+
} else {
|
|
554
|
+
throw new Error(`${errorMessage} No backup was available to restore from.`);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
async function installBindingsForAlacritty(theme) {
|
|
559
|
+
const ALACRITTY_KEYBINDING = `[[keyboard.bindings]]
|
|
560
|
+
key = "Return"
|
|
561
|
+
mods = "Shift"
|
|
562
|
+
chars = "\\u001B\\r"`;
|
|
563
|
+
const configPaths = [];
|
|
564
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME;
|
|
565
|
+
if (xdgConfigHome) {
|
|
566
|
+
configPaths.push(join4(xdgConfigHome, "alacritty", "alacritty.toml"));
|
|
567
|
+
} else {
|
|
568
|
+
configPaths.push(join4(homedir3(), ".config", "alacritty", "alacritty.toml"));
|
|
569
|
+
}
|
|
570
|
+
if (platform() === "win32") {
|
|
571
|
+
const appData = process.env.APPDATA;
|
|
572
|
+
if (appData) {
|
|
573
|
+
configPaths.push(join4(appData, "alacritty", "alacritty.toml"));
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
let configPath = null;
|
|
577
|
+
let configContent = "";
|
|
578
|
+
let configExists = false;
|
|
579
|
+
for (const path of configPaths) {
|
|
580
|
+
try {
|
|
581
|
+
configContent = await readFile(path, {
|
|
582
|
+
encoding: "utf-8"
|
|
583
|
+
});
|
|
584
|
+
configPath = path;
|
|
585
|
+
configExists = true;
|
|
586
|
+
break;
|
|
587
|
+
} catch (e) {
|
|
588
|
+
if (!isFsInaccessible(e))
|
|
589
|
+
throw e;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
if (!configPath) {
|
|
593
|
+
configPath = configPaths[0] ?? null;
|
|
594
|
+
}
|
|
595
|
+
if (!configPath) {
|
|
596
|
+
throw new Error("No valid config path found for Alacritty");
|
|
597
|
+
}
|
|
598
|
+
try {
|
|
599
|
+
if (configExists) {
|
|
600
|
+
if (configContent.includes('mods = "Shift"') && configContent.includes('key = "Return"')) {
|
|
601
|
+
return `${color("warning", theme)("Found existing Alacritty Shift+Enter key binding. Remove it to continue.")}${EOL}${source_default.dim(`See ${formatPathLink(configPath)}`)}${EOL}`;
|
|
602
|
+
}
|
|
603
|
+
const randomSha = randomBytes(4).toString("hex");
|
|
604
|
+
const backupPath = `${configPath}.${randomSha}.bak`;
|
|
605
|
+
try {
|
|
606
|
+
await copyFile(configPath, backupPath);
|
|
607
|
+
} catch {
|
|
608
|
+
return `${color("warning", theme)("Error backing up existing Alacritty config. Bailing out.")}${EOL}${source_default.dim(`See ${formatPathLink(configPath)}`)}${EOL}${source_default.dim(`Backup path: ${formatPathLink(backupPath)}`)}${EOL}`;
|
|
609
|
+
}
|
|
610
|
+
} else {
|
|
611
|
+
await mkdir(dirname2(configPath), {
|
|
612
|
+
recursive: true
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
let updatedContent = configContent;
|
|
616
|
+
if (configContent && !configContent.endsWith(`
|
|
617
|
+
`)) {
|
|
618
|
+
updatedContent += `
|
|
619
|
+
`;
|
|
620
|
+
}
|
|
621
|
+
updatedContent += `
|
|
622
|
+
` + ALACRITTY_KEYBINDING + `
|
|
623
|
+
`;
|
|
624
|
+
await writeFile(configPath, updatedContent, {
|
|
625
|
+
encoding: "utf-8"
|
|
626
|
+
});
|
|
627
|
+
return `${color("success", theme)("Installed Alacritty Shift+Enter key binding")}${EOL}${color("success", theme)("You may need to restart Alacritty for changes to take effect")}${EOL}${source_default.dim(`See ${formatPathLink(configPath)}`)}${EOL}`;
|
|
628
|
+
} catch (error) {
|
|
629
|
+
logError(error);
|
|
630
|
+
throw new Error("Failed to install Alacritty Shift+Enter key binding");
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
async function installBindingsForZed(theme) {
|
|
634
|
+
const zedDir = join4(homedir3(), ".config", "zed");
|
|
635
|
+
const keymapPath = join4(zedDir, "keymap.json");
|
|
636
|
+
try {
|
|
637
|
+
await mkdir(zedDir, {
|
|
638
|
+
recursive: true
|
|
639
|
+
});
|
|
640
|
+
let keymapContent = "[]";
|
|
641
|
+
let fileExists = false;
|
|
642
|
+
try {
|
|
643
|
+
keymapContent = await readFile(keymapPath, {
|
|
644
|
+
encoding: "utf-8"
|
|
645
|
+
});
|
|
646
|
+
fileExists = true;
|
|
647
|
+
} catch (e) {
|
|
648
|
+
if (!isFsInaccessible(e))
|
|
649
|
+
throw e;
|
|
650
|
+
}
|
|
651
|
+
if (fileExists) {
|
|
652
|
+
if (keymapContent.includes("shift-enter")) {
|
|
653
|
+
return `${color("warning", theme)("Found existing Zed Shift+Enter key binding. Remove it to continue.")}${EOL}${source_default.dim(`See ${formatPathLink(keymapPath)}`)}${EOL}`;
|
|
654
|
+
}
|
|
655
|
+
const randomSha = randomBytes(4).toString("hex");
|
|
656
|
+
const backupPath = `${keymapPath}.${randomSha}.bak`;
|
|
657
|
+
try {
|
|
658
|
+
await copyFile(keymapPath, backupPath);
|
|
659
|
+
} catch {
|
|
660
|
+
return `${color("warning", theme)("Error backing up existing Zed keymap. Bailing out.")}${EOL}${source_default.dim(`See ${formatPathLink(keymapPath)}`)}${EOL}${source_default.dim(`Backup path: ${formatPathLink(backupPath)}`)}${EOL}`;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
let keymap;
|
|
664
|
+
try {
|
|
665
|
+
keymap = jsonParse(keymapContent);
|
|
666
|
+
if (!Array.isArray(keymap)) {
|
|
667
|
+
keymap = [];
|
|
668
|
+
}
|
|
669
|
+
} catch {
|
|
670
|
+
keymap = [];
|
|
671
|
+
}
|
|
672
|
+
keymap.push({
|
|
673
|
+
context: "Terminal",
|
|
674
|
+
bindings: {
|
|
675
|
+
"shift-enter": ["terminal::SendText", "\x1B\r"]
|
|
676
|
+
}
|
|
677
|
+
});
|
|
678
|
+
await writeFile(keymapPath, jsonStringify(keymap, null, 2) + `
|
|
679
|
+
`, {
|
|
680
|
+
encoding: "utf-8"
|
|
681
|
+
});
|
|
682
|
+
return `${color("success", theme)("Installed Zed Shift+Enter key binding")}${EOL}${source_default.dim(`See ${formatPathLink(keymapPath)}`)}${EOL}`;
|
|
683
|
+
} catch (error) {
|
|
684
|
+
logError(error);
|
|
685
|
+
throw new Error("Failed to install Zed Shift+Enter key binding");
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
var EOL = `
|
|
689
|
+
`, NATIVE_CSIU_TERMINALS;
|
|
690
|
+
var init_terminalSetup = __esm(() => {
|
|
691
|
+
init_source();
|
|
692
|
+
init_supports_hyperlinks();
|
|
693
|
+
init_ink();
|
|
694
|
+
init_projectOnboardingState();
|
|
695
|
+
init_appleTerminalBackup();
|
|
696
|
+
init_completionCache();
|
|
697
|
+
init_config();
|
|
698
|
+
init_env();
|
|
699
|
+
init_errors();
|
|
700
|
+
init_execFileNoThrow();
|
|
701
|
+
init_json();
|
|
702
|
+
init_log();
|
|
703
|
+
init_platform();
|
|
704
|
+
init_slowOperations();
|
|
705
|
+
NATIVE_CSIU_TERMINALS = {
|
|
706
|
+
ghostty: "Ghostty",
|
|
707
|
+
kitty: "Kitty",
|
|
708
|
+
"iTerm.app": "iTerm2",
|
|
709
|
+
WezTerm: "WezTerm",
|
|
710
|
+
WarpTerminal: "Warp"
|
|
711
|
+
};
|
|
712
|
+
});
|
|
713
|
+
|
|
714
|
+
export { getSteps, maybeMarkProjectOnboardingComplete, shouldShowProjectOnboarding, incrementProjectOnboardingSeenCount, init_projectOnboardingState, checkAndRestoreTerminalBackup, init_appleTerminalBackup, regenerateCompletionCache, init_completionCache, getNativeCSIuTerminalDisplayName, shouldOfferTerminalSetup, setupTerminal, isShiftEnterKeyBindingInstalled, hasUsedBackslashReturn, markBackslashReturnUsed, call, init_terminalSetup };
|