@keystrokehq/cli 0.1.3 → 0.1.4

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.
Files changed (236) hide show
  1. package/dist/alias-RTYYYW3D-CLFgrowj.mjs +98 -0
  2. package/dist/alias-RTYYYW3D-CLFgrowj.mjs.map +1 -0
  3. package/dist/awk2-LA3USKJP-BbsfXVlR.mjs +2737 -0
  4. package/dist/awk2-LA3USKJP-BbsfXVlR.mjs.map +1 -0
  5. package/dist/base64-C2AIWVNC-C0WIgu5V.mjs +123 -0
  6. package/dist/base64-C2AIWVNC-C0WIgu5V.mjs.map +1 -0
  7. package/dist/basename-UB3CIYNI-BgNN3bGm.mjs +53 -0
  8. package/dist/basename-UB3CIYNI-BgNN3bGm.mjs.map +1 -0
  9. package/dist/bash-YZ33HQZQ-N6YyKtUH.mjs +118 -0
  10. package/dist/bash-YZ33HQZQ-N6YyKtUH.mjs.map +1 -0
  11. package/dist/cat-TSFMZVYS-Dz3-oHsV.mjs +63 -0
  12. package/dist/cat-TSFMZVYS-Dz3-oHsV.mjs.map +1 -0
  13. package/dist/chmod-TFEPA42X-YF02QJUv.mjs +125 -0
  14. package/dist/chmod-TFEPA42X-YF02QJUv.mjs.map +1 -0
  15. package/dist/chunk-27JIFWUR-B6ZjjMMI.mjs +100 -0
  16. package/dist/chunk-27JIFWUR-B6ZjjMMI.mjs.map +1 -0
  17. package/dist/chunk-4I3HOE5Z-BixWWVkW.mjs +719 -0
  18. package/dist/chunk-4I3HOE5Z-BixWWVkW.mjs.map +1 -0
  19. package/dist/chunk-4RUAZWKT-D60fyWAB.mjs +22543 -0
  20. package/dist/chunk-4RUAZWKT-D60fyWAB.mjs.map +1 -0
  21. package/dist/chunk-4WKZNNJK-CiwxAWRf.mjs +69 -0
  22. package/dist/chunk-4WKZNNJK-CiwxAWRf.mjs.map +1 -0
  23. package/dist/chunk-5H5SCKJM-BvfXlL01.mjs +606 -0
  24. package/dist/chunk-5H5SCKJM-BvfXlL01.mjs.map +1 -0
  25. package/dist/chunk-AQ6FYS2X-CkVetjym.mjs +37 -0
  26. package/dist/chunk-AQ6FYS2X-CkVetjym.mjs.map +1 -0
  27. package/dist/chunk-BZUGFHVS-CPWRFwK8.mjs +34 -0
  28. package/dist/chunk-BZUGFHVS-CPWRFwK8.mjs.map +1 -0
  29. package/dist/chunk-CHFEPBH4-BUdgjFtD.mjs +594 -0
  30. package/dist/chunk-CHFEPBH4-BUdgjFtD.mjs.map +1 -0
  31. package/dist/chunk-DLL7UR66-BUYgzxnR.mjs +14 -0
  32. package/dist/chunk-DLL7UR66-BUYgzxnR.mjs.map +1 -0
  33. package/dist/chunk-DiodbrVj.mjs +27 -0
  34. package/dist/chunk-EBAPSGAO-Ctfslw2R.mjs +247 -0
  35. package/dist/chunk-EBAPSGAO-Ctfslw2R.mjs.map +1 -0
  36. package/dist/chunk-FOCWZZDE-BIntqBh2.mjs +19 -0
  37. package/dist/chunk-FOCWZZDE-BIntqBh2.mjs.map +1 -0
  38. package/dist/chunk-HBVMHTO5-CJyD-QZX.mjs +10 -0
  39. package/dist/chunk-HBVMHTO5-CJyD-QZX.mjs.map +1 -0
  40. package/dist/chunk-L2UW7DWF-B3tEHhPF.mjs +14 -0
  41. package/dist/chunk-L2UW7DWF-B3tEHhPF.mjs.map +1 -0
  42. package/dist/chunk-L64BMZUV-CyR7RKok.mjs +30 -0
  43. package/dist/chunk-L64BMZUV-CyR7RKok.mjs.map +1 -0
  44. package/dist/chunk-LEKBROJD-CJMrAyu9.mjs +3113 -0
  45. package/dist/chunk-LEKBROJD-CJMrAyu9.mjs.map +1 -0
  46. package/dist/chunk-NRSASXYY-CuWyREpD.mjs +41 -0
  47. package/dist/chunk-NRSASXYY-CuWyREpD.mjs.map +1 -0
  48. package/dist/chunk-QAYAQNCG-Bl0Kbd53.mjs +63 -0
  49. package/dist/chunk-QAYAQNCG-Bl0Kbd53.mjs.map +1 -0
  50. package/dist/chunk-QIQMJJZ4-BwKdslXs.mjs +93 -0
  51. package/dist/chunk-QIQMJJZ4-BwKdslXs.mjs.map +1 -0
  52. package/dist/chunk-SAI2SPQQ-CVRoDNs9.mjs +26 -0
  53. package/dist/chunk-SAI2SPQQ-CVRoDNs9.mjs.map +1 -0
  54. package/dist/chunk-SO6R3ZKN-tTw_RMDX.mjs +140 -0
  55. package/dist/chunk-SO6R3ZKN-tTw_RMDX.mjs.map +1 -0
  56. package/dist/chunk-STHBFACM-lyj-j2a-.mjs +8 -0
  57. package/dist/chunk-STHBFACM-lyj-j2a-.mjs.map +1 -0
  58. package/dist/chunk-SX2HC7SO-Cc4Hpis1.mjs +20 -0
  59. package/dist/chunk-SX2HC7SO-Cc4Hpis1.mjs.map +1 -0
  60. package/dist/chunk-TDD4NFYE-wsWW75MX.mjs +21 -0
  61. package/dist/chunk-TDD4NFYE-wsWW75MX.mjs.map +1 -0
  62. package/dist/chunk-TN7HHBQW-CSB_R-XD.mjs +1137 -0
  63. package/dist/chunk-TN7HHBQW-CSB_R-XD.mjs.map +1 -0
  64. package/dist/chunk-VPADYNBD-BKlA28GJ.mjs +122 -0
  65. package/dist/chunk-VPADYNBD-BKlA28GJ.mjs.map +1 -0
  66. package/dist/chunk-W5DWRFSU-lCyWk0ph.mjs +11 -0
  67. package/dist/chunk-W5DWRFSU-lCyWk0ph.mjs.map +1 -0
  68. package/dist/chunk-WNH3HOQA-BCZUOjCJ.mjs +34 -0
  69. package/dist/chunk-WNH3HOQA-BCZUOjCJ.mjs.map +1 -0
  70. package/dist/chunk-XRFHFXFP-BGxzVZgK.mjs +16 -0
  71. package/dist/chunk-XRFHFXFP-BGxzVZgK.mjs.map +1 -0
  72. package/dist/chunk-YCLFEX4T-COc1AThz.mjs +77 -0
  73. package/dist/chunk-YCLFEX4T-COc1AThz.mjs.map +1 -0
  74. package/dist/clear-HKGFEOF6-CekN2x-O.mjs +28 -0
  75. package/dist/clear-HKGFEOF6-CekN2x-O.mjs.map +1 -0
  76. package/dist/column-XT6UFXNQ-DHENV9D2.mjs +143 -0
  77. package/dist/column-XT6UFXNQ-DHENV9D2.mjs.map +1 -0
  78. package/dist/comm-VV2LDX2J-ppxDJFkY.mjs +87 -0
  79. package/dist/comm-VV2LDX2J-ppxDJFkY.mjs.map +1 -0
  80. package/dist/cp-BISAAS7A-CMWayU4n.mjs +106 -0
  81. package/dist/cp-BISAAS7A-CMWayU4n.mjs.map +1 -0
  82. package/dist/cut-OKARJCCV-Bt8b58eI.mjs +119 -0
  83. package/dist/cut-OKARJCCV-Bt8b58eI.mjs.map +1 -0
  84. package/dist/date-UUUPW43J-B7T5OTZZ.mjs +188 -0
  85. package/dist/date-UUUPW43J-B7T5OTZZ.mjs.map +1 -0
  86. package/dist/diff-MWJFIG7X-DhnPc_5r.mjs +755 -0
  87. package/dist/diff-MWJFIG7X-DhnPc_5r.mjs.map +1 -0
  88. package/dist/dirname-MPHRFUTI-Dkb3S4OX.mjs +43 -0
  89. package/dist/dirname-MPHRFUTI-Dkb3S4OX.mjs.map +1 -0
  90. package/dist/{dist-DjfxlOWX.mjs → dist-C47GdlWY.mjs} +18 -93
  91. package/dist/{dist-DjfxlOWX.mjs.map → dist-C47GdlWY.mjs.map} +1 -1
  92. package/dist/{dist-DWcRd4Se.mjs → dist-CJL2zYbP.mjs} +4 -71
  93. package/dist/dist-CJL2zYbP.mjs.map +1 -0
  94. package/dist/dist-Ch53z2P3.mjs +3 -0
  95. package/dist/dist-CwR72_PS.mjs +1887 -0
  96. package/dist/dist-CwR72_PS.mjs.map +1 -0
  97. package/dist/du-572XNP42-ClP4jXB1.mjs +176 -0
  98. package/dist/du-572XNP42-ClP4jXB1.mjs.map +1 -0
  99. package/dist/echo-NDWZZHPO-CCp_-MxA.mjs +137 -0
  100. package/dist/echo-NDWZZHPO-CCp_-MxA.mjs.map +1 -0
  101. package/dist/env-36M5BO7M-CsP_aiWr.mjs +119 -0
  102. package/dist/env-36M5BO7M-CsP_aiWr.mjs.map +1 -0
  103. package/dist/expand-JSPG6VOP-B-YUvYpu.mjs +145 -0
  104. package/dist/expand-JSPG6VOP-B-YUvYpu.mjs.map +1 -0
  105. package/dist/expr-5JAACS4X-1TBq84gG.mjs +153 -0
  106. package/dist/expr-5JAACS4X-1TBq84gG.mjs.map +1 -0
  107. package/dist/file-IPZJC3FQ-DcZNOWyY.mjs +4201 -0
  108. package/dist/file-IPZJC3FQ-DcZNOWyY.mjs.map +1 -0
  109. package/dist/find-INTH3OLC-6p47KeeT.mjs +1332 -0
  110. package/dist/find-INTH3OLC-6p47KeeT.mjs.map +1 -0
  111. package/dist/fold-4TQNYMSW-C54bHzLd.mjs +138 -0
  112. package/dist/fold-4TQNYMSW-C54bHzLd.mjs.map +1 -0
  113. package/dist/grep-V3LQVMRQ-D99Bq7Kj.mjs +335 -0
  114. package/dist/grep-V3LQVMRQ-D99Bq7Kj.mjs.map +1 -0
  115. package/dist/gzip-O5ASJAFY-CZDRROqP.mjs +592 -0
  116. package/dist/gzip-O5ASJAFY-CZDRROqP.mjs.map +1 -0
  117. package/dist/head-442HYESI-D96RMdki.mjs +36 -0
  118. package/dist/head-442HYESI-D96RMdki.mjs.map +1 -0
  119. package/dist/help-HZ6M2CKN--DK8mY2L.mjs +123 -0
  120. package/dist/help-HZ6M2CKN--DK8mY2L.mjs.map +1 -0
  121. package/dist/history-WYYKSLSZ-ACNQVupn.mjs +48 -0
  122. package/dist/history-WYYKSLSZ-ACNQVupn.mjs.map +1 -0
  123. package/dist/hostname-C4HQXXUP-CXVVFkUK.mjs +24 -0
  124. package/dist/hostname-C4HQXXUP-CXVVFkUK.mjs.map +1 -0
  125. package/dist/html-to-markdown-JW4MSQZO-DQOxFIvF.mjs +15890 -0
  126. package/dist/html-to-markdown-JW4MSQZO-DQOxFIvF.mjs.map +1 -0
  127. package/dist/index.mjs +9 -9
  128. package/dist/join-TBRGI3LQ-B8I9tkJ5.mjs +198 -0
  129. package/dist/join-TBRGI3LQ-B8I9tkJ5.mjs.map +1 -0
  130. package/dist/jq-4XLYLOS5-wFZYfsfJ.mjs +257 -0
  131. package/dist/jq-4XLYLOS5-wFZYfsfJ.mjs.map +1 -0
  132. package/dist/js-exec-N5KEZBH7-CgtG-I6s.mjs +333 -0
  133. package/dist/js-exec-N5KEZBH7-CgtG-I6s.mjs.map +1 -0
  134. package/dist/lib-D4GpdNNK.mjs +45 -0
  135. package/dist/lib-D4GpdNNK.mjs.map +1 -0
  136. package/dist/ln-4LGSXXGD-Dg0R9i5G.mjs +101 -0
  137. package/dist/ln-4LGSXXGD-Dg0R9i5G.mjs.map +1 -0
  138. package/dist/ls-ZJGQER7M-DLDSfI4x.mjs +1891 -0
  139. package/dist/ls-ZJGQER7M-DLDSfI4x.mjs.map +1 -0
  140. package/dist/lzma-CTMDi254.mjs +1135 -0
  141. package/dist/lzma-CTMDi254.mjs.map +1 -0
  142. package/dist/{maybe-auto-update-Ou7H6dXT.mjs → maybe-auto-update-B0kal2FM.mjs} +2 -2
  143. package/dist/{maybe-auto-update-Ou7H6dXT.mjs.map → maybe-auto-update-B0kal2FM.mjs.map} +1 -1
  144. package/dist/md5sum-SPU24VSG-DQc8sqXO.mjs +16 -0
  145. package/dist/md5sum-SPU24VSG-DQc8sqXO.mjs.map +1 -0
  146. package/dist/mkdir-MEPGZOB6-BjUKzhdL.mjs +58 -0
  147. package/dist/mkdir-MEPGZOB6-BjUKzhdL.mjs.map +1 -0
  148. package/dist/mv-W5BIQ646-CdSIyY-U.mjs +93 -0
  149. package/dist/mv-W5BIQ646-CdSIyY-U.mjs.map +1 -0
  150. package/dist/nl-WSDW7I4O-DmtCnyKU.mjs +208 -0
  151. package/dist/nl-WSDW7I4O-DmtCnyKU.mjs.map +1 -0
  152. package/dist/od-WOKFDJTP-DZ2nxQNJ.mjs +73 -0
  153. package/dist/od-WOKFDJTP-DZ2nxQNJ.mjs.map +1 -0
  154. package/dist/paste-7JC6S4DX-CtmM5Qy8.mjs +113 -0
  155. package/dist/paste-7JC6S4DX-CtmM5Qy8.mjs.map +1 -0
  156. package/dist/printf-TWGXF445-B7cTysaa.mjs +880 -0
  157. package/dist/printf-TWGXF445-B7cTysaa.mjs.map +1 -0
  158. package/dist/pwd-WE6EN5AV-CO8o2WQS.mjs +34 -0
  159. package/dist/pwd-WE6EN5AV-CO8o2WQS.mjs.map +1 -0
  160. package/dist/python3-POMOR4OA-CKy80mpF.mjs +299 -0
  161. package/dist/python3-POMOR4OA-CKy80mpF.mjs.map +1 -0
  162. package/dist/readlink-OPJF4DL5-Rc1Mz_Xx.mjs +76 -0
  163. package/dist/readlink-OPJF4DL5-Rc1Mz_Xx.mjs.map +1 -0
  164. package/dist/rev-5EHFX4EJ-3dd9vwHW.mjs +66 -0
  165. package/dist/rev-5EHFX4EJ-3dd9vwHW.mjs.map +1 -0
  166. package/dist/rg-S4FXYXWB-BbXVo6JX.mjs +1539 -0
  167. package/dist/rg-S4FXYXWB-BbXVo6JX.mjs.map +1 -0
  168. package/dist/rm-SSGETQVQ-Ch53Rmrr.mjs +81 -0
  169. package/dist/rm-SSGETQVQ-Ch53Rmrr.mjs.map +1 -0
  170. package/dist/rmdir-OC4ZLPYA-D3QCHlIB.mjs +132 -0
  171. package/dist/rmdir-OC4ZLPYA-D3QCHlIB.mjs.map +1 -0
  172. package/dist/sed-S5UIK574-DE1KeTk3.mjs +1722 -0
  173. package/dist/sed-S5UIK574-DE1KeTk3.mjs.map +1 -0
  174. package/dist/seq-M5EC7Q57-BHfGjQvK.mjs +85 -0
  175. package/dist/seq-M5EC7Q57-BHfGjQvK.mjs.map +1 -0
  176. package/dist/sha1sum-2PTOAFR6-DNjSNcYK.mjs +16 -0
  177. package/dist/sha1sum-2PTOAFR6-DNjSNcYK.mjs.map +1 -0
  178. package/dist/sha256sum-NS7D3IXX-BMaCKkT5.mjs +16 -0
  179. package/dist/sha256sum-NS7D3IXX-BMaCKkT5.mjs.map +1 -0
  180. package/dist/sleep-X22JJINO-Do5hEQQW.mjs +67 -0
  181. package/dist/sleep-X22JJINO-Do5hEQQW.mjs.map +1 -0
  182. package/dist/sort-SW2YEO5B-B7j1zw8k.mjs +320 -0
  183. package/dist/sort-SW2YEO5B-B7j1zw8k.mjs.map +1 -0
  184. package/dist/split-4KKZZXXE-h8GD4HP4.mjs +248 -0
  185. package/dist/split-4KKZZXXE-h8GD4HP4.mjs.map +1 -0
  186. package/dist/sqlite3-CGOEFJAO-DvzzghDg.mjs +2879 -0
  187. package/dist/sqlite3-CGOEFJAO-DvzzghDg.mjs.map +1 -0
  188. package/dist/stat-CD34IZ4P-B5ZOJh4J.mjs +65 -0
  189. package/dist/stat-CD34IZ4P-B5ZOJh4J.mjs.map +1 -0
  190. package/dist/strings-6WDHLGMX-DdiEdoL-.mjs +179 -0
  191. package/dist/strings-6WDHLGMX-DdiEdoL-.mjs.map +1 -0
  192. package/dist/tac-2STMMJYW-DPyeWM9R.mjs +53 -0
  193. package/dist/tac-2STMMJYW-DPyeWM9R.mjs.map +1 -0
  194. package/dist/tail-R4PCA2C4-CUfroNeu.mjs +37 -0
  195. package/dist/tail-R4PCA2C4-CUfroNeu.mjs.map +1 -0
  196. package/dist/tar-STHHZTZ6-DRf60e-G.mjs +2838 -0
  197. package/dist/tar-STHHZTZ6-DRf60e-G.mjs.map +1 -0
  198. package/dist/tee-YUZ2FKCJ-po_dfyc_.mjs +46 -0
  199. package/dist/tee-YUZ2FKCJ-po_dfyc_.mjs.map +1 -0
  200. package/dist/time-D4LNBSWX-DVWhAldK.mjs +112 -0
  201. package/dist/time-D4LNBSWX-DVWhAldK.mjs.map +1 -0
  202. package/dist/timeout-YDCRSLPQ-B_yntmXU.mjs +113 -0
  203. package/dist/timeout-YDCRSLPQ-B_yntmXU.mjs.map +1 -0
  204. package/dist/touch-UA33VN3N-oW1SBT1r.mjs +104 -0
  205. package/dist/touch-UA33VN3N-oW1SBT1r.mjs.map +1 -0
  206. package/dist/tr-36LHWFRQ-CTq3z6wq.mjs +167 -0
  207. package/dist/tr-36LHWFRQ-CTq3z6wq.mjs.map +1 -0
  208. package/dist/tree-YLD52CNT-CIozNsLQ.mjs +186 -0
  209. package/dist/tree-YLD52CNT-CIozNsLQ.mjs.map +1 -0
  210. package/dist/true-FHQXJXBE-DsJOznSp.mjs +31 -0
  211. package/dist/true-FHQXJXBE-DsJOznSp.mjs.map +1 -0
  212. package/dist/unexpand-CADSA4VO-Cq9DTcUg.mjs +155 -0
  213. package/dist/unexpand-CADSA4VO-Cq9DTcUg.mjs.map +1 -0
  214. package/dist/uniq-XSIZR6PB-D5lt-IXF.mjs +92 -0
  215. package/dist/uniq-XSIZR6PB-D5lt-IXF.mjs.map +1 -0
  216. package/dist/{version-n-JpPeUF.mjs → version-Dxl3y5p6.mjs} +2 -2
  217. package/dist/{version-n-JpPeUF.mjs.map → version-Dxl3y5p6.mjs.map} +1 -1
  218. package/dist/wc-LF7NU4LA-BFPabrwD.mjs +111 -0
  219. package/dist/wc-LF7NU4LA-BFPabrwD.mjs.map +1 -0
  220. package/dist/which-XEM24D5D-2LvlkpUo.mjs +62 -0
  221. package/dist/which-XEM24D5D-2LvlkpUo.mjs.map +1 -0
  222. package/dist/whoami-XMTX52VE-24Kwqrk6.mjs +24 -0
  223. package/dist/whoami-XMTX52VE-24Kwqrk6.mjs.map +1 -0
  224. package/dist/xan-Y6WF3IRG-DjKO96Pj.mjs +2832 -0
  225. package/dist/xan-Y6WF3IRG-DjKO96Pj.mjs.map +1 -0
  226. package/dist/xan-view-HDVKHFC2-DhDNVE_V.mjs +12 -0
  227. package/dist/xan-view-HDVKHFC2-DhDNVE_V.mjs.map +1 -0
  228. package/dist/xargs-MGZPH7AX-D2bIgrdg.mjs +112 -0
  229. package/dist/xargs-MGZPH7AX-D2bIgrdg.mjs.map +1 -0
  230. package/dist/yq-4QJW3EQG-XhB3aACo.mjs +8610 -0
  231. package/dist/yq-4QJW3EQG-XhB3aACo.mjs.map +1 -0
  232. package/package.json +1 -1
  233. package/dist/dist-DWcRd4Se.mjs.map +0 -1
  234. package/dist/dist-DitNZUHA.mjs +0 -3
  235. package/dist/dist-vwoMCz6d.mjs +0 -775
  236. package/dist/dist-vwoMCz6d.mjs.map +0 -1
@@ -0,0 +1,2832 @@
1
+ #!/usr/bin/env node
2
+ import { r as s, t as o } from "./chunk-QAYAQNCG-Bl0Kbd53.mjs";
3
+ import { a as q$1, i as p, n, o as r } from "./chunk-BZUGFHVS-CPWRFwK8.mjs";
4
+ import "./chunk-DLL7UR66-BUYgzxnR.mjs";
5
+ import "./chunk-TN7HHBQW-CSB_R-XD.mjs";
6
+ import "./chunk-L64BMZUV-CyR7RKok.mjs";
7
+ import { t as I1 } from "./chunk-4RUAZWKT-D60fyWAB.mjs";
8
+ import { r as x } from "./chunk-NRSASXYY-CuWyREpD.mjs";
9
+ import "./chunk-SAI2SPQQ-CVRoDNs9.mjs";
10
+ import { n as w } from "./chunk-YCLFEX4T-COc1AThz.mjs";
11
+ import "./chunk-STHBFACM-lyj-j2a-.mjs";
12
+ import { t as xe$1 } from "./chunk-4I3HOE5Z-BixWWVkW.mjs";
13
+ import { n as S$1, s as x$1 } from "./chunk-4WKZNNJK-CiwxAWRf.mjs";
14
+ import { n as d } from "./chunk-LEKBROJD-CJMrAyu9.mjs";
15
+ import { a as N, c as g, i as I$1, n as C, o as S$2, r as E$1, s as b, t as A } from "./chunk-VPADYNBD-BKlA28GJ.mjs";
16
+ import { createRequire } from "node:module";
17
+ //#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-Q7H5W7YE.js
18
+ createRequire(import.meta.url);
19
+ var q, Je = n(() => {
20
+ "use strict";
21
+ q = class {
22
+ input;
23
+ pos = 0;
24
+ tokens = [];
25
+ constructor(n) {
26
+ this.input = n;
27
+ }
28
+ tokenize() {
29
+ for (; this.pos < this.input.length && (this.skipWhitespace(), !(this.pos >= this.input.length));) {
30
+ let n = this.nextToken();
31
+ n && this.tokens.push(n);
32
+ }
33
+ return this.tokens.push({
34
+ type: "eof",
35
+ value: "",
36
+ pos: this.pos
37
+ }), this.tokens;
38
+ }
39
+ skipWhitespace() {
40
+ for (; this.pos < this.input.length;) {
41
+ let n = this.input[this.pos];
42
+ if (n === " " || n === " " || n === `
43
+ ` || n === "\r") this.pos++;
44
+ else if (n === "#") for (; this.pos < this.input.length && this.input[this.pos] !== `
45
+ `;) this.pos++;
46
+ else break;
47
+ }
48
+ }
49
+ nextToken() {
50
+ let n = this.pos, t = this.input[this.pos];
51
+ if (t >= "0" && t <= "9") return this.readNumber();
52
+ if (t === "\"" || t === "'" || t === "`") return this.readString(t);
53
+ if (t === "b" && this.pos + 1 < this.input.length) {
54
+ let o = this.input[this.pos + 1];
55
+ if (o === "\"" || o === "'" || o === "`") return this.pos++, this.readString(o);
56
+ }
57
+ if (t === "/") {
58
+ let o = this.tokens[this.tokens.length - 1];
59
+ return o && (o.type === "int" || o.type === "float" || o.type === "string" || o.type === "ident" || o.type === ")" || o.type === "]") ? this.input[this.pos + 1] === "/" ? (this.pos += 2, {
60
+ type: "//",
61
+ value: "//",
62
+ pos: n
63
+ }) : (this.pos++, {
64
+ type: "/",
65
+ value: "/",
66
+ pos: n
67
+ }) : this.readRegex();
68
+ }
69
+ if (this.match("not in")) return {
70
+ type: "not in",
71
+ value: "not in",
72
+ pos: n
73
+ };
74
+ if (this.match("=>")) return {
75
+ type: "=>",
76
+ value: "=>",
77
+ pos: n
78
+ };
79
+ if (this.match("**")) return {
80
+ type: "**",
81
+ value: "**",
82
+ pos: n
83
+ };
84
+ if (this.match("++")) return {
85
+ type: "++",
86
+ value: "++",
87
+ pos: n
88
+ };
89
+ if (this.match("//")) return {
90
+ type: "//",
91
+ value: "//",
92
+ pos: n
93
+ };
94
+ if (this.match("==")) return {
95
+ type: "==",
96
+ value: "==",
97
+ pos: n
98
+ };
99
+ if (this.match("!=")) return {
100
+ type: "!=",
101
+ value: "!=",
102
+ pos: n
103
+ };
104
+ if (this.match("<=")) return {
105
+ type: "<=",
106
+ value: "<=",
107
+ pos: n
108
+ };
109
+ if (this.match(">=")) return {
110
+ type: ">=",
111
+ value: ">=",
112
+ pos: n
113
+ };
114
+ if (this.match("&&")) return {
115
+ type: "&&",
116
+ value: "&&",
117
+ pos: n
118
+ };
119
+ if (this.match("||")) return {
120
+ type: "||",
121
+ value: "||",
122
+ pos: n
123
+ };
124
+ let r = new Map([
125
+ ["(", "("],
126
+ [")", ")"],
127
+ ["[", "["],
128
+ ["]", "]"],
129
+ ["{", "{"],
130
+ ["}", "}"],
131
+ [",", ","],
132
+ [":", ":"],
133
+ [";", ";"],
134
+ ["+", "+"],
135
+ ["-", "-"],
136
+ ["*", "*"],
137
+ ["%", "%"],
138
+ ["<", "<"],
139
+ [">", ">"],
140
+ ["!", "!"],
141
+ [".", "."],
142
+ ["|", "|"],
143
+ ["=", "="]
144
+ ]).get(t);
145
+ if (r !== void 0) return this.pos++, {
146
+ type: r,
147
+ value: t,
148
+ pos: n
149
+ };
150
+ if (this.isIdentStart(t)) return this.readIdentifier();
151
+ throw new Error(`Unexpected character '${t}' at position ${this.pos}`);
152
+ }
153
+ match(n) {
154
+ if (this.input.slice(this.pos, this.pos + n.length) === n) {
155
+ if (/^[a-zA-Z]/.test(n)) {
156
+ let t = this.input[this.pos + n.length];
157
+ if (t && this.isIdentChar(t)) return !1;
158
+ }
159
+ return this.pos += n.length, !0;
160
+ }
161
+ return !1;
162
+ }
163
+ isIdentStart(n) {
164
+ return n >= "a" && n <= "z" || n >= "A" && n <= "Z" || n === "_";
165
+ }
166
+ isIdentChar(n) {
167
+ return this.isIdentStart(n) || n >= "0" && n <= "9";
168
+ }
169
+ readNumber() {
170
+ let n = this.pos, t = !1, s = !1;
171
+ for (; this.pos < this.input.length;) {
172
+ let o = this.input[this.pos];
173
+ if (o >= "0" && o <= "9") this.pos++;
174
+ else if (o === "_") this.pos++;
175
+ else if (o === "." && !t && !s) t = !0, this.pos++;
176
+ else if ((o === "e" || o === "E") && !s) s = !0, t = !0, this.pos++, this.pos < this.input.length && (this.input[this.pos] === "+" || this.input[this.pos] === "-") && this.pos++;
177
+ else break;
178
+ }
179
+ let r = this.input.slice(n, this.pos).replace(/_/g, "");
180
+ return {
181
+ type: t ? "float" : "int",
182
+ value: r,
183
+ pos: n
184
+ };
185
+ }
186
+ readString(n) {
187
+ let t = this.pos;
188
+ this.pos++;
189
+ let s = "";
190
+ for (; this.pos < this.input.length;) {
191
+ let r = this.input[this.pos];
192
+ if (r === n) return this.pos++, {
193
+ type: "string",
194
+ value: s,
195
+ pos: t
196
+ };
197
+ if (r === "\\") {
198
+ if (this.pos++, this.pos < this.input.length) {
199
+ let o = this.input[this.pos];
200
+ switch (o) {
201
+ case "n":
202
+ s += `
203
+ `;
204
+ break;
205
+ case "r":
206
+ s += "\r";
207
+ break;
208
+ case "t":
209
+ s += " ";
210
+ break;
211
+ case "\\":
212
+ s += "\\";
213
+ break;
214
+ case "\"":
215
+ s += "\"";
216
+ break;
217
+ case "'":
218
+ s += "'";
219
+ break;
220
+ case "`":
221
+ s += "`";
222
+ break;
223
+ case "0":
224
+ s += "\0";
225
+ break;
226
+ default: s += o;
227
+ }
228
+ this.pos++;
229
+ }
230
+ } else s += r, this.pos++;
231
+ }
232
+ throw new Error(`Unterminated string starting at position ${t}`);
233
+ }
234
+ readRegex() {
235
+ let n = this.pos;
236
+ this.pos++;
237
+ let t = "", s = "";
238
+ for (; this.pos < this.input.length;) {
239
+ let r = this.input[this.pos];
240
+ if (r === "/") {
241
+ for (this.pos++; this.pos < this.input.length && this.input[this.pos] === "i";) s += this.input[this.pos], this.pos++;
242
+ return {
243
+ type: "regex",
244
+ value: t + (s ? `/${s}` : ""),
245
+ pos: n
246
+ };
247
+ }
248
+ r === "\\" ? (t += r, this.pos++, this.pos < this.input.length && (t += this.input[this.pos], this.pos++)) : (t += r, this.pos++);
249
+ }
250
+ throw new Error(`Unterminated regex starting at position ${n}`);
251
+ }
252
+ readIdentifier() {
253
+ let n = this.pos;
254
+ for (; this.pos < this.input.length && this.isIdentChar(this.input[this.pos]);) this.pos++;
255
+ let t = !1;
256
+ this.pos < this.input.length && this.input[this.pos] === "?" && (t = !0, this.pos++);
257
+ let s = this.input.slice(n, t ? this.pos - 1 : this.pos);
258
+ t && (s += "?");
259
+ let r = new Map([
260
+ ["true", "true"],
261
+ ["false", "false"],
262
+ ["null", "null"],
263
+ ["and", "and"],
264
+ ["or", "or"],
265
+ ["eq", "eq"],
266
+ ["ne", "ne"],
267
+ ["lt", "lt"],
268
+ ["le", "le"],
269
+ ["gt", "gt"],
270
+ ["ge", "ge"],
271
+ ["in", "in"],
272
+ ["as", "as"],
273
+ ["_", "_"]
274
+ ]), o = s.replace(/\?$/, ""), a = r.get(o);
275
+ return a !== void 0 && !t ? {
276
+ type: a,
277
+ value: o,
278
+ pos: n
279
+ } : {
280
+ type: "ident",
281
+ value: s,
282
+ pos: n
283
+ };
284
+ }
285
+ };
286
+ });
287
+ var ze = {};
288
+ p(ze, {
289
+ parseMoonblade: () => H,
290
+ parseNamedExpressions: () => U
291
+ });
292
+ function U(e) {
293
+ let n = [], s = new q(e).tokenize(), r = 0, o = () => s[r] || {
294
+ type: "eof",
295
+ value: "",
296
+ pos: 0
297
+ }, a = () => s[r++];
298
+ for (; o().type !== "eof";) {
299
+ if (o().type === "," && n.length > 0) {
300
+ a();
301
+ continue;
302
+ }
303
+ let d = [], u = 0, p = r;
304
+ for (; o().type !== "eof";) {
305
+ let i = o();
306
+ if ((i.type === "," || i.type === "as") && u === 0) break;
307
+ (i.type === "(" || i.type === "[" || i.type === "{") && u++, (i.type === ")" || i.type === "]" || i.type === "}") && u--, d.push(a());
308
+ }
309
+ d.push({
310
+ type: "eof",
311
+ value: "",
312
+ pos: 0
313
+ });
314
+ let h = new z(d).parse(), l;
315
+ if (o().type === "as") if (a(), o().type === "(") {
316
+ a();
317
+ let i = [];
318
+ for (; o().type !== ")" && o().type !== "eof";) (o().type === "ident" || o().type === "string") && (i.push(o().value), a()), o().type === "," && a();
319
+ o().type === ")" && a(), l = i;
320
+ } else if (o().type === "ident" || o().type === "string") l = o().value, a();
321
+ else throw new Error(`Expected name after 'as', got ${o().type}`);
322
+ else l = e.slice(s[p].pos, s[r - 1]?.pos || e.length).trim(), h.type === "identifier" && (l = h.name);
323
+ n.push({
324
+ expr: h,
325
+ name: l
326
+ });
327
+ }
328
+ return n;
329
+ }
330
+ function H(e) {
331
+ let t = new q(e).tokenize();
332
+ return new z(t).parse();
333
+ }
334
+ var R, z, V = n(() => {
335
+ "use strict";
336
+ Je();
337
+ R = {
338
+ PIPE: 1,
339
+ OR: 2,
340
+ AND: 3,
341
+ EQUALITY: 4,
342
+ COMPARISON: 5,
343
+ ADDITIVE: 6,
344
+ MULTIPLICATIVE: 7,
345
+ POWER: 8,
346
+ UNARY: 9,
347
+ POSTFIX: 10
348
+ }, z = class {
349
+ pos = 0;
350
+ tokens;
351
+ constructor(n) {
352
+ this.tokens = n;
353
+ }
354
+ parse() {
355
+ let n = this.parseExpr(0);
356
+ if (this.peek().type !== "eof") throw new Error(`Unexpected token: ${this.peek().value}`);
357
+ return n;
358
+ }
359
+ parseExpr(n) {
360
+ let t = this.parsePrefix();
361
+ for (;;) {
362
+ let s = this.peek(), r = this.getInfixPrec(s.type);
363
+ if (r < n) break;
364
+ t = this.parseInfix(t, r);
365
+ }
366
+ return t;
367
+ }
368
+ parsePrefix() {
369
+ let n = this.peek();
370
+ switch (n.type) {
371
+ case "int": return this.advance(), {
372
+ type: "int",
373
+ value: Number.parseInt(n.value, 10)
374
+ };
375
+ case "float": return this.advance(), {
376
+ type: "float",
377
+ value: Number.parseFloat(n.value)
378
+ };
379
+ case "string": return this.advance(), {
380
+ type: "string",
381
+ value: n.value
382
+ };
383
+ case "regex": {
384
+ this.advance();
385
+ let t = n.value.split("/"), s = t.length > 1 ? t[t.length - 1] : "";
386
+ return {
387
+ type: "regex",
388
+ pattern: t.slice(0, -1).join("/") || n.value,
389
+ caseInsensitive: s.includes("i")
390
+ };
391
+ }
392
+ case "true": return this.advance(), {
393
+ type: "bool",
394
+ value: !0
395
+ };
396
+ case "false": return this.advance(), {
397
+ type: "bool",
398
+ value: !1
399
+ };
400
+ case "null": return this.advance(), { type: "null" };
401
+ case "_": return this.advance(), { type: "underscore" };
402
+ case "ident": {
403
+ let t = n.value, s = t.endsWith("?"), r = s ? t.slice(0, -1) : t;
404
+ if (this.advance(), this.peek().type === "(") return this.parseFunctionCall(r);
405
+ if (this.peek().type === "=>") {
406
+ this.advance();
407
+ let o = this.parseExpr(0);
408
+ return this.bindLambdaArgs({
409
+ type: "lambda",
410
+ params: [r],
411
+ body: o
412
+ }, [r]);
413
+ }
414
+ return {
415
+ type: "identifier",
416
+ name: r,
417
+ unsure: s
418
+ };
419
+ }
420
+ case "(": {
421
+ this.advance();
422
+ let t = this.pos;
423
+ if (this.peek().type === ")") {
424
+ if (this.advance(), this.peek().type === "=>") {
425
+ this.advance();
426
+ return {
427
+ type: "lambda",
428
+ params: [],
429
+ body: this.parseExpr(0)
430
+ };
431
+ }
432
+ throw new Error("Empty parentheses not allowed");
433
+ }
434
+ if (this.peek().type === "ident") {
435
+ let r = [this.peek().value];
436
+ this.advance();
437
+ let o = !0;
438
+ for (; this.peek().type === ",";) if (this.advance(), this.peek().type === "ident") r.push(this.peek().value), this.advance();
439
+ else {
440
+ o = !1;
441
+ break;
442
+ }
443
+ if (o && this.peek().type === ")" && this.peekAt(1).type === "=>") {
444
+ this.advance(), this.advance();
445
+ let a = this.parseExpr(0);
446
+ return this.bindLambdaArgs({
447
+ type: "lambda",
448
+ params: r,
449
+ body: a
450
+ }, r);
451
+ }
452
+ this.pos = t;
453
+ }
454
+ let s = this.parseExpr(0);
455
+ return this.expect(")"), s;
456
+ }
457
+ case "[": return this.parseList();
458
+ case "{": return this.parseMap();
459
+ case "-": {
460
+ this.advance();
461
+ let t = this.parseExpr(R.UNARY);
462
+ return t.type === "int" ? {
463
+ type: "int",
464
+ value: -t.value
465
+ } : t.type === "float" ? {
466
+ type: "float",
467
+ value: -t.value
468
+ } : {
469
+ type: "func",
470
+ name: "neg",
471
+ args: [{ expr: t }]
472
+ };
473
+ }
474
+ case "!": return this.advance(), {
475
+ type: "func",
476
+ name: "not",
477
+ args: [{ expr: this.parseExpr(R.UNARY) }]
478
+ };
479
+ default: throw new Error(`Unexpected token: ${n.type} (${n.value})`);
480
+ }
481
+ }
482
+ parseFunctionCall(n) {
483
+ this.expect("(");
484
+ let t = [];
485
+ if (this.peek().type !== ")") do {
486
+ t.length > 0 && this.peek().type === "," && this.advance();
487
+ let s;
488
+ if (this.peek().type === "ident") {
489
+ let o = this.peek().value, a = this.pos + 1;
490
+ a < this.tokens.length && this.tokens[a].type === "=" && (s = o, this.advance(), this.advance());
491
+ }
492
+ let r = this.parseExpr(0);
493
+ t.push({
494
+ name: s,
495
+ expr: r
496
+ });
497
+ } while (this.peek().type === ",");
498
+ return this.expect(")"), {
499
+ type: "func",
500
+ name: n.toLowerCase(),
501
+ args: t
502
+ };
503
+ }
504
+ parseList() {
505
+ this.expect("[");
506
+ let n = [];
507
+ if (this.peek().type !== "]") do
508
+ n.length > 0 && this.peek().type === "," && this.advance(), n.push(this.parseExpr(0));
509
+ while (this.peek().type === ",");
510
+ return this.expect("]"), {
511
+ type: "list",
512
+ elements: n
513
+ };
514
+ }
515
+ parseMap() {
516
+ this.expect("{");
517
+ let n = [];
518
+ if (this.peek().type !== "}") do {
519
+ n.length > 0 && this.peek().type === "," && this.advance();
520
+ let t;
521
+ if (this.peek().type === "ident") t = this.peek().value, this.advance();
522
+ else if (this.peek().type === "string") t = this.peek().value, this.advance();
523
+ else throw new Error(`Expected map key, got ${this.peek().type}`);
524
+ this.expect(":");
525
+ let s = this.parseExpr(0);
526
+ n.push({
527
+ key: t,
528
+ value: s
529
+ });
530
+ } while (this.peek().type === ",");
531
+ return this.expect("}"), {
532
+ type: "map",
533
+ entries: n
534
+ };
535
+ }
536
+ parseInfix(n, t) {
537
+ let s = this.peek(), o = new Map([
538
+ ["+", "add"],
539
+ ["-", "sub"],
540
+ ["*", "mul"],
541
+ ["/", "div"],
542
+ ["//", "idiv"],
543
+ ["%", "mod"],
544
+ ["**", "pow"],
545
+ ["++", "concat"],
546
+ ["==", "=="],
547
+ ["!=", "!="],
548
+ ["<", "<"],
549
+ ["<=", "<="],
550
+ [">", ">"],
551
+ [">=", ">="],
552
+ ["eq", "eq"],
553
+ ["ne", "ne"],
554
+ ["lt", "lt"],
555
+ ["le", "le"],
556
+ ["gt", "gt"],
557
+ ["ge", "ge"],
558
+ ["&&", "and"],
559
+ ["and", "and"],
560
+ ["||", "or"],
561
+ ["or", "or"]
562
+ ]).get(s.type);
563
+ if (o !== void 0) {
564
+ this.advance();
565
+ let a = this.parseExpr(t + (this.isRightAssoc(s.type) ? 0 : 1));
566
+ return {
567
+ type: "func",
568
+ name: o,
569
+ args: [{ expr: n }, { expr: a }]
570
+ };
571
+ }
572
+ if (s.type === "|") {
573
+ this.advance();
574
+ let a = this.parseExpr(t);
575
+ return this.handlePipe(n, a);
576
+ }
577
+ if (s.type === ".") return this.advance(), this.handleDot(n);
578
+ if (s.type === "[") return this.advance(), this.handleIndexing(n);
579
+ if (s.type === "in") return this.advance(), {
580
+ type: "func",
581
+ name: "contains",
582
+ args: [{ expr: this.parseExpr(t + 1) }, { expr: n }]
583
+ };
584
+ if (s.type === "not in") return this.advance(), {
585
+ type: "func",
586
+ name: "not",
587
+ args: [{ expr: {
588
+ type: "func",
589
+ name: "contains",
590
+ args: [{ expr: this.parseExpr(t + 1) }, { expr: n }]
591
+ } }]
592
+ };
593
+ throw new Error(`Unexpected infix token: ${s.type}`);
594
+ }
595
+ handlePipe(n, t) {
596
+ if (t.type === "identifier") return {
597
+ type: "func",
598
+ name: t.name,
599
+ args: [{ expr: n }]
600
+ };
601
+ if (t.type === "func") {
602
+ let s = this.countUnderscores(t);
603
+ return s === 0 ? t : s === 1 ? this.fillUnderscore(t, n) : {
604
+ type: "pipeline",
605
+ exprs: [n, t]
606
+ };
607
+ }
608
+ return this.countUnderscores(t) === 1 ? this.fillUnderscore(t, n) : t;
609
+ }
610
+ handleDot(n) {
611
+ let t = this.peek();
612
+ if (t.type === "ident") {
613
+ let s = t.value;
614
+ if (this.advance(), this.peek().type === "(") {
615
+ let r = this.parseFunctionCall(s);
616
+ return r.type === "func" && r.args.unshift({ expr: n }), r;
617
+ }
618
+ return {
619
+ type: "func",
620
+ name: "get",
621
+ args: [{ expr: n }, { expr: {
622
+ type: "string",
623
+ value: s
624
+ } }]
625
+ };
626
+ }
627
+ if (t.type === "int") {
628
+ let s = Number.parseInt(t.value, 10);
629
+ return this.advance(), {
630
+ type: "func",
631
+ name: "get",
632
+ args: [{ expr: n }, { expr: {
633
+ type: "int",
634
+ value: s
635
+ } }]
636
+ };
637
+ }
638
+ if (t.type === "string") {
639
+ let s = t.value;
640
+ return this.advance(), {
641
+ type: "func",
642
+ name: "get",
643
+ args: [{ expr: n }, { expr: {
644
+ type: "string",
645
+ value: s
646
+ } }]
647
+ };
648
+ }
649
+ throw new Error(`Expected identifier, number, or string after dot, got ${t.type}`);
650
+ }
651
+ handleIndexing(n) {
652
+ if (this.peek().type === ":") {
653
+ if (this.advance(), this.peek().type === "]") return this.advance(), {
654
+ type: "func",
655
+ name: "slice",
656
+ args: [{ expr: n }]
657
+ };
658
+ let s = this.parseExpr(0);
659
+ return this.expect("]"), {
660
+ type: "func",
661
+ name: "slice",
662
+ args: [
663
+ { expr: n },
664
+ { expr: {
665
+ type: "int",
666
+ value: 0
667
+ } },
668
+ { expr: s }
669
+ ]
670
+ };
671
+ }
672
+ let t = this.parseExpr(0);
673
+ if (this.peek().type === ":") {
674
+ if (this.advance(), this.peek().type === "]") return this.advance(), {
675
+ type: "func",
676
+ name: "slice",
677
+ args: [{ expr: n }, { expr: t }]
678
+ };
679
+ let s = this.parseExpr(0);
680
+ return this.expect("]"), {
681
+ type: "func",
682
+ name: "slice",
683
+ args: [
684
+ { expr: n },
685
+ { expr: t },
686
+ { expr: s }
687
+ ]
688
+ };
689
+ }
690
+ return this.expect("]"), {
691
+ type: "func",
692
+ name: "get",
693
+ args: [{ expr: n }, { expr: t }]
694
+ };
695
+ }
696
+ countUnderscores(n) {
697
+ return n.type === "underscore" ? 1 : n.type === "func" ? n.args.reduce((t, s) => t + this.countUnderscores(s.expr), 0) : n.type === "list" ? n.elements.reduce((t, s) => t + this.countUnderscores(s), 0) : n.type === "map" ? n.entries.reduce((t, s) => t + this.countUnderscores(s.value), 0) : 0;
698
+ }
699
+ fillUnderscore(n, t) {
700
+ return n.type === "underscore" ? t : n.type === "func" ? {
701
+ ...n,
702
+ args: n.args.map((s) => ({
703
+ ...s,
704
+ expr: this.fillUnderscore(s.expr, t)
705
+ }))
706
+ } : n.type === "list" ? {
707
+ ...n,
708
+ elements: n.elements.map((s) => this.fillUnderscore(s, t))
709
+ } : n.type === "map" ? {
710
+ ...n,
711
+ entries: n.entries.map((s) => ({
712
+ ...s,
713
+ value: this.fillUnderscore(s.value, t)
714
+ }))
715
+ } : n;
716
+ }
717
+ bindLambdaArgs(n, t) {
718
+ return {
719
+ ...n,
720
+ body: this.bindLambdaArgsInExpr(n.body, t)
721
+ };
722
+ }
723
+ bindLambdaArgsInExpr(n, t) {
724
+ return n.type === "identifier" && t.includes(n.name) ? {
725
+ type: "lambdaBinding",
726
+ name: n.name
727
+ } : n.type === "func" ? {
728
+ ...n,
729
+ args: n.args.map((s) => ({
730
+ ...s,
731
+ expr: this.bindLambdaArgsInExpr(s.expr, t)
732
+ }))
733
+ } : n.type === "list" ? {
734
+ ...n,
735
+ elements: n.elements.map((s) => this.bindLambdaArgsInExpr(s, t))
736
+ } : n.type === "map" ? {
737
+ ...n,
738
+ entries: n.entries.map((s) => ({
739
+ ...s,
740
+ value: this.bindLambdaArgsInExpr(s.value, t)
741
+ }))
742
+ } : n;
743
+ }
744
+ getInfixPrec(n) {
745
+ switch (n) {
746
+ case "|": return R.PIPE;
747
+ case "||":
748
+ case "or": return R.OR;
749
+ case "&&":
750
+ case "and": return R.AND;
751
+ case "==":
752
+ case "!=":
753
+ case "eq":
754
+ case "ne": return R.EQUALITY;
755
+ case "<":
756
+ case "<=":
757
+ case ">":
758
+ case ">=":
759
+ case "lt":
760
+ case "le":
761
+ case "gt":
762
+ case "ge":
763
+ case "in":
764
+ case "not in": return R.COMPARISON;
765
+ case "+":
766
+ case "-":
767
+ case "++": return R.ADDITIVE;
768
+ case "*":
769
+ case "/":
770
+ case "//":
771
+ case "%": return R.MULTIPLICATIVE;
772
+ case "**": return R.POWER;
773
+ case ".":
774
+ case "[": return R.POSTFIX;
775
+ default: return -1;
776
+ }
777
+ }
778
+ isRightAssoc(n) {
779
+ return n === "**";
780
+ }
781
+ peek() {
782
+ return this.tokens[this.pos] || {
783
+ type: "eof",
784
+ value: "",
785
+ pos: 0
786
+ };
787
+ }
788
+ peekAt(n) {
789
+ return this.tokens[this.pos + n] || {
790
+ type: "eof",
791
+ value: "",
792
+ pos: 0
793
+ };
794
+ }
795
+ advance() {
796
+ return this.tokens[this.pos++];
797
+ }
798
+ expect(n) {
799
+ let t = this.peek();
800
+ if (t.type !== n) throw new Error(`Expected ${n}, got ${t.type}`);
801
+ return this.advance();
802
+ }
803
+ };
804
+ });
805
+ V();
806
+ function E(e, n) {
807
+ return n.length === 0 ? I(e, []) : n.length === 1 ? {
808
+ type: "Pipe",
809
+ left: n[0],
810
+ right: I(e, [])
811
+ } : {
812
+ type: "Pipe",
813
+ left: n[0],
814
+ right: I(e, n.slice(1))
815
+ };
816
+ }
817
+ var K = {
818
+ add: (e) => S("+", e[0], e[1]),
819
+ sub: (e) => S("-", e[0], e[1]),
820
+ mul: (e) => S("*", e[0], e[1]),
821
+ div: (e) => S("/", e[0], e[1]),
822
+ mod: (e) => S("%", e[0], e[1]),
823
+ idiv: (e) => I("floor", [S("/", e[0], e[1])]),
824
+ pow: (e) => E("pow", e),
825
+ neg: (e) => ({
826
+ type: "UnaryOp",
827
+ op: "-",
828
+ operand: e[0]
829
+ }),
830
+ "==": (e) => S("==", e[0], e[1]),
831
+ "!=": (e) => S("!=", e[0], e[1]),
832
+ "<": (e) => S("<", e[0], e[1]),
833
+ "<=": (e) => S("<=", e[0], e[1]),
834
+ ">": (e) => S(">", e[0], e[1]),
835
+ ">=": (e) => S(">=", e[0], e[1]),
836
+ eq: (e) => S("==", P(e[0]), P(e[1])),
837
+ ne: (e) => S("!=", P(e[0]), P(e[1])),
838
+ lt: (e) => S("<", P(e[0]), P(e[1])),
839
+ le: (e) => S("<=", P(e[0]), P(e[1])),
840
+ gt: (e) => S(">", P(e[0]), P(e[1])),
841
+ ge: (e) => S(">=", P(e[0]), P(e[1])),
842
+ and: (e) => S("and", e[0], e[1]),
843
+ or: (e) => S("or", e[0], e[1]),
844
+ not: (e) => ({
845
+ type: "UnaryOp",
846
+ op: "not",
847
+ operand: e[0]
848
+ }),
849
+ len: (e) => E("length", e),
850
+ length: (e) => E("length", e),
851
+ upper: (e) => E("ascii_upcase", e),
852
+ lower: (e) => E("ascii_downcase", e),
853
+ trim: (e) => E("trim", e),
854
+ ltrim: (e) => e.length === 0 ? I("ltrimstr", [{
855
+ type: "Literal",
856
+ value: " "
857
+ }]) : {
858
+ type: "Pipe",
859
+ left: e[0],
860
+ right: I("ltrimstr", [{
861
+ type: "Literal",
862
+ value: " "
863
+ }])
864
+ },
865
+ rtrim: (e) => e.length === 0 ? I("rtrimstr", [{
866
+ type: "Literal",
867
+ value: " "
868
+ }]) : {
869
+ type: "Pipe",
870
+ left: e[0],
871
+ right: I("rtrimstr", [{
872
+ type: "Literal",
873
+ value: " "
874
+ }])
875
+ },
876
+ split: (e) => E("split", e),
877
+ join: (e) => e.length === 1 ? I("join", [{
878
+ type: "Literal",
879
+ value: ""
880
+ }]) : E("join", e),
881
+ concat: (e) => S("+", e[0], e[1]),
882
+ startswith: (e) => E("startswith", e),
883
+ endswith: (e) => E("endswith", e),
884
+ contains: (e) => E("contains", e),
885
+ replace: (e) => E("gsub", e),
886
+ substr: (e) => e.length === 2 ? {
887
+ type: "Slice",
888
+ base: e[0],
889
+ start: e[1]
890
+ } : {
891
+ type: "Slice",
892
+ base: e[0],
893
+ start: e[1],
894
+ end: S("+", e[1], e[2])
895
+ },
896
+ abs: (e) => E("fabs", e),
897
+ floor: (e) => E("floor", e),
898
+ ceil: (e) => E("ceil", e),
899
+ round: (e) => E("round", e),
900
+ sqrt: (e) => E("sqrt", e),
901
+ log: (e) => E("log", e),
902
+ log10: (e) => E("log10", e),
903
+ log2: (e) => E("log2", e),
904
+ exp: (e) => E("exp", e),
905
+ sin: (e) => E("sin", e),
906
+ cos: (e) => E("cos", e),
907
+ tan: (e) => E("tan", e),
908
+ asin: (e) => E("asin", e),
909
+ acos: (e) => E("acos", e),
910
+ atan: (e) => E("atan", e),
911
+ min: (e) => E("min", e),
912
+ max: (e) => E("max", e),
913
+ first: (e) => e.length === 0 ? {
914
+ type: "Index",
915
+ index: {
916
+ type: "Literal",
917
+ value: 0
918
+ }
919
+ } : {
920
+ type: "Index",
921
+ index: {
922
+ type: "Literal",
923
+ value: 0
924
+ },
925
+ base: e[0]
926
+ },
927
+ last: (e) => e.length === 0 ? {
928
+ type: "Index",
929
+ index: {
930
+ type: "Literal",
931
+ value: -1
932
+ }
933
+ } : {
934
+ type: "Index",
935
+ index: {
936
+ type: "Literal",
937
+ value: -1
938
+ },
939
+ base: e[0]
940
+ },
941
+ get: (e) => e.length === 1 ? {
942
+ type: "Index",
943
+ index: e[0]
944
+ } : {
945
+ type: "Index",
946
+ index: e[1],
947
+ base: e[0]
948
+ },
949
+ slice: (e) => e.length === 1 ? {
950
+ type: "Slice",
951
+ base: e[0]
952
+ } : e.length === 2 ? {
953
+ type: "Slice",
954
+ base: e[0],
955
+ start: e[1]
956
+ } : {
957
+ type: "Slice",
958
+ base: e[0],
959
+ start: e[1],
960
+ end: e[2]
961
+ },
962
+ keys: "keys",
963
+ values: "values",
964
+ entries: (e) => I("to_entries", e),
965
+ from_entries: "from_entries",
966
+ reverse: "reverse",
967
+ sort: "sort",
968
+ sort_by: "sort_by",
969
+ group_by: "group_by",
970
+ unique: "unique",
971
+ unique_by: "unique_by",
972
+ flatten: "flatten",
973
+ map: (e) => ({
974
+ type: "Pipe",
975
+ left: e[0],
976
+ right: {
977
+ type: "Array",
978
+ elements: e[1]
979
+ }
980
+ }),
981
+ select: (e) => I("select", e),
982
+ empty: () => I("empty", []),
983
+ count: () => I("length", []),
984
+ sum: (e) => e.length === 0 ? I("add", []) : {
985
+ type: "Pipe",
986
+ left: {
987
+ type: "Array",
988
+ elements: e[0]
989
+ },
990
+ right: I("add", [])
991
+ },
992
+ mean: (e) => e.length === 0 ? {
993
+ type: "Pipe",
994
+ left: { type: "Identity" },
995
+ right: S("/", I("add", []), I("length", []))
996
+ } : {
997
+ type: "Pipe",
998
+ left: {
999
+ type: "Array",
1000
+ elements: e[0]
1001
+ },
1002
+ right: S("/", I("add", []), I("length", []))
1003
+ },
1004
+ avg: (e) => e.length === 0 ? {
1005
+ type: "Pipe",
1006
+ left: { type: "Identity" },
1007
+ right: S("/", I("add", []), I("length", []))
1008
+ } : {
1009
+ type: "Pipe",
1010
+ left: {
1011
+ type: "Array",
1012
+ elements: e[0]
1013
+ },
1014
+ right: S("/", I("add", []), I("length", []))
1015
+ },
1016
+ type: "type",
1017
+ isnull: (e) => e.length === 0 ? S("==", { type: "Identity" }, {
1018
+ type: "Literal",
1019
+ value: null
1020
+ }) : S("==", e[0], {
1021
+ type: "Literal",
1022
+ value: null
1023
+ }),
1024
+ isempty: (e) => e.length === 0 ? S("==", { type: "Identity" }, {
1025
+ type: "Literal",
1026
+ value: ""
1027
+ }) : S("==", e[0], {
1028
+ type: "Literal",
1029
+ value: ""
1030
+ }),
1031
+ tonumber: (e) => e.length === 0 ? I("tonumber", []) : I("tonumber", e),
1032
+ tostring: (e) => e.length === 0 ? I("tostring", []) : I("tostring", e),
1033
+ if: (e) => Ke(e[0], e[1], e[2]),
1034
+ coalesce: (e) => {
1035
+ if (e.length === 0) return {
1036
+ type: "Literal",
1037
+ value: null
1038
+ };
1039
+ if (e.length === 1) return e[0];
1040
+ let [n, ...t] = e;
1041
+ return Ke(S("and", S("!=", n, {
1042
+ type: "Literal",
1043
+ value: null
1044
+ }), S("!=", n, {
1045
+ type: "Literal",
1046
+ value: ""
1047
+ })), n, t.length === 1 ? t[0] : K.coalesce(t));
1048
+ },
1049
+ index: () => ({
1050
+ type: "Field",
1051
+ name: "_row_index"
1052
+ }),
1053
+ now: () => I("now", []),
1054
+ fmt: (e) => I("tostring", e),
1055
+ format: (e) => I("tostring", e)
1056
+ };
1057
+ Object.setPrototypeOf(K, null);
1058
+ function S(e, n, t) {
1059
+ return {
1060
+ type: "BinaryOp",
1061
+ op: e,
1062
+ left: n,
1063
+ right: t
1064
+ };
1065
+ }
1066
+ function I(e, n) {
1067
+ return {
1068
+ type: "Call",
1069
+ name: e,
1070
+ args: n
1071
+ };
1072
+ }
1073
+ var rt = "then";
1074
+ function Ke(e, n, t) {
1075
+ let s = x$1({
1076
+ type: "Cond",
1077
+ cond: e,
1078
+ elifs: [],
1079
+ else: t || {
1080
+ type: "Literal",
1081
+ value: null
1082
+ }
1083
+ });
1084
+ return s[rt] = n, s;
1085
+ }
1086
+ function P(e) {
1087
+ return {
1088
+ type: "Pipe",
1089
+ left: e,
1090
+ right: {
1091
+ type: "Call",
1092
+ name: "tostring",
1093
+ args: []
1094
+ }
1095
+ };
1096
+ }
1097
+ function O(e, n = !0) {
1098
+ switch (e.type) {
1099
+ case "int":
1100
+ case "float": return {
1101
+ type: "Literal",
1102
+ value: e.value
1103
+ };
1104
+ case "string": return {
1105
+ type: "Literal",
1106
+ value: e.value
1107
+ };
1108
+ case "bool": return {
1109
+ type: "Literal",
1110
+ value: e.value
1111
+ };
1112
+ case "null": return {
1113
+ type: "Literal",
1114
+ value: null
1115
+ };
1116
+ case "underscore": return {
1117
+ type: "Index",
1118
+ base: { type: "Identity" },
1119
+ index: {
1120
+ type: "Literal",
1121
+ value: "_"
1122
+ }
1123
+ };
1124
+ case "identifier": return n ? {
1125
+ type: "Field",
1126
+ name: e.name
1127
+ } : {
1128
+ type: "VarRef",
1129
+ name: e.name
1130
+ };
1131
+ case "lambdaBinding": return {
1132
+ type: "VarRef",
1133
+ name: e.name
1134
+ };
1135
+ case "func": {
1136
+ let t = e.args.map((r) => O(r.expr, n)), s = Object.hasOwn(K, e.name) ? K[e.name] : void 0;
1137
+ return typeof s == "function" ? s(t) : I(typeof s == "string" ? s : e.name, t);
1138
+ }
1139
+ case "list": return e.elements.length === 0 ? { type: "Array" } : {
1140
+ type: "Array",
1141
+ elements: e.elements.reduce((t, s, r) => {
1142
+ let o = O(s, n);
1143
+ return r === 0 ? o : {
1144
+ type: "Comma",
1145
+ left: t,
1146
+ right: o
1147
+ };
1148
+ }, null)
1149
+ };
1150
+ case "map": return {
1151
+ type: "Object",
1152
+ entries: e.entries.map((t) => ({
1153
+ key: t.key,
1154
+ value: O(t.value, n)
1155
+ }))
1156
+ };
1157
+ case "regex": return {
1158
+ type: "Literal",
1159
+ value: e.pattern
1160
+ };
1161
+ case "slice": return {
1162
+ type: "Slice",
1163
+ start: e.start ? O(e.start, n) : void 0,
1164
+ end: e.end ? O(e.end, n) : void 0
1165
+ };
1166
+ case "lambda": return O(e.body, n);
1167
+ case "pipeline": return { type: "Identity" };
1168
+ default: throw new Error(`Unknown moonblade expression type: ${e.type}`);
1169
+ }
1170
+ }
1171
+ function ee(e) {
1172
+ let n = [], t = 0;
1173
+ for (; t < e.length;) {
1174
+ for (; t < e.length && (e[t] === " " || e[t] === ",");) t++;
1175
+ if (t >= e.length) break;
1176
+ let s = t;
1177
+ for (; t < e.length && /\w/.test(e[t]);) t++;
1178
+ let r = e.slice(s, t);
1179
+ for (; t < e.length && e[t] === " ";) t++;
1180
+ if (e[t] !== "(") break;
1181
+ t++;
1182
+ let o = 1, a = t;
1183
+ for (; t < e.length && o > 0;) e[t] === "(" ? o++ : e[t] === ")" && o--, o > 0 && t++;
1184
+ let d = e.slice(a, t).trim();
1185
+ for (t++; t < e.length && e[t] === " ";) t++;
1186
+ let u = "";
1187
+ if (e.slice(t, t + 3).toLowerCase() === "as ") {
1188
+ for (t += 3; t < e.length && e[t] === " ";) t++;
1189
+ let p = t;
1190
+ for (; t < e.length && /\w/.test(e[t]);) t++;
1191
+ u = e.slice(p, t);
1192
+ }
1193
+ u || (u = d ? `${r}(${d})` : `${r}()`), n.push({
1194
+ func: r,
1195
+ expr: d,
1196
+ alias: u
1197
+ });
1198
+ }
1199
+ return n;
1200
+ }
1201
+ function Be(e) {
1202
+ return /^\w+$/.test(e);
1203
+ }
1204
+ function Q(e, n, t) {
1205
+ let r = d(e, O(H(n)), t);
1206
+ return r.length > 0 ? r[0] : null;
1207
+ }
1208
+ function te(e, n, t = {}) {
1209
+ let { func: s, expr: r } = n;
1210
+ if (s === "count" && !r) return e.length;
1211
+ let o;
1212
+ switch (Be(r) ? o = e.map((a) => a[r]).filter((a) => a != null) : o = e.map((a) => Q(a, r, t)).filter((a) => a != null), s) {
1213
+ case "count": return Be(r) ? o.length : o.filter((a) => !!a).length;
1214
+ case "sum": return o.map((d) => typeof d == "number" ? d : Number.parseFloat(String(d))).reduce((d, u) => d + u, 0);
1215
+ case "mean":
1216
+ case "avg": {
1217
+ let a = o.map((d) => typeof d == "number" ? d : Number.parseFloat(String(d)));
1218
+ return a.length > 0 ? a.reduce((d, u) => d + u, 0) / a.length : 0;
1219
+ }
1220
+ case "min": {
1221
+ let a = o.map((d) => typeof d == "number" ? d : Number.parseFloat(String(d)));
1222
+ return a.length > 0 ? Math.min(...a) : null;
1223
+ }
1224
+ case "max": {
1225
+ let a = o.map((d) => typeof d == "number" ? d : Number.parseFloat(String(d)));
1226
+ return a.length > 0 ? Math.max(...a) : null;
1227
+ }
1228
+ case "first": return o.length > 0 ? o[0] : null;
1229
+ case "last": return o.length > 0 ? o[o.length - 1] : null;
1230
+ case "median": {
1231
+ let a = o.map((u) => typeof u == "number" ? u : Number.parseFloat(String(u))).filter((u) => !Number.isNaN(u)).sort((u, p) => u - p);
1232
+ if (a.length === 0) return null;
1233
+ let d = Math.floor(a.length / 2);
1234
+ return a.length % 2 === 0 ? (a[d - 1] + a[d]) / 2 : a[d];
1235
+ }
1236
+ case "mode": {
1237
+ let a = /* @__PURE__ */ new Map();
1238
+ for (let p of o) {
1239
+ let c = String(p);
1240
+ a.set(c, (a.get(c) || 0) + 1);
1241
+ }
1242
+ let d = 0, u = null;
1243
+ for (let [p, c] of a) c > d && (d = c, u = p);
1244
+ return u;
1245
+ }
1246
+ case "cardinality": return new Set(o.map((d) => String(d))).size;
1247
+ case "values": return o.map((a) => String(a)).join("|");
1248
+ case "distinct_values": return [...new Set(o.map((d) => String(d)))].sort().join("|");
1249
+ case "all":
1250
+ if (e.length === 0) return !0;
1251
+ for (let a of e) if (!Q(a, r, t)) return !1;
1252
+ return !0;
1253
+ case "any":
1254
+ for (let a of e) if (Q(a, r, t)) return !0;
1255
+ return !1;
1256
+ default: return null;
1257
+ }
1258
+ }
1259
+ function Ge(e, n, t = {}) {
1260
+ let s = C();
1261
+ for (let r of n) E$1(s, r.alias, te(e, r, t));
1262
+ return s;
1263
+ }
1264
+ async function ne(e, n) {
1265
+ let t = "", s = [];
1266
+ for (let c of e) c.startsWith("-") || (t ? s.push(c) : t = c);
1267
+ if (!t) return {
1268
+ stdout: "",
1269
+ stderr: `xan agg: no aggregation expression
1270
+ `,
1271
+ exitCode: 1
1272
+ };
1273
+ let { data: r, error: o } = await g(s, n);
1274
+ if (o) return o;
1275
+ let a = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, d = ee(t);
1276
+ return {
1277
+ stdout: I$1(d.map((c) => c.alias), [Ge(r, d, a)]),
1278
+ stderr: "",
1279
+ exitCode: 0
1280
+ };
1281
+ }
1282
+ async function se(e, n) {
1283
+ let t = "", s = "", r = [];
1284
+ for (let f = 0; f < e.length; f++) {
1285
+ let m = e[f];
1286
+ m === "--sorted" || m.startsWith("-") || (t ? s ? r.push(m) : s = m : t = m);
1287
+ }
1288
+ if (!t || !s) return {
1289
+ stdout: "",
1290
+ stderr: `xan groupby: usage: xan groupby COLS EXPR [FILE]
1291
+ `,
1292
+ exitCode: 1
1293
+ };
1294
+ let { data: o, error: a } = await g(r, n);
1295
+ if (a) return a;
1296
+ let d = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, u = t.split(","), p = ee(s), c = [], h = /* @__PURE__ */ new Map();
1297
+ for (let f of o) {
1298
+ let m = u.map((g) => String(f[g])).join("\0");
1299
+ h.has(m) || (h.set(m, []), c.push(m)), h.get(m)?.push(f);
1300
+ }
1301
+ let l = [...u, ...p.map((f) => f.alias)], i = [];
1302
+ for (let f of c) {
1303
+ let m = h.get(f);
1304
+ if (!m) continue;
1305
+ let g = C();
1306
+ for (let y of u) E$1(g, y, m[0][y]);
1307
+ for (let y of p) E$1(g, y.alias, te(m, y, d));
1308
+ i.push(g);
1309
+ }
1310
+ return {
1311
+ stdout: I$1(l, i),
1312
+ stderr: "",
1313
+ exitCode: 0
1314
+ };
1315
+ }
1316
+ async function re(e, n) {
1317
+ let t = [], s = "", r = 10, o = !1, a = [];
1318
+ for (let i = 0; i < e.length; i++) {
1319
+ let f = e[i];
1320
+ (f === "-s" || f === "--select") && i + 1 < e.length ? t = e[++i].split(",") : (f === "-g" || f === "--groupby") && i + 1 < e.length ? s = e[++i] : (f === "-l" || f === "--limit") && i + 1 < e.length ? r = Number.parseInt(e[++i], 10) : f === "--no-extra" ? o = !0 : f === "-A" || f === "--all" ? r = 0 : f.startsWith("-") || a.push(f);
1321
+ }
1322
+ let { headers: d, data: u, error: p } = await g(a, n);
1323
+ if (p) return p;
1324
+ let c = t.length > 0 ? t : d.filter((i) => i !== s);
1325
+ s && t.length === 0 && (c = d.filter((i) => i !== s));
1326
+ let h = [], l = s ? [
1327
+ "field",
1328
+ s,
1329
+ "value",
1330
+ "count"
1331
+ ] : [
1332
+ "field",
1333
+ "value",
1334
+ "count"
1335
+ ];
1336
+ if (s) {
1337
+ let i = /* @__PURE__ */ new Map();
1338
+ for (let f of u) {
1339
+ let m = String(f[s] ?? "");
1340
+ i.has(m) || i.set(m, []), i.get(m)?.push(f);
1341
+ }
1342
+ for (let f of c) for (let [m, g] of i) {
1343
+ let y = /* @__PURE__ */ new Map();
1344
+ for (let k of g) {
1345
+ let N = k[f], C = N === "" || N === null || N === void 0 ? "" : String(N);
1346
+ y.set(C, (y.get(C) || 0) + 1);
1347
+ }
1348
+ let x = [...y.entries()].sort((k, N) => N[1] !== k[1] ? N[1] - k[1] : k[0].localeCompare(N[0]));
1349
+ o && (x = x.filter(([k]) => k !== "")), r > 0 && (x = x.slice(0, r));
1350
+ for (let [k, N] of x) h.push({
1351
+ field: f,
1352
+ [s]: m,
1353
+ value: k === "" ? "<empty>" : k,
1354
+ count: N
1355
+ });
1356
+ }
1357
+ } else for (let i of c) {
1358
+ let f = /* @__PURE__ */ new Map();
1359
+ for (let g of u) {
1360
+ let y = g[i], x = y === "" || y === null || y === void 0 ? "" : String(y);
1361
+ f.set(x, (f.get(x) || 0) + 1);
1362
+ }
1363
+ let m = [...f.entries()].sort((g, y) => y[1] !== g[1] ? y[1] - g[1] : g[0].localeCompare(y[0]));
1364
+ o && (m = m.filter(([g]) => g !== "")), r > 0 && (m = m.slice(0, r));
1365
+ for (let [g, y] of m) h.push({
1366
+ field: i,
1367
+ value: g === "" ? "<empty>" : g,
1368
+ count: y
1369
+ });
1370
+ }
1371
+ return {
1372
+ stdout: I$1(l, h),
1373
+ stderr: "",
1374
+ exitCode: 0
1375
+ };
1376
+ }
1377
+ async function oe(e, n) {
1378
+ let t = [], s = [];
1379
+ for (let c = 0; c < e.length; c++) {
1380
+ let h = e[c];
1381
+ h === "-s" && c + 1 < e.length ? t = e[++c].split(",") : h.startsWith("-") || s.push(h);
1382
+ }
1383
+ let { headers: r, data: o, error: a } = await g(s, n);
1384
+ if (a) return a;
1385
+ let d = t.length > 0 ? t : r, u = [
1386
+ "field",
1387
+ "type",
1388
+ "count",
1389
+ "min",
1390
+ "max",
1391
+ "mean"
1392
+ ], p = [];
1393
+ for (let c of d) {
1394
+ let h = o.map((f) => f[c]).filter((f) => f != null), l = h.map((f) => typeof f == "number" ? f : Number.parseFloat(String(f))).filter((f) => !Number.isNaN(f)), i = l.length === h.length && l.length > 0;
1395
+ p.push({
1396
+ field: c,
1397
+ type: i ? "Number" : "String",
1398
+ count: h.length,
1399
+ min: i ? Math.min(...l) : "",
1400
+ max: i ? Math.max(...l) : "",
1401
+ mean: i ? Math.round(l.reduce((f, m) => f + m, 0) / l.length * 1e10) / 1e10 : ""
1402
+ });
1403
+ }
1404
+ return {
1405
+ stdout: I$1(u, p),
1406
+ stderr: "",
1407
+ exitCode: 0
1408
+ };
1409
+ }
1410
+ V();
1411
+ function Xe(e) {
1412
+ return O(H(e));
1413
+ }
1414
+ function ot(e) {
1415
+ return I1(`^${e.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`);
1416
+ }
1417
+ function B(e, n) {
1418
+ let t = [], s = /* @__PURE__ */ new Set();
1419
+ for (let r of e.split(",")) {
1420
+ let o = r.trim();
1421
+ if (o.startsWith("!")) {
1422
+ let c = B(o.slice(1), n);
1423
+ for (let h of c) s.add(h);
1424
+ continue;
1425
+ }
1426
+ if (o === "*") {
1427
+ for (let p of n) t.includes(p) || t.push(p);
1428
+ continue;
1429
+ }
1430
+ if (o.includes("*")) {
1431
+ let p = ot(o);
1432
+ for (let c of n) p.test(c) && !t.includes(c) && t.push(c);
1433
+ continue;
1434
+ }
1435
+ let a = o.match(/^([^:]*):([^:]*)$/);
1436
+ if (a && (a[1] || a[2])) {
1437
+ let p = a[1], c = a[2], h = p ? n.indexOf(p) : 0, l = c ? n.indexOf(c) : n.length - 1;
1438
+ if (h !== -1 && l !== -1) {
1439
+ let i = h <= l ? 1 : -1;
1440
+ for (let f = h; i > 0 ? f <= l : f >= l; f += i) t.includes(n[f]) || t.push(n[f]);
1441
+ }
1442
+ continue;
1443
+ }
1444
+ let d = o.match(/^(\d+)-(\d+)$/);
1445
+ if (d) {
1446
+ let p = Number.parseInt(d[1], 10), c = Number.parseInt(d[2], 10);
1447
+ for (let h = p; h <= c && h < n.length; h++) t.push(n[h]);
1448
+ continue;
1449
+ }
1450
+ let u = Number.parseInt(o, 10);
1451
+ if (!Number.isNaN(u) && u >= 0 && u < n.length) {
1452
+ t.push(n[u]);
1453
+ continue;
1454
+ }
1455
+ n.includes(o) && t.push(o);
1456
+ }
1457
+ return s.size > 0 ? t.filter((r) => !s.has(r)) : t;
1458
+ }
1459
+ async function ie(e, n) {
1460
+ let t = "", s = [];
1461
+ for (let p of e) p.startsWith("-") || (t ? s.push(p) : t = p);
1462
+ if (!t) return {
1463
+ stdout: "",
1464
+ stderr: `xan select: no columns specified
1465
+ `,
1466
+ exitCode: 1
1467
+ };
1468
+ let { headers: r, data: o, error: a } = await g(s, n);
1469
+ if (a) return a;
1470
+ let d = B(t, r);
1471
+ return {
1472
+ stdout: I$1(d, o.map((p) => {
1473
+ let c = C();
1474
+ for (let h of d) E$1(c, h, p[h]);
1475
+ return c;
1476
+ })),
1477
+ stderr: "",
1478
+ exitCode: 0
1479
+ };
1480
+ }
1481
+ async function ae(e, n) {
1482
+ let t = "", s = [];
1483
+ for (let c of e) c.startsWith("-") || (t ? s.push(c) : t = c);
1484
+ if (!t) return {
1485
+ stdout: "",
1486
+ stderr: `xan drop: no columns specified
1487
+ `,
1488
+ exitCode: 1
1489
+ };
1490
+ let { headers: r, data: o, error: a } = await g(s, n);
1491
+ if (a) return a;
1492
+ let d = new Set(B(t, r)), u = r.filter((c) => !d.has(c));
1493
+ return {
1494
+ stdout: I$1(u, o.map((c) => {
1495
+ let h = C();
1496
+ for (let l of u) E$1(h, l, c[l]);
1497
+ return h;
1498
+ })),
1499
+ stderr: "",
1500
+ exitCode: 0
1501
+ };
1502
+ }
1503
+ async function le(e, n) {
1504
+ let t = "", s = "", r = [];
1505
+ for (let c = 0; c < e.length; c++) {
1506
+ let h = e[c];
1507
+ h === "-s" && c + 1 < e.length ? s = e[++c] : h.startsWith("-") || (t ? r.push(h) : t = h);
1508
+ }
1509
+ if (!t) return {
1510
+ stdout: "",
1511
+ stderr: `xan rename: no new name(s) specified
1512
+ `,
1513
+ exitCode: 1
1514
+ };
1515
+ let { headers: o, data: a, error: d } = await g(r, n);
1516
+ if (d) return d;
1517
+ let u;
1518
+ if (s) {
1519
+ let c = s.split(","), h = t.split(","), l = /* @__PURE__ */ new Map();
1520
+ for (let i = 0; i < c.length && i < h.length; i++) l.set(c[i], h[i]);
1521
+ u = o.map((i) => l.get(i) || i);
1522
+ } else {
1523
+ let c = t.split(",");
1524
+ u = o.map((h, l) => l < c.length ? c[l] : h);
1525
+ }
1526
+ let p = a.map((c) => {
1527
+ let h = C();
1528
+ for (let l = 0; l < o.length; l++) E$1(h, u[l], c[o[l]]);
1529
+ return h;
1530
+ });
1531
+ return {
1532
+ stdout: I$1(u, p),
1533
+ stderr: "",
1534
+ exitCode: 0
1535
+ };
1536
+ }
1537
+ async function ue(e, n) {
1538
+ let t = "index", s = [];
1539
+ for (let p = 0; p < e.length; p++) e[p] === "-c" && p + 1 < e.length ? t = e[++p] : s.push(e[p]);
1540
+ let { headers: r, data: o, error: a } = await g(s, n);
1541
+ if (a) return a;
1542
+ return {
1543
+ stdout: I$1([t, ...r], o.map((p, c) => {
1544
+ let h = C();
1545
+ E$1(h, t, c);
1546
+ for (let l of r) E$1(h, l, p[l]);
1547
+ return h;
1548
+ })),
1549
+ stderr: "",
1550
+ exitCode: 0
1551
+ };
1552
+ }
1553
+ async function ce(e, n) {
1554
+ let t = e.includes("-j") || e.includes("--just-names"), { headers: s, error: r } = await g(e.filter((a) => a !== "-j" && a !== "--just-names"), n);
1555
+ return r || {
1556
+ stdout: t ? `${s.map((a) => a).join(`
1557
+ `)}
1558
+ ` : `${s.map((a, d) => `${d} ${a}`).join(`
1559
+ `)}
1560
+ `,
1561
+ stderr: "",
1562
+ exitCode: 0
1563
+ };
1564
+ }
1565
+ async function pe(e, n) {
1566
+ let { data: t, error: s } = await g(e, n);
1567
+ return s || {
1568
+ stdout: `${t.length}
1569
+ `,
1570
+ stderr: "",
1571
+ exitCode: 0
1572
+ };
1573
+ }
1574
+ async function fe(e, n) {
1575
+ let t = 10, s = [];
1576
+ for (let u = 0; u < e.length; u++) (e[u] === "-l" || e[u] === "-n") && u + 1 < e.length ? t = Number.parseInt(e[++u], 10) : s.push(e[u]);
1577
+ let { headers: r, data: o, error: a } = await g(s, n);
1578
+ if (a) return a;
1579
+ return {
1580
+ stdout: I$1(r, o.slice(0, t)),
1581
+ stderr: "",
1582
+ exitCode: 0
1583
+ };
1584
+ }
1585
+ async function de(e, n) {
1586
+ let t = 10, s = [];
1587
+ for (let u = 0; u < e.length; u++) (e[u] === "-l" || e[u] === "-n") && u + 1 < e.length ? t = Number.parseInt(e[++u], 10) : s.push(e[u]);
1588
+ let { headers: r, data: o, error: a } = await g(s, n);
1589
+ if (a) return a;
1590
+ return {
1591
+ stdout: I$1(r, o.slice(-t)),
1592
+ stderr: "",
1593
+ exitCode: 0
1594
+ };
1595
+ }
1596
+ async function he(e, n) {
1597
+ let t, s, r, o = [];
1598
+ for (let l = 0; l < e.length; l++) {
1599
+ let i = e[l];
1600
+ (i === "-s" || i === "--start") && l + 1 < e.length ? t = Number.parseInt(e[++l], 10) : (i === "-e" || i === "--end") && l + 1 < e.length ? s = Number.parseInt(e[++l], 10) : (i === "-l" || i === "--len") && l + 1 < e.length ? r = Number.parseInt(e[++l], 10) : i.startsWith("-") || o.push(i);
1601
+ }
1602
+ let { headers: a, data: d, error: u } = await g(o, n);
1603
+ if (u) return u;
1604
+ let p = t ?? 0, c;
1605
+ r !== void 0 ? c = p + r : s !== void 0 ? c = s : c = d.length;
1606
+ return {
1607
+ stdout: I$1(a, d.slice(p, c)),
1608
+ stderr: "",
1609
+ exitCode: 0
1610
+ };
1611
+ }
1612
+ async function me(e, n) {
1613
+ let { headers: t, data: s, error: r } = await g(e, n);
1614
+ if (r) return r;
1615
+ return {
1616
+ stdout: I$1(t, [...s].reverse()),
1617
+ stderr: "",
1618
+ exitCode: 0
1619
+ };
1620
+ }
1621
+ var ge = q$1(xe$1(), 1);
1622
+ async function ye(e, n) {
1623
+ let { headers: s, data: r, error: o } = await g(e.filter((p) => !p.startsWith("-")), n);
1624
+ if (o) return o;
1625
+ if (r.length === 0) return {
1626
+ stdout: I$1(["column"], s.map((h) => ({ column: h }))),
1627
+ stderr: "",
1628
+ exitCode: 0
1629
+ };
1630
+ let a = s[0], d = [a, ...r.map((p, c) => String(p[a] ?? `row_${c}`))], u = [];
1631
+ for (let p = 1; p < s.length; p++) {
1632
+ let c = s[p], h = C();
1633
+ E$1(h, a, c);
1634
+ for (let l = 0; l < r.length; l++) E$1(h, d[l + 1], r[l][c]);
1635
+ u.push(h);
1636
+ }
1637
+ return {
1638
+ stdout: I$1(d, u),
1639
+ stderr: "",
1640
+ exitCode: 0
1641
+ };
1642
+ }
1643
+ async function xe(e, n) {
1644
+ let t = null, s = [];
1645
+ for (let c = 0; c < e.length; c++) {
1646
+ let h = e[c];
1647
+ h === "--seed" && c + 1 < e.length ? t = Number.parseInt(e[++c], 10) : h.startsWith("-") || s.push(h);
1648
+ }
1649
+ let { headers: r, data: o, error: a } = await g(s, n);
1650
+ if (a) return a;
1651
+ let d = t !== null ? t : Date.now(), u = () => (d = d * 1103515245 + 12345 & 2147483647, d / 2147483647), p = [...o];
1652
+ for (let c = p.length - 1; c > 0; c--) {
1653
+ let h = Math.floor(u() * (c + 1));
1654
+ [p[c], p[h]] = [p[h], p[c]];
1655
+ }
1656
+ return {
1657
+ stdout: I$1(r, p),
1658
+ stderr: "",
1659
+ exitCode: 0
1660
+ };
1661
+ }
1662
+ async function we(e, n) {
1663
+ let t = null, s = "", r = [];
1664
+ for (let i = 0; i < e.length; i++) {
1665
+ let f = e[i];
1666
+ (f === "-l" || f === "--length") && i + 1 < e.length ? t = Number.parseInt(e[++i], 10) : (f === "-d" || f === "--default") && i + 1 < e.length ? s = e[++i] : f.startsWith("-") || r.push(f);
1667
+ }
1668
+ let o = r[0], a;
1669
+ if (!o || o === "-") a = x(n.stdin);
1670
+ else try {
1671
+ let i = n.fs.resolvePath(n.cwd, o);
1672
+ a = await n.fs.readFile(i);
1673
+ } catch {
1674
+ return {
1675
+ stdout: "",
1676
+ stderr: `xan fixlengths: ${o}: No such file or directory
1677
+ `,
1678
+ exitCode: 1
1679
+ };
1680
+ }
1681
+ let u = ge.default.parse(a.trim(), {
1682
+ header: !1,
1683
+ skipEmptyLines: !0
1684
+ }).data;
1685
+ if (u.length === 0) return {
1686
+ stdout: "",
1687
+ stderr: "",
1688
+ exitCode: 0
1689
+ };
1690
+ let p = Math.max(...u.map((i) => i.length)), c = t ?? p, h = u.map((i) => i.length === c ? i : i.length < c ? [...i, ...Array(c - i.length).fill(s)] : i.slice(0, c));
1691
+ return {
1692
+ stdout: `${ge.default.unparse(h).replace(/\r\n/g, `
1693
+ `)}
1694
+ `,
1695
+ stderr: "",
1696
+ exitCode: 0
1697
+ };
1698
+ }
1699
+ async function ve(e, n) {
1700
+ let t = null, s = null, r = ".", o = [];
1701
+ for (let l = 0; l < e.length; l++) {
1702
+ let i = e[l];
1703
+ (i === "-c" || i === "--chunks") && l + 1 < e.length ? t = Number.parseInt(e[++l], 10) : (i === "-S" || i === "--size") && l + 1 < e.length ? s = Number.parseInt(e[++l], 10) : (i === "-o" || i === "--output") && l + 1 < e.length ? r = e[++l] : i.startsWith("-") || o.push(i);
1704
+ }
1705
+ if (!t && !s) return {
1706
+ stdout: "",
1707
+ stderr: `xan split: must specify -c or -S
1708
+ `,
1709
+ exitCode: 1
1710
+ };
1711
+ let { headers: a, data: d, error: u } = await g(o, n);
1712
+ if (u) return u;
1713
+ let p = [];
1714
+ if (t) {
1715
+ let l = Math.ceil(d.length / t);
1716
+ for (let i = 0; i < t; i++) p.push(d.slice(i * l, (i + 1) * l));
1717
+ } else if (s) for (let l = 0; l < d.length; l += s) p.push(d.slice(l, l + s));
1718
+ let c = p.filter((l) => l.length > 0), h = o[0]?.replace(/\.csv$/, "") || "part";
1719
+ try {
1720
+ let l = n.fs.resolvePath(n.cwd, r);
1721
+ for (let i = 0; i < c.length; i++) {
1722
+ let f = `${h}_${String(i + 1).padStart(3, "0")}.csv`, m = n.fs.resolvePath(l, f);
1723
+ await n.fs.writeFile(m, I$1(a, c[i]));
1724
+ }
1725
+ return {
1726
+ stdout: `Split into ${c.length} parts
1727
+ `,
1728
+ stderr: "",
1729
+ exitCode: 0
1730
+ };
1731
+ } catch {
1732
+ return {
1733
+ stdout: `${c.map((i, f) => `Part ${f + 1}: ${i.length} rows`).join(`
1734
+ `)}
1735
+ `,
1736
+ stderr: "",
1737
+ exitCode: 0
1738
+ };
1739
+ }
1740
+ }
1741
+ function Ye(e) {
1742
+ return e.replace(/[^a-zA-Z0-9_-]/g, "_") || "empty";
1743
+ }
1744
+ function it(e) {
1745
+ let n = 2166136261;
1746
+ for (let t = 0; t < e.length; t++) n = (n ^ e.charCodeAt(t)) * 16777619 >>> 0;
1747
+ return n.toString(36).padStart(6, "0").slice(0, 6);
1748
+ }
1749
+ async function Ce(e, n) {
1750
+ let t = "", s = ".", r = [];
1751
+ for (let l = 0; l < e.length; l++) {
1752
+ let i = e[l];
1753
+ (i === "-o" || i === "--output") && l + 1 < e.length ? s = e[++l] : i.startsWith("-") || (t ? r.push(i) : t = i);
1754
+ }
1755
+ if (!t) return {
1756
+ stdout: "",
1757
+ stderr: `xan partition: usage: xan partition COLUMN [FILE]
1758
+ `,
1759
+ exitCode: 1
1760
+ };
1761
+ let { headers: o, data: a, error: d } = await g(r, n);
1762
+ if (d) return d;
1763
+ if (!o.includes(t)) return {
1764
+ stdout: "",
1765
+ stderr: `xan partition: column '${t}' not found
1766
+ `,
1767
+ exitCode: 1
1768
+ };
1769
+ let u = /* @__PURE__ */ new Map();
1770
+ for (let l of a) {
1771
+ let i = String(l[t] ?? "");
1772
+ u.has(i) || u.set(i, []), u.get(i)?.push(l);
1773
+ }
1774
+ let p = /* @__PURE__ */ new Map();
1775
+ for (let l of u.keys()) {
1776
+ let i = Ye(l);
1777
+ p.set(i, (p.get(i) ?? 0) + 1);
1778
+ }
1779
+ let c = /* @__PURE__ */ new Set(), h = /* @__PURE__ */ new Map();
1780
+ for (let l of u.keys()) {
1781
+ let i = Ye(l), m = (p.get(i) ?? 0) > 1 ? `${i}_${it(l)}` : i, g = `${m}.csv`, y = 1;
1782
+ for (; c.has(g);) g = `${m}_${y}.csv`, y++;
1783
+ c.add(g), h.set(l, g);
1784
+ }
1785
+ try {
1786
+ let l = n.fs.resolvePath(n.cwd, s);
1787
+ for (let [i, f] of u) {
1788
+ let m = h.get(i);
1789
+ if (!m) continue;
1790
+ let g = n.fs.resolvePath(l, m);
1791
+ await n.fs.writeFile(g, I$1(o, f));
1792
+ }
1793
+ return {
1794
+ stdout: `Partitioned into ${u.size} files by '${t}'
1795
+ `,
1796
+ stderr: "",
1797
+ exitCode: 0
1798
+ };
1799
+ } catch {
1800
+ return {
1801
+ stdout: `${Array.from(u.entries()).map(([i, f]) => `${i}: ${f.length} rows`).join(`
1802
+ `)}
1803
+ `,
1804
+ stderr: "",
1805
+ exitCode: 0
1806
+ };
1807
+ }
1808
+ }
1809
+ async function be(e, n) {
1810
+ if (e.length === 0) return {
1811
+ stdout: "",
1812
+ stderr: `xan to: usage: xan to <format> [FILE]
1813
+ `,
1814
+ exitCode: 1
1815
+ };
1816
+ let t = e[0], s = e.slice(1);
1817
+ return t === "json" ? at(s, n) : {
1818
+ stdout: "",
1819
+ stderr: `xan to: unsupported format '${t}'
1820
+ `,
1821
+ exitCode: 1
1822
+ };
1823
+ }
1824
+ async function at(e, n) {
1825
+ let { data: s, error: r } = await g(e.filter((a) => !a.startsWith("-")), n);
1826
+ return r || {
1827
+ stdout: `${JSON.stringify(s, null, 2)}
1828
+ `,
1829
+ stderr: "",
1830
+ exitCode: 0
1831
+ };
1832
+ }
1833
+ async function Se(e, n) {
1834
+ let t = "", s = [];
1835
+ for (let r = 0; r < e.length; r++) {
1836
+ let o = e[r];
1837
+ (o === "-f" || o === "--format") && r + 1 < e.length ? t = e[++r] : o.startsWith("-") || s.push(o);
1838
+ }
1839
+ return t ? t === "json" ? lt(s, n) : {
1840
+ stdout: "",
1841
+ stderr: `xan from: unsupported format '${t}'
1842
+ `,
1843
+ exitCode: 1
1844
+ } : {
1845
+ stdout: "",
1846
+ stderr: `xan from: usage: xan from -f <format> [FILE]
1847
+ `,
1848
+ exitCode: 1
1849
+ };
1850
+ }
1851
+ async function lt(e, n) {
1852
+ let t = e[0], s;
1853
+ if (!t || t === "-") s = x(n.stdin);
1854
+ else try {
1855
+ let r = n.fs.resolvePath(n.cwd, t);
1856
+ s = await n.fs.readFile(r);
1857
+ } catch {
1858
+ return {
1859
+ stdout: "",
1860
+ stderr: `xan from: ${t}: No such file or directory
1861
+ `,
1862
+ exitCode: 1
1863
+ };
1864
+ }
1865
+ try {
1866
+ let r = JSON.parse(s.trim());
1867
+ if (!Array.isArray(r)) return {
1868
+ stdout: "",
1869
+ stderr: `xan from: JSON input must be an array
1870
+ `,
1871
+ exitCode: 1
1872
+ };
1873
+ if (r.length === 0) return {
1874
+ stdout: `
1875
+ `,
1876
+ stderr: "",
1877
+ exitCode: 0
1878
+ };
1879
+ if (Array.isArray(r[0])) {
1880
+ let [a, ...d] = r;
1881
+ return {
1882
+ stdout: I$1(a, d.map((p) => {
1883
+ let c = C();
1884
+ for (let h = 0; h < a.length; h++) E$1(c, a[h], p[h]);
1885
+ return c;
1886
+ })),
1887
+ stderr: "",
1888
+ exitCode: 0
1889
+ };
1890
+ }
1891
+ return {
1892
+ stdout: I$1(Object.keys(r[0]).sort(), r),
1893
+ stderr: "",
1894
+ exitCode: 0
1895
+ };
1896
+ } catch {
1897
+ return {
1898
+ stdout: "",
1899
+ stderr: `xan from: invalid JSON input
1900
+ `,
1901
+ exitCode: 1
1902
+ };
1903
+ }
1904
+ }
1905
+ async function ke(e, n) {
1906
+ let t = !1, s$1 = 0, r = "", o = [];
1907
+ for (let l = 0; l < e.length; l++) {
1908
+ let i = e[l];
1909
+ if (i === "-v" || i === "--invert") t = !0;
1910
+ else if ((i === "-l" || i === "--limit") && l + 1 < e.length) s$1 = Number.parseInt(e[++l], 10);
1911
+ else {
1912
+ if (i === "--help") return s({
1913
+ name: "xan filter",
1914
+ summary: "Filter rows by expression",
1915
+ usage: "xan filter [OPTIONS] EXPR [FILE]",
1916
+ description: "Filter CSV rows using moonblade expressions.",
1917
+ options: [
1918
+ "-v, --invert invert match",
1919
+ "-l, --limit N limit output to N rows",
1920
+ " --help display help"
1921
+ ]
1922
+ });
1923
+ i.startsWith("-") || (r ? o.push(i) : r = i);
1924
+ }
1925
+ }
1926
+ if (!r) return {
1927
+ stdout: "",
1928
+ stderr: `xan filter: no expression specified
1929
+ `,
1930
+ exitCode: 1
1931
+ };
1932
+ let { headers: a, data: d$1, error: u } = await g(o, n);
1933
+ if (u) return u;
1934
+ let p = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, c = Xe(r), h = [];
1935
+ for (let l of d$1) {
1936
+ if (s$1 > 0 && h.length >= s$1) break;
1937
+ let i = d(l, c, p), f = i.length > 0 && i.some((m) => !!m);
1938
+ (t ? !f : f) && h.push(l);
1939
+ }
1940
+ return {
1941
+ stdout: I$1(a, h),
1942
+ stderr: "",
1943
+ exitCode: 0
1944
+ };
1945
+ }
1946
+ async function Ie(e, n) {
1947
+ let t = "", s = !1, r = !1, o = [];
1948
+ for (let c = 0; c < e.length; c++) {
1949
+ let h = e[c];
1950
+ h === "-N" || h === "--numeric" ? s = !0 : h === "-R" || h === "-r" || h === "--reverse" ? r = !0 : h === "-s" && c + 1 < e.length ? t = e[++c] : h.startsWith("-") || o.push(h);
1951
+ }
1952
+ let { headers: a, data: d, error: u } = await g(o, n);
1953
+ if (u) return u;
1954
+ !t && a.length > 0 && (t = a[0]);
1955
+ return {
1956
+ stdout: I$1(a, [...d].sort((c, h) => {
1957
+ let l = c[t], i = h[t], f;
1958
+ if (s) f = (typeof l == "number" ? l : Number.parseFloat(String(l))) - (typeof i == "number" ? i : Number.parseFloat(String(i)));
1959
+ else f = String(l).localeCompare(String(i));
1960
+ return r ? -f : f;
1961
+ })),
1962
+ stderr: "",
1963
+ exitCode: 0
1964
+ };
1965
+ }
1966
+ async function Ne(e, n) {
1967
+ let t = "", s = [];
1968
+ for (let p = 0; p < e.length; p++) {
1969
+ let c = e[p];
1970
+ c === "-s" && p + 1 < e.length ? t = e[++p] : c.startsWith("-") || s.push(c);
1971
+ }
1972
+ let { headers: r, data: o, error: a } = await g(s, n);
1973
+ if (a) return a;
1974
+ let d = /* @__PURE__ */ new Set();
1975
+ return {
1976
+ stdout: I$1(r, o.filter((p) => {
1977
+ let c = t ? String(p[t]) : JSON.stringify(p);
1978
+ return d.has(c) ? !1 : (d.add(c), !0);
1979
+ })),
1980
+ stderr: "",
1981
+ exitCode: 0
1982
+ };
1983
+ }
1984
+ async function Ee(e, n) {
1985
+ let t = 10, s = "", r = !1, o = [];
1986
+ for (let h = 0; h < e.length; h++) {
1987
+ let l = e[h];
1988
+ (l === "-l" || l === "-n") && h + 1 < e.length ? t = Number.parseInt(e[++h], 10) : l === "-R" || l === "-r" || l === "--reverse" ? r = !0 : l.startsWith("-") || (s ? o.push(l) : s = l);
1989
+ }
1990
+ let { headers: a, data: d, error: u } = await g(o, n);
1991
+ if (u) return u;
1992
+ !s && a.length > 0 && (s = a[0]);
1993
+ return {
1994
+ stdout: I$1(a, [...d].sort((h, l) => {
1995
+ let i = h[s], f = l[s], m = typeof i == "number" ? i : Number.parseFloat(String(i)), g = typeof f == "number" ? f : Number.parseFloat(String(f));
1996
+ return r ? m - g : g - m;
1997
+ }).slice(0, t)),
1998
+ stderr: "",
1999
+ exitCode: 0
2000
+ };
2001
+ }
2002
+ V();
2003
+ async function Ae(e, n) {
2004
+ let t = "", s = !1, r = !1, o = [];
2005
+ for (let f = 0; f < e.length; f++) {
2006
+ let m = e[f];
2007
+ m === "-O" || m === "--overwrite" ? s = !0 : m === "--filter" ? r = !0 : m.startsWith("-") || (t ? o.push(m) : t = m);
2008
+ }
2009
+ if (!t) return {
2010
+ stdout: "",
2011
+ stderr: `xan map: no expression specified
2012
+ `,
2013
+ exitCode: 1
2014
+ };
2015
+ let { headers: a, data: d$2, error: u } = await g(o, n);
2016
+ if (u) return u;
2017
+ let c = U(t).map(({ expr: f, name: m }) => ({
2018
+ alias: typeof m == "string" ? m : m[0],
2019
+ ast: O(f)
2020
+ })), h = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, l;
2021
+ if (s) {
2022
+ l = [...a];
2023
+ for (let f of c) a.includes(f.alias) || l.push(f.alias);
2024
+ } else l = [...a, ...c.map((f) => f.alias)];
2025
+ let i = [];
2026
+ for (let f = 0; f < d$2.length; f++) {
2027
+ let m = d$2[f], g = b(m), y = !1, x = Object.assign(S$1(m), { _row_index: f });
2028
+ for (let k of c) {
2029
+ let N = d(x, k.ast, h), C = N.length > 0 ? N[0] : null;
2030
+ if (r && C == null) {
2031
+ y = !0;
2032
+ break;
2033
+ }
2034
+ E$1(g, k.alias, C);
2035
+ }
2036
+ y || i.push(g);
2037
+ }
2038
+ return {
2039
+ stdout: I$1(l, i),
2040
+ stderr: "",
2041
+ exitCode: 0
2042
+ };
2043
+ }
2044
+ async function Fe(e, n) {
2045
+ let t = "", s = "", r$1 = "", o = [];
2046
+ for (let m = 0; m < e.length; m++) {
2047
+ let g = e[m];
2048
+ (g === "-r" || g === "--rename") && m + 1 < e.length ? r$1 = e[++m] : g.startsWith("-") || (t ? s ? o.push(g) : s = g : t = g);
2049
+ }
2050
+ if (!t || !s) return {
2051
+ stdout: "",
2052
+ stderr: `xan transform: usage: xan transform COLUMN EXPR [FILE]
2053
+ `,
2054
+ exitCode: 1
2055
+ };
2056
+ let { headers: a, data: d$3, error: u } = await g(o, n);
2057
+ if (u) return u;
2058
+ let p = t.split(",").map((m) => m.trim()), c = r$1 ? r$1.split(",").map((m) => m.trim()) : [];
2059
+ for (let m of p) if (!a.includes(m)) return {
2060
+ stdout: "",
2061
+ stderr: `xan transform: column '${m}' not found
2062
+ `,
2063
+ exitCode: 1
2064
+ };
2065
+ let h = O(U(s)[0]?.expr || (V(), r(ze)).parseMoonblade(s)), l = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, i = a.map((m) => {
2066
+ let g = p.indexOf(m);
2067
+ return g !== -1 && c[g] ? c[g] : m;
2068
+ }), f = [];
2069
+ for (let m of d$3) {
2070
+ let g = b(m);
2071
+ for (let y = 0; y < p.length; y++) {
2072
+ let x = p[y], N = d(Object.assign(S$1(m), { _: m[x] }), h, l), C = N.length > 0 ? N[0] : null, A = c[y] || x;
2073
+ A !== x && delete g[x], E$1(g, A, C);
2074
+ }
2075
+ f.push(g);
2076
+ }
2077
+ return {
2078
+ stdout: I$1(i, f),
2079
+ stderr: "",
2080
+ exitCode: 0
2081
+ };
2082
+ }
2083
+ async function Oe(e, n) {
2084
+ let t = "", s = "|", r = !1, o = "", a = [];
2085
+ for (let i = 0; i < e.length; i++) {
2086
+ let f = e[i];
2087
+ (f === "-s" || f === "--separator") && i + 1 < e.length ? s = e[++i] : f === "--drop-empty" ? r = !0 : (f === "-r" || f === "--rename") && i + 1 < e.length ? o = e[++i] : f.startsWith("-") || (t ? a.push(f) : t = f);
2088
+ }
2089
+ if (!t) return {
2090
+ stdout: "",
2091
+ stderr: `xan explode: usage: xan explode COLUMN [FILE]
2092
+ `,
2093
+ exitCode: 1
2094
+ };
2095
+ let { headers: d, data: u, error: p } = await g(a, n);
2096
+ if (p) return p;
2097
+ if (!d.includes(t)) return {
2098
+ stdout: "",
2099
+ stderr: `xan explode: column '${t}' not found
2100
+ `,
2101
+ exitCode: 1
2102
+ };
2103
+ let c = o ? d.map((i) => i === t ? o : i) : d, h = o || t, l = [];
2104
+ for (let i of u) {
2105
+ let f = i[t], m = f == null ? "" : String(f);
2106
+ if (m === "") {
2107
+ if (!r) {
2108
+ let g = b(i);
2109
+ o && (delete g[t], E$1(g, h, "")), l.push(g);
2110
+ }
2111
+ } else {
2112
+ let g = m.split(s);
2113
+ for (let y of g) {
2114
+ let x = b(i);
2115
+ o && delete x[t], E$1(x, h, y), l.push(x);
2116
+ }
2117
+ }
2118
+ }
2119
+ return {
2120
+ stdout: I$1(c, l),
2121
+ stderr: "",
2122
+ exitCode: 0
2123
+ };
2124
+ }
2125
+ async function Le(e, n) {
2126
+ let t = "", s = "|", r = "", o = [];
2127
+ for (let g = 0; g < e.length; g++) {
2128
+ let y = e[g];
2129
+ (y === "-s" || y === "--sep") && g + 1 < e.length ? s = e[++g] : (y === "-r" || y === "--rename") && g + 1 < e.length ? r = e[++g] : y.startsWith("-") || (t ? o.push(y) : t = y);
2130
+ }
2131
+ if (!t) return {
2132
+ stdout: "",
2133
+ stderr: `xan implode: usage: xan implode COLUMN [FILE]
2134
+ `,
2135
+ exitCode: 1
2136
+ };
2137
+ let { headers: a, data: d, error: u } = await g(o, n);
2138
+ if (u) return u;
2139
+ if (!a.includes(t)) return {
2140
+ stdout: "",
2141
+ stderr: `xan implode: column '${t}' not found
2142
+ `,
2143
+ exitCode: 1
2144
+ };
2145
+ let p = a.filter((g) => g !== t), c = r ? a.map((g) => g === t ? r : g) : a, h = r || t, l = [], i = null, f = [], m = null;
2146
+ for (let g of d) {
2147
+ let y = p.map((N) => String(g[N] ?? "")).join("\0"), x = g[t], k = x == null ? "" : String(x);
2148
+ if (y !== i) {
2149
+ if (m !== null) {
2150
+ let N = b(m);
2151
+ r && delete N[t], E$1(N, h, f.join(s)), l.push(N);
2152
+ }
2153
+ i = y, f = [k], m = g;
2154
+ } else f.push(k);
2155
+ }
2156
+ if (m !== null) {
2157
+ let g = b(m);
2158
+ r && delete g[t], E$1(g, h, f.join(s)), l.push(g);
2159
+ }
2160
+ return {
2161
+ stdout: I$1(c, l),
2162
+ stderr: "",
2163
+ exitCode: 0
2164
+ };
2165
+ }
2166
+ async function Pe(e, n) {
2167
+ let t = "", s = "", r = "", o = "", a = "inner", d = "", u = 0;
2168
+ for (let C = 0; C < e.length; C++) {
2169
+ let A = e[C];
2170
+ A === "--left" ? a = "left" : A === "--right" ? a = "right" : A === "--full" ? a = "full" : (A === "-D" || A === "--default") && C + 1 < e.length ? d = e[++C] : A.startsWith("-") || (u++, u === 1 ? t = A : u === 2 ? s = A : u === 3 ? r = A : u === 4 && (o = A));
2171
+ }
2172
+ if (!t || !s || !r || !o) return {
2173
+ stdout: "",
2174
+ stderr: `xan join: usage: xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]
2175
+ `,
2176
+ exitCode: 1
2177
+ };
2178
+ let p = await g([s], n);
2179
+ if (p.error) return p.error;
2180
+ let c = await g([o], n);
2181
+ if (c.error) return c.error;
2182
+ let { headers: h, data: l } = p, { headers: i, data: f } = c;
2183
+ if (!h.includes(t)) return {
2184
+ stdout: "",
2185
+ stderr: `xan join: column '${t}' not found in first file
2186
+ `,
2187
+ exitCode: 1
2188
+ };
2189
+ if (!i.includes(r)) return {
2190
+ stdout: "",
2191
+ stderr: `xan join: column '${r}' not found in second file
2192
+ `,
2193
+ exitCode: 1
2194
+ };
2195
+ let m = /* @__PURE__ */ new Map();
2196
+ for (let C of f) {
2197
+ let A = String(C[r] ?? "");
2198
+ m.has(A) || m.set(A, []), m.get(A)?.push(C);
2199
+ }
2200
+ let g$1 = new Set(h), y = i.filter((C) => !g$1.has(C)), x = [...h, ...y], k = [], N = /* @__PURE__ */ new Set();
2201
+ for (let C$1 of l) {
2202
+ let A = String(C$1[t] ?? ""), j = m.get(A);
2203
+ if (j && j.length > 0) {
2204
+ N.add(A);
2205
+ for (let L of j) {
2206
+ let T = C();
2207
+ for (let W of h) E$1(T, W, C$1[W]);
2208
+ for (let W of y) E$1(T, W, L[W]);
2209
+ k.push(T);
2210
+ }
2211
+ } else if (a === "left" || a === "full") {
2212
+ let L = C();
2213
+ for (let T of h) E$1(L, T, C$1[T]);
2214
+ for (let T of y) E$1(L, T, d);
2215
+ k.push(L);
2216
+ }
2217
+ }
2218
+ if (a === "right" || a === "full") for (let C$2 of f) {
2219
+ let A = String(C$2[r] ?? "");
2220
+ if (!N.has(A)) {
2221
+ let j = C();
2222
+ for (let L of h) E$1(j, L, i.includes(L) ? C$2[L] : d);
2223
+ for (let L of y) E$1(j, L, C$2[L]);
2224
+ k.push(j);
2225
+ }
2226
+ }
2227
+ return {
2228
+ stdout: I$1(x, k),
2229
+ stderr: "",
2230
+ exitCode: 0
2231
+ };
2232
+ }
2233
+ async function Re(e, n) {
2234
+ let t = "", s = "", r = [], o = [];
2235
+ for (let y = 0; y < e.length; y++) {
2236
+ let x = e[y];
2237
+ (x === "-g" || x === "--groupby") && y + 1 < e.length ? r = e[++y].split(",").map((k) => k.trim()) : x.startsWith("-") || (t ? s ? o.push(x) : s = x : t = x);
2238
+ }
2239
+ if (!t || !s) return {
2240
+ stdout: "",
2241
+ stderr: `xan pivot: usage: xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]
2242
+ `,
2243
+ exitCode: 1
2244
+ };
2245
+ let { headers: a, data: d, error: u } = await g(o, n);
2246
+ if (u) return u;
2247
+ if (!a.includes(t)) return {
2248
+ stdout: "",
2249
+ stderr: `xan pivot: column '${t}' not found
2250
+ `,
2251
+ exitCode: 1
2252
+ };
2253
+ let p = s.match(/^(\w+)\((\w+)\)$/);
2254
+ if (!p) return {
2255
+ stdout: "",
2256
+ stderr: `xan pivot: invalid aggregation expression '${s}'
2257
+ `,
2258
+ exitCode: 1
2259
+ };
2260
+ let [, c, h] = p;
2261
+ r.length === 0 && (r = a.filter((y) => y !== t && y !== h));
2262
+ let l = [];
2263
+ for (let y of d) {
2264
+ let x = String(y[t] ?? "");
2265
+ l.includes(x) || l.push(x);
2266
+ }
2267
+ let i = /* @__PURE__ */ new Map(), f = [];
2268
+ for (let y of d) {
2269
+ let x = r.map((A) => String(y[A] ?? "")).join("\0"), k = String(y[t] ?? ""), N = y[h];
2270
+ i.has(x) || (i.set(x, /* @__PURE__ */ new Map()), f.push(x));
2271
+ let C = i.get(x);
2272
+ C && (C.has(k) || C.set(k, []), C.get(k)?.push(N));
2273
+ }
2274
+ let m = [...r, ...l], g$2 = [];
2275
+ for (let y of f) {
2276
+ let x = y.split("\0"), k = i.get(y);
2277
+ if (!k) continue;
2278
+ let N = C();
2279
+ for (let C = 0; C < r.length; C++) E$1(N, r[C], x[C]);
2280
+ for (let C of l) E$1(N, C, ut(c, k.get(C) || []));
2281
+ g$2.push(N);
2282
+ }
2283
+ return {
2284
+ stdout: I$1(m, g$2),
2285
+ stderr: "",
2286
+ exitCode: 0
2287
+ };
2288
+ }
2289
+ function ut(e, n) {
2290
+ let t = n.filter((s) => s != null).map((s) => typeof s == "number" ? s : Number.parseFloat(String(s))).filter((s) => !Number.isNaN(s));
2291
+ switch (e) {
2292
+ case "count": return n.length;
2293
+ case "sum": return t.reduce((s, r) => s + r, 0);
2294
+ case "mean":
2295
+ case "avg": return t.length > 0 ? t.reduce((s, r) => s + r, 0) / t.length : null;
2296
+ case "min": return t.length > 0 ? Math.min(...t) : null;
2297
+ case "max": return t.length > 0 ? Math.max(...t) : null;
2298
+ case "first": return n.length > 0 ? String(n[0] ?? "") : null;
2299
+ case "last": return n.length > 0 ? String(n[n.length - 1] ?? "") : null;
2300
+ default: return null;
2301
+ }
2302
+ }
2303
+ async function Me(e, n) {
2304
+ let t = "", s = [];
2305
+ for (let d = 0; d < e.length; d++) {
2306
+ let u = e[d];
2307
+ (u === "-s" || u === "--sort") && d + 1 < e.length ? t = e[++d] : u.startsWith("-") || s.push(u);
2308
+ }
2309
+ if (s.length < 2) return {
2310
+ stdout: "",
2311
+ stderr: `xan merge: usage: xan merge [OPTIONS] FILE1 FILE2 ...
2312
+ `,
2313
+ exitCode: 1
2314
+ };
2315
+ let r = [], o = null;
2316
+ for (let d of s) {
2317
+ let u = await g([d], n);
2318
+ if (u.error) return u.error;
2319
+ if (o === null) o = u.headers;
2320
+ else if (JSON.stringify(o) !== JSON.stringify(u.headers)) return {
2321
+ stdout: "",
2322
+ stderr: `xan merge: all files must have the same headers
2323
+ `,
2324
+ exitCode: 1
2325
+ };
2326
+ r.push({
2327
+ headers: u.headers,
2328
+ data: u.data
2329
+ });
2330
+ }
2331
+ if (!o) return {
2332
+ stdout: "",
2333
+ stderr: "",
2334
+ exitCode: 0
2335
+ };
2336
+ let a = [];
2337
+ for (let { data: d } of r) a = a.concat(d);
2338
+ if (t) {
2339
+ if (!o.includes(t)) return {
2340
+ stdout: "",
2341
+ stderr: `xan merge: column '${t}' not found
2342
+ `,
2343
+ exitCode: 1
2344
+ };
2345
+ a.sort((d, u) => {
2346
+ let p = d[t], c = u[t], h = typeof p == "number" ? p : Number.parseFloat(String(p)), l = typeof c == "number" ? c : Number.parseFloat(String(c));
2347
+ return !Number.isNaN(h) && !Number.isNaN(l) ? h - l : String(p ?? "").localeCompare(String(c ?? ""));
2348
+ });
2349
+ }
2350
+ return {
2351
+ stdout: I$1(o, a),
2352
+ stderr: "",
2353
+ exitCode: 0
2354
+ };
2355
+ }
2356
+ V();
2357
+ async function $e(e, n) {
2358
+ let { headers: s, data: r, error: o } = await g(e.filter((u) => !u.startsWith("-")), n);
2359
+ return o || (r.length === 0 ? {
2360
+ stdout: "",
2361
+ stderr: "",
2362
+ exitCode: 0
2363
+ } : {
2364
+ stdout: r.map((u) => s.map((p) => u[p])).map((u) => u.map((p) => ct(p)).join(",")).join(`
2365
+ `) + `
2366
+ `,
2367
+ stderr: "",
2368
+ exitCode: 0
2369
+ });
2370
+ }
2371
+ function ct(e) {
2372
+ if (e == null) return "";
2373
+ let n = String(e);
2374
+ return n.includes(",") || n.includes("\"") || n.includes(`
2375
+ `) ? `"${n.replace(/"/g, "\"\"")}"` : n;
2376
+ }
2377
+ async function Te(e, n) {
2378
+ let t = null, s = null, r = [];
2379
+ for (let l = 0; l < e.length; l++) {
2380
+ let i = e[l];
2381
+ if (i === "--seed" && l + 1 < e.length) s = Number.parseInt(e[++l], 10);
2382
+ else if (!i.startsWith("-")) {
2383
+ let f = Number.parseInt(i, 10);
2384
+ t === null && !Number.isNaN(f) && f > 0 ? t = f : r.push(i);
2385
+ }
2386
+ }
2387
+ if (t === null) return {
2388
+ stdout: "",
2389
+ stderr: `xan sample: usage: xan sample <sample-size> [FILE]
2390
+ `,
2391
+ exitCode: 1
2392
+ };
2393
+ let { headers: o, data: a, error: d } = await g(r, n);
2394
+ if (d) return d;
2395
+ if (a.length <= t) return {
2396
+ stdout: I$1(o, a),
2397
+ stderr: "",
2398
+ exitCode: 0
2399
+ };
2400
+ let u = s !== null ? s : Date.now(), p = () => (u = u * 1103515245 + 12345 & 2147483647, u / 2147483647), c = a.map((l, i) => i);
2401
+ for (let l = c.length - 1; l > 0; l--) {
2402
+ let i = Math.floor(p() * (l + 1));
2403
+ [c[l], c[i]] = [c[i], c[l]];
2404
+ }
2405
+ return {
2406
+ stdout: I$1(o, c.slice(0, t).sort((l, i) => l - i).map((l) => a[l])),
2407
+ stderr: "",
2408
+ exitCode: 0
2409
+ };
2410
+ }
2411
+ async function je(e, n) {
2412
+ let t = !1, s = [];
2413
+ for (let u = 0; u < e.length; u++) {
2414
+ let p = e[u];
2415
+ p === "-p" || p === "--pad" ? t = !0 : p.startsWith("-") || s.push(p);
2416
+ }
2417
+ if (s.length === 0) return {
2418
+ stdout: "",
2419
+ stderr: `xan cat: no files specified
2420
+ `,
2421
+ exitCode: 1
2422
+ };
2423
+ let r = await w(n, s, {
2424
+ cmdName: "xan cat",
2425
+ stopOnError: !0
2426
+ });
2427
+ if (r.exitCode !== 0) return {
2428
+ stdout: "",
2429
+ stderr: r.stderr,
2430
+ exitCode: r.exitCode
2431
+ };
2432
+ let o = [], a = [];
2433
+ for (let { content: u } of r.files) {
2434
+ let { headers: p, data: c } = S$2(x(u));
2435
+ o.push({
2436
+ headers: p,
2437
+ data: c
2438
+ });
2439
+ for (let h of p) a.includes(h) || a.push(h);
2440
+ }
2441
+ if (!t) {
2442
+ let u = JSON.stringify(o[0].headers);
2443
+ for (let p = 1; p < o.length; p++) if (JSON.stringify(o[p].headers) !== u) return {
2444
+ stdout: "",
2445
+ stderr: `xan cat: headers do not match (use -p to pad)
2446
+ `,
2447
+ exitCode: 1
2448
+ };
2449
+ a = o[0].headers;
2450
+ }
2451
+ let d = [];
2452
+ for (let { headers: u, data: p } of o) for (let c of p) {
2453
+ let h = C();
2454
+ for (let l of a) E$1(h, l, u.includes(l) ? c[l] : "");
2455
+ d.push(h);
2456
+ }
2457
+ return {
2458
+ stdout: I$1(a, d),
2459
+ stderr: "",
2460
+ exitCode: 0
2461
+ };
2462
+ }
2463
+ async function De(e, n) {
2464
+ let t = "", s = [], r = !1, o = !1, a = [];
2465
+ for (let i = 0; i < e.length; i++) {
2466
+ let f = e[i];
2467
+ (f === "-s" || f === "--select") && i + 1 < e.length ? s = e[++i].split(",") : f === "-v" || f === "--invert" ? r = !0 : f === "-i" || f === "--ignore-case" ? o = !0 : f === "-r" || f === "--regex" || f.startsWith("-") || (t ? a.push(f) : t = f);
2468
+ }
2469
+ if (!t) return {
2470
+ stdout: "",
2471
+ stderr: `xan search: no pattern specified
2472
+ `,
2473
+ exitCode: 1
2474
+ };
2475
+ let { headers: d, data: u, error: p } = await g(a, n);
2476
+ if (p) return p;
2477
+ let c = s.length > 0 ? s : d, h;
2478
+ try {
2479
+ h = I1(t, o ? "i" : "");
2480
+ } catch {
2481
+ return {
2482
+ stdout: "",
2483
+ stderr: `xan search: invalid regex pattern '${t}'
2484
+ `,
2485
+ exitCode: 1
2486
+ };
2487
+ }
2488
+ return {
2489
+ stdout: I$1(d, u.filter((i) => {
2490
+ let f = c.some((m) => {
2491
+ let g = i[m];
2492
+ return g != null && h.test(String(g));
2493
+ });
2494
+ return r ? !f : f;
2495
+ })),
2496
+ stderr: "",
2497
+ exitCode: 0
2498
+ };
2499
+ }
2500
+ async function Ue(e, n) {
2501
+ let t = "", s = [];
2502
+ for (let l of e) l.startsWith("-") || (t ? s.push(l) : t = l);
2503
+ if (!t) return {
2504
+ stdout: "",
2505
+ stderr: `xan flatmap: no expression specified
2506
+ `,
2507
+ exitCode: 1
2508
+ };
2509
+ let { headers: r, data: o, error: a } = await g(s, n);
2510
+ if (a) return a;
2511
+ let u = U(t).map(({ expr: l, name: i }) => ({
2512
+ alias: typeof i == "string" ? i : i[0],
2513
+ ast: O(l)
2514
+ })), p = { limits: n.limits ? { maxIterations: n.limits.maxJqIterations } : void 0 }, c = [...r, ...u.map((l) => l.alias)], h = [];
2515
+ for (let l of o) {
2516
+ let i = [], f = 1;
2517
+ for (let m of u) {
2518
+ let g = d(l, m.ast, p), y = g.length > 0 && Array.isArray(g[0]) ? g[0] : g;
2519
+ i.push(y), f = Math.max(f, y.length);
2520
+ }
2521
+ for (let m = 0; m < f; m++) {
2522
+ let g = b(l);
2523
+ for (let y = 0; y < u.length; y++) {
2524
+ let x = i[y][m] ?? null;
2525
+ E$1(g, u[y].alias, x);
2526
+ }
2527
+ h.push(g);
2528
+ }
2529
+ }
2530
+ return {
2531
+ stdout: I$1(c, h),
2532
+ stderr: "",
2533
+ exitCode: 0
2534
+ };
2535
+ }
2536
+ async function Ve(e, n) {
2537
+ let { cmdView: t } = await import("./xan-view-HDVKHFC2-DhDNVE_V.mjs");
2538
+ return t(e, n);
2539
+ }
2540
+ var Qe = new Set([
2541
+ "fuzzy-join",
2542
+ "glob",
2543
+ "hist",
2544
+ "input",
2545
+ "parallel",
2546
+ "plot",
2547
+ "progress",
2548
+ "range",
2549
+ "scrape",
2550
+ "tokenize",
2551
+ "union-find"
2552
+ ]), pt = new Set([
2553
+ "agg",
2554
+ "behead",
2555
+ "cat",
2556
+ "count",
2557
+ "dedup",
2558
+ "drop",
2559
+ "enum",
2560
+ "explode",
2561
+ "f",
2562
+ "filter",
2563
+ "fixlengths",
2564
+ "flatmap",
2565
+ "flatten",
2566
+ "fmt",
2567
+ "frequency",
2568
+ "freq",
2569
+ "from",
2570
+ "groupby",
2571
+ "head",
2572
+ "headers",
2573
+ "implode",
2574
+ "join",
2575
+ "map",
2576
+ "merge",
2577
+ "partition",
2578
+ "pivot",
2579
+ "rename",
2580
+ "reverse",
2581
+ "sample",
2582
+ "search",
2583
+ "select",
2584
+ "shuffle",
2585
+ "slice",
2586
+ "sort",
2587
+ "split",
2588
+ "stats",
2589
+ "tail",
2590
+ "to",
2591
+ "top",
2592
+ "transform",
2593
+ "transpose",
2594
+ "view",
2595
+ ...Qe
2596
+ ]), Ze = {
2597
+ name: "xan",
2598
+ summary: "CSV toolkit for data manipulation",
2599
+ usage: "xan <COMMAND> [OPTIONS] [FILE]",
2600
+ description: `xan is a collection of commands for working with CSV data.
2601
+ It provides a simple, ergonomic interface for common data operations.
2602
+
2603
+ COMMANDS:
2604
+ Core:
2605
+ headers Show column names
2606
+ count Count rows
2607
+ head Show first N rows
2608
+ tail Show last N rows
2609
+ slice Extract row range
2610
+ reverse Reverse row order
2611
+ behead Remove header row
2612
+ sample Random sample of rows
2613
+
2614
+ Column operations:
2615
+ select Select columns (supports glob, ranges, negation)
2616
+ drop Drop columns
2617
+ rename Rename columns
2618
+ enum Add row index column
2619
+
2620
+ Row operations:
2621
+ filter Filter rows by expression
2622
+ search Filter rows by regex match
2623
+ sort Sort rows
2624
+ dedup Remove duplicates
2625
+ top Get top N by column
2626
+
2627
+ Transformations:
2628
+ map Add computed columns
2629
+ transform Modify existing columns
2630
+ explode Split column into multiple rows
2631
+ implode Combine rows, join column values
2632
+ flatmap Map returning multiple rows
2633
+ pivot Reshape rows into columns
2634
+ transpose Swap rows and columns
2635
+
2636
+ Aggregation:
2637
+ agg Aggregate values
2638
+ groupby Group and aggregate
2639
+ frequency Count value occurrences
2640
+ stats Show column statistics
2641
+
2642
+ Multi-file:
2643
+ cat Concatenate CSV files
2644
+ join Join two CSV files on key
2645
+ merge Merge sorted CSV files
2646
+ split Split into multiple files
2647
+ partition Split by column value
2648
+
2649
+ Data conversion:
2650
+ to Convert CSV to other formats (json)
2651
+ from Convert other formats to CSV (json)
2652
+ shuffle Randomly reorder rows
2653
+ fixlengths Fix ragged CSV files
2654
+
2655
+ Output:
2656
+ view Pretty print as table
2657
+ flatten Display records vertically (alias: f)
2658
+ fmt Format output
2659
+
2660
+ EXAMPLES:
2661
+ xan headers data.csv
2662
+ xan count data.csv
2663
+ xan head -n 5 data.csv
2664
+ xan select name,email data.csv
2665
+ xan select 'vec_*' data.csv # glob pattern
2666
+ xan select 'a:c' data.csv # column range
2667
+ xan filter 'age > 30' data.csv
2668
+ xan search -r '^foo' data.csv
2669
+ xan sort -N price data.csv
2670
+ xan agg 'sum(amount) as total' data.csv
2671
+ xan groupby region 'count() as n' data.csv
2672
+ xan explode tags data.csv
2673
+ xan join id file1.csv id file2.csv
2674
+ xan pivot year 'sum(sales)' data.csv`,
2675
+ options: [" --help display this help and exit"]
2676
+ }, ft = {
2677
+ headers: {
2678
+ name: "xan headers",
2679
+ summary: "Show column names",
2680
+ usage: "xan headers [OPTIONS] [FILE]",
2681
+ description: "Display column names from a CSV file.",
2682
+ options: ["-j, --just-names show names only (no index)"]
2683
+ },
2684
+ count: {
2685
+ name: "xan count",
2686
+ summary: "Count rows",
2687
+ usage: "xan count [FILE]",
2688
+ description: "Count the number of data rows (excluding header).",
2689
+ options: []
2690
+ },
2691
+ filter: {
2692
+ name: "xan filter",
2693
+ summary: "Filter rows by expression",
2694
+ usage: "xan filter [OPTIONS] EXPR [FILE]",
2695
+ description: "Filter CSV rows using moonblade expressions.",
2696
+ options: ["-v, --invert invert match", "-l, --limit N limit output rows"]
2697
+ },
2698
+ search: {
2699
+ name: "xan search",
2700
+ summary: "Filter rows by regex",
2701
+ usage: "xan search [OPTIONS] PATTERN [FILE]",
2702
+ description: "Filter CSV rows by regex match on columns.",
2703
+ options: [
2704
+ "-s, --select COLS search only these columns",
2705
+ "-v, --invert invert match",
2706
+ "-i, --ignore-case case insensitive"
2707
+ ]
2708
+ },
2709
+ select: {
2710
+ name: "xan select",
2711
+ summary: "Select columns",
2712
+ usage: "xan select COLS [FILE]",
2713
+ description: "Select columns by name, index, glob, or range.",
2714
+ options: ["Supports: col names, indices (0,1), ranges (a:c), globs (vec_*), negation (!col)"]
2715
+ },
2716
+ explode: {
2717
+ name: "xan explode",
2718
+ summary: "Split column into rows",
2719
+ usage: "xan explode COLUMN [OPTIONS] [FILE]",
2720
+ description: "Split delimited column values into multiple rows.",
2721
+ options: [
2722
+ "-s, --separator SEP separator (default: |)",
2723
+ "--drop-empty drop empty values",
2724
+ "-r, --rename NAME rename column"
2725
+ ]
2726
+ },
2727
+ implode: {
2728
+ name: "xan implode",
2729
+ summary: "Combine rows",
2730
+ usage: "xan implode COLUMN [OPTIONS] [FILE]",
2731
+ description: "Combine consecutive rows, joining column values.",
2732
+ options: ["-s, --sep SEP separator (default: |)", "-r, --rename NAME rename column"]
2733
+ },
2734
+ join: {
2735
+ name: "xan join",
2736
+ summary: "Join CSV files",
2737
+ usage: "xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]",
2738
+ description: "Join two CSV files on key columns.",
2739
+ options: [
2740
+ "--left left outer join",
2741
+ "--right right outer join",
2742
+ "--full full outer join",
2743
+ "-D, --default VAL default for missing"
2744
+ ]
2745
+ },
2746
+ pivot: {
2747
+ name: "xan pivot",
2748
+ summary: "Reshape to columns",
2749
+ usage: "xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]",
2750
+ description: "Turn row values into columns.",
2751
+ options: ["-g, --groupby COLS group by columns"]
2752
+ }
2753
+ }, yn = {
2754
+ name: "xan",
2755
+ async execute(e, n) {
2756
+ if (e.length === 0 || o(e)) return s(Ze);
2757
+ let t = e[0], s$2 = e.slice(1);
2758
+ if (o(s$2)) {
2759
+ let r = ft[t];
2760
+ return r ? s(r) : s(Ze);
2761
+ }
2762
+ if (Qe.has(t)) return {
2763
+ stdout: "",
2764
+ stderr: `xan ${t}: not yet implemented
2765
+ `,
2766
+ exitCode: 1
2767
+ };
2768
+ switch (t) {
2769
+ case "headers": return ce(s$2, n);
2770
+ case "count": return pe(s$2, n);
2771
+ case "head": return fe(s$2, n);
2772
+ case "tail": return de(s$2, n);
2773
+ case "slice": return he(s$2, n);
2774
+ case "reverse": return me(s$2, n);
2775
+ case "behead": return $e(s$2, n);
2776
+ case "sample": return Te(s$2, n);
2777
+ case "select": return ie(s$2, n);
2778
+ case "drop": return ae(s$2, n);
2779
+ case "rename": return le(s$2, n);
2780
+ case "enum": return ue(s$2, n);
2781
+ case "filter": return ke(s$2, n);
2782
+ case "search": return De(s$2, n);
2783
+ case "sort": return Ie(s$2, n);
2784
+ case "dedup": return Ne(s$2, n);
2785
+ case "top": return Ee(s$2, n);
2786
+ case "map": return Ae(s$2, n);
2787
+ case "transform": return Fe(s$2, n);
2788
+ case "explode": return Oe(s$2, n);
2789
+ case "implode": return Le(s$2, n);
2790
+ case "flatmap": return Ue(s$2, n);
2791
+ case "pivot": return Re(s$2, n);
2792
+ case "agg": return ne(s$2, n);
2793
+ case "groupby": return se(s$2, n);
2794
+ case "frequency":
2795
+ case "freq": return re(s$2, n);
2796
+ case "stats": return oe(s$2, n);
2797
+ case "cat": return je(s$2, n);
2798
+ case "join": return Pe(s$2, n);
2799
+ case "merge": return Me(s$2, n);
2800
+ case "split": return ve(s$2, n);
2801
+ case "partition": return Ce(s$2, n);
2802
+ case "to": return be(s$2, n);
2803
+ case "from": return Se(s$2, n);
2804
+ case "transpose": return ye(s$2, n);
2805
+ case "shuffle": return xe(s$2, n);
2806
+ case "fixlengths": return we(s$2, n);
2807
+ case "view": return A(s$2, n);
2808
+ case "flatten":
2809
+ case "f": return N(s$2, n);
2810
+ case "fmt": return Ve(s$2, n);
2811
+ default: return pt.has(t) ? {
2812
+ stdout: "",
2813
+ stderr: `xan ${t}: not yet implemented
2814
+ `,
2815
+ exitCode: 1
2816
+ } : {
2817
+ stdout: "",
2818
+ stderr: `xan: unknown command '${t}'
2819
+ Run 'xan --help' for usage.
2820
+ `,
2821
+ exitCode: 1
2822
+ };
2823
+ }
2824
+ }
2825
+ };
2826
+ //#endregion
2827
+ //#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/xan-Y6WF3IRG.js
2828
+ createRequire(import.meta.url);
2829
+ //#endregion
2830
+ export { yn as xanCommand };
2831
+
2832
+ //# sourceMappingURL=xan-Y6WF3IRG-DjKO96Pj.mjs.map