1import{detectColumnKinds as p,resolveColumnNames as v,stripExtension as y,previewFrom as C,textBlob as S}from"./util-CkZ8KZK2.js";import{readText as _,parseCsvText as h,delimiterFromOption as k,serializeTable as O}from"./csvShared-8k83eY5V.js";import{e as T,a as x,s as P,p as R,f as N,h as E,t as j}from"./tableOps-hI-rWBi7.js";const w=30,F=5,z=3,M=["eq","ne","lt","gt","lte","gte","contains","notContains","starts","ends","regex","in","empty","notEmpty"],V=["sum","avg","count","countDistinct","min","max","median","p90"];function d(e){if(!e)return[];try{const o=JSON.parse(e);if(Array.isArray(o))return o.filter(s=>typeof s=="string")}catch{}return[]}async function c(e){const o=await _(e),s=h(o,k(e.options.delimiter)),n=v(s.rows[0]??[]);return{table:j([n.columns,...s.rows.slice(1)]),warnings:[...s.warnings,...n.warnings]}}function m(e,o,s,n={}){const t=O(e.table.columns,e.table.rows);return{filename:`${y(o)||"data"}-${s}.csv`,blob:S(t,"text/csv"),text:t,copyKind:"table",preview:C(e.table.columns,e.table.rows,w),fullRows:e.table.rows,...e.table.rows.length<=w?{fullTable:!0}:{},warnings:e.warnings,summary:e.summary,...n}}const B=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e);e.ctx.onProgress("Turning it on its sideâ¦");const n=E(o,{firstColumnIsHeader:e.options.firstColumn!=="generic",headerColumnName:e.options.labelColumn??"field"});return{status:"ok",output:m({...n,warnings:[...s,...n.warnings]},e.filename,"transposed")}};function $(e){const o=p(e.rows,e.columns.length),s=[];for(let n=0;n<e.columns.length&&o[n]!=="number";n++)s.push(e.columns[n]);return s.length===e.columns.length?e.columns.slice(0,1):s}const A=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e),n=d(e.options.idColumns).filter(l=>o.columns.includes(l)),t=n.length>0?n:$(o);e.ctx.onProgress("Melting the columns into rowsâ¦");const r=N(o,{idColumns:t,valueColumns:d(e.options.valueColumns).filter(l=>o.columns.includes(l)),variableName:e.options.variableName??"variable",valueName:e.options.valueName??"value",dropBlanks:e.options.dropBlanks==="on"});return{status:"ok",output:m({...r,warnings:[...s,...r.warnings]},e.filename,"long",{discovered:{kind:"fields",columns:o.columns,selected:{idColumns:JSON.stringify(t)}}})}},I=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e),n=p(o.rows,o.columns.length),t=o.columns.find((i,u)=>n[u]!=="number"&&u>0)??o.columns[1]??"",r=o.columns.find((i,u)=>n[u]==="number")??o.columns[o.columns.length-1]??"",l=e.options.nameColumn&&o.columns.includes(e.options.nameColumn)?e.options.nameColumn:t,a=e.options.valueColumn&&o.columns.includes(e.options.valueColumn)?e.options.valueColumn:r,g=d(e.options.idColumns).filter(i=>o.columns.includes(i)),f=g.length>
10?g:o.columns.filter(i=>i!==l&&i!==a).slice(0,1);e.ctx.onProgress("Spreading the values acrossâ¦");const b=R(o,{idColumns:f,nameColumn:l,valueColumn:a,agg:V.includes(e.options.agg)?e.options.agg:"sum",fill:e.options.fill??""});return{status:"ok",output:m({...b,warnings:[...s,...b.warnings]},e.filename,"wide",{discovered:{kind:"fields",columns:o.columns,selected:{idColumns:JSON.stringify(f),nameColumn:l,valueColumn:a}}})}};function W(e){const o=[];for(let s=1;s<=F;s++){const n=e[`f${s}col`]??"";if(n==="")continue;const t=e[`f${s}op`];o.push({column:n,op:M.includes(t)?t:"eq",value:e[`f${s}val`]??"",caseSensitive:e.caseSensitive==="on"})}return o}function K(e){const o=[];for(let s=1;s<=z;s++){const n=e[`s${s}col`]??"";n!==""&&o.push({column:n,descending:e[`s${s}dir`]==="desc"})}return o}const D=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e);e.ctx.onProgress("Filtering and sortingâ¦");const n=(e.options.limit??"").trim().replace(/[,_\s]/g,""),t=n===""?0:Number(n),r=P(o,{conditions:W(e.options),combine:e.options.combine==="or"?"or":"and",sort:K(e.options),limit:Number.isFinite(t)&&t>0?Math.trunc(t):0});return{status:"ok",output:m({...r,warnings:[...s,...r.warnings]},e.filename,"filtered",{discovered:{kind:"fields",columns:o.columns}})}},J=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e),n=d(e.options.columns).filter(r=>o.columns.includes(r));e.ctx.onProgress("Rearranging the columnsâ¦");const t=x(o,{columns:n.length>0?n:o.columns,mode:e.options.mode==="drop"?"drop":"keep"});return{status:"ok",output:m({...t,warnings:[...s,...t.warnings]},e.filename,"columns",{discovered:{kind:"fields",columns:o.columns}})}},L=async e=>{e.ctx.onProgress("Reading the CSVâ¦");const{table:o,warnings:s}=await c(e),n=e.options.mode==="percent"?"percent":"rows",t=(e.options.size??"").trim().replace(/[,_\s%]/g,""),r=Number(t),l=Number.isFinite(r)&&r>0?r:n==="percent"?10:100;e.ctx.onProgress("Drawing the sampleâ¦");const a=T(o,{mode:n,size:l,seed:e.options.seed??"1",stratifyBy:e.options.stratifyBy&&o.columns.includes(e.options.stratifyBy)?e.options.stratifyBy:"",keepOrder:e.options.keepOrder!=="off"});return{status:"ok",output:m({...a,warnings:[...s,...a.warnings]},e.filename,"sample",{discovered:{kind:"fields",columns:o.columns}})}},X=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null,default:A},Symbol.toStringTag,{value:"Module"})),Y=Object.freeze(Object.defineProperty({__proto__:null,default:I},Symbol.toStringTag,{value:"Module"})),Q=Object.freeze(Object.defineProperty({__proto__:null,default:D},Symbol.toStringTag,{value:"Module"})),Z=Object.freeze(Object.defineProperty({__proto__:null,default:J},Symbol.toStringTag,{value:"Module"})),ee=Object.freeze(Object.defineProperty({__proto__:null,default:L},Symbol.toStringTag,{value:"Module"}));export{H as a,Y as b,X as c,Q as d,Z as e,ee as f};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.