just-bash 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +4 -4
  2. package/dist/Bash.d.ts +0 -6
  3. package/dist/bin/chunks/cat-ZEMMQGY5.js +6 -0
  4. package/dist/bin/chunks/chunk-45SNFRCY.js +3 -0
  5. package/dist/bin/chunks/chunk-OBH7XN5N.js +1 -0
  6. package/dist/bin/{shell/chunks/chunk-OQRRF62X.js → chunks/chunk-UUQYHLBO.js} +3 -3
  7. package/dist/bin/chunks/cut-WWPJ2PYT.js +6 -0
  8. package/dist/bin/chunks/du-XQPYLN3H.js +8 -0
  9. package/dist/bin/chunks/find-4D6S5MQR.js +11 -0
  10. package/dist/bin/chunks/grep-U2RCKOEG.js +15 -0
  11. package/dist/bin/chunks/jq-63OXR3LZ.js +15 -0
  12. package/dist/bin/chunks/ls-BEHQBUMC.js +26 -0
  13. package/dist/bin/chunks/sort-C3F6LCNY.js +16 -0
  14. package/dist/bin/chunks/sqlite3-PZRKN3TT.js +37 -0
  15. package/dist/bin/chunks/tree-DQBEJH47.js +12 -0
  16. package/dist/bin/chunks/uniq-DKS7RIAE.js +5 -0
  17. package/dist/bin/chunks/wc-4LMTC3QD.js +6 -0
  18. package/dist/bin/{shell/chunks/xan-ASGSTJP4.js → chunks/xan-WNN2ZOAX.js} +48 -48
  19. package/dist/bin/chunks/{xan-view-YGORUYA2.js → xan-view-6Z6TWXMY.js} +1 -1
  20. package/dist/bin/chunks/xargs-IWT2HHEA.js +5 -0
  21. package/dist/bin/just-bash.js +77 -77
  22. package/dist/bin/shell/chunks/cat-ZEMMQGY5.js +6 -0
  23. package/dist/bin/shell/chunks/chunk-45SNFRCY.js +3 -0
  24. package/dist/bin/shell/chunks/chunk-OBH7XN5N.js +1 -0
  25. package/dist/bin/{chunks/chunk-OQRRF62X.js → shell/chunks/chunk-UUQYHLBO.js} +3 -3
  26. package/dist/bin/shell/chunks/cut-WWPJ2PYT.js +6 -0
  27. package/dist/bin/shell/chunks/du-XQPYLN3H.js +8 -0
  28. package/dist/bin/shell/chunks/find-4D6S5MQR.js +11 -0
  29. package/dist/bin/shell/chunks/grep-U2RCKOEG.js +15 -0
  30. package/dist/bin/shell/chunks/jq-63OXR3LZ.js +15 -0
  31. package/dist/bin/shell/chunks/ls-BEHQBUMC.js +26 -0
  32. package/dist/bin/shell/chunks/sort-C3F6LCNY.js +16 -0
  33. package/dist/bin/shell/chunks/sqlite3-PZRKN3TT.js +37 -0
  34. package/dist/bin/shell/chunks/tree-DQBEJH47.js +12 -0
  35. package/dist/bin/shell/chunks/uniq-DKS7RIAE.js +5 -0
  36. package/dist/bin/shell/chunks/wc-4LMTC3QD.js +6 -0
  37. package/dist/bin/{chunks/xan-ASGSTJP4.js → shell/chunks/xan-WNN2ZOAX.js} +48 -48
  38. package/dist/bin/shell/chunks/{xan-view-YGORUYA2.js → xan-view-6Z6TWXMY.js} +1 -1
  39. package/dist/bin/shell/chunks/xargs-IWT2HHEA.js +5 -0
  40. package/dist/bin/shell/shell.js +69 -69
  41. package/dist/bundle/browser.js +432 -432
  42. package/dist/bundle/chunks/cat-W5XITXDC.js +5 -0
  43. package/dist/bundle/chunks/chunk-4ACWXGKW.js +2 -0
  44. package/dist/bundle/chunks/{chunk-U4UYWYTO.js → chunk-A263W2RD.js} +3 -3
  45. package/dist/bundle/chunks/chunk-NUFRM6SI.js +0 -0
  46. package/dist/bundle/chunks/cut-KKAAQJVD.js +5 -0
  47. package/dist/bundle/chunks/du-NQXEC3EF.js +7 -0
  48. package/dist/bundle/chunks/find-GPKJFOPK.js +10 -0
  49. package/dist/bundle/chunks/grep-CTJRP2G3.js +14 -0
  50. package/dist/bundle/chunks/jq-WOKA22RE.js +14 -0
  51. package/dist/bundle/chunks/ls-5W3NU5OJ.js +23 -0
  52. package/dist/bundle/chunks/sort-JHO22QVO.js +15 -0
  53. package/dist/bundle/chunks/sqlite3-CX5D36A5.js +36 -0
  54. package/dist/bundle/chunks/tree-MEM64BW3.js +11 -0
  55. package/dist/bundle/chunks/uniq-SEKCFR7B.js +4 -0
  56. package/dist/bundle/chunks/wc-52FZ4QGS.js +5 -0
  57. package/dist/bundle/chunks/{xan-B3RI2BDO.js → xan-ZHXYF6B4.js} +48 -48
  58. package/dist/bundle/chunks/{xan-view-33AU6NPN.js → xan-view-DMFUMZG7.js} +1 -1
  59. package/dist/bundle/chunks/xargs-4FRA6OJ7.js +4 -0
  60. package/dist/bundle/index.js +59 -59
  61. package/dist/commands/browser-excluded.d.ts +0 -3
  62. package/dist/commands/find/matcher.d.ts +5 -0
  63. package/dist/commands/registry.d.ts +5 -16
  64. package/dist/commands/sqlite3/sqlite3.d.ts +4 -1
  65. package/dist/commands/sqlite3/worker.d.ts +3 -0
  66. package/dist/commands/xan/csv.d.ts +5 -0
  67. package/dist/index.d.ts +2 -2
  68. package/dist/utils/constants.d.ts +15 -0
  69. package/dist/utils/file-reader.d.ts +4 -1
  70. package/package.json +3 -3
  71. package/dist/bin/chunks/cat-7TVSOZLU.js +0 -6
  72. package/dist/bin/chunks/chunk-J7MJV6WO.js +0 -3
  73. package/dist/bin/chunks/cut-VCKWLT2T.js +0 -6
  74. package/dist/bin/chunks/du-ZONJJZUK.js +0 -8
  75. package/dist/bin/chunks/find-P6UQXFKX.js +0 -11
  76. package/dist/bin/chunks/grep-L5HBHEEQ.js +0 -15
  77. package/dist/bin/chunks/jq-MTQKMJJI.js +0 -16
  78. package/dist/bin/chunks/ls-FSSC77F4.js +0 -26
  79. package/dist/bin/chunks/sort-J5ARYV56.js +0 -16
  80. package/dist/bin/chunks/sqlite3-6WCINK3O.js +0 -38
  81. package/dist/bin/chunks/tree-ESVATRDW.js +0 -12
  82. package/dist/bin/chunks/uniq-7JNZWE5D.js +0 -5
  83. package/dist/bin/chunks/wc-OFU3HUEZ.js +0 -6
  84. package/dist/bin/chunks/xargs-WIJC4RTG.js +0 -4
  85. package/dist/bin/shell/chunks/cat-7TVSOZLU.js +0 -6
  86. package/dist/bin/shell/chunks/chunk-J7MJV6WO.js +0 -3
  87. package/dist/bin/shell/chunks/cut-VCKWLT2T.js +0 -6
  88. package/dist/bin/shell/chunks/du-ZONJJZUK.js +0 -8
  89. package/dist/bin/shell/chunks/find-P6UQXFKX.js +0 -11
  90. package/dist/bin/shell/chunks/grep-L5HBHEEQ.js +0 -15
  91. package/dist/bin/shell/chunks/jq-MTQKMJJI.js +0 -16
  92. package/dist/bin/shell/chunks/ls-FSSC77F4.js +0 -26
  93. package/dist/bin/shell/chunks/sort-J5ARYV56.js +0 -16
  94. package/dist/bin/shell/chunks/sqlite3-6WCINK3O.js +0 -38
  95. package/dist/bin/shell/chunks/tree-ESVATRDW.js +0 -12
  96. package/dist/bin/shell/chunks/uniq-7JNZWE5D.js +0 -5
  97. package/dist/bin/shell/chunks/wc-OFU3HUEZ.js +0 -6
  98. package/dist/bin/shell/chunks/xargs-WIJC4RTG.js +0 -4
  99. package/dist/bundle/chunks/cat-CE7XIAD2.js +0 -5
  100. package/dist/bundle/chunks/chunk-3YNHMZ5M.js +0 -2
  101. package/dist/bundle/chunks/cut-MCCSW2TZ.js +0 -5
  102. package/dist/bundle/chunks/du-3NURMGXT.js +0 -7
  103. package/dist/bundle/chunks/find-QJDJJ5KW.js +0 -10
  104. package/dist/bundle/chunks/grep-4K5T3MYL.js +0 -14
  105. package/dist/bundle/chunks/jq-QAA4WF2O.js +0 -15
  106. package/dist/bundle/chunks/ls-CS3TIKWR.js +0 -23
  107. package/dist/bundle/chunks/sort-PMLMEZ4E.js +0 -15
  108. package/dist/bundle/chunks/sqlite3-GFVRV2TN.js +0 -37
  109. package/dist/bundle/chunks/tree-5TYW7S7K.js +0 -11
  110. package/dist/bundle/chunks/uniq-ONGDGSEB.js +0 -4
  111. package/dist/bundle/chunks/wc-Y5MNUNQQ.js +0 -5
  112. package/dist/bundle/chunks/xargs-2IMBHM4N.js +0 -3
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import{a as y}from"./chunk-45SNFRCY.js";import"./chunk-OBH7XN5N.js";import{a as g}from"./chunk-TA7RUHGQ.js";import{a as w,b as m}from"./chunk-GTNBSMZR.js";import"./chunk-KGOUQS5A.js";var C={name:"wc",summary:"print newline, word, and byte counts for each file",usage:"wc [OPTION]... [FILE]...",options:["-c, --bytes print the byte counts","-m, --chars print the character counts","-l, --lines print the newline counts","-w, --words print the word counts"," --help display this help and exit"]},S={lines:{short:"l",long:"lines",type:"boolean"},words:{short:"w",long:"words",type:"boolean"},bytes:{short:"c",long:"bytes",type:"boolean"},chars:{short:"m",long:"chars",type:"boolean"}},L={name:"wc",async execute(n,l){if(m(n))return w(C);let r=g("wc",n,S);if(!r.ok)return r.error;let{lines:s,words:t}=r.result.flags,e=r.result.flags.bytes||r.result.flags.chars,o=r.result.positional;!s&&!t&&!e&&(s=t=e=!0);let i=await y(l,o,{cmdName:"wc",stopOnError:!1});if(o.length===0){let f=b(i.files[0].content);return{stdout:`${h(f,s,t,e,"")}
3
+ `,stderr:"",exitCode:0}}let c="",u=0,d=0,p=0;for(let{filename:f,content:x}of i.files){let a=b(x);u+=a.lines,d+=a.words,p+=a.chars,c+=`${h(a,s,t,e,f)}
4
+ `}return o.length>1&&(c+=`${h({lines:u,words:d,chars:p},s,t,e,"total")}
5
+ `),{stdout:c,stderr:i.stderr,exitCode:i.exitCode}}};function b(n){let l=n.length,r=0,s=0,t=!1;for(let e=0;e<l;e++){let o=n[e];o===`
6
+ `?(r++,t&&(s++,t=!1)):o===" "||o===" "||o==="\r"?t&&(s++,t=!1):t=!0}return t&&s++,{lines:r,words:s,chars:l}}function h(n,l,r,s,t){let e=[];l&&e.push(String(n.lines)),r&&e.push(String(n.words)),s&&e.push(String(n.chars));let o=e.join(" ");return t&&(o+=` ${t}`),o}export{L as wcCommand};
@@ -1,65 +1,65 @@
1
1
  #!/usr/bin/env node
2
- import{a as v,b as w,c as H,d as J}from"./chunk-OQRRF62X.js";import{a as ze}from"./chunk-QSDVMMYI.js";import{a as O}from"./chunk-ACRTDIBO.js";import"./chunk-NWWB2XRE.js";import{a as $,b as _}from"./chunk-GTNBSMZR.js";import{b as qe,d as _e,e as He,f as Je}from"./chunk-KGOUQS5A.js";var Re={};_e(Re,{parseMoonblade:()=>V,parseNamedExpressions:()=>T});function T(e){let n=[],s=new W(e).tokenize(),r=0,o=()=>s[r]||{type:"eof",value:"",pos:0},a=()=>s[r++];for(;o().type!=="eof";){if(o().type===","&&n.length>0){a();continue}let p=[],u=0,f=r;for(;o().type!=="eof";){let i=o();if((i.type===","||i.type==="as")&&u===0)break;(i.type==="("||i.type==="["||i.type==="{")&&u++,(i.type===")"||i.type==="]"||i.type==="}")&&u--,p.push(a())}p.push({type:"eof",value:"",pos:0});let h=new U(p).parse(),c;if(o().type==="as")if(a(),o().type==="("){a();let i=[];for(;o().type!==")"&&o().type!=="eof";)(o().type==="ident"||o().type==="string")&&(i.push(o().value),a()),o().type===","&&a();o().type===")"&&a(),c=i}else if(o().type==="ident"||o().type==="string")c=o().value,a();else throw new Error(`Expected name after 'as', got ${o().type}`);else c=e.slice(s[f].pos,s[r-1]?.pos||e.length).trim(),h.type==="identifier"&&(c=h.name);n.push({expr:h,name:c})}return n}function V(e){let t=new W(e).tokenize();return new U(t).parse()}var W,P,U,j=qe(()=>{"use strict";W=class{input;pos=0;tokens=[];constructor(n){this.input=n}tokenize(){for(;this.pos<this.input.length&&(this.skipWhitespace(),!(this.pos>=this.input.length));){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens.push({type:"eof",value:"",pos:this.pos}),this.tokens}skipWhitespace(){for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n===" "||n===" "||n===`
2
+ import{a as $e,b as w,c as v,d as H,e as J}from"./chunk-UUQYHLBO.js";import{a as Ge}from"./chunk-QSDVMMYI.js";import{a as P}from"./chunk-ACRTDIBO.js";import"./chunk-NWWB2XRE.js";import{a as Re}from"./chunk-45SNFRCY.js";import"./chunk-OBH7XN5N.js";import{a as $,b as _}from"./chunk-GTNBSMZR.js";import{b as He,d as Je,e as ze,f as Ke}from"./chunk-KGOUQS5A.js";var Te={};Je(Te,{parseMoonblade:()=>V,parseNamedExpressions:()=>T});function T(e){let n=[],s=new W(e).tokenize(),r=0,o=()=>s[r]||{type:"eof",value:"",pos:0},a=()=>s[r++];for(;o().type!=="eof";){if(o().type===","&&n.length>0){a();continue}let d=[],u=0,p=r;for(;o().type!=="eof";){let i=o();if((i.type===","||i.type==="as")&&u===0)break;(i.type==="("||i.type==="["||i.type==="{")&&u++,(i.type===")"||i.type==="]"||i.type==="}")&&u--,d.push(a())}d.push({type:"eof",value:"",pos:0});let h=new U(d).parse(),c;if(o().type==="as")if(a(),o().type==="("){a();let i=[];for(;o().type!==")"&&o().type!=="eof";)(o().type==="ident"||o().type==="string")&&(i.push(o().value),a()),o().type===","&&a();o().type===")"&&a(),c=i}else if(o().type==="ident"||o().type==="string")c=o().value,a();else throw new Error(`Expected name after 'as', got ${o().type}`);else c=e.slice(s[p].pos,s[r-1]?.pos||e.length).trim(),h.type==="identifier"&&(c=h.name);n.push({expr:h,name:c})}return n}function V(e){let t=new W(e).tokenize();return new U(t).parse()}var W,O,U,j=He(()=>{"use strict";W=class{input;pos=0;tokens=[];constructor(n){this.input=n}tokenize(){for(;this.pos<this.input.length&&(this.skipWhitespace(),!(this.pos>=this.input.length));){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens.push({type:"eof",value:"",pos:this.pos}),this.tokens}skipWhitespace(){for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n===" "||n===" "||n===`
3
3
  `||n==="\r")this.pos++;else if(n==="#")for(;this.pos<this.input.length&&this.input[this.pos]!==`
4
4
  `;)this.pos++;else break}}nextToken(){let n=this.pos,t=this.input[this.pos];if(t>="0"&&t<="9")return this.readNumber();if(t==='"'||t==="'"||t==="`")return this.readString(t);if(t==="b"&&this.pos+1<this.input.length){let r=this.input[this.pos+1];if(r==='"'||r==="'"||r==="`")return this.pos++,this.readString(r)}if(t==="/"){let r=this.tokens[this.tokens.length-1];return r&&(r.type==="int"||r.type==="float"||r.type==="string"||r.type==="ident"||r.type===")"||r.type==="]")?this.input[this.pos+1]==="/"?(this.pos+=2,{type:"//",value:"//",pos:n}):(this.pos++,{type:"/",value:"/",pos:n}):this.readRegex()}if(this.match("not in"))return{type:"not in",value:"not in",pos:n};if(this.match("=>"))return{type:"=>",value:"=>",pos:n};if(this.match("**"))return{type:"**",value:"**",pos:n};if(this.match("++"))return{type:"++",value:"++",pos:n};if(this.match("//"))return{type:"//",value:"//",pos:n};if(this.match("=="))return{type:"==",value:"==",pos:n};if(this.match("!="))return{type:"!=",value:"!=",pos:n};if(this.match("<="))return{type:"<=",value:"<=",pos:n};if(this.match(">="))return{type:">=",value:">=",pos:n};if(this.match("&&"))return{type:"&&",value:"&&",pos:n};if(this.match("||"))return{type:"||",value:"||",pos:n};let s={"(":"(",")":")","[":"[","]":"]","{":"{","}":"}",",":",",":":":",";":";","+":"+","-":"-","*":"*","%":"%","<":"<",">":">","!":"!",".":".","|":"|","=":"="};if(t in s)return this.pos++,{type:s[t],value:t,pos:n};if(this.isIdentStart(t))return this.readIdentifier();throw new Error(`Unexpected character '${t}' at position ${this.pos}`)}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){if(/^[a-zA-Z]/.test(n)){let t=this.input[this.pos+n.length];if(t&&this.isIdentChar(t))return!1}return this.pos+=n.length,!0}return!1}isIdentStart(n){return n>="a"&&n<="z"||n>="A"&&n<="Z"||n==="_"}isIdentChar(n){return this.isIdentStart(n)||n>="0"&&n<="9"}readNumber(){let n=this.pos,t=!1,s=!1;for(;this.pos<this.input.length;){let o=this.input[this.pos];if(o>="0"&&o<="9")this.pos++;else if(o==="_")this.pos++;else if(o==="."&&!t&&!s)t=!0,this.pos++;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++;else break}let r=this.input.slice(n,this.pos).replace(/_/g,"");return{type:t?"float":"int",value:r,pos:n}}readString(n){let t=this.pos;this.pos++;let s="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r===n)return this.pos++,{type:"string",value:s,pos:t};if(r==="\\"){if(this.pos++,this.pos<this.input.length){let o=this.input[this.pos];switch(o){case"n":s+=`
5
- `;break;case"r":s+="\r";break;case"t":s+=" ";break;case"\\":s+="\\";break;case'"':s+='"';break;case"'":s+="'";break;case"`":s+="`";break;case"0":s+="\0";break;default:s+=o}this.pos++}}else s+=r,this.pos++}throw new Error(`Unterminated string starting at position ${t}`)}readRegex(){let n=this.pos;this.pos++;let t="",s="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="/"){for(this.pos++;this.pos<this.input.length&&this.input[this.pos]==="i";)s+=this.input[this.pos],this.pos++;return{type:"regex",value:t+(s?`/${s}`:""),pos:n}}r==="\\"?(t+=r,this.pos++,this.pos<this.input.length&&(t+=this.input[this.pos],this.pos++)):(t+=r,this.pos++)}throw new Error(`Unterminated regex starting at position ${n}`)}readIdentifier(){let n=this.pos;for(;this.pos<this.input.length&&this.isIdentChar(this.input[this.pos]);)this.pos++;let t=!1;this.pos<this.input.length&&this.input[this.pos]==="?"&&(t=!0,this.pos++);let s=this.input.slice(n,t?this.pos-1:this.pos);t&&(s+="?");let r={true:"true",false:"false",null:"null",and:"and",or:"or",eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",in:"in",as:"as",_:"_"},o=s.replace(/\?$/,"");return o in r&&!t?{type:r[o],value:o,pos:n}:{type:"ident",value:s,pos:n}}},P={PIPE:1,OR:2,AND:3,EQUALITY:4,COMPARISON:5,ADDITIVE:6,MULTIPLICATIVE:7,POWER:8,UNARY:9,POSTFIX:10},U=class{pos=0;tokens;constructor(n){this.tokens=n}parse(){let n=this.parseExpr(0);if(this.peek().type!=="eof")throw new Error(`Unexpected token: ${this.peek().value}`);return n}parseExpr(n){let t=this.parsePrefix();for(;;){let s=this.peek(),r=this.getInfixPrec(s.type);if(r<n)break;t=this.parseInfix(t,r)}return t}parsePrefix(){let n=this.peek();switch(n.type){case"int":return this.advance(),{type:"int",value:Number.parseInt(n.value,10)};case"float":return this.advance(),{type:"float",value:Number.parseFloat(n.value)};case"string":return this.advance(),{type:"string",value:n.value};case"regex":{this.advance();let t=n.value.split("/"),s=t.length>1?t[t.length-1]:"";return{type:"regex",pattern:t.slice(0,-1).join("/")||n.value,caseInsensitive:s.includes("i")}}case"true":return this.advance(),{type:"bool",value:!0};case"false":return this.advance(),{type:"bool",value:!1};case"null":return this.advance(),{type:"null"};case"_":return this.advance(),{type:"underscore"};case"ident":{let t=n.value,s=t.endsWith("?"),r=s?t.slice(0,-1):t;if(this.advance(),this.peek().type==="(")return this.parseFunctionCall(r);if(this.peek().type==="=>"){this.advance();let o=this.parseExpr(0);return this.bindLambdaArgs({type:"lambda",params:[r],body:o},[r])}return{type:"identifier",name:r,unsure:s}}case"(":{this.advance();let t=[];if(this.peek().type===")"){if(this.advance(),this.peek().type==="=>"){this.advance();let r=this.parseExpr(0);return{type:"lambda",params:[],body:r}}throw new Error("Empty parentheses not allowed")}if(this.peek().type==="ident"){let r=this.peek().value;if(this.advance(),this.peek().type===","||this.peek().type===")"){for(t.push(r);this.peek().type===","&&(this.advance(),this.peek().type==="ident");)t.push(this.peek().value),this.advance();if(this.peek().type===")"&&(this.advance(),this.peek().type==="=>")){this.advance();let o=this.parseExpr(0);return this.bindLambdaArgs({type:"lambda",params:t,body:o},t)}this.pos-=t.length*2,t.length>1&&(this.pos=this.pos)}this.pos--}let s=this.parseExpr(0);return this.expect(")"),this.peek().type,s}case"[":return this.parseList();case"{":return this.parseMap();case"-":{this.advance();let t=this.parseExpr(P.UNARY);return t.type==="int"?{type:"int",value:-t.value}:t.type==="float"?{type:"float",value:-t.value}:{type:"func",name:"neg",args:[{expr:t}]}}case"!":return this.advance(),{type:"func",name:"not",args:[{expr:this.parseExpr(P.UNARY)}]};default:throw new Error(`Unexpected token: ${n.type} (${n.value})`)}}parseFunctionCall(n){this.expect("(");let t=[];if(this.peek().type!==")")do{t.length>0&&this.peek().type===","&&this.advance();let s;if(this.peek().type==="ident"){let o=this.peek().value,a=this.pos+1;a<this.tokens.length&&this.tokens[a].type==="="&&(s=o,this.advance(),this.advance())}let r=this.parseExpr(0);t.push({name:s,expr:r})}while(this.peek().type===",");return this.expect(")"),{type:"func",name:n.toLowerCase(),args:t}}parseList(){this.expect("[");let n=[];if(this.peek().type!=="]")do n.length>0&&this.peek().type===","&&this.advance(),n.push(this.parseExpr(0));while(this.peek().type===",");return this.expect("]"),{type:"list",elements:n}}parseMap(){this.expect("{");let n=[];if(this.peek().type!=="}")do{n.length>0&&this.peek().type===","&&this.advance();let t;if(this.peek().type==="ident")t=this.peek().value,this.advance();else if(this.peek().type==="string")t=this.peek().value,this.advance();else throw new Error(`Expected map key, got ${this.peek().type}`);this.expect(":");let s=this.parseExpr(0);n.push({key:t,value:s})}while(this.peek().type===",");return this.expect("}"),{type:"map",entries:n}}parseInfix(n,t){let s=this.peek(),r={"+":"add","-":"sub","*":"mul","/":"div","//":"idiv","%":"mod","**":"pow","++":"concat","==":"==","!=":"!=","<":"<","<=":"<=",">":">",">=":">=",eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge","&&":"and",and:"and","||":"or",or:"or"};if(s.type in r){this.advance();let o=this.parseExpr(t+(this.isRightAssoc(s.type)?0:1));return{type:"func",name:r[s.type],args:[{expr:n},{expr:o}]}}if(s.type==="|"){this.advance();let o=this.parseExpr(t);return this.handlePipe(n,o)}if(s.type===".")return this.advance(),this.handleDot(n);if(s.type==="[")return this.advance(),this.handleIndexing(n);if(s.type==="in")return this.advance(),{type:"func",name:"contains",args:[{expr:this.parseExpr(t+1)},{expr:n}]};if(s.type==="not in")return this.advance(),{type:"func",name:"not",args:[{expr:{type:"func",name:"contains",args:[{expr:this.parseExpr(t+1)},{expr:n}]}}]};throw new Error(`Unexpected infix token: ${s.type}`)}handlePipe(n,t){if(t.type==="identifier")return{type:"func",name:t.name,args:[{expr:n}]};if(t.type==="func"){let s=this.countUnderscores(t);return s===0?t:s===1?this.fillUnderscore(t,n):{type:"pipeline",exprs:[n,t]}}return this.countUnderscores(t)===1?this.fillUnderscore(t,n):t}handleDot(n){let t=this.peek();if(t.type==="ident"){let s=t.value;if(this.advance(),this.peek().type==="("){let r=this.parseFunctionCall(s);return r.type==="func"&&r.args.unshift({expr:n}),r}return{type:"func",name:"get",args:[{expr:n},{expr:{type:"string",value:s}}]}}if(t.type==="int"){let s=Number.parseInt(t.value,10);return this.advance(),{type:"func",name:"get",args:[{expr:n},{expr:{type:"int",value:s}}]}}if(t.type==="string"){let s=t.value;return this.advance(),{type:"func",name:"get",args:[{expr:n},{expr:{type:"string",value:s}}]}}throw new Error(`Expected identifier, number, or string after dot, got ${t.type}`)}handleIndexing(n){if(this.peek().type===":"){if(this.advance(),this.peek().type==="]")return this.advance(),{type:"func",name:"slice",args:[{expr:n}]};let s=this.parseExpr(0);return this.expect("]"),{type:"func",name:"slice",args:[{expr:n},{expr:{type:"int",value:0}},{expr:s}]}}let t=this.parseExpr(0);if(this.peek().type===":"){if(this.advance(),this.peek().type==="]")return this.advance(),{type:"func",name:"slice",args:[{expr:n},{expr:t}]};let s=this.parseExpr(0);return this.expect("]"),{type:"func",name:"slice",args:[{expr:n},{expr:t},{expr:s}]}}return this.expect("]"),{type:"func",name:"get",args:[{expr:n},{expr:t}]}}countUnderscores(n){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}fillUnderscore(n,t){return n.type==="underscore"?t:n.type==="func"?{...n,args:n.args.map(s=>({...s,expr:this.fillUnderscore(s.expr,t)}))}:n.type==="list"?{...n,elements:n.elements.map(s=>this.fillUnderscore(s,t))}:n.type==="map"?{...n,entries:n.entries.map(s=>({...s,value:this.fillUnderscore(s.value,t)}))}:n}bindLambdaArgs(n,t){return{...n,body:this.bindLambdaArgsInExpr(n.body,t)}}bindLambdaArgsInExpr(n,t){return n.type==="identifier"&&t.includes(n.name)?{type:"lambdaBinding",name:n.name}:n.type==="func"?{...n,args:n.args.map(s=>({...s,expr:this.bindLambdaArgsInExpr(s.expr,t)}))}:n.type==="list"?{...n,elements:n.elements.map(s=>this.bindLambdaArgsInExpr(s,t))}:n.type==="map"?{...n,entries:n.entries.map(s=>({...s,value:this.bindLambdaArgsInExpr(s.value,t)}))}:n}getInfixPrec(n){switch(n){case"|":return P.PIPE;case"||":case"or":return P.OR;case"&&":case"and":return P.AND;case"==":case"!=":case"eq":case"ne":return P.EQUALITY;case"<":case"<=":case">":case">=":case"lt":case"le":case"gt":case"ge":case"in":case"not in":return P.COMPARISON;case"+":case"-":case"++":return P.ADDITIVE;case"*":case"/":case"//":case"%":return P.MULTIPLICATIVE;case"**":return P.POWER;case".":case"[":return P.POSTFIX;default:return-1}}isRightAssoc(n){return n==="**"}peek(){return this.tokens[this.pos]||{type:"eof",value:"",pos:0}}advance(){return this.tokens[this.pos++]}expect(n){let t=this.peek();if(t.type!==n)throw new Error(`Expected ${n}, got ${t.type}`);return this.advance()}}});j();function N(e,n){return n.length===0?I(e,[]):n.length===1?{type:"Pipe",left:n[0],right:I(e,[])}:{type:"Pipe",left:n[0],right:I(e,n.slice(1))}}var Te={add:e=>b("+",e[0],e[1]),sub:e=>b("-",e[0],e[1]),mul:e=>b("*",e[0],e[1]),div:e=>b("/",e[0],e[1]),mod:e=>b("%",e[0],e[1]),idiv:e=>I("floor",[b("/",e[0],e[1])]),pow:e=>N("pow",e),neg:e=>({type:"UnaryOp",op:"-",operand:e[0]}),"==":e=>b("==",e[0],e[1]),"!=":e=>b("!=",e[0],e[1]),"<":e=>b("<",e[0],e[1]),"<=":e=>b("<=",e[0],e[1]),">":e=>b(">",e[0],e[1]),">=":e=>b(">=",e[0],e[1]),eq:e=>b("==",F(e[0]),F(e[1])),ne:e=>b("!=",F(e[0]),F(e[1])),lt:e=>b("<",F(e[0]),F(e[1])),le:e=>b("<=",F(e[0]),F(e[1])),gt:e=>b(">",F(e[0]),F(e[1])),ge:e=>b(">=",F(e[0]),F(e[1])),and:e=>b("and",e[0],e[1]),or:e=>b("or",e[0],e[1]),not:e=>({type:"UnaryOp",op:"not",operand:e[0]}),len:e=>N("length",e),length:e=>N("length",e),upper:e=>N("ascii_upcase",e),lower:e=>N("ascii_downcase",e),trim:e=>N("trim",e),ltrim:e=>e.length===0?I("ltrimstr",[{type:"Literal",value:" "}]):{type:"Pipe",left:e[0],right:I("ltrimstr",[{type:"Literal",value:" "}])},rtrim:e=>e.length===0?I("rtrimstr",[{type:"Literal",value:" "}]):{type:"Pipe",left:e[0],right:I("rtrimstr",[{type:"Literal",value:" "}])},split:e=>N("split",e),join:e=>e.length===1?I("join",[{type:"Literal",value:""}]):N("join",e),concat:e=>b("+",e[0],e[1]),startswith:e=>N("startswith",e),endswith:e=>N("endswith",e),contains:e=>N("contains",e),replace:e=>N("gsub",e),substr:e=>e.length===2?{type:"Slice",base:e[0],start:e[1]}:{type:"Slice",base:e[0],start:e[1],end:b("+",e[1],e[2])},abs:e=>N("fabs",e),floor:e=>N("floor",e),ceil:e=>N("ceil",e),round:e=>N("round",e),sqrt:e=>N("sqrt",e),log:e=>N("log",e),log10:e=>N("log10",e),log2:e=>N("log2",e),exp:e=>N("exp",e),sin:e=>N("sin",e),cos:e=>N("cos",e),tan:e=>N("tan",e),asin:e=>N("asin",e),acos:e=>N("acos",e),atan:e=>N("atan",e),min:e=>N("min",e),max:e=>N("max",e),first:e=>e.length===0?{type:"Index",index:{type:"Literal",value:0}}:{type:"Index",index:{type:"Literal",value:0},base:e[0]},last:e=>e.length===0?{type:"Index",index:{type:"Literal",value:-1}}:{type:"Index",index:{type:"Literal",value:-1},base:e[0]},get:e=>e.length===1?{type:"Index",index:e[0]}:{type:"Index",index:e[1],base:e[0]},slice:e=>e.length===1?{type:"Slice",base:e[0]}:e.length===2?{type:"Slice",base:e[0],start:e[1]}:{type:"Slice",base:e[0],start:e[1],end:e[2]},keys:"keys",values:"values",entries:e=>I("to_entries",e),from_entries:"from_entries",reverse:"reverse",sort:"sort",sort_by:"sort_by",group_by:"group_by",unique:"unique",unique_by:"unique_by",flatten:"flatten",map:e=>({type:"Pipe",left:e[0],right:{type:"Array",elements:e[1]}}),select:e=>I("select",e),empty:()=>I("empty",[]),count:()=>I("length",[]),sum:e=>e.length===0?I("add",[]):{type:"Pipe",left:{type:"Array",elements:e[0]},right:I("add",[])},mean:e=>e.length===0?{type:"Pipe",left:{type:"Identity"},right:b("/",I("add",[]),I("length",[]))}:{type:"Pipe",left:{type:"Array",elements:e[0]},right:b("/",I("add",[]),I("length",[]))},avg:e=>e.length===0?{type:"Pipe",left:{type:"Identity"},right:b("/",I("add",[]),I("length",[]))}:{type:"Pipe",left:{type:"Array",elements:e[0]},right:b("/",I("add",[]),I("length",[]))},type:"type",isnull:e=>e.length===0?b("==",{type:"Identity"},{type:"Literal",value:null}):b("==",e[0],{type:"Literal",value:null}),isempty:e=>e.length===0?b("==",{type:"Identity"},{type:"Literal",value:""}):b("==",e[0],{type:"Literal",value:""}),tonumber:e=>e.length===0?I("tonumber",[]):I("tonumber",e),tostring:e=>e.length===0?I("tostring",[]):I("tostring",e),if:e=>$e(e[0],e[1],e[2]),coalesce:e=>{if(e.length===0)return{type:"Literal",value:null};if(e.length===1)return e[0];let[n,...t]=e,s=b("and",b("!=",n,{type:"Literal",value:null}),b("!=",n,{type:"Literal",value:""}));return $e(s,n,t.length===1?t[0]:Te.coalesce(t))},index:()=>({type:"Field",name:"_row_index"}),now:()=>I("now",[]),fmt:e=>I("tostring",e),format:e=>I("tostring",e)};function b(e,n,t){return{type:"BinaryOp",op:e,left:n,right:t}}function I(e,n){return{type:"Call",name:e,args:n}}var Ke="then";function $e(e,n,t){let s={type:"Cond",cond:e,elifs:[],else:t||{type:"Literal",value:null}};return s[Ke]=n,s}function F(e){return{type:"Pipe",left:e,right:{type:"Call",name:"tostring",args:[]}}}function A(e,n=!0){switch(e.type){case"int":case"float":return{type:"Literal",value:e.value};case"string":return{type:"Literal",value:e.value};case"bool":return{type:"Literal",value:e.value};case"null":return{type:"Literal",value:null};case"underscore":return{type:"Index",base:{type:"Identity"},index:{type:"Literal",value:"_"}};case"identifier":return n?{type:"Field",name:e.name}:{type:"VarRef",name:e.name};case"lambdaBinding":return{type:"VarRef",name:e.name};case"func":{let t=e.args.map(r=>A(r.expr,n)),s=Te[e.name];return typeof s=="function"?s(t):I(typeof s=="string"?s:e.name,t)}case"list":return e.elements.length===0?{type:"Array"}:{type:"Array",elements:e.elements.reduce((t,s,r)=>{let o=A(s,n);return r===0?o:{type:"Comma",left:t,right:o}},null)};case"map":return{type:"Object",entries:e.entries.map(t=>({key:t.key,value:A(t.value,n)}))};case"regex":return{type:"Literal",value:e.pattern};case"slice":return{type:"Slice",start:e.start?A(e.start,n):void 0,end:e.end?A(e.end,n):void 0};case"lambda":return A(e.body,n);case"pipeline":return{type:"Identity"};default:throw new Error(`Unknown moonblade expression type: ${e.type}`)}}function K(e){let n=[],t=0;for(;t<e.length;){for(;t<e.length&&(e[t]===" "||e[t]===",");)t++;if(t>=e.length)break;let s=t;for(;t<e.length&&/\w/.test(e[t]);)t++;let r=e.slice(s,t);for(;t<e.length&&e[t]===" ";)t++;if(e[t]!=="(")break;t++;let o=1,a=t;for(;t<e.length&&o>0;)e[t]==="("?o++:e[t]===")"&&o--,o>0&&t++;let p=e.slice(a,t).trim();for(t++;t<e.length&&e[t]===" ";)t++;let u="";if(e.slice(t,t+3).toLowerCase()==="as "){for(t+=3;t<e.length&&e[t]===" ";)t++;let f=t;for(;t<e.length&&/\w/.test(e[t]);)t++;u=e.slice(f,t)}u||(u=p?`${r}(${p})`:`${r}()`),n.push({func:r,expr:p,alias:u})}return n}function je(e){return/^\w+$/.test(e)}function z(e,n,t){let s=A(V(n)),r=O(e,s,t);return r.length>0?r[0]:null}function G(e,n,t={}){let{func:s,expr:r}=n;if(s==="count"&&!r)return e.length;let o;switch(je(r)?o=e.map(a=>a[r]).filter(a=>a!=null):o=e.map(a=>z(a,r,t)).filter(a=>a!=null),s){case"count":return je(r)?o.length:o.filter(a=>!!a).length;case"sum":return o.map(p=>typeof p=="number"?p:Number.parseFloat(String(p))).reduce((p,u)=>p+u,0);case"mean":case"avg":{let a=o.map(p=>typeof p=="number"?p:Number.parseFloat(String(p)));return a.length>0?a.reduce((p,u)=>p+u,0)/a.length:0}case"min":{let a=o.map(p=>typeof p=="number"?p:Number.parseFloat(String(p)));return a.length>0?Math.min(...a):null}case"max":{let a=o.map(p=>typeof p=="number"?p:Number.parseFloat(String(p)));return a.length>0?Math.max(...a):null}case"first":return o.length>0?o[0]:null;case"last":return o.length>0?o[o.length-1]:null;case"median":{let a=o.map(u=>typeof u=="number"?u:Number.parseFloat(String(u))).filter(u=>!Number.isNaN(u)).sort((u,f)=>u-f);if(a.length===0)return null;let p=Math.floor(a.length/2);return a.length%2===0?(a[p-1]+a[p])/2:a[p]}case"mode":{let a=new Map;for(let f of o){let l=String(f);a.set(l,(a.get(l)||0)+1)}let p=0,u=null;for(let[f,l]of a)l>p&&(p=l,u=f);return u}case"cardinality":return new Set(o.map(p=>String(p))).size;case"values":return o.map(a=>String(a)).join("|");case"distinct_values":return[...new Set(o.map(p=>String(p)))].sort().join("|");case"all":{if(e.length===0)return!0;for(let a of e)if(!z(a,r,t))return!1;return!0}case"any":{for(let a of e)if(z(a,r,t))return!0;return!1}default:return null}}function De(e,n,t={}){let s={};for(let r of n)s[r.alias]=G(e,r,t);return s}async function X(e,n){let t="",s=[];for(let l of e)l.startsWith("-")||(t?s.push(l):t=l);if(!t)return{stdout:"",stderr:`xan agg: no aggregation expression
6
- `,exitCode:1};let{data:r,error:o}=await w(s,n);if(o)return o;let a={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},p=K(t),u=p.map(l=>l.alias),f=De(r,p,a);return{stdout:v(u,[f]),stderr:"",exitCode:0}}async function Y(e,n){let t="",s="",r=[];for(let d=0;d<e.length;d++){let m=e[d];m==="--sorted"||m.startsWith("-")||(t?s?r.push(m):s=m:t=m)}if(!t||!s)return{stdout:"",stderr:`xan groupby: usage: xan groupby COLS EXPR [FILE]
7
- `,exitCode:1};let{data:o,error:a}=await w(r,n);if(a)return a;let p={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},u=t.split(","),f=K(s),l=[],h=new Map;for(let d of o){let m=u.map(g=>String(d[g])).join("\0");h.has(m)||(h.set(m,[]),l.push(m)),h.get(m)?.push(d)}let c=[...u,...f.map(d=>d.alias)],i=[];for(let d of l){let m=h.get(d);if(!m)continue;let g={};for(let y of u)g[y]=m[0][y];for(let y of f)g[y.alias]=G(m,y,p);i.push(g)}return{stdout:v(c,i),stderr:"",exitCode:0}}async function B(e,n){let t=[],s="",r=10,o=!1,a=[];for(let i=0;i<e.length;i++){let d=e[i];(d==="-s"||d==="--select")&&i+1<e.length?t=e[++i].split(","):(d==="-g"||d==="--groupby")&&i+1<e.length?s=e[++i]:(d==="-l"||d==="--limit")&&i+1<e.length?r=Number.parseInt(e[++i],10):d==="--no-extra"?o=!0:d==="-A"||d==="--all"?r=0:d.startsWith("-")||a.push(d)}let{headers:p,data:u,error:f}=await w(a,n);if(f)return f;let l=t.length>0?t:p.filter(i=>i!==s);s&&t.length===0&&(l=p.filter(i=>i!==s));let h=[],c=s?["field",s,"value","count"]:["field","value","count"];if(s){let i=new Map;for(let d of u){let m=String(d[s]??"");i.has(m)||i.set(m,[]),i.get(m)?.push(d)}for(let d of l)for(let[m,g]of i){let y=new Map;for(let S of g){let k=S[d],C=k===""||k===null||k===void 0?"":String(k);y.set(C,(y.get(C)||0)+1)}let x=[...y.entries()].sort((S,k)=>k[1]!==S[1]?k[1]-S[1]:S[0].localeCompare(k[0]));o&&(x=x.filter(([S])=>S!=="")),r>0&&(x=x.slice(0,r));for(let[S,k]of x)h.push({field:d,[s]:m,value:S===""?"<empty>":S,count:k})}}else for(let i of l){let d=new Map;for(let g of u){let y=g[i],x=y===""||y===null||y===void 0?"":String(y);d.set(x,(d.get(x)||0)+1)}let m=[...d.entries()].sort((g,y)=>y[1]!==g[1]?y[1]-g[1]:g[0].localeCompare(y[0]));o&&(m=m.filter(([g])=>g!=="")),r>0&&(m=m.slice(0,r));for(let[g,y]of m)h.push({field:i,value:g===""?"<empty>":g,count:y})}return{stdout:v(c,h),stderr:"",exitCode:0}}async function Z(e,n){let t=[],s=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-s"&&l+1<e.length?t=e[++l].split(","):h.startsWith("-")||s.push(h)}let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=t.length>0?t:r,u=["field","type","count","min","max","mean"],f=[];for(let l of p){let h=o.map(d=>d[l]).filter(d=>d!=null),c=h.map(d=>typeof d=="number"?d:Number.parseFloat(String(d))).filter(d=>!Number.isNaN(d)),i=c.length===h.length&&c.length>0;f.push({field:l,type:i?"Number":"String",count:h.length,min:i?Math.min(...c):"",max:i?Math.max(...c):"",mean:i?Math.round(c.reduce((d,m)=>d+m,0)/c.length*1e10)/1e10:""})}return{stdout:v(u,f),stderr:"",exitCode:0}}j();function Ve(e){let n=V(e);return A(n)}function Ge(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${t}$`)}function q(e,n){let t=[],s=new Set;for(let r of e.split(",")){let o=r.trim();if(o.startsWith("!")){let f=o.slice(1),l=q(f,n);for(let h of l)s.add(h);continue}if(o==="*"){for(let f of n)t.includes(f)||t.push(f);continue}if(o.includes("*")){let f=Ge(o);for(let l of n)f.test(l)&&!t.includes(l)&&t.push(l);continue}let a=o.match(/^([^:]*):([^:]*)$/);if(a&&(a[1]||a[2])){let f=a[1],l=a[2],h=f?n.indexOf(f):0,c=l?n.indexOf(l):n.length-1;if(h!==-1&&c!==-1){let i=h<=c?1:-1;for(let d=h;i>0?d<=c:d>=c;d+=i)t.includes(n[d])||t.push(n[d])}continue}let p=o.match(/^(\d+)-(\d+)$/);if(p){let f=Number.parseInt(p[1],10),l=Number.parseInt(p[2],10);for(let h=f;h<=l&&h<n.length;h++)t.push(n[h]);continue}let u=Number.parseInt(o,10);if(!Number.isNaN(u)&&u>=0&&u<n.length){t.push(n[u]);continue}n.includes(o)&&t.push(o)}return s.size>0?t.filter(r=>!s.has(r)):t}async function Q(e,n){let t="",s=[];for(let f of e)f.startsWith("-")||(t?s.push(f):t=f);if(!t)return{stdout:"",stderr:`xan select: no columns specified
8
- `,exitCode:1};let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=q(t,r),u=o.map(f=>{let l={};for(let h of p)l[h]=f[h];return l});return{stdout:v(p,u),stderr:"",exitCode:0}}async function ee(e,n){let t="",s=[];for(let l of e)l.startsWith("-")||(t?s.push(l):t=l);if(!t)return{stdout:"",stderr:`xan drop: no columns specified
9
- `,exitCode:1};let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=new Set(q(t,r)),u=r.filter(l=>!p.has(l)),f=o.map(l=>{let h={};for(let c of u)h[c]=l[c];return h});return{stdout:v(u,f),stderr:"",exitCode:0}}async function te(e,n){let t="",s="",r=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-s"&&l+1<e.length?s=e[++l]:h.startsWith("-")||(t?r.push(h):t=h)}if(!t)return{stdout:"",stderr:`xan rename: no new name(s) specified
10
- `,exitCode:1};let{headers:o,data:a,error:p}=await w(r,n);if(p)return p;let u;if(s){let l=s.split(","),h=t.split(","),c=new Map;for(let i=0;i<l.length&&i<h.length;i++)c.set(l[i],h[i]);u=o.map(i=>c.get(i)||i)}else{let l=t.split(",");u=o.map((h,c)=>c<l.length?l[c]:h)}let f=a.map(l=>{let h={};for(let c=0;c<o.length;c++)h[u[c]]=l[o[c]];return h});return{stdout:v(u,f),stderr:"",exitCode:0}}async function ne(e,n){let t="index",s=[];for(let f=0;f<e.length;f++)e[f]==="-c"&&f+1<e.length?t=e[++f]:s.push(e[f]);let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=[t,...r],u=o.map((f,l)=>{let h={[t]:l};for(let c of r)h[c]=f[c];return h});return{stdout:v(p,u),stderr:"",exitCode:0}}async function se(e,n){let t=e.includes("-j")||e.includes("--just-names"),{headers:s,error:r}=await w(e.filter(a=>a!=="-j"&&a!=="--just-names"),n);return r||{stdout:t?`${s.map(a=>a).join(`
5
+ `;break;case"r":s+="\r";break;case"t":s+=" ";break;case"\\":s+="\\";break;case'"':s+='"';break;case"'":s+="'";break;case"`":s+="`";break;case"0":s+="\0";break;default:s+=o}this.pos++}}else s+=r,this.pos++}throw new Error(`Unterminated string starting at position ${t}`)}readRegex(){let n=this.pos;this.pos++;let t="",s="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="/"){for(this.pos++;this.pos<this.input.length&&this.input[this.pos]==="i";)s+=this.input[this.pos],this.pos++;return{type:"regex",value:t+(s?`/${s}`:""),pos:n}}r==="\\"?(t+=r,this.pos++,this.pos<this.input.length&&(t+=this.input[this.pos],this.pos++)):(t+=r,this.pos++)}throw new Error(`Unterminated regex starting at position ${n}`)}readIdentifier(){let n=this.pos;for(;this.pos<this.input.length&&this.isIdentChar(this.input[this.pos]);)this.pos++;let t=!1;this.pos<this.input.length&&this.input[this.pos]==="?"&&(t=!0,this.pos++);let s=this.input.slice(n,t?this.pos-1:this.pos);t&&(s+="?");let r={true:"true",false:"false",null:"null",and:"and",or:"or",eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",in:"in",as:"as",_:"_"},o=s.replace(/\?$/,"");return o in r&&!t?{type:r[o],value:o,pos:n}:{type:"ident",value:s,pos:n}}},O={PIPE:1,OR:2,AND:3,EQUALITY:4,COMPARISON:5,ADDITIVE:6,MULTIPLICATIVE:7,POWER:8,UNARY:9,POSTFIX:10},U=class{pos=0;tokens;constructor(n){this.tokens=n}parse(){let n=this.parseExpr(0);if(this.peek().type!=="eof")throw new Error(`Unexpected token: ${this.peek().value}`);return n}parseExpr(n){let t=this.parsePrefix();for(;;){let s=this.peek(),r=this.getInfixPrec(s.type);if(r<n)break;t=this.parseInfix(t,r)}return t}parsePrefix(){let n=this.peek();switch(n.type){case"int":return this.advance(),{type:"int",value:Number.parseInt(n.value,10)};case"float":return this.advance(),{type:"float",value:Number.parseFloat(n.value)};case"string":return this.advance(),{type:"string",value:n.value};case"regex":{this.advance();let t=n.value.split("/"),s=t.length>1?t[t.length-1]:"";return{type:"regex",pattern:t.slice(0,-1).join("/")||n.value,caseInsensitive:s.includes("i")}}case"true":return this.advance(),{type:"bool",value:!0};case"false":return this.advance(),{type:"bool",value:!1};case"null":return this.advance(),{type:"null"};case"_":return this.advance(),{type:"underscore"};case"ident":{let t=n.value,s=t.endsWith("?"),r=s?t.slice(0,-1):t;if(this.advance(),this.peek().type==="(")return this.parseFunctionCall(r);if(this.peek().type==="=>"){this.advance();let o=this.parseExpr(0);return this.bindLambdaArgs({type:"lambda",params:[r],body:o},[r])}return{type:"identifier",name:r,unsure:s}}case"(":{this.advance();let t=[];if(this.peek().type===")"){if(this.advance(),this.peek().type==="=>"){this.advance();let r=this.parseExpr(0);return{type:"lambda",params:[],body:r}}throw new Error("Empty parentheses not allowed")}if(this.peek().type==="ident"){let r=this.peek().value;if(this.advance(),this.peek().type===","||this.peek().type===")"){for(t.push(r);this.peek().type===","&&(this.advance(),this.peek().type==="ident");)t.push(this.peek().value),this.advance();if(this.peek().type===")"&&(this.advance(),this.peek().type==="=>")){this.advance();let o=this.parseExpr(0);return this.bindLambdaArgs({type:"lambda",params:t,body:o},t)}this.pos-=t.length*2,t.length>1&&(this.pos=this.pos)}this.pos--}let s=this.parseExpr(0);return this.expect(")"),this.peek().type,s}case"[":return this.parseList();case"{":return this.parseMap();case"-":{this.advance();let t=this.parseExpr(O.UNARY);return t.type==="int"?{type:"int",value:-t.value}:t.type==="float"?{type:"float",value:-t.value}:{type:"func",name:"neg",args:[{expr:t}]}}case"!":return this.advance(),{type:"func",name:"not",args:[{expr:this.parseExpr(O.UNARY)}]};default:throw new Error(`Unexpected token: ${n.type} (${n.value})`)}}parseFunctionCall(n){this.expect("(");let t=[];if(this.peek().type!==")")do{t.length>0&&this.peek().type===","&&this.advance();let s;if(this.peek().type==="ident"){let o=this.peek().value,a=this.pos+1;a<this.tokens.length&&this.tokens[a].type==="="&&(s=o,this.advance(),this.advance())}let r=this.parseExpr(0);t.push({name:s,expr:r})}while(this.peek().type===",");return this.expect(")"),{type:"func",name:n.toLowerCase(),args:t}}parseList(){this.expect("[");let n=[];if(this.peek().type!=="]")do n.length>0&&this.peek().type===","&&this.advance(),n.push(this.parseExpr(0));while(this.peek().type===",");return this.expect("]"),{type:"list",elements:n}}parseMap(){this.expect("{");let n=[];if(this.peek().type!=="}")do{n.length>0&&this.peek().type===","&&this.advance();let t;if(this.peek().type==="ident")t=this.peek().value,this.advance();else if(this.peek().type==="string")t=this.peek().value,this.advance();else throw new Error(`Expected map key, got ${this.peek().type}`);this.expect(":");let s=this.parseExpr(0);n.push({key:t,value:s})}while(this.peek().type===",");return this.expect("}"),{type:"map",entries:n}}parseInfix(n,t){let s=this.peek(),r={"+":"add","-":"sub","*":"mul","/":"div","//":"idiv","%":"mod","**":"pow","++":"concat","==":"==","!=":"!=","<":"<","<=":"<=",">":">",">=":">=",eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge","&&":"and",and:"and","||":"or",or:"or"};if(s.type in r){this.advance();let o=this.parseExpr(t+(this.isRightAssoc(s.type)?0:1));return{type:"func",name:r[s.type],args:[{expr:n},{expr:o}]}}if(s.type==="|"){this.advance();let o=this.parseExpr(t);return this.handlePipe(n,o)}if(s.type===".")return this.advance(),this.handleDot(n);if(s.type==="[")return this.advance(),this.handleIndexing(n);if(s.type==="in")return this.advance(),{type:"func",name:"contains",args:[{expr:this.parseExpr(t+1)},{expr:n}]};if(s.type==="not in")return this.advance(),{type:"func",name:"not",args:[{expr:{type:"func",name:"contains",args:[{expr:this.parseExpr(t+1)},{expr:n}]}}]};throw new Error(`Unexpected infix token: ${s.type}`)}handlePipe(n,t){if(t.type==="identifier")return{type:"func",name:t.name,args:[{expr:n}]};if(t.type==="func"){let s=this.countUnderscores(t);return s===0?t:s===1?this.fillUnderscore(t,n):{type:"pipeline",exprs:[n,t]}}return this.countUnderscores(t)===1?this.fillUnderscore(t,n):t}handleDot(n){let t=this.peek();if(t.type==="ident"){let s=t.value;if(this.advance(),this.peek().type==="("){let r=this.parseFunctionCall(s);return r.type==="func"&&r.args.unshift({expr:n}),r}return{type:"func",name:"get",args:[{expr:n},{expr:{type:"string",value:s}}]}}if(t.type==="int"){let s=Number.parseInt(t.value,10);return this.advance(),{type:"func",name:"get",args:[{expr:n},{expr:{type:"int",value:s}}]}}if(t.type==="string"){let s=t.value;return this.advance(),{type:"func",name:"get",args:[{expr:n},{expr:{type:"string",value:s}}]}}throw new Error(`Expected identifier, number, or string after dot, got ${t.type}`)}handleIndexing(n){if(this.peek().type===":"){if(this.advance(),this.peek().type==="]")return this.advance(),{type:"func",name:"slice",args:[{expr:n}]};let s=this.parseExpr(0);return this.expect("]"),{type:"func",name:"slice",args:[{expr:n},{expr:{type:"int",value:0}},{expr:s}]}}let t=this.parseExpr(0);if(this.peek().type===":"){if(this.advance(),this.peek().type==="]")return this.advance(),{type:"func",name:"slice",args:[{expr:n},{expr:t}]};let s=this.parseExpr(0);return this.expect("]"),{type:"func",name:"slice",args:[{expr:n},{expr:t},{expr:s}]}}return this.expect("]"),{type:"func",name:"get",args:[{expr:n},{expr:t}]}}countUnderscores(n){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}fillUnderscore(n,t){return n.type==="underscore"?t:n.type==="func"?{...n,args:n.args.map(s=>({...s,expr:this.fillUnderscore(s.expr,t)}))}:n.type==="list"?{...n,elements:n.elements.map(s=>this.fillUnderscore(s,t))}:n.type==="map"?{...n,entries:n.entries.map(s=>({...s,value:this.fillUnderscore(s.value,t)}))}:n}bindLambdaArgs(n,t){return{...n,body:this.bindLambdaArgsInExpr(n.body,t)}}bindLambdaArgsInExpr(n,t){return n.type==="identifier"&&t.includes(n.name)?{type:"lambdaBinding",name:n.name}:n.type==="func"?{...n,args:n.args.map(s=>({...s,expr:this.bindLambdaArgsInExpr(s.expr,t)}))}:n.type==="list"?{...n,elements:n.elements.map(s=>this.bindLambdaArgsInExpr(s,t))}:n.type==="map"?{...n,entries:n.entries.map(s=>({...s,value:this.bindLambdaArgsInExpr(s.value,t)}))}:n}getInfixPrec(n){switch(n){case"|":return O.PIPE;case"||":case"or":return O.OR;case"&&":case"and":return O.AND;case"==":case"!=":case"eq":case"ne":return O.EQUALITY;case"<":case"<=":case">":case">=":case"lt":case"le":case"gt":case"ge":case"in":case"not in":return O.COMPARISON;case"+":case"-":case"++":return O.ADDITIVE;case"*":case"/":case"//":case"%":return O.MULTIPLICATIVE;case"**":return O.POWER;case".":case"[":return O.POSTFIX;default:return-1}}isRightAssoc(n){return n==="**"}peek(){return this.tokens[this.pos]||{type:"eof",value:"",pos:0}}advance(){return this.tokens[this.pos++]}expect(n){let t=this.peek();if(t.type!==n)throw new Error(`Expected ${n}, got ${t.type}`);return this.advance()}}});j();function N(e,n){return n.length===0?I(e,[]):n.length===1?{type:"Pipe",left:n[0],right:I(e,[])}:{type:"Pipe",left:n[0],right:I(e,n.slice(1))}}var De={add:e=>b("+",e[0],e[1]),sub:e=>b("-",e[0],e[1]),mul:e=>b("*",e[0],e[1]),div:e=>b("/",e[0],e[1]),mod:e=>b("%",e[0],e[1]),idiv:e=>I("floor",[b("/",e[0],e[1])]),pow:e=>N("pow",e),neg:e=>({type:"UnaryOp",op:"-",operand:e[0]}),"==":e=>b("==",e[0],e[1]),"!=":e=>b("!=",e[0],e[1]),"<":e=>b("<",e[0],e[1]),"<=":e=>b("<=",e[0],e[1]),">":e=>b(">",e[0],e[1]),">=":e=>b(">=",e[0],e[1]),eq:e=>b("==",L(e[0]),L(e[1])),ne:e=>b("!=",L(e[0]),L(e[1])),lt:e=>b("<",L(e[0]),L(e[1])),le:e=>b("<=",L(e[0]),L(e[1])),gt:e=>b(">",L(e[0]),L(e[1])),ge:e=>b(">=",L(e[0]),L(e[1])),and:e=>b("and",e[0],e[1]),or:e=>b("or",e[0],e[1]),not:e=>({type:"UnaryOp",op:"not",operand:e[0]}),len:e=>N("length",e),length:e=>N("length",e),upper:e=>N("ascii_upcase",e),lower:e=>N("ascii_downcase",e),trim:e=>N("trim",e),ltrim:e=>e.length===0?I("ltrimstr",[{type:"Literal",value:" "}]):{type:"Pipe",left:e[0],right:I("ltrimstr",[{type:"Literal",value:" "}])},rtrim:e=>e.length===0?I("rtrimstr",[{type:"Literal",value:" "}]):{type:"Pipe",left:e[0],right:I("rtrimstr",[{type:"Literal",value:" "}])},split:e=>N("split",e),join:e=>e.length===1?I("join",[{type:"Literal",value:""}]):N("join",e),concat:e=>b("+",e[0],e[1]),startswith:e=>N("startswith",e),endswith:e=>N("endswith",e),contains:e=>N("contains",e),replace:e=>N("gsub",e),substr:e=>e.length===2?{type:"Slice",base:e[0],start:e[1]}:{type:"Slice",base:e[0],start:e[1],end:b("+",e[1],e[2])},abs:e=>N("fabs",e),floor:e=>N("floor",e),ceil:e=>N("ceil",e),round:e=>N("round",e),sqrt:e=>N("sqrt",e),log:e=>N("log",e),log10:e=>N("log10",e),log2:e=>N("log2",e),exp:e=>N("exp",e),sin:e=>N("sin",e),cos:e=>N("cos",e),tan:e=>N("tan",e),asin:e=>N("asin",e),acos:e=>N("acos",e),atan:e=>N("atan",e),min:e=>N("min",e),max:e=>N("max",e),first:e=>e.length===0?{type:"Index",index:{type:"Literal",value:0}}:{type:"Index",index:{type:"Literal",value:0},base:e[0]},last:e=>e.length===0?{type:"Index",index:{type:"Literal",value:-1}}:{type:"Index",index:{type:"Literal",value:-1},base:e[0]},get:e=>e.length===1?{type:"Index",index:e[0]}:{type:"Index",index:e[1],base:e[0]},slice:e=>e.length===1?{type:"Slice",base:e[0]}:e.length===2?{type:"Slice",base:e[0],start:e[1]}:{type:"Slice",base:e[0],start:e[1],end:e[2]},keys:"keys",values:"values",entries:e=>I("to_entries",e),from_entries:"from_entries",reverse:"reverse",sort:"sort",sort_by:"sort_by",group_by:"group_by",unique:"unique",unique_by:"unique_by",flatten:"flatten",map:e=>({type:"Pipe",left:e[0],right:{type:"Array",elements:e[1]}}),select:e=>I("select",e),empty:()=>I("empty",[]),count:()=>I("length",[]),sum:e=>e.length===0?I("add",[]):{type:"Pipe",left:{type:"Array",elements:e[0]},right:I("add",[])},mean:e=>e.length===0?{type:"Pipe",left:{type:"Identity"},right:b("/",I("add",[]),I("length",[]))}:{type:"Pipe",left:{type:"Array",elements:e[0]},right:b("/",I("add",[]),I("length",[]))},avg:e=>e.length===0?{type:"Pipe",left:{type:"Identity"},right:b("/",I("add",[]),I("length",[]))}:{type:"Pipe",left:{type:"Array",elements:e[0]},right:b("/",I("add",[]),I("length",[]))},type:"type",isnull:e=>e.length===0?b("==",{type:"Identity"},{type:"Literal",value:null}):b("==",e[0],{type:"Literal",value:null}),isempty:e=>e.length===0?b("==",{type:"Identity"},{type:"Literal",value:""}):b("==",e[0],{type:"Literal",value:""}),tonumber:e=>e.length===0?I("tonumber",[]):I("tonumber",e),tostring:e=>e.length===0?I("tostring",[]):I("tostring",e),if:e=>je(e[0],e[1],e[2]),coalesce:e=>{if(e.length===0)return{type:"Literal",value:null};if(e.length===1)return e[0];let[n,...t]=e,s=b("and",b("!=",n,{type:"Literal",value:null}),b("!=",n,{type:"Literal",value:""}));return je(s,n,t.length===1?t[0]:De.coalesce(t))},index:()=>({type:"Field",name:"_row_index"}),now:()=>I("now",[]),fmt:e=>I("tostring",e),format:e=>I("tostring",e)};function b(e,n,t){return{type:"BinaryOp",op:e,left:n,right:t}}function I(e,n){return{type:"Call",name:e,args:n}}var Xe="then";function je(e,n,t){let s={type:"Cond",cond:e,elifs:[],else:t||{type:"Literal",value:null}};return s[Xe]=n,s}function L(e){return{type:"Pipe",left:e,right:{type:"Call",name:"tostring",args:[]}}}function A(e,n=!0){switch(e.type){case"int":case"float":return{type:"Literal",value:e.value};case"string":return{type:"Literal",value:e.value};case"bool":return{type:"Literal",value:e.value};case"null":return{type:"Literal",value:null};case"underscore":return{type:"Index",base:{type:"Identity"},index:{type:"Literal",value:"_"}};case"identifier":return n?{type:"Field",name:e.name}:{type:"VarRef",name:e.name};case"lambdaBinding":return{type:"VarRef",name:e.name};case"func":{let t=e.args.map(r=>A(r.expr,n)),s=De[e.name];return typeof s=="function"?s(t):I(typeof s=="string"?s:e.name,t)}case"list":return e.elements.length===0?{type:"Array"}:{type:"Array",elements:e.elements.reduce((t,s,r)=>{let o=A(s,n);return r===0?o:{type:"Comma",left:t,right:o}},null)};case"map":return{type:"Object",entries:e.entries.map(t=>({key:t.key,value:A(t.value,n)}))};case"regex":return{type:"Literal",value:e.pattern};case"slice":return{type:"Slice",start:e.start?A(e.start,n):void 0,end:e.end?A(e.end,n):void 0};case"lambda":return A(e.body,n);case"pipeline":return{type:"Identity"};default:throw new Error(`Unknown moonblade expression type: ${e.type}`)}}function K(e){let n=[],t=0;for(;t<e.length;){for(;t<e.length&&(e[t]===" "||e[t]===",");)t++;if(t>=e.length)break;let s=t;for(;t<e.length&&/\w/.test(e[t]);)t++;let r=e.slice(s,t);for(;t<e.length&&e[t]===" ";)t++;if(e[t]!=="(")break;t++;let o=1,a=t;for(;t<e.length&&o>0;)e[t]==="("?o++:e[t]===")"&&o--,o>0&&t++;let d=e.slice(a,t).trim();for(t++;t<e.length&&e[t]===" ";)t++;let u="";if(e.slice(t,t+3).toLowerCase()==="as "){for(t+=3;t<e.length&&e[t]===" ";)t++;let p=t;for(;t<e.length&&/\w/.test(e[t]);)t++;u=e.slice(p,t)}u||(u=d?`${r}(${d})`:`${r}()`),n.push({func:r,expr:d,alias:u})}return n}function Ve(e){return/^\w+$/.test(e)}function z(e,n,t){let s=A(V(n)),r=P(e,s,t);return r.length>0?r[0]:null}function G(e,n,t={}){let{func:s,expr:r}=n;if(s==="count"&&!r)return e.length;let o;switch(Ve(r)?o=e.map(a=>a[r]).filter(a=>a!=null):o=e.map(a=>z(a,r,t)).filter(a=>a!=null),s){case"count":return Ve(r)?o.length:o.filter(a=>!!a).length;case"sum":return o.map(d=>typeof d=="number"?d:Number.parseFloat(String(d))).reduce((d,u)=>d+u,0);case"mean":case"avg":{let a=o.map(d=>typeof d=="number"?d:Number.parseFloat(String(d)));return a.length>0?a.reduce((d,u)=>d+u,0)/a.length:0}case"min":{let a=o.map(d=>typeof d=="number"?d:Number.parseFloat(String(d)));return a.length>0?Math.min(...a):null}case"max":{let a=o.map(d=>typeof d=="number"?d:Number.parseFloat(String(d)));return a.length>0?Math.max(...a):null}case"first":return o.length>0?o[0]:null;case"last":return o.length>0?o[o.length-1]:null;case"median":{let a=o.map(u=>typeof u=="number"?u:Number.parseFloat(String(u))).filter(u=>!Number.isNaN(u)).sort((u,p)=>u-p);if(a.length===0)return null;let d=Math.floor(a.length/2);return a.length%2===0?(a[d-1]+a[d])/2:a[d]}case"mode":{let a=new Map;for(let p of o){let l=String(p);a.set(l,(a.get(l)||0)+1)}let d=0,u=null;for(let[p,l]of a)l>d&&(d=l,u=p);return u}case"cardinality":return new Set(o.map(d=>String(d))).size;case"values":return o.map(a=>String(a)).join("|");case"distinct_values":return[...new Set(o.map(d=>String(d)))].sort().join("|");case"all":{if(e.length===0)return!0;for(let a of e)if(!z(a,r,t))return!1;return!0}case"any":{for(let a of e)if(z(a,r,t))return!0;return!1}default:return null}}function We(e,n,t={}){let s={};for(let r of n)s[r.alias]=G(e,r,t);return s}async function X(e,n){let t="",s=[];for(let l of e)l.startsWith("-")||(t?s.push(l):t=l);if(!t)return{stdout:"",stderr:`xan agg: no aggregation expression
6
+ `,exitCode:1};let{data:r,error:o}=await v(s,n);if(o)return o;let a={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},d=K(t),u=d.map(l=>l.alias),p=We(r,d,a);return{stdout:w(u,[p]),stderr:"",exitCode:0}}async function Y(e,n){let t="",s="",r=[];for(let f=0;f<e.length;f++){let m=e[f];m==="--sorted"||m.startsWith("-")||(t?s?r.push(m):s=m:t=m)}if(!t||!s)return{stdout:"",stderr:`xan groupby: usage: xan groupby COLS EXPR [FILE]
7
+ `,exitCode:1};let{data:o,error:a}=await v(r,n);if(a)return a;let d={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},u=t.split(","),p=K(s),l=[],h=new Map;for(let f of o){let m=u.map(g=>String(f[g])).join("\0");h.has(m)||(h.set(m,[]),l.push(m)),h.get(m)?.push(f)}let c=[...u,...p.map(f=>f.alias)],i=[];for(let f of l){let m=h.get(f);if(!m)continue;let g={};for(let y of u)g[y]=m[0][y];for(let y of p)g[y.alias]=G(m,y,d);i.push(g)}return{stdout:w(c,i),stderr:"",exitCode:0}}async function B(e,n){let t=[],s="",r=10,o=!1,a=[];for(let i=0;i<e.length;i++){let f=e[i];(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)}let{headers:d,data:u,error:p}=await v(a,n);if(p)return p;let l=t.length>0?t:d.filter(i=>i!==s);s&&t.length===0&&(l=d.filter(i=>i!==s));let h=[],c=s?["field",s,"value","count"]:["field","value","count"];if(s){let i=new Map;for(let f of u){let m=String(f[s]??"");i.has(m)||i.set(m,[]),i.get(m)?.push(f)}for(let f of l)for(let[m,g]of i){let y=new Map;for(let S of g){let k=S[f],C=k===""||k===null||k===void 0?"":String(k);y.set(C,(y.get(C)||0)+1)}let x=[...y.entries()].sort((S,k)=>k[1]!==S[1]?k[1]-S[1]:S[0].localeCompare(k[0]));o&&(x=x.filter(([S])=>S!=="")),r>0&&(x=x.slice(0,r));for(let[S,k]of x)h.push({field:f,[s]:m,value:S===""?"<empty>":S,count:k})}}else for(let i of l){let f=new Map;for(let g of u){let y=g[i],x=y===""||y===null||y===void 0?"":String(y);f.set(x,(f.get(x)||0)+1)}let m=[...f.entries()].sort((g,y)=>y[1]!==g[1]?y[1]-g[1]:g[0].localeCompare(y[0]));o&&(m=m.filter(([g])=>g!=="")),r>0&&(m=m.slice(0,r));for(let[g,y]of m)h.push({field:i,value:g===""?"<empty>":g,count:y})}return{stdout:w(c,h),stderr:"",exitCode:0}}async function Z(e,n){let t=[],s=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-s"&&l+1<e.length?t=e[++l].split(","):h.startsWith("-")||s.push(h)}let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=t.length>0?t:r,u=["field","type","count","min","max","mean"],p=[];for(let l of d){let h=o.map(f=>f[l]).filter(f=>f!=null),c=h.map(f=>typeof f=="number"?f:Number.parseFloat(String(f))).filter(f=>!Number.isNaN(f)),i=c.length===h.length&&c.length>0;p.push({field:l,type:i?"Number":"String",count:h.length,min:i?Math.min(...c):"",max:i?Math.max(...c):"",mean:i?Math.round(c.reduce((f,m)=>f+m,0)/c.length*1e10)/1e10:""})}return{stdout:w(u,p),stderr:"",exitCode:0}}j();function Ue(e){let n=V(e);return A(n)}function Ye(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${t}$`)}function q(e,n){let t=[],s=new Set;for(let r of e.split(",")){let o=r.trim();if(o.startsWith("!")){let p=o.slice(1),l=q(p,n);for(let h of l)s.add(h);continue}if(o==="*"){for(let p of n)t.includes(p)||t.push(p);continue}if(o.includes("*")){let p=Ye(o);for(let l of n)p.test(l)&&!t.includes(l)&&t.push(l);continue}let a=o.match(/^([^:]*):([^:]*)$/);if(a&&(a[1]||a[2])){let p=a[1],l=a[2],h=p?n.indexOf(p):0,c=l?n.indexOf(l):n.length-1;if(h!==-1&&c!==-1){let i=h<=c?1:-1;for(let f=h;i>0?f<=c:f>=c;f+=i)t.includes(n[f])||t.push(n[f])}continue}let d=o.match(/^(\d+)-(\d+)$/);if(d){let p=Number.parseInt(d[1],10),l=Number.parseInt(d[2],10);for(let h=p;h<=l&&h<n.length;h++)t.push(n[h]);continue}let u=Number.parseInt(o,10);if(!Number.isNaN(u)&&u>=0&&u<n.length){t.push(n[u]);continue}n.includes(o)&&t.push(o)}return s.size>0?t.filter(r=>!s.has(r)):t}async function Q(e,n){let t="",s=[];for(let p of e)p.startsWith("-")||(t?s.push(p):t=p);if(!t)return{stdout:"",stderr:`xan select: no columns specified
8
+ `,exitCode:1};let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=q(t,r),u=o.map(p=>{let l={};for(let h of d)l[h]=p[h];return l});return{stdout:w(d,u),stderr:"",exitCode:0}}async function ee(e,n){let t="",s=[];for(let l of e)l.startsWith("-")||(t?s.push(l):t=l);if(!t)return{stdout:"",stderr:`xan drop: no columns specified
9
+ `,exitCode:1};let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=new Set(q(t,r)),u=r.filter(l=>!d.has(l)),p=o.map(l=>{let h={};for(let c of u)h[c]=l[c];return h});return{stdout:w(u,p),stderr:"",exitCode:0}}async function te(e,n){let t="",s="",r=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-s"&&l+1<e.length?s=e[++l]:h.startsWith("-")||(t?r.push(h):t=h)}if(!t)return{stdout:"",stderr:`xan rename: no new name(s) specified
10
+ `,exitCode:1};let{headers:o,data:a,error:d}=await v(r,n);if(d)return d;let u;if(s){let l=s.split(","),h=t.split(","),c=new Map;for(let i=0;i<l.length&&i<h.length;i++)c.set(l[i],h[i]);u=o.map(i=>c.get(i)||i)}else{let l=t.split(",");u=o.map((h,c)=>c<l.length?l[c]:h)}let p=a.map(l=>{let h={};for(let c=0;c<o.length;c++)h[u[c]]=l[o[c]];return h});return{stdout:w(u,p),stderr:"",exitCode:0}}async function ne(e,n){let t="index",s=[];for(let p=0;p<e.length;p++)e[p]==="-c"&&p+1<e.length?t=e[++p]:s.push(e[p]);let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=[t,...r],u=o.map((p,l)=>{let h={[t]:l};for(let c of r)h[c]=p[c];return h});return{stdout:w(d,u),stderr:"",exitCode:0}}async function se(e,n){let t=e.includes("-j")||e.includes("--just-names"),{headers:s,error:r}=await v(e.filter(a=>a!=="-j"&&a!=="--just-names"),n);return r||{stdout:t?`${s.map(a=>a).join(`
11
11
  `)}
12
- `:`${s.map((a,p)=>`${p} ${a}`).join(`
12
+ `:`${s.map((a,d)=>`${d} ${a}`).join(`
13
13
  `)}
14
- `,stderr:"",exitCode:0}}async function re(e,n){let{data:t,error:s}=await w(e,n);return s||{stdout:`${t.length}
15
- `,stderr:"",exitCode:0}}async function oe(e,n){let t=10,s=[];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]);let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=o.slice(0,t);return{stdout:v(r,p),stderr:"",exitCode:0}}async function ie(e,n){let t=10,s=[];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]);let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=o.slice(-t);return{stdout:v(r,p),stderr:"",exitCode:0}}async function ae(e,n){let t,s,r,o=[];for(let c=0;c<e.length;c++){let i=e[c];(i==="-s"||i==="--start")&&c+1<e.length?t=Number.parseInt(e[++c],10):(i==="-e"||i==="--end")&&c+1<e.length?s=Number.parseInt(e[++c],10):(i==="-l"||i==="--len")&&c+1<e.length?r=Number.parseInt(e[++c],10):i.startsWith("-")||o.push(i)}let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;let f=t??0,l;r!==void 0?l=f+r:s!==void 0?l=s:l=p.length;let h=p.slice(f,l);return{stdout:v(a,h),stderr:"",exitCode:0}}async function le(e,n){let{headers:t,data:s,error:r}=await w(e,n);if(r)return r;let o=[...s].reverse();return{stdout:v(t,o),stderr:"",exitCode:0}}var ue=He(ze(),1);async function ce(e,n){let t=e.filter(f=>!f.startsWith("-")),{headers:s,data:r,error:o}=await w(t,n);if(o)return o;if(r.length===0){let f=["column"],l=s.map(h=>({column:h}));return{stdout:v(f,l),stderr:"",exitCode:0}}let a=s[0],p=[a,...r.map((f,l)=>String(f[a]??`row_${l}`))],u=[];for(let f=1;f<s.length;f++){let l=s[f],h={[a]:l};for(let c=0;c<r.length;c++)h[p[c+1]]=r[c][l];u.push(h)}return{stdout:v(p,u),stderr:"",exitCode:0}}async function pe(e,n){let t=null,s=[];for(let l=0;l<e.length;l++){let h=e[l];h==="--seed"&&l+1<e.length?t=Number.parseInt(e[++l],10):h.startsWith("-")||s.push(h)}let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=t!==null?t:Date.now(),u=()=>(p=p*1103515245+12345&2147483647,p/2147483647),f=[...o];for(let l=f.length-1;l>0;l--){let h=Math.floor(u()*(l+1));[f[l],f[h]]=[f[h],f[l]]}return{stdout:v(r,f),stderr:"",exitCode:0}}async function fe(e,n){let t=null,s="",r=[];for(let i=0;i<e.length;i++){let d=e[i];(d==="-l"||d==="--length")&&i+1<e.length?t=Number.parseInt(e[++i],10):(d==="-d"||d==="--default")&&i+1<e.length?s=e[++i]:d.startsWith("-")||r.push(d)}let o=r[0],a;if(!o||o==="-")a=n.stdin;else try{let i=n.fs.resolvePath(n.cwd,o);a=await n.fs.readFile(i)}catch{return{stdout:"",stderr:`xan fixlengths: ${o}: No such file or directory
16
- `,exitCode:1}}let u=ue.default.parse(a.trim(),{header:!1,skipEmptyLines:!0}).data;if(u.length===0)return{stdout:"",stderr:"",exitCode:0};let f=Math.max(...u.map(i=>i.length)),l=t??f,h=u.map(i=>i.length===l?i:i.length<l?[...i,...Array(l-i.length).fill(s)]:i.slice(0,l));return{stdout:`${ue.default.unparse(h).replace(/\r\n/g,`
14
+ `,stderr:"",exitCode:0}}async function re(e,n){let{data:t,error:s}=await v(e,n);return s||{stdout:`${t.length}
15
+ `,stderr:"",exitCode:0}}async function oe(e,n){let t=10,s=[];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]);let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=o.slice(0,t);return{stdout:w(r,d),stderr:"",exitCode:0}}async function ie(e,n){let t=10,s=[];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]);let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=o.slice(-t);return{stdout:w(r,d),stderr:"",exitCode:0}}async function ae(e,n){let t,s,r,o=[];for(let c=0;c<e.length;c++){let i=e[c];(i==="-s"||i==="--start")&&c+1<e.length?t=Number.parseInt(e[++c],10):(i==="-e"||i==="--end")&&c+1<e.length?s=Number.parseInt(e[++c],10):(i==="-l"||i==="--len")&&c+1<e.length?r=Number.parseInt(e[++c],10):i.startsWith("-")||o.push(i)}let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;let p=t??0,l;r!==void 0?l=p+r:s!==void 0?l=s:l=d.length;let h=d.slice(p,l);return{stdout:w(a,h),stderr:"",exitCode:0}}async function le(e,n){let{headers:t,data:s,error:r}=await v(e,n);if(r)return r;let o=[...s].reverse();return{stdout:w(t,o),stderr:"",exitCode:0}}var ue=ze(Ge(),1);async function ce(e,n){let t=e.filter(p=>!p.startsWith("-")),{headers:s,data:r,error:o}=await v(t,n);if(o)return o;if(r.length===0){let p=["column"],l=s.map(h=>({column:h}));return{stdout:w(p,l),stderr:"",exitCode:0}}let a=s[0],d=[a,...r.map((p,l)=>String(p[a]??`row_${l}`))],u=[];for(let p=1;p<s.length;p++){let l=s[p],h={[a]:l};for(let c=0;c<r.length;c++)h[d[c+1]]=r[c][l];u.push(h)}return{stdout:w(d,u),stderr:"",exitCode:0}}async function pe(e,n){let t=null,s=[];for(let l=0;l<e.length;l++){let h=e[l];h==="--seed"&&l+1<e.length?t=Number.parseInt(e[++l],10):h.startsWith("-")||s.push(h)}let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=t!==null?t:Date.now(),u=()=>(d=d*1103515245+12345&2147483647,d/2147483647),p=[...o];for(let l=p.length-1;l>0;l--){let h=Math.floor(u()*(l+1));[p[l],p[h]]=[p[h],p[l]]}return{stdout:w(r,p),stderr:"",exitCode:0}}async function fe(e,n){let t=null,s="",r=[];for(let i=0;i<e.length;i++){let f=e[i];(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)}let o=r[0],a;if(!o||o==="-")a=n.stdin;else try{let i=n.fs.resolvePath(n.cwd,o);a=await n.fs.readFile(i)}catch{return{stdout:"",stderr:`xan fixlengths: ${o}: No such file or directory
16
+ `,exitCode:1}}let u=ue.default.parse(a.trim(),{header:!1,skipEmptyLines:!0}).data;if(u.length===0)return{stdout:"",stderr:"",exitCode:0};let p=Math.max(...u.map(i=>i.length)),l=t??p,h=u.map(i=>i.length===l?i:i.length<l?[...i,...Array(l-i.length).fill(s)]:i.slice(0,l));return{stdout:`${ue.default.unparse(h).replace(/\r\n/g,`
17
17
  `)}
18
18
  `,stderr:"",exitCode:0}}async function de(e,n){let t=null,s=null,r=".",o=[];for(let c=0;c<e.length;c++){let i=e[c];(i==="-c"||i==="--chunks")&&c+1<e.length?t=Number.parseInt(e[++c],10):(i==="-S"||i==="--size")&&c+1<e.length?s=Number.parseInt(e[++c],10):(i==="-o"||i==="--output")&&c+1<e.length?r=e[++c]:i.startsWith("-")||o.push(i)}if(!t&&!s)return{stdout:"",stderr:`xan split: must specify -c or -S
19
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;let f=[];if(t){let c=Math.ceil(p.length/t);for(let i=0;i<t;i++)f.push(p.slice(i*c,(i+1)*c))}else if(s)for(let c=0;c<p.length;c+=s)f.push(p.slice(c,c+s));let l=f.filter(c=>c.length>0),h=o[0]?.replace(/\.csv$/,"")||"part";try{let c=n.fs.resolvePath(n.cwd,r);for(let i=0;i<l.length;i++){let d=`${h}_${String(i+1).padStart(3,"0")}.csv`,m=n.fs.resolvePath(c,d);await n.fs.writeFile(m,v(a,l[i]))}return{stdout:`Split into ${l.length} parts
20
- `,stderr:"",exitCode:0}}catch{return{stdout:`${l.map((i,d)=>`Part ${d+1}: ${i.length} rows`).join(`
19
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;let p=[];if(t){let c=Math.ceil(d.length/t);for(let i=0;i<t;i++)p.push(d.slice(i*c,(i+1)*c))}else if(s)for(let c=0;c<d.length;c+=s)p.push(d.slice(c,c+s));let l=p.filter(c=>c.length>0),h=o[0]?.replace(/\.csv$/,"")||"part";try{let c=n.fs.resolvePath(n.cwd,r);for(let i=0;i<l.length;i++){let f=`${h}_${String(i+1).padStart(3,"0")}.csv`,m=n.fs.resolvePath(c,f);await n.fs.writeFile(m,w(a,l[i]))}return{stdout:`Split into ${l.length} parts
20
+ `,stderr:"",exitCode:0}}catch{return{stdout:`${l.map((i,f)=>`Part ${f+1}: ${i.length} rows`).join(`
21
21
  `)}
22
- `,stderr:"",exitCode:0}}}async function he(e,n){let t="",s=".",r=[];for(let f=0;f<e.length;f++){let l=e[f];(l==="-o"||l==="--output")&&f+1<e.length?s=e[++f]:l.startsWith("-")||(t?r.push(l):t=l)}if(!t)return{stdout:"",stderr:`xan partition: usage: xan partition COLUMN [FILE]
23
- `,exitCode:1};let{headers:o,data:a,error:p}=await w(r,n);if(p)return p;if(!o.includes(t))return{stdout:"",stderr:`xan partition: column '${t}' not found
24
- `,exitCode:1};let u=new Map;for(let f of a){let l=String(f[t]??"");u.has(l)||u.set(l,[]),u.get(l)?.push(f)}try{let f=n.fs.resolvePath(n.cwd,s);for(let[l,h]of u){let i=`${l.replace(/[^a-zA-Z0-9_-]/g,"_")||"empty"}.csv`,d=n.fs.resolvePath(f,i);await n.fs.writeFile(d,v(o,h))}return{stdout:`Partitioned into ${u.size} files by '${t}'
22
+ `,stderr:"",exitCode:0}}}async function he(e,n){let t="",s=".",r=[];for(let p=0;p<e.length;p++){let l=e[p];(l==="-o"||l==="--output")&&p+1<e.length?s=e[++p]:l.startsWith("-")||(t?r.push(l):t=l)}if(!t)return{stdout:"",stderr:`xan partition: usage: xan partition COLUMN [FILE]
23
+ `,exitCode:1};let{headers:o,data:a,error:d}=await v(r,n);if(d)return d;if(!o.includes(t))return{stdout:"",stderr:`xan partition: column '${t}' not found
24
+ `,exitCode:1};let u=new Map;for(let p of a){let l=String(p[t]??"");u.has(l)||u.set(l,[]),u.get(l)?.push(p)}try{let p=n.fs.resolvePath(n.cwd,s);for(let[l,h]of u){let i=`${l.replace(/[^a-zA-Z0-9_-]/g,"_")||"empty"}.csv`,f=n.fs.resolvePath(p,i);await n.fs.writeFile(f,w(o,h))}return{stdout:`Partitioned into ${u.size} files by '${t}'
25
25
  `,stderr:"",exitCode:0}}catch{return{stdout:`${Array.from(u.entries()).map(([l,h])=>`${l}: ${h.length} rows`).join(`
26
26
  `)}
27
27
  `,stderr:"",exitCode:0}}}async function me(e,n){if(e.length===0)return{stdout:"",stderr:`xan to: usage: xan to <format> [FILE]
28
- `,exitCode:1};let t=e[0],s=e.slice(1);return t==="json"?Xe(s,n):{stdout:"",stderr:`xan to: unsupported format '${t}'
29
- `,exitCode:1}}async function Xe(e,n){let t=e.filter(a=>!a.startsWith("-")),{data:s,error:r}=await w(t,n);return r||{stdout:`${JSON.stringify(s,null,2)}
30
- `,stderr:"",exitCode:0}}async function ge(e,n){let t="",s=[];for(let r=0;r<e.length;r++){let o=e[r];(o==="-f"||o==="--format")&&r+1<e.length?t=e[++r]:o.startsWith("-")||s.push(o)}return t?t==="json"?Ye(s,n):{stdout:"",stderr:`xan from: unsupported format '${t}'
28
+ `,exitCode:1};let t=e[0],s=e.slice(1);return t==="json"?Be(s,n):{stdout:"",stderr:`xan to: unsupported format '${t}'
29
+ `,exitCode:1}}async function Be(e,n){let t=e.filter(a=>!a.startsWith("-")),{data:s,error:r}=await v(t,n);return r||{stdout:`${JSON.stringify(s,null,2)}
30
+ `,stderr:"",exitCode:0}}async function ge(e,n){let t="",s=[];for(let r=0;r<e.length;r++){let o=e[r];(o==="-f"||o==="--format")&&r+1<e.length?t=e[++r]:o.startsWith("-")||s.push(o)}return t?t==="json"?Ze(s,n):{stdout:"",stderr:`xan from: unsupported format '${t}'
31
31
  `,exitCode:1}:{stdout:"",stderr:`xan from: usage: xan from -f <format> [FILE]
32
- `,exitCode:1}}async function Ye(e,n){let t=e[0],s;if(!t||t==="-")s=n.stdin;else try{let r=n.fs.resolvePath(n.cwd,t);s=await n.fs.readFile(r)}catch{return{stdout:"",stderr:`xan from: ${t}: No such file or directory
32
+ `,exitCode:1}}async function Ze(e,n){let t=e[0],s;if(!t||t==="-")s=n.stdin;else try{let r=n.fs.resolvePath(n.cwd,t);s=await n.fs.readFile(r)}catch{return{stdout:"",stderr:`xan from: ${t}: No such file or directory
33
33
  `,exitCode:1}}try{let r=JSON.parse(s.trim());if(!Array.isArray(r))return{stdout:"",stderr:`xan from: JSON input must be an array
34
34
  `,exitCode:1};if(r.length===0)return{stdout:`
35
- `,stderr:"",exitCode:0};if(Array.isArray(r[0])){let[a,...p]=r,u=p.map(f=>{let l={};for(let h=0;h<a.length;h++)l[a[h]]=f[h];return l});return{stdout:v(a,u),stderr:"",exitCode:0}}let o=Object.keys(r[0]).sort();return{stdout:v(o,r),stderr:"",exitCode:0}}catch{return{stdout:"",stderr:`xan from: invalid JSON input
35
+ `,stderr:"",exitCode:0};if(Array.isArray(r[0])){let[a,...d]=r,u=d.map(p=>{let l={};for(let h=0;h<a.length;h++)l[a[h]]=p[h];return l});return{stdout:w(a,u),stderr:"",exitCode:0}}let o=Object.keys(r[0]).sort();return{stdout:w(o,r),stderr:"",exitCode:0}}catch{return{stdout:"",stderr:`xan from: invalid JSON input
36
36
  `,exitCode:1}}}async function ye(e,n){let t=!1,s=0,r="",o=[];for(let c=0;c<e.length;c++){let i=e[c];if(i==="-v"||i==="--invert")t=!0;else if((i==="-l"||i==="--limit")&&c+1<e.length)s=Number.parseInt(e[++c],10);else{if(i==="--help")return $({name:"xan filter",summary:"Filter rows by expression",usage:"xan filter [OPTIONS] EXPR [FILE]",description:"Filter CSV rows using moonblade expressions.",options:["-v, --invert invert match","-l, --limit N limit output to N rows"," --help display help"]});i.startsWith("-")||(r?o.push(i):r=i)}}if(!r)return{stdout:"",stderr:`xan filter: no expression specified
37
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;let f={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},l=Ve(r),h=[];for(let c of p){if(s>0&&h.length>=s)break;let i=O(c,l,f),d=i.length>0&&i.some(m=>!!m);(t?!d:d)&&h.push(c)}return{stdout:v(a,h),stderr:"",exitCode:0}}async function xe(e,n){let t="",s=!1,r=!1,o=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-N"||h==="--numeric"?s=!0:h==="-R"||h==="-r"||h==="--reverse"?r=!0:h==="-s"&&l+1<e.length?t=e[++l]:h.startsWith("-")||o.push(h)}let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;!t&&a.length>0&&(t=a[0]);let f=[...p].sort((l,h)=>{let c=l[t],i=h[t],d;if(s){let m=typeof c=="number"?c:Number.parseFloat(String(c)),g=typeof i=="number"?i:Number.parseFloat(String(i));d=m-g}else d=String(c).localeCompare(String(i));return r?-d:d});return{stdout:v(a,f),stderr:"",exitCode:0}}async function we(e,n){let t="",s=[];for(let f=0;f<e.length;f++){let l=e[f];l==="-s"&&f+1<e.length?t=e[++f]:l.startsWith("-")||s.push(l)}let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let p=new Set,u=o.filter(f=>{let l=t?String(f[t]):JSON.stringify(f);return p.has(l)?!1:(p.add(l),!0)});return{stdout:v(r,u),stderr:"",exitCode:0}}async function ve(e,n){let t=10,s="",r=!1,o=[];for(let h=0;h<e.length;h++){let c=e[h];(c==="-l"||c==="-n")&&h+1<e.length?t=Number.parseInt(e[++h],10):c==="-R"||c==="-r"||c==="--reverse"?r=!0:c.startsWith("-")||(s?o.push(c):s=c)}let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;!s&&a.length>0&&(s=a[0]);let l=[...p].sort((h,c)=>{let i=h[s],d=c[s],m=typeof i=="number"?i:Number.parseFloat(String(i)),g=typeof d=="number"?d:Number.parseFloat(String(d));return r?m-g:g-m}).slice(0,t);return{stdout:v(a,l),stderr:"",exitCode:0}}j();async function Ce(e,n){let t="",s=!1,r=!1,o=[];for(let d=0;d<e.length;d++){let m=e[d];m==="-O"||m==="--overwrite"?s=!0:m==="--filter"?r=!0:m.startsWith("-")||(t?o.push(m):t=m)}if(!t)return{stdout:"",stderr:`xan map: no expression specified
38
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;let l=T(t).map(({expr:d,name:m})=>({alias:typeof m=="string"?m:m[0],ast:A(d)})),h={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},c;if(s){c=[...a];for(let d of l)a.includes(d.alias)||c.push(d.alias)}else c=[...a,...l.map(d=>d.alias)];let i=[];for(let d=0;d<p.length;d++){let m=p[d],g={...m},y=!1,x={...m,_row_index:d};for(let S of l){let k=O(x,S.ast,h),C=k.length>0?k[0]:null;if(r&&C==null){y=!0;break}g[S.alias]=C}y||i.push(g)}return{stdout:v(c,i),stderr:"",exitCode:0}}async function be(e,n){let t="",s="",r="",o=[];for(let m=0;m<e.length;m++){let g=e[m];(g==="-r"||g==="--rename")&&m+1<e.length?r=e[++m]:g.startsWith("-")||(t?s?o.push(g):s=g:t=g)}if(!t||!s)return{stdout:"",stderr:`xan transform: usage: xan transform COLUMN EXPR [FILE]
39
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;let f=t.split(",").map(m=>m.trim()),l=r?r.split(",").map(m=>m.trim()):[];for(let m of f)if(!a.includes(m))return{stdout:"",stderr:`xan transform: column '${m}' not found
40
- `,exitCode:1};let h=A(T(s)[0]?.expr||(j(),Je(Re)).parseMoonblade(s)),c={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},i=a.map(m=>{let g=f.indexOf(m);return g!==-1&&l[g]?l[g]:m}),d=[];for(let m of p){let g={...m};for(let y=0;y<f.length;y++){let x=f[y],S={...m,_:m[x]},k=O(S,h,c),C=k.length>0?k[0]:null,E=l[y]||x;E!==x&&delete g[x],g[E]=C}d.push(g)}return{stdout:v(i,d),stderr:"",exitCode:0}}async function Se(e,n){let t="",s="|",r=!1,o="",a=[];for(let i=0;i<e.length;i++){let d=e[i];(d==="-s"||d==="--separator")&&i+1<e.length?s=e[++i]:d==="--drop-empty"?r=!0:(d==="-r"||d==="--rename")&&i+1<e.length?o=e[++i]:d.startsWith("-")||(t?a.push(d):t=d)}if(!t)return{stdout:"",stderr:`xan explode: usage: xan explode COLUMN [FILE]
41
- `,exitCode:1};let{headers:p,data:u,error:f}=await w(a,n);if(f)return f;if(!p.includes(t))return{stdout:"",stderr:`xan explode: column '${t}' not found
42
- `,exitCode:1};let l=o?p.map(i=>i===t?o:i):p,h=o||t,c=[];for(let i of u){let d=i[t],m=d==null?"":String(d);if(m===""){if(!r){let g={...i};o&&(delete g[t],g[h]=""),c.push(g)}}else{let g=m.split(s);for(let y of g){let x={...i};o&&delete x[t],x[h]=y,c.push(x)}}}return{stdout:v(l,c),stderr:"",exitCode:0}}async function Ie(e,n){let t="",s="|",r="",o=[];for(let g=0;g<e.length;g++){let y=e[g];(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)}if(!t)return{stdout:"",stderr:`xan implode: usage: xan implode COLUMN [FILE]
43
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;if(!a.includes(t))return{stdout:"",stderr:`xan implode: column '${t}' not found
44
- `,exitCode:1};let f=a.filter(g=>g!==t),l=r?a.map(g=>g===t?r:g):a,h=r||t,c=[],i=null,d=[],m=null;for(let g of p){let y=f.map(k=>String(g[k]??"")).join("\0"),x=g[t],S=x==null?"":String(x);if(y!==i){if(m!==null){let k={...m};r&&delete k[t],k[h]=d.join(s),c.push(k)}i=y,d=[S],m=g}else d.push(S)}if(m!==null){let g={...m};r&&delete g[t],g[h]=d.join(s),c.push(g)}return{stdout:v(l,c),stderr:"",exitCode:0}}async function ke(e,n){let t="",s="",r="",o="",a="inner",p="",u=0;for(let C=0;C<e.length;C++){let E=e[C];E==="--left"?a="left":E==="--right"?a="right":E==="--full"?a="full":(E==="-D"||E==="--default")&&C+1<e.length?p=e[++C]:E.startsWith("-")||(u++,u===1?t=E:u===2?s=E:u===3?r=E:u===4&&(o=E))}if(!t||!s||!r||!o)return{stdout:"",stderr:`xan join: usage: xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]
45
- `,exitCode:1};let f=await w([s],n);if(f.error)return f.error;let l=await w([o],n);if(l.error)return l.error;let{headers:h,data:c}=f,{headers:i,data:d}=l;if(!h.includes(t))return{stdout:"",stderr:`xan join: column '${t}' not found in first file
37
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;let p={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},l=Ue(r),h=[];for(let c of d){if(s>0&&h.length>=s)break;let i=P(c,l,p),f=i.length>0&&i.some(m=>!!m);(t?!f:f)&&h.push(c)}return{stdout:w(a,h),stderr:"",exitCode:0}}async function xe(e,n){let t="",s=!1,r=!1,o=[];for(let l=0;l<e.length;l++){let h=e[l];h==="-N"||h==="--numeric"?s=!0:h==="-R"||h==="-r"||h==="--reverse"?r=!0:h==="-s"&&l+1<e.length?t=e[++l]:h.startsWith("-")||o.push(h)}let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;!t&&a.length>0&&(t=a[0]);let p=[...d].sort((l,h)=>{let c=l[t],i=h[t],f;if(s){let m=typeof c=="number"?c:Number.parseFloat(String(c)),g=typeof i=="number"?i:Number.parseFloat(String(i));f=m-g}else f=String(c).localeCompare(String(i));return r?-f:f});return{stdout:w(a,p),stderr:"",exitCode:0}}async function we(e,n){let t="",s=[];for(let p=0;p<e.length;p++){let l=e[p];l==="-s"&&p+1<e.length?t=e[++p]:l.startsWith("-")||s.push(l)}let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let d=new Set,u=o.filter(p=>{let l=t?String(p[t]):JSON.stringify(p);return d.has(l)?!1:(d.add(l),!0)});return{stdout:w(r,u),stderr:"",exitCode:0}}async function ve(e,n){let t=10,s="",r=!1,o=[];for(let h=0;h<e.length;h++){let c=e[h];(c==="-l"||c==="-n")&&h+1<e.length?t=Number.parseInt(e[++h],10):c==="-R"||c==="-r"||c==="--reverse"?r=!0:c.startsWith("-")||(s?o.push(c):s=c)}let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;!s&&a.length>0&&(s=a[0]);let l=[...d].sort((h,c)=>{let i=h[s],f=c[s],m=typeof i=="number"?i:Number.parseFloat(String(i)),g=typeof f=="number"?f:Number.parseFloat(String(f));return r?m-g:g-m}).slice(0,t);return{stdout:w(a,l),stderr:"",exitCode:0}}j();async function Ce(e,n){let t="",s=!1,r=!1,o=[];for(let f=0;f<e.length;f++){let m=e[f];m==="-O"||m==="--overwrite"?s=!0:m==="--filter"?r=!0:m.startsWith("-")||(t?o.push(m):t=m)}if(!t)return{stdout:"",stderr:`xan map: no expression specified
38
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;let l=T(t).map(({expr:f,name:m})=>({alias:typeof m=="string"?m:m[0],ast:A(f)})),h={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},c;if(s){c=[...a];for(let f of l)a.includes(f.alias)||c.push(f.alias)}else c=[...a,...l.map(f=>f.alias)];let i=[];for(let f=0;f<d.length;f++){let m=d[f],g={...m},y=!1,x={...m,_row_index:f};for(let S of l){let k=P(x,S.ast,h),C=k.length>0?k[0]:null;if(r&&C==null){y=!0;break}g[S.alias]=C}y||i.push(g)}return{stdout:w(c,i),stderr:"",exitCode:0}}async function be(e,n){let t="",s="",r="",o=[];for(let m=0;m<e.length;m++){let g=e[m];(g==="-r"||g==="--rename")&&m+1<e.length?r=e[++m]:g.startsWith("-")||(t?s?o.push(g):s=g:t=g)}if(!t||!s)return{stdout:"",stderr:`xan transform: usage: xan transform COLUMN EXPR [FILE]
39
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;let p=t.split(",").map(m=>m.trim()),l=r?r.split(",").map(m=>m.trim()):[];for(let m of p)if(!a.includes(m))return{stdout:"",stderr:`xan transform: column '${m}' not found
40
+ `,exitCode:1};let h=A(T(s)[0]?.expr||(j(),Ke(Te)).parseMoonblade(s)),c={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},i=a.map(m=>{let g=p.indexOf(m);return g!==-1&&l[g]?l[g]:m}),f=[];for(let m of d){let g={...m};for(let y=0;y<p.length;y++){let x=p[y],S={...m,_:m[x]},k=P(S,h,c),C=k.length>0?k[0]:null,E=l[y]||x;E!==x&&delete g[x],g[E]=C}f.push(g)}return{stdout:w(i,f),stderr:"",exitCode:0}}async function Se(e,n){let t="",s="|",r=!1,o="",a=[];for(let i=0;i<e.length;i++){let f=e[i];(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)}if(!t)return{stdout:"",stderr:`xan explode: usage: xan explode COLUMN [FILE]
41
+ `,exitCode:1};let{headers:d,data:u,error:p}=await v(a,n);if(p)return p;if(!d.includes(t))return{stdout:"",stderr:`xan explode: column '${t}' not found
42
+ `,exitCode:1};let l=o?d.map(i=>i===t?o:i):d,h=o||t,c=[];for(let i of u){let f=i[t],m=f==null?"":String(f);if(m===""){if(!r){let g={...i};o&&(delete g[t],g[h]=""),c.push(g)}}else{let g=m.split(s);for(let y of g){let x={...i};o&&delete x[t],x[h]=y,c.push(x)}}}return{stdout:w(l,c),stderr:"",exitCode:0}}async function Ie(e,n){let t="",s="|",r="",o=[];for(let g=0;g<e.length;g++){let y=e[g];(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)}if(!t)return{stdout:"",stderr:`xan implode: usage: xan implode COLUMN [FILE]
43
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;if(!a.includes(t))return{stdout:"",stderr:`xan implode: column '${t}' not found
44
+ `,exitCode:1};let p=a.filter(g=>g!==t),l=r?a.map(g=>g===t?r:g):a,h=r||t,c=[],i=null,f=[],m=null;for(let g of d){let y=p.map(k=>String(g[k]??"")).join("\0"),x=g[t],S=x==null?"":String(x);if(y!==i){if(m!==null){let k={...m};r&&delete k[t],k[h]=f.join(s),c.push(k)}i=y,f=[S],m=g}else f.push(S)}if(m!==null){let g={...m};r&&delete g[t],g[h]=f.join(s),c.push(g)}return{stdout:w(l,c),stderr:"",exitCode:0}}async function ke(e,n){let t="",s="",r="",o="",a="inner",d="",u=0;for(let C=0;C<e.length;C++){let E=e[C];E==="--left"?a="left":E==="--right"?a="right":E==="--full"?a="full":(E==="-D"||E==="--default")&&C+1<e.length?d=e[++C]:E.startsWith("-")||(u++,u===1?t=E:u===2?s=E:u===3?r=E:u===4&&(o=E))}if(!t||!s||!r||!o)return{stdout:"",stderr:`xan join: usage: xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]
45
+ `,exitCode:1};let p=await v([s],n);if(p.error)return p.error;let l=await v([o],n);if(l.error)return l.error;let{headers:h,data:c}=p,{headers:i,data:f}=l;if(!h.includes(t))return{stdout:"",stderr:`xan join: column '${t}' not found in first file
46
46
  `,exitCode:1};if(!i.includes(r))return{stdout:"",stderr:`xan join: column '${r}' not found in second file
47
- `,exitCode:1};let m=new Map;for(let C of d){let E=String(C[r]??"");m.has(E)||m.set(E,[]),m.get(E)?.push(C)}let g=new Set(h),y=i.filter(C=>!g.has(C)),x=[...h,...y],S=[],k=new Set;for(let C of c){let E=String(C[t]??""),R=m.get(E);if(R&&R.length>0){k.add(E);for(let L of R){let M={};for(let D of h)M[D]=C[D];for(let D of y)M[D]=L[D];S.push(M)}}else if(a==="left"||a==="full"){let L={};for(let M of h)L[M]=C[M];for(let M of y)L[M]=p;S.push(L)}}if(a==="right"||a==="full")for(let C of d){let E=String(C[r]??"");if(!k.has(E)){let R={};for(let L of h)R[L]=i.includes(L)?C[L]:p;for(let L of y)R[L]=C[L];S.push(R)}}return{stdout:v(x,S),stderr:"",exitCode:0}}async function Ne(e,n){let t="",s="",r=[],o=[];for(let y=0;y<e.length;y++){let x=e[y];(x==="-g"||x==="--groupby")&&y+1<e.length?r=e[++y].split(",").map(S=>S.trim()):x.startsWith("-")||(t?s?o.push(x):s=x:t=x)}if(!t||!s)return{stdout:"",stderr:`xan pivot: usage: xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]
48
- `,exitCode:1};let{headers:a,data:p,error:u}=await w(o,n);if(u)return u;if(!a.includes(t))return{stdout:"",stderr:`xan pivot: column '${t}' not found
49
- `,exitCode:1};let f=s.match(/^(\w+)\((\w+)\)$/);if(!f)return{stdout:"",stderr:`xan pivot: invalid aggregation expression '${s}'
50
- `,exitCode:1};let[,l,h]=f;r.length===0&&(r=a.filter(y=>y!==t&&y!==h));let c=[];for(let y of p){let x=String(y[t]??"");c.includes(x)||c.push(x)}let i=new Map,d=[];for(let y of p){let x=r.map(E=>String(y[E]??"")).join("\0"),S=String(y[t]??""),k=y[h];i.has(x)||(i.set(x,new Map),d.push(x));let C=i.get(x);C&&(C.has(S)||C.set(S,[]),C.get(S)?.push(k))}let m=[...r,...c],g=[];for(let y of d){let x=y.split("\0"),S=i.get(y);if(!S)continue;let k={};for(let C=0;C<r.length;C++)k[r[C]]=x[C];for(let C of c){let E=S.get(C)||[];k[C]=Be(l,E)}g.push(k)}return{stdout:v(m,g),stderr:"",exitCode:0}}function Be(e,n){let t=n.filter(s=>s!=null).map(s=>typeof s=="number"?s:Number.parseFloat(String(s))).filter(s=>!Number.isNaN(s));switch(e){case"count":return n.length;case"sum":return t.reduce((s,r)=>s+r,0);case"mean":case"avg":return t.length>0?t.reduce((s,r)=>s+r,0)/t.length:null;case"min":return t.length>0?Math.min(...t):null;case"max":return t.length>0?Math.max(...t):null;case"first":return n.length>0?String(n[0]??""):null;case"last":return n.length>0?String(n[n.length-1]??""):null;default:return null}}async function Ee(e,n){let t="",s=[];for(let p=0;p<e.length;p++){let u=e[p];(u==="-s"||u==="--sort")&&p+1<e.length?t=e[++p]:u.startsWith("-")||s.push(u)}if(s.length<2)return{stdout:"",stderr:`xan merge: usage: xan merge [OPTIONS] FILE1 FILE2 ...
51
- `,exitCode:1};let r=[],o=null;for(let p of s){let u=await w([p],n);if(u.error)return u.error;if(o===null)o=u.headers;else if(JSON.stringify(o)!==JSON.stringify(u.headers))return{stdout:"",stderr:`xan merge: all files must have the same headers
52
- `,exitCode:1};r.push({headers:u.headers,data:u.data})}if(!o)return{stdout:"",stderr:"",exitCode:0};let a=[];for(let{data:p}of r)a=a.concat(p);if(t){if(!o.includes(t))return{stdout:"",stderr:`xan merge: column '${t}' not found
53
- `,exitCode:1};a.sort((p,u)=>{let f=p[t],l=u[t],h=typeof f=="number"?f:Number.parseFloat(String(f)),c=typeof l=="number"?l:Number.parseFloat(String(l));return!Number.isNaN(h)&&!Number.isNaN(c)?h-c:String(f??"").localeCompare(String(l??""))})}return{stdout:v(o,a),stderr:"",exitCode:0}}j();async function Ae(e,n){let t=e.filter(u=>!u.startsWith("-")),{headers:s,data:r,error:o}=await w(t,n);return o||(r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:r.map(u=>s.map(f=>u[f])).map(u=>u.map(f=>Ze(f)).join(",")).join(`
47
+ `,exitCode:1};let m=new Map;for(let C of f){let E=String(C[r]??"");m.has(E)||m.set(E,[]),m.get(E)?.push(C)}let g=new Set(h),y=i.filter(C=>!g.has(C)),x=[...h,...y],S=[],k=new Set;for(let C of c){let E=String(C[t]??""),R=m.get(E);if(R&&R.length>0){k.add(E);for(let F of R){let M={};for(let D of h)M[D]=C[D];for(let D of y)M[D]=F[D];S.push(M)}}else if(a==="left"||a==="full"){let F={};for(let M of h)F[M]=C[M];for(let M of y)F[M]=d;S.push(F)}}if(a==="right"||a==="full")for(let C of f){let E=String(C[r]??"");if(!k.has(E)){let R={};for(let F of h)R[F]=i.includes(F)?C[F]:d;for(let F of y)R[F]=C[F];S.push(R)}}return{stdout:w(x,S),stderr:"",exitCode:0}}async function Ne(e,n){let t="",s="",r=[],o=[];for(let y=0;y<e.length;y++){let x=e[y];(x==="-g"||x==="--groupby")&&y+1<e.length?r=e[++y].split(",").map(S=>S.trim()):x.startsWith("-")||(t?s?o.push(x):s=x:t=x)}if(!t||!s)return{stdout:"",stderr:`xan pivot: usage: xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]
48
+ `,exitCode:1};let{headers:a,data:d,error:u}=await v(o,n);if(u)return u;if(!a.includes(t))return{stdout:"",stderr:`xan pivot: column '${t}' not found
49
+ `,exitCode:1};let p=s.match(/^(\w+)\((\w+)\)$/);if(!p)return{stdout:"",stderr:`xan pivot: invalid aggregation expression '${s}'
50
+ `,exitCode:1};let[,l,h]=p;r.length===0&&(r=a.filter(y=>y!==t&&y!==h));let c=[];for(let y of d){let x=String(y[t]??"");c.includes(x)||c.push(x)}let i=new Map,f=[];for(let y of d){let x=r.map(E=>String(y[E]??"")).join("\0"),S=String(y[t]??""),k=y[h];i.has(x)||(i.set(x,new Map),f.push(x));let C=i.get(x);C&&(C.has(S)||C.set(S,[]),C.get(S)?.push(k))}let m=[...r,...c],g=[];for(let y of f){let x=y.split("\0"),S=i.get(y);if(!S)continue;let k={};for(let C=0;C<r.length;C++)k[r[C]]=x[C];for(let C of c){let E=S.get(C)||[];k[C]=Qe(l,E)}g.push(k)}return{stdout:w(m,g),stderr:"",exitCode:0}}function Qe(e,n){let t=n.filter(s=>s!=null).map(s=>typeof s=="number"?s:Number.parseFloat(String(s))).filter(s=>!Number.isNaN(s));switch(e){case"count":return n.length;case"sum":return t.reduce((s,r)=>s+r,0);case"mean":case"avg":return t.length>0?t.reduce((s,r)=>s+r,0)/t.length:null;case"min":return t.length>0?Math.min(...t):null;case"max":return t.length>0?Math.max(...t):null;case"first":return n.length>0?String(n[0]??""):null;case"last":return n.length>0?String(n[n.length-1]??""):null;default:return null}}async function Ee(e,n){let t="",s=[];for(let d=0;d<e.length;d++){let u=e[d];(u==="-s"||u==="--sort")&&d+1<e.length?t=e[++d]:u.startsWith("-")||s.push(u)}if(s.length<2)return{stdout:"",stderr:`xan merge: usage: xan merge [OPTIONS] FILE1 FILE2 ...
51
+ `,exitCode:1};let r=[],o=null;for(let d of s){let u=await v([d],n);if(u.error)return u.error;if(o===null)o=u.headers;else if(JSON.stringify(o)!==JSON.stringify(u.headers))return{stdout:"",stderr:`xan merge: all files must have the same headers
52
+ `,exitCode:1};r.push({headers:u.headers,data:u.data})}if(!o)return{stdout:"",stderr:"",exitCode:0};let a=[];for(let{data:d}of r)a=a.concat(d);if(t){if(!o.includes(t))return{stdout:"",stderr:`xan merge: column '${t}' not found
53
+ `,exitCode:1};a.sort((d,u)=>{let p=d[t],l=u[t],h=typeof p=="number"?p:Number.parseFloat(String(p)),c=typeof l=="number"?l:Number.parseFloat(String(l));return!Number.isNaN(h)&&!Number.isNaN(c)?h-c:String(p??"").localeCompare(String(l??""))})}return{stdout:w(o,a),stderr:"",exitCode:0}}j();async function Ae(e,n){let t=e.filter(u=>!u.startsWith("-")),{headers:s,data:r,error:o}=await v(t,n);return o||(r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:r.map(u=>s.map(p=>u[p])).map(u=>u.map(p=>et(p)).join(",")).join(`
54
54
  `)+`
55
- `,stderr:"",exitCode:0})}function Ze(e){if(e==null)return"";let n=String(e);return n.includes(",")||n.includes('"')||n.includes(`
56
- `)?`"${n.replace(/"/g,'""')}"`:n}async function Le(e,n){let t=null,s=null,r=[];for(let c=0;c<e.length;c++){let i=e[c];if(i==="--seed"&&c+1<e.length)s=Number.parseInt(e[++c],10);else if(!i.startsWith("-")){let d=Number.parseInt(i,10);t===null&&!Number.isNaN(d)&&d>0?t=d:r.push(i)}}if(t===null)return{stdout:"",stderr:`xan sample: usage: xan sample <sample-size> [FILE]
57
- `,exitCode:1};let{headers:o,data:a,error:p}=await w(r,n);if(p)return p;if(a.length<=t)return{stdout:v(o,a),stderr:"",exitCode:0};let u=s!==null?s:Date.now(),f=()=>(u=u*1103515245+12345&2147483647,u/2147483647),l=a.map((c,i)=>i);for(let c=l.length-1;c>0;c--){let i=Math.floor(f()*(c+1));[l[c],l[i]]=[l[i],l[c]]}let h=l.slice(0,t).sort((c,i)=>c-i).map(c=>a[c]);return{stdout:v(o,h),stderr:"",exitCode:0}}async function Fe(e,n){let t=!1,s=[];for(let p=0;p<e.length;p++){let u=e[p];u==="-p"||u==="--pad"?t=!0:u.startsWith("-")||s.push(u)}if(s.length===0)return{stdout:"",stderr:`xan cat: no files specified
58
- `,exitCode:1};let r=[],o=[];for(let p of s){let u=await w([p],n);if(u.error)return u.error;r.push({headers:u.headers,data:u.data});for(let f of u.headers)o.includes(f)||o.push(f)}if(!t){let p=JSON.stringify(r[0].headers);for(let u=1;u<r.length;u++)if(JSON.stringify(r[u].headers)!==p)return{stdout:"",stderr:`xan cat: headers do not match (use -p to pad)
59
- `,exitCode:1};o=r[0].headers}let a=[];for(let{headers:p,data:u}of r)for(let f of u){let l={};for(let h of o)l[h]=p.includes(h)?f[h]:"";a.push(l)}return{stdout:v(o,a),stderr:"",exitCode:0}}async function Pe(e,n){let t="",s=[],r=!1,o=!1,a=[];for(let i=0;i<e.length;i++){let d=e[i];(d==="-s"||d==="--select")&&i+1<e.length?s=e[++i].split(","):d==="-v"||d==="--invert"?r=!0:d==="-i"||d==="--ignore-case"?o=!0:d==="-r"||d==="--regex"||d.startsWith("-")||(t?a.push(d):t=d)}if(!t)return{stdout:"",stderr:`xan search: no pattern specified
60
- `,exitCode:1};let{headers:p,data:u,error:f}=await w(a,n);if(f)return f;let l=s.length>0?s:p,h;try{h=new RegExp(t,o?"i":"")}catch{return{stdout:"",stderr:`xan search: invalid regex pattern '${t}'
61
- `,exitCode:1}}let c=u.filter(i=>{let d=l.some(m=>{let g=i[m];return g!=null&&h.test(String(g))});return r?!d:d});return{stdout:v(p,c),stderr:"",exitCode:0}}async function Oe(e,n){let t="",s=[];for(let c of e)c.startsWith("-")||(t?s.push(c):t=c);if(!t)return{stdout:"",stderr:`xan flatmap: no expression specified
62
- `,exitCode:1};let{headers:r,data:o,error:a}=await w(s,n);if(a)return a;let u=T(t).map(({expr:c,name:i})=>({alias:typeof i=="string"?i:i[0],ast:A(c)})),f={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},l=[...r,...u.map(c=>c.alias)],h=[];for(let c of o){let i=[],d=1;for(let m of u){let g=O(c,m.ast,f),y=g.length>0&&Array.isArray(g[0])?g[0]:g;i.push(y),d=Math.max(d,y.length)}for(let m=0;m<d;m++){let g={...c};for(let y=0;y<u.length;y++){let x=i[y][m]??null;g[u[y].alias]=x}h.push(g)}}return{stdout:v(l,h),stderr:"",exitCode:0}}async function Me(e,n){let{cmdView:t}=await import("./xan-view-YGORUYA2.js");return t(e,n)}var Ue=new Set(["fuzzy-join","glob","hist","input","parallel","plot","progress","range","scrape","tokenize","union-find"]),Qe=new Set(["agg","behead","cat","count","dedup","drop","enum","explode","f","filter","fixlengths","flatmap","flatten","fmt","frequency","freq","from","groupby","head","headers","implode","join","map","merge","partition","pivot","rename","reverse","sample","search","select","shuffle","slice","sort","split","stats","tail","to","top","transform","transpose","view",...Ue]),We={name:"xan",summary:"CSV toolkit for data manipulation",usage:"xan <COMMAND> [OPTIONS] [FILE]",description:`xan is a collection of commands for working with CSV data.
55
+ `,stderr:"",exitCode:0})}function et(e){if(e==null)return"";let n=String(e);return n.includes(",")||n.includes('"')||n.includes(`
56
+ `)?`"${n.replace(/"/g,'""')}"`:n}async function Fe(e,n){let t=null,s=null,r=[];for(let c=0;c<e.length;c++){let i=e[c];if(i==="--seed"&&c+1<e.length)s=Number.parseInt(e[++c],10);else if(!i.startsWith("-")){let f=Number.parseInt(i,10);t===null&&!Number.isNaN(f)&&f>0?t=f:r.push(i)}}if(t===null)return{stdout:"",stderr:`xan sample: usage: xan sample <sample-size> [FILE]
57
+ `,exitCode:1};let{headers:o,data:a,error:d}=await v(r,n);if(d)return d;if(a.length<=t)return{stdout:w(o,a),stderr:"",exitCode:0};let u=s!==null?s:Date.now(),p=()=>(u=u*1103515245+12345&2147483647,u/2147483647),l=a.map((c,i)=>i);for(let c=l.length-1;c>0;c--){let i=Math.floor(p()*(c+1));[l[c],l[i]]=[l[i],l[c]]}let h=l.slice(0,t).sort((c,i)=>c-i).map(c=>a[c]);return{stdout:w(o,h),stderr:"",exitCode:0}}async function Le(e,n){let t=!1,s=[];for(let u=0;u<e.length;u++){let p=e[u];p==="-p"||p==="--pad"?t=!0:p.startsWith("-")||s.push(p)}if(s.length===0)return{stdout:"",stderr:`xan cat: no files specified
58
+ `,exitCode:1};let r=await Re(n,s,{cmdName:"xan cat",stopOnError:!0});if(r.exitCode!==0)return{stdout:"",stderr:r.stderr,exitCode:r.exitCode};let o=[],a=[];for(let{content:u}of r.files){let{headers:p,data:l}=$e(u);o.push({headers:p,data:l});for(let h of p)a.includes(h)||a.push(h)}if(!t){let u=JSON.stringify(o[0].headers);for(let p=1;p<o.length;p++)if(JSON.stringify(o[p].headers)!==u)return{stdout:"",stderr:`xan cat: headers do not match (use -p to pad)
59
+ `,exitCode:1};a=o[0].headers}let d=[];for(let{headers:u,data:p}of o)for(let l of p){let h={};for(let c of a)h[c]=u.includes(c)?l[c]:"";d.push(h)}return{stdout:w(a,d),stderr:"",exitCode:0}}async function Oe(e,n){let t="",s=[],r=!1,o=!1,a=[];for(let i=0;i<e.length;i++){let f=e[i];(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)}if(!t)return{stdout:"",stderr:`xan search: no pattern specified
60
+ `,exitCode:1};let{headers:d,data:u,error:p}=await v(a,n);if(p)return p;let l=s.length>0?s:d,h;try{h=new RegExp(t,o?"i":"")}catch{return{stdout:"",stderr:`xan search: invalid regex pattern '${t}'
61
+ `,exitCode:1}}let c=u.filter(i=>{let f=l.some(m=>{let g=i[m];return g!=null&&h.test(String(g))});return r?!f:f});return{stdout:w(d,c),stderr:"",exitCode:0}}async function Pe(e,n){let t="",s=[];for(let c of e)c.startsWith("-")||(t?s.push(c):t=c);if(!t)return{stdout:"",stderr:`xan flatmap: no expression specified
62
+ `,exitCode:1};let{headers:r,data:o,error:a}=await v(s,n);if(a)return a;let u=T(t).map(({expr:c,name:i})=>({alias:typeof i=="string"?i:i[0],ast:A(c)})),p={limits:n.limits?{maxIterations:n.limits.maxJqIterations}:void 0},l=[...r,...u.map(c=>c.alias)],h=[];for(let c of o){let i=[],f=1;for(let m of u){let g=P(c,m.ast,p),y=g.length>0&&Array.isArray(g[0])?g[0]:g;i.push(y),f=Math.max(f,y.length)}for(let m=0;m<f;m++){let g={...c};for(let y=0;y<u.length;y++){let x=i[y][m]??null;g[u[y].alias]=x}h.push(g)}}return{stdout:w(l,h),stderr:"",exitCode:0}}async function Me(e,n){let{cmdView:t}=await import("./xan-view-6Z6TWXMY.js");return t(e,n)}var _e=new Set(["fuzzy-join","glob","hist","input","parallel","plot","progress","range","scrape","tokenize","union-find"]),tt=new Set(["agg","behead","cat","count","dedup","drop","enum","explode","f","filter","fixlengths","flatmap","flatten","fmt","frequency","freq","from","groupby","head","headers","implode","join","map","merge","partition","pivot","rename","reverse","sample","search","select","shuffle","slice","sort","split","stats","tail","to","top","transform","transpose","view",..._e]),qe={name:"xan",summary:"CSV toolkit for data manipulation",usage:"xan <COMMAND> [OPTIONS] [FILE]",description:`xan is a collection of commands for working with CSV data.
63
63
  It provides a simple, ergonomic interface for common data operations.
64
64
 
65
65
  COMMANDS:
@@ -133,8 +133,8 @@ EXAMPLES:
133
133
  xan groupby region 'count() as n' data.csv
134
134
  xan explode tags data.csv
135
135
  xan join id file1.csv id file2.csv
136
- xan pivot year 'sum(sales)' data.csv`,options:[" --help display this help and exit"]},et={headers:{name:"xan headers",summary:"Show column names",usage:"xan headers [OPTIONS] [FILE]",description:"Display column names from a CSV file.",options:["-j, --just-names show names only (no index)"]},count:{name:"xan count",summary:"Count rows",usage:"xan count [FILE]",description:"Count the number of data rows (excluding header).",options:[]},filter:{name:"xan filter",summary:"Filter rows by expression",usage:"xan filter [OPTIONS] EXPR [FILE]",description:"Filter CSV rows using moonblade expressions.",options:["-v, --invert invert match","-l, --limit N limit output rows"]},search:{name:"xan search",summary:"Filter rows by regex",usage:"xan search [OPTIONS] PATTERN [FILE]",description:"Filter CSV rows by regex match on columns.",options:["-s, --select COLS search only these columns","-v, --invert invert match","-i, --ignore-case case insensitive"]},select:{name:"xan select",summary:"Select columns",usage:"xan select COLS [FILE]",description:"Select columns by name, index, glob, or range.",options:["Supports: col names, indices (0,1), ranges (a:c), globs (vec_*), negation (!col)"]},explode:{name:"xan explode",summary:"Split column into rows",usage:"xan explode COLUMN [OPTIONS] [FILE]",description:"Split delimited column values into multiple rows.",options:["-s, --separator SEP separator (default: |)","--drop-empty drop empty values","-r, --rename NAME rename column"]},implode:{name:"xan implode",summary:"Combine rows",usage:"xan implode COLUMN [OPTIONS] [FILE]",description:"Combine consecutive rows, joining column values.",options:["-s, --sep SEP separator (default: |)","-r, --rename NAME rename column"]},join:{name:"xan join",summary:"Join CSV files",usage:"xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]",description:"Join two CSV files on key columns.",options:["--left left outer join","--right right outer join","--full full outer join","-D, --default VAL default for missing"]},pivot:{name:"xan pivot",summary:"Reshape to columns",usage:"xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]",description:"Turn row values into columns.",options:["-g, --groupby COLS group by columns"]}},Gt={name:"xan",async execute(e,n){if(e.length===0||_(e))return $(We);let t=e[0],s=e.slice(1);if(_(s)){let r=et[t];return r?$(r):$(We)}if(Ue.has(t))return{stdout:"",stderr:`xan ${t}: not yet implemented
137
- `,exitCode:1};switch(t){case"headers":return se(s,n);case"count":return re(s,n);case"head":return oe(s,n);case"tail":return ie(s,n);case"slice":return ae(s,n);case"reverse":return le(s,n);case"behead":return Ae(s,n);case"sample":return Le(s,n);case"select":return Q(s,n);case"drop":return ee(s,n);case"rename":return te(s,n);case"enum":return ne(s,n);case"filter":return ye(s,n);case"search":return Pe(s,n);case"sort":return xe(s,n);case"dedup":return we(s,n);case"top":return ve(s,n);case"map":return Ce(s,n);case"transform":return be(s,n);case"explode":return Se(s,n);case"implode":return Ie(s,n);case"flatmap":return Oe(s,n);case"pivot":return Ne(s,n);case"agg":return X(s,n);case"groupby":return Y(s,n);case"frequency":case"freq":return B(s,n);case"stats":return Z(s,n);case"cat":return Fe(s,n);case"join":return ke(s,n);case"merge":return Ee(s,n);case"split":return de(s,n);case"partition":return he(s,n);case"to":return me(s,n);case"from":return ge(s,n);case"transpose":return ce(s,n);case"shuffle":return pe(s,n);case"fixlengths":return fe(s,n);case"view":return J(s,n);case"flatten":case"f":return H(s,n);case"fmt":return Me(s,n);default:return Qe.has(t)?{stdout:"",stderr:`xan ${t}: not yet implemented
136
+ xan pivot year 'sum(sales)' data.csv`,options:[" --help display this help and exit"]},nt={headers:{name:"xan headers",summary:"Show column names",usage:"xan headers [OPTIONS] [FILE]",description:"Display column names from a CSV file.",options:["-j, --just-names show names only (no index)"]},count:{name:"xan count",summary:"Count rows",usage:"xan count [FILE]",description:"Count the number of data rows (excluding header).",options:[]},filter:{name:"xan filter",summary:"Filter rows by expression",usage:"xan filter [OPTIONS] EXPR [FILE]",description:"Filter CSV rows using moonblade expressions.",options:["-v, --invert invert match","-l, --limit N limit output rows"]},search:{name:"xan search",summary:"Filter rows by regex",usage:"xan search [OPTIONS] PATTERN [FILE]",description:"Filter CSV rows by regex match on columns.",options:["-s, --select COLS search only these columns","-v, --invert invert match","-i, --ignore-case case insensitive"]},select:{name:"xan select",summary:"Select columns",usage:"xan select COLS [FILE]",description:"Select columns by name, index, glob, or range.",options:["Supports: col names, indices (0,1), ranges (a:c), globs (vec_*), negation (!col)"]},explode:{name:"xan explode",summary:"Split column into rows",usage:"xan explode COLUMN [OPTIONS] [FILE]",description:"Split delimited column values into multiple rows.",options:["-s, --separator SEP separator (default: |)","--drop-empty drop empty values","-r, --rename NAME rename column"]},implode:{name:"xan implode",summary:"Combine rows",usage:"xan implode COLUMN [OPTIONS] [FILE]",description:"Combine consecutive rows, joining column values.",options:["-s, --sep SEP separator (default: |)","-r, --rename NAME rename column"]},join:{name:"xan join",summary:"Join CSV files",usage:"xan join KEY1 FILE1 KEY2 FILE2 [OPTIONS]",description:"Join two CSV files on key columns.",options:["--left left outer join","--right right outer join","--full full outer join","-D, --default VAL default for missing"]},pivot:{name:"xan pivot",summary:"Reshape to columns",usage:"xan pivot COLUMN AGG_EXPR [OPTIONS] [FILE]",description:"Turn row values into columns.",options:["-g, --groupby COLS group by columns"]}},Bt={name:"xan",async execute(e,n){if(e.length===0||_(e))return $(qe);let t=e[0],s=e.slice(1);if(_(s)){let r=nt[t];return r?$(r):$(qe)}if(_e.has(t))return{stdout:"",stderr:`xan ${t}: not yet implemented
137
+ `,exitCode:1};switch(t){case"headers":return se(s,n);case"count":return re(s,n);case"head":return oe(s,n);case"tail":return ie(s,n);case"slice":return ae(s,n);case"reverse":return le(s,n);case"behead":return Ae(s,n);case"sample":return Fe(s,n);case"select":return Q(s,n);case"drop":return ee(s,n);case"rename":return te(s,n);case"enum":return ne(s,n);case"filter":return ye(s,n);case"search":return Oe(s,n);case"sort":return xe(s,n);case"dedup":return we(s,n);case"top":return ve(s,n);case"map":return Ce(s,n);case"transform":return be(s,n);case"explode":return Se(s,n);case"implode":return Ie(s,n);case"flatmap":return Pe(s,n);case"pivot":return Ne(s,n);case"agg":return X(s,n);case"groupby":return Y(s,n);case"frequency":case"freq":return B(s,n);case"stats":return Z(s,n);case"cat":return Le(s,n);case"join":return ke(s,n);case"merge":return Ee(s,n);case"split":return de(s,n);case"partition":return he(s,n);case"to":return me(s,n);case"from":return ge(s,n);case"transpose":return ce(s,n);case"shuffle":return pe(s,n);case"fixlengths":return fe(s,n);case"view":return J(s,n);case"flatten":case"f":return H(s,n);case"fmt":return Me(s,n);default:return tt.has(t)?{stdout:"",stderr:`xan ${t}: not yet implemented
138
138
  `,exitCode:1}:{stdout:"",stderr:`xan: unknown command '${t}'
139
139
  Run 'xan --help' for usage.
140
- `,exitCode:1}}}};export{Gt as xanCommand};
140
+ `,exitCode:1}}}};export{Bt as xanCommand};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{c as a,d as b}from"./chunk-OQRRF62X.js";import"./chunk-QSDVMMYI.js";import"./chunk-KGOUQS5A.js";export{a as cmdFlatten,b as cmdView};
2
+ import{d as a,e as b}from"./chunk-UUQYHLBO.js";import"./chunk-QSDVMMYI.js";import"./chunk-KGOUQS5A.js";export{a as cmdFlatten,b as cmdView};
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import{a as y,b,c as A}from"./chunk-GTNBSMZR.js";import"./chunk-KGOUQS5A.js";var E={name:"xargs",summary:"build and execute command lines from standard input",usage:"xargs [OPTION]... [COMMAND [INITIAL-ARGS]]",options:["-I REPLACE replace occurrences of REPLACE with input","-d DELIM use DELIM as input delimiter (e.g., -d '\\n' for newline)","-n NUM use at most NUM arguments per command line","-P NUM run at most NUM processes at a time","-0, --null items are separated by null, not whitespace","-t, --verbose print commands before executing","-r, --no-run-if-empty do not run command if input is empty"," --help display this help and exit"]},P={name:"xargs",async execute(s,i){if(b(s))return y(E);let p=null,h=null,c=null,o=null,g=!1,x=!1,C=!1,l=0;for(let e=0;e<s.length;e++){let t=s[e];if(t==="-I"&&e+1<s.length)p=s[++e],l=e+1;else if(t==="-d"&&e+1<s.length)h=s[++e].replace(/\\n/g,`
3
+ `).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\0/g,"\0").replace(/\\\\/g,"\\"),l=e+1;else if(t==="-n"&&e+1<s.length)c=parseInt(s[++e],10),l=e+1;else if(t==="-P"&&e+1<s.length)o=parseInt(s[++e],10),l=e+1;else if(t==="-0"||t==="--null")g=!0,l=e+1;else if(t==="-t"||t==="--verbose")x=!0,l=e+1;else if(t==="-r"||t==="--no-run-if-empty")C=!0,l=e+1;else{if(t.startsWith("--"))return A("xargs",t);if(t.startsWith("-")&&t.length>1){for(let n of t.slice(1))if(!"0tr".includes(n))return A("xargs",`-${n}`);t.includes("0")&&(g=!0),t.includes("t")&&(x=!0),t.includes("r")&&(C=!0),l=e+1}else if(!t.startsWith("-")){l=e;break}}}let a=s.slice(l);a.length===0&&a.push("echo");let r;if(g?r=i.stdin.split("\0").filter(e=>e.length>0):h!==null?r=i.stdin.replace(/\n$/,"").split(h).filter(t=>t.length>0):r=i.stdin.split(/\s+/).map(e=>e.trim()).filter(e=>e.length>0),r.length===0)return C?{stdout:"",stderr:"",exitCode:0}:{stdout:"",stderr:"",exitCode:0};let d="",u="",f=0,M=e=>/[\s"'\\$`!*?[\]{}();&|<>#]/.test(e)?`"${e.replace(/([\\"`$])/g,"\\$1")}"`:e,w=async e=>{let t=e.map(M).join(" ");return x&&(u+=`${t}
4
+ `),i.exec?i.exec(t,{cwd:i.cwd}):{stdout:`${t}
5
+ `,stderr:"",exitCode:0}},I=async e=>{if(o!==null&&o>1)for(let t=0;t<e.length;t+=o){let n=e.slice(t,t+o),$=await Promise.all(n.map(w));for(let m of $)d+=m.stdout,u+=m.stderr,m.exitCode!==0&&(f=m.exitCode)}else for(let t of e){let n=await w(t);d+=n.stdout,u+=n.stderr,n.exitCode!==0&&(f=n.exitCode)}};if(p!==null){let e=r.map(t=>a.map(n=>n.replaceAll(p,t)));await I(e)}else if(c!==null){let e=[];for(let t=0;t<r.length;t+=c){let n=r.slice(t,t+c);e.push([...a,...n])}await I(e)}else{let e=[...a,...r],t=await w(e);d+=t.stdout,u+=t.stderr,f=t.exitCode}return{stdout:d,stderr:u,exitCode:f}}};export{P as xargsCommand};