@bicharts/shape-core 0.5.3 → 0.5.6

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.
@@ -1,2 +1,2 @@
1
1
  /*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
2
- import{a as $,b as F,c as J,d as b,e as P,m as Z}from"./chunk-TNZHHLYX.mjs";var v=[["AL","Alabama"],["AK","Alaska"],["AZ","Arizona"],["AR","Arkansas"],["CA","California"],["CO","Colorado"],["CT","Connecticut"],["DE","Delaware"],["FL","Florida"],["GA","Georgia"],["HI","Hawaii"],["ID","Idaho"],["IL","Illinois"],["IN","Indiana"],["IA","Iowa"],["KS","Kansas"],["KY","Kentucky"],["LA","Louisiana"],["ME","Maine"],["MD","Maryland"],["MA","Massachusetts"],["MI","Michigan"],["MN","Minnesota"],["MS","Mississippi"],["MO","Missouri"],["MT","Montana"],["NE","Nebraska"],["NV","Nevada"],["NH","New Hampshire"],["NJ","New Jersey"],["NM","New Mexico"],["NY","New York"],["NC","North Carolina"],["ND","North Dakota"],["OH","Ohio"],["OK","Oklahoma"],["OR","Oregon"],["PA","Pennsylvania"],["RI","Rhode Island"],["SC","South Carolina"],["SD","South Dakota"],["TN","Tennessee"],["TX","Texas"],["UT","Utah"],["VT","Vermont"],["VA","Virginia"],["WA","Washington"],["WV","West Virginia"],["WI","Wisconsin"],["WY","Wyoming"],["DC","District of Columbia"],["PR","Puerto Rico"],["GU","Guam"],["VI","U.S. Virgin Islands"],["AS","American Samoa"],["MP","Northern Mariana Islands"]],j=new Set(v.map(n=>n[0])),en={"Ala.":"AL","Alab.":"AL","Ariz.":"AZ","Ark.":"AR","Calif.":"CA","Cal.":"CA","Colo.":"CO","Col.":"CO","Conn.":"CT","Del.":"DE","Fla.":"FL","Flor.":"FL","Ga.":"GA","Ill.":"IL","Ind.":"IN","Kan.":"KS","Kans.":"KS","Ky.":"KY","La.":"LA","Md.":"MD","Mass.":"MA","Mich.":"MI","Minn.":"MN","Miss.":"MS","Mo.":"MO","Mont.":"MT","Neb.":"NE","Nebr.":"NE","Nev.":"NV","N.H.":"NH","N.J.":"NJ","N.M.":"NM","N.Mex.":"NM","N. Mex.":"NM","N.Y.":"NY","N.C.":"NC","N.D.":"ND","N.Dak.":"ND","N. Dak.":"ND","Okla.":"OK","Ore.":"OR","Oreg.":"OR","Pa.":"PA","Penn.":"PA","Penna.":"PA","R.I.":"RI","S.C.":"SC","S.D.":"SD","S.Dak.":"SD","S. Dak.":"SD","Tenn.":"TN","Tex.":"TX","Vt.":"VT","Va.":"VA","Wash.":"WA","W.Va.":"WV","W. Va.":"WV","Wis.":"WI","Wisc.":"WI","Wyo.":"WY","D.C.":"DC","Wash. D.C.":"DC","Wash., D.C.":"DC","P.R.":"PR","V.I.":"VI"},B=(()=>{let n=new Map;for(let[i,s]of v)n.set(d(s),i);n.set(d("Washington DC"),"DC"),n.set(d("Washington D.C."),"DC"),n.set(d("US Virgin Islands"),"VI");for(let[i,s]of Object.entries(en)){let o=d(i);o&&!n.has(o)&&n.set(o,s)}return n})(),q=new Set(["01","02","04","05","06","08","09","10","11","12","13","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","44","45","46","47","48","49","50","51","53","54","55","56","60","66","69","72","78"]);function E(n){return n.trim().toUpperCase()}function d(n){return $(n)}var G=new Set(["country","countries","nation","nationality","iso","geo"]),z=new Set(["state","province","st"]),X=new Set(["zip","zipcode","postal","postcode","plz"]),sn=new Set(["county","fips","borough","parish"]),on=new Set(["city","cities","town","municipality","metro","location","place"]);function rn(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_\-./]+/g," ").toLowerCase().split(/\s+/).filter(i=>i.length>0)}function f(n,i){if(!n)return!1;for(let s of rn(n))if(i.has(s))return!0;return!1}var an=85,cn=5,un=6e4;function mn(n,i,s){if(!n||n.length===0)return null;let o=[],h=new Set;for(let t of n){if(t==null)continue;let e=String(t).trim();if(e.length===0)continue;let r=e.toLowerCase();if(!h.has(r)&&(h.add(r),o.push(e),o.length>un))return null}let p=o.length;if(p<2)return null;let S=o.map(E),T=o.map(d),A=P(),N=0,m=0,y=0,K=0,C=0,g=0,D=0,W=0,V=0,L=0,O=0,Q=f(i,X);for(let t=0;t<p;++t){let e=S[t],r=T[t],l=o[t],I=J.has(e),_=j.has(e);b.has(e)&&N++,I&&m++,_&&y++,I&&_&&V++;let x=A.has(r),k=B.has(r);x&&K++,k&&C++,x&&k&&L++,_&&k&&O++,(/^\d{5}(-\d{4})?$/.test(l)||Q&&/^\d{3,4}$/.test(l))&&g++,/^\d{5}$/.test(l)&&q.has(l.slice(0,2))&&D++,Z(r)&&W++}let H=t=>t/p*100,M=[],c=(t,e,r,l=!1)=>{let I=H(e);I<an||e<2||l&&e<cn&&!f(i,t==="country-name"?G:t==="city-name"?on:z)||M.push({kind:t,matched:e,spec:r,pct:I})};c("country-iso3",N,6),c("country-name",K,5,!0),c("us-state-name",C,5,!0),c("us-zip5",g,4),c("us-county-fips",D,4),c("country-iso2",m,3),c("us-state-code",y,3),c("city-name",W,2,!0);let nn=y-O,tn=C-O;if(nn>0&&tn>0&&c("us-state-name",y+C-O,5,!0),M.length===0)return null;M.sort((t,e)=>e.pct-t.pct||e.spec-t.spec);let a=M[0],R=!1,U={"country-iso2":"us-state-code","us-state-code":"country-iso2","us-zip5":"us-county-fips","us-county-fips":"us-zip5","country-name":"us-state-name","us-state-name":"country-name"}[a.kind],w=M[1],Y=U&&w&&w.kind===U&&Math.abs(a.pct-w.pct)<=15;if(a.kind==="country-iso2"||a.kind==="us-state-code"){let t=a.matched>0?V/a.matched:0,e=f(i,G),r=f(i,z);if(Y||t>=.5){if(e&&!r)return u("country-iso2",m,!1);if(r&&!e)return u("us-state-code",y,!1);R=!0}}else if(a.kind==="us-zip5"||a.kind==="us-county-fips"){let t=D===g&&g===p,e=f(i,X),r=f(i,sn);return r&&!e?u("us-county-fips",D,!1):e&&!r?u("us-zip5",g,!1):t?u("us-zip5",g,!0):u("us-zip5",g,!1)}else if(Y&&(a.kind==="country-name"||a.kind==="us-state-name")){let t=a.matched>0?L/a.matched:0,e=f(i,G),r=f(i,z);if(e&&!r)return u("country-name",K,!1);if(r&&!e)return u("us-state-name",C,!1);t>=.5&&(R=!0)}return u(a.kind,a.matched,R);function u(t,e,r){let l={geoKind:t,geoMatchPct:Math.round(H(e)*10)/10};return r&&(l.geoAmbiguous=!0),l}}function ln(n,i){if(n==null)return null;let s=String(n).trim();if(s.length===0)return null;switch(i){case"country-iso3":{let o=E(s);return b.has(o)?o:null}case"country-iso2":return F.get(E(s))??null;case"country-name":return P().get(d(s))??null;case"us-state-code":case"us-state-name":{let o=E(s);return j.has(o)?o:B.get(d(s))??null}case"us-zip5":{let o=/^(\d{5})(-\d{4})?$/.exec(s);return o?o[1]:/^\d{3,4}$/.test(s)?s.padStart(5,"0"):null}case"us-county-fips":return/^\d{5}$/.test(s)&&q.has(s.slice(0,2))?s:null;default:return null}}function hn(n){switch(n){case"country-iso3":case"country-iso2":case"country-name":case"us-state-code":case"us-state-name":case"us-zip5":case"us-county-fips":return!0;default:return!1}}function An(n,i){let s=new Array(n.length),o=new Set,h=[],p=0;for(let S=0;S<n.length;++S){let T=ln(n[S],i);if(s[S]=T,T!==null)p++;else{let A=n[S];if(A!=null){let N=String(A).trim();if(N.length>0){let m=N.toLowerCase();o.has(m)||(o.add(m),h.push(N))}}}}return{iso:s,unmatched:h,matchedRows:p,totalRows:n.length}}export{mn as a,ln as b,hn as c,An as d};
2
+ import{a as $,b as F,c as J,d as b,e as P,o as Z}from"./chunk-KKD5PAZQ.mjs";var v=[["AL","Alabama"],["AK","Alaska"],["AZ","Arizona"],["AR","Arkansas"],["CA","California"],["CO","Colorado"],["CT","Connecticut"],["DE","Delaware"],["FL","Florida"],["GA","Georgia"],["HI","Hawaii"],["ID","Idaho"],["IL","Illinois"],["IN","Indiana"],["IA","Iowa"],["KS","Kansas"],["KY","Kentucky"],["LA","Louisiana"],["ME","Maine"],["MD","Maryland"],["MA","Massachusetts"],["MI","Michigan"],["MN","Minnesota"],["MS","Mississippi"],["MO","Missouri"],["MT","Montana"],["NE","Nebraska"],["NV","Nevada"],["NH","New Hampshire"],["NJ","New Jersey"],["NM","New Mexico"],["NY","New York"],["NC","North Carolina"],["ND","North Dakota"],["OH","Ohio"],["OK","Oklahoma"],["OR","Oregon"],["PA","Pennsylvania"],["RI","Rhode Island"],["SC","South Carolina"],["SD","South Dakota"],["TN","Tennessee"],["TX","Texas"],["UT","Utah"],["VT","Vermont"],["VA","Virginia"],["WA","Washington"],["WV","West Virginia"],["WI","Wisconsin"],["WY","Wyoming"],["DC","District of Columbia"],["PR","Puerto Rico"],["GU","Guam"],["VI","U.S. Virgin Islands"],["AS","American Samoa"],["MP","Northern Mariana Islands"]],j=new Set(v.map(n=>n[0])),en={"Ala.":"AL","Alab.":"AL","Ariz.":"AZ","Ark.":"AR","Calif.":"CA","Cal.":"CA","Colo.":"CO","Col.":"CO","Conn.":"CT","Del.":"DE","Fla.":"FL","Flor.":"FL","Ga.":"GA","Ill.":"IL","Ind.":"IN","Kan.":"KS","Kans.":"KS","Ky.":"KY","La.":"LA","Md.":"MD","Mass.":"MA","Mich.":"MI","Minn.":"MN","Miss.":"MS","Mo.":"MO","Mont.":"MT","Neb.":"NE","Nebr.":"NE","Nev.":"NV","N.H.":"NH","N.J.":"NJ","N.M.":"NM","N.Mex.":"NM","N. Mex.":"NM","N.Y.":"NY","N.C.":"NC","N.D.":"ND","N.Dak.":"ND","N. Dak.":"ND","Okla.":"OK","Ore.":"OR","Oreg.":"OR","Pa.":"PA","Penn.":"PA","Penna.":"PA","R.I.":"RI","S.C.":"SC","S.D.":"SD","S.Dak.":"SD","S. Dak.":"SD","Tenn.":"TN","Tex.":"TX","Vt.":"VT","Va.":"VA","Wash.":"WA","W.Va.":"WV","W. Va.":"WV","Wis.":"WI","Wisc.":"WI","Wyo.":"WY","D.C.":"DC","Wash. D.C.":"DC","Wash., D.C.":"DC","P.R.":"PR","V.I.":"VI"},B=(()=>{let n=new Map;for(let[i,s]of v)n.set(d(s),i);n.set(d("Washington DC"),"DC"),n.set(d("Washington D.C."),"DC"),n.set(d("US Virgin Islands"),"VI");for(let[i,s]of Object.entries(en)){let o=d(i);o&&!n.has(o)&&n.set(o,s)}return n})(),q=new Set(["01","02","04","05","06","08","09","10","11","12","13","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","44","45","46","47","48","49","50","51","53","54","55","56","60","66","69","72","78"]);function E(n){return n.trim().toUpperCase()}function d(n){return $(n)}var G=new Set(["country","countries","nation","nationality","iso","geo"]),z=new Set(["state","province","st"]),X=new Set(["zip","zipcode","postal","postcode","plz"]),sn=new Set(["county","fips","borough","parish"]),on=new Set(["city","cities","town","municipality","metro","location","place"]);function rn(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_\-./]+/g," ").toLowerCase().split(/\s+/).filter(i=>i.length>0)}function f(n,i){if(!n)return!1;for(let s of rn(n))if(i.has(s))return!0;return!1}var an=85,cn=5,un=6e4;function mn(n,i,s){if(!n||n.length===0)return null;let o=[],h=new Set;for(let t of n){if(t==null)continue;let e=String(t).trim();if(e.length===0)continue;let r=e.toLowerCase();if(!h.has(r)&&(h.add(r),o.push(e),o.length>un))return null}let p=o.length;if(p<2)return null;let S=o.map(E),T=o.map(d),A=P(),N=0,m=0,y=0,K=0,C=0,g=0,D=0,W=0,V=0,L=0,O=0,Q=f(i,X);for(let t=0;t<p;++t){let e=S[t],r=T[t],l=o[t],I=J.has(e),_=j.has(e);b.has(e)&&N++,I&&m++,_&&y++,I&&_&&V++;let x=A.has(r),k=B.has(r);x&&K++,k&&C++,x&&k&&L++,_&&k&&O++,(/^\d{5}(-\d{4})?$/.test(l)||Q&&/^\d{3,4}$/.test(l))&&g++,/^\d{5}$/.test(l)&&q.has(l.slice(0,2))&&D++,Z(r)&&W++}let H=t=>t/p*100,M=[],c=(t,e,r,l=!1)=>{let I=H(e);I<an||e<2||l&&e<cn&&!f(i,t==="country-name"?G:t==="city-name"?on:z)||M.push({kind:t,matched:e,spec:r,pct:I})};c("country-iso3",N,6),c("country-name",K,5,!0),c("us-state-name",C,5,!0),c("us-zip5",g,4),c("us-county-fips",D,4),c("country-iso2",m,3),c("us-state-code",y,3),c("city-name",W,2,!0);let nn=y-O,tn=C-O;if(nn>0&&tn>0&&c("us-state-name",y+C-O,5,!0),M.length===0)return null;M.sort((t,e)=>e.pct-t.pct||e.spec-t.spec);let a=M[0],R=!1,U={"country-iso2":"us-state-code","us-state-code":"country-iso2","us-zip5":"us-county-fips","us-county-fips":"us-zip5","country-name":"us-state-name","us-state-name":"country-name"}[a.kind],w=M[1],Y=U&&w&&w.kind===U&&Math.abs(a.pct-w.pct)<=15;if(a.kind==="country-iso2"||a.kind==="us-state-code"){let t=a.matched>0?V/a.matched:0,e=f(i,G),r=f(i,z);if(Y||t>=.5){if(e&&!r)return u("country-iso2",m,!1);if(r&&!e)return u("us-state-code",y,!1);R=!0}}else if(a.kind==="us-zip5"||a.kind==="us-county-fips"){let t=D===g&&g===p,e=f(i,X),r=f(i,sn);return r&&!e?u("us-county-fips",D,!1):e&&!r?u("us-zip5",g,!1):t?u("us-zip5",g,!0):u("us-zip5",g,!1)}else if(Y&&(a.kind==="country-name"||a.kind==="us-state-name")){let t=a.matched>0?L/a.matched:0,e=f(i,G),r=f(i,z);if(e&&!r)return u("country-name",K,!1);if(r&&!e)return u("us-state-name",C,!1);t>=.5&&(R=!0)}return u(a.kind,a.matched,R);function u(t,e,r){let l={geoKind:t,geoMatchPct:Math.round(H(e)*10)/10};return r&&(l.geoAmbiguous=!0),l}}function ln(n,i){if(n==null)return null;let s=String(n).trim();if(s.length===0)return null;switch(i){case"country-iso3":{let o=E(s);return b.has(o)?o:null}case"country-iso2":return F.get(E(s))??null;case"country-name":return P().get(d(s))??null;case"us-state-code":case"us-state-name":{let o=E(s);return j.has(o)?o:B.get(d(s))??null}case"us-zip5":{let o=/^(\d{5})(-\d{4})?$/.exec(s);return o?o[1]:/^\d{3,4}$/.test(s)?s.padStart(5,"0"):null}case"us-county-fips":return/^\d{5}$/.test(s)&&q.has(s.slice(0,2))?s:null;default:return null}}function hn(n){switch(n){case"country-iso3":case"country-iso2":case"country-name":case"us-state-code":case"us-state-name":case"us-zip5":case"us-county-fips":return!0;default:return!1}}function An(n,i){let s=new Array(n.length),o=new Set,h=[],p=0;for(let S=0;S<n.length;++S){let T=ln(n[S],i);if(s[S]=T,T!==null)p++;else{let A=n[S];if(A!=null){let N=String(A).trim();if(N.length>0){let m=N.toLowerCase();o.has(m)||(o.add(m),h.push(N))}}}}return{iso:s,unmatched:h,matchedRows:p,totalRows:n.length}}export{mn as a,ln as b,hn as c,An as d};
@@ -1,2 +1,2 @@
1
1
  /*! @bicharts/shape-core — Apache-2.0. Bundled reference data: GeoNames (https://www.geonames.org/) CC BY 4.0; US Census/TIGER (public domain). Full text: NOTICE in this package. */
2
- import{a as w,f as b}from"./chunk-YSZMUPBJ.mjs";import C from"papaparse";var D=500,S=/^[+-]?\d{1,15}$/,E=/^[+-]?(\d{1,3}(,\d{3})*|\d+)(\.\d+)?([eE][+-]?\d+)?$/,R=/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/,L=/^\d{1,2}[\/\-.]\d{1,2}[\/\-.]\d{2,4}$/;function I(n){let i=0,e=0,r=0,o=0;for(let a of n){if(a==null)continue;if(typeof a=="number"){o++,e++,Number.isInteger(a)&&i++;continue}if(a instanceof Date){o++,r++;continue}if(typeof a=="boolean"){o++;continue}let c=String(a).trim();if(c!==""){if(o++,S.test(c)){i++,e++;continue}if(E.test(c)){e++;continue}if((R.test(c)||L.test(c))&&!isNaN(Date.parse(c))){r++;continue}}}return o===0?"String":r/o>.9?"DateTime":i===o?"Integer":e===o?"Decimal":"String"}function x(n,i){if(n==null)return null;if(typeof n=="number")return i==="String"?String(n):n;if(n instanceof Date)return i==="DateTime"?n:n.toISOString();if(typeof n=="boolean")return String(n);let e=String(n).trim();if(e==="")return null;switch(i){case"Integer":return S.test(e)?parseInt(e,10):null;case"Decimal":return E.test(e)?parseFloat(e.replace(/,/g,"")):null;case"DateTime":{let r=Date.parse(e);return isNaN(r)?null:new Date(r)}default:return e}}function M(n){let i=(n||"").toLowerCase().replace(/\(.*$/,"").trim();return/^(tinyint|smallint|int|integer|int2|int4|int8|bigint|serial|bigserial)$/.test(i)?"Integer":/^(decimal|numeric|money|smallmoney|float|real|double|double precision|number)$/.test(i)?"Decimal":/^(date|datetime|datetime2|smalldatetime|datetimeoffset|timestamp|timestamptz|time)$/.test(i)?"DateTime":(/^(bit|bool|boolean)$/.test(i),"String")}function g(n,i,e){if(n.length===0)throw new Error("ingest: no columns were resolved from the source. Supply column descriptors, or use a source shape that carries them (grid/table/objects/sql).");let r=n.length,o=n.map((t,s)=>t.dataType??I(i.slice(0,D).map(l=>l?.[s]))),a=new Set((e.measures??[]).map(t=>t.toLowerCase())),c=new Set((e.dimensions??[]).map(t=>t.toLowerCase())),d=new Set((e.nonAdditive??[]).map(t=>t.toLowerCase())),T=n.map((t,s)=>{let l=t.name.toLowerCase(),u=t.isMeasure??((o[s]==="Integer"||o[s]==="Decimal")&&!w(t.name));a.has(l)&&(u=!0),c.has(l)&&(u=!1);let h={name:t.name,dataType:o[s],isMeasure:u};return u&&d.has(l)&&(h.discourageAggregationAcrossGroups=!0),h}),m=new b;m.dedupRows=e.dedup!==!1,m.setColumns(T);for(let t=0;t<i.length;t++){let s=i[t];m.addRow(Array.from({length:r},(l,u)=>x(s?.[u],o[u])),t)}let y=m.getColumnsWithStats(e.privacyLevel??"20",e.locale??"en"),f=new Map(y.map(t=>[t.name,t]));n.forEach(t=>{let s=f.get(t.name);s&&(t.format&&(s.modelFormat=t.format),t.description&&(s.modelDesc=t.description))});for(let[t,s]of Object.entries(e.formats??{})){let l=f.get(t);l&&(l.modelFormat=s)}for(let[t,s]of Object.entries(e.descriptions??{})){let l=f.get(t);l&&(l.modelDesc=s)}for(let t of e.groupBy??[]){let s=f.get(t);s&&(s.isGrouping=!0)}return{columns:y,rows:m.toObjectArray(),totalRows:m.getRowCount(),index:m}}function p(n,i){return n.map(e=>Array.isArray(e)?e:i.map(r=>e[r]))}function A(n,i){let e=[],r=new Set,o=Math.min(n.length,Math.max(1,i));for(let a=0;a<o;a++){let c=n[a];if(!(!c||typeof c!="object"))for(let d of Object.keys(c))r.has(d)||(r.add(d),e.push(d))}return e}function $(n,i={}){switch(n.kind){case"csv":{let e=C.parse(n.text,{skipEmptyLines:!0});if(e.errors?.length&&e.data.length===0)throw new Error(`ingest: CSV parse failed - ${e.errors[0].message}`);let r=e.data;if(r.length<2)throw new Error("ingest: CSV needs a header line plus at least one data row.");let o=r[0].map(a=>(a??"").trim());return g(o.map(a=>({name:a})),r.slice(1),i)}case"grid":{if(!n.header?.length)throw new Error("ingest: 'grid' needs a non-empty header.");return g(n.header.map(e=>({name:(e??"").trim()})),n.rows??[],i)}case"table":{if(!n.columns?.length)throw new Error("ingest: 'table' needs at least one column descriptor.");let e=n.columns.map(r=>r.name);return g(n.columns,p(n.rows??[],e),i)}case"objects":{let e=n.rows??[],r=n.columns?.length?n.columns:A(e,i.columnScanLimit??D).map(o=>({name:o}));if(!r.length)throw new Error("ingest: 'objects' produced no columns - the rows array is empty or holds no object keys.");return g(r,p(e,r.map(o=>o.name)),i)}case"sql":{if(!n.schema?.length)throw new Error("ingest: 'sql' needs at least one schema column.");let e=n.schema.map(r=>{let o=M(r.dataType);return{name:r.name,dataType:o,isMeasure:r.isMeasure,format:r.format,description:r.description}});return g(e,p(n.rows??[],e.map(r=>r.name)),i)}default:{let e=n;throw new Error(`ingest: unknown source kind '${e?.kind}'. Expected one of: csv, grid, table, objects, sql.`)}}}export{M as a,$ as b};
2
+ import{a as w,f as b}from"./chunk-Z6KEPQOH.mjs";import C from"papaparse";var D=500,S=/^[+-]?\d{1,15}$/,E=/^[+-]?(\d{1,3}(,\d{3})*|\d+)(\.\d+)?([eE][+-]?\d+)?$/,R=/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/,L=/^\d{1,2}[\/\-.]\d{1,2}[\/\-.]\d{2,4}$/;function I(n){let i=0,e=0,r=0,o=0;for(let a of n){if(a==null)continue;if(typeof a=="number"){o++,e++,Number.isInteger(a)&&i++;continue}if(a instanceof Date){o++,r++;continue}if(typeof a=="boolean"){o++;continue}let c=String(a).trim();if(c!==""){if(o++,S.test(c)){i++,e++;continue}if(E.test(c)){e++;continue}if((R.test(c)||L.test(c))&&!isNaN(Date.parse(c))){r++;continue}}}return o===0?"String":r/o>.9?"DateTime":i===o?"Integer":e===o?"Decimal":"String"}function x(n,i){if(n==null)return null;if(typeof n=="number")return i==="String"?String(n):n;if(n instanceof Date)return i==="DateTime"?n:n.toISOString();if(typeof n=="boolean")return String(n);let e=String(n).trim();if(e==="")return null;switch(i){case"Integer":return S.test(e)?parseInt(e,10):null;case"Decimal":return E.test(e)?parseFloat(e.replace(/,/g,"")):null;case"DateTime":{let r=Date.parse(e);return isNaN(r)?null:new Date(r)}default:return e}}function M(n){let i=(n||"").toLowerCase().replace(/\(.*$/,"").trim();return/^(tinyint|smallint|int|integer|int2|int4|int8|bigint|serial|bigserial)$/.test(i)?"Integer":/^(decimal|numeric|money|smallmoney|float|real|double|double precision|number)$/.test(i)?"Decimal":/^(date|datetime|datetime2|smalldatetime|datetimeoffset|timestamp|timestamptz|time)$/.test(i)?"DateTime":(/^(bit|bool|boolean)$/.test(i),"String")}function g(n,i,e){if(n.length===0)throw new Error("ingest: no columns were resolved from the source. Supply column descriptors, or use a source shape that carries them (grid/table/objects/sql).");let r=n.length,o=n.map((t,s)=>t.dataType??I(i.slice(0,D).map(l=>l?.[s]))),a=new Set((e.measures??[]).map(t=>t.toLowerCase())),c=new Set((e.dimensions??[]).map(t=>t.toLowerCase())),d=new Set((e.nonAdditive??[]).map(t=>t.toLowerCase())),T=n.map((t,s)=>{let l=t.name.toLowerCase(),u=t.isMeasure??((o[s]==="Integer"||o[s]==="Decimal")&&!w(t.name));a.has(l)&&(u=!0),c.has(l)&&(u=!1);let h={name:t.name,dataType:o[s],isMeasure:u};return u&&d.has(l)&&(h.discourageAggregationAcrossGroups=!0),h}),m=new b;m.dedupRows=e.dedup!==!1,m.setColumns(T);for(let t=0;t<i.length;t++){let s=i[t];m.addRow(Array.from({length:r},(l,u)=>x(s?.[u],o[u])),t)}let y=m.getColumnsWithStats(e.privacyLevel??"20",e.locale??"en"),f=new Map(y.map(t=>[t.name,t]));n.forEach(t=>{let s=f.get(t.name);s&&(t.format&&(s.modelFormat=t.format),t.description&&(s.modelDesc=t.description))});for(let[t,s]of Object.entries(e.formats??{})){let l=f.get(t);l&&(l.modelFormat=s)}for(let[t,s]of Object.entries(e.descriptions??{})){let l=f.get(t);l&&(l.modelDesc=s)}for(let t of e.groupBy??[]){let s=f.get(t);s&&(s.isGrouping=!0)}return{columns:y,rows:m.toObjectArray(),totalRows:m.getRowCount(),index:m}}function p(n,i){return n.map(e=>Array.isArray(e)?e:i.map(r=>e[r]))}function A(n,i){let e=[],r=new Set,o=Math.min(n.length,Math.max(1,i));for(let a=0;a<o;a++){let c=n[a];if(!(!c||typeof c!="object"))for(let d of Object.keys(c))r.has(d)||(r.add(d),e.push(d))}return e}function $(n,i={}){switch(n.kind){case"csv":{let e=C.parse(n.text,{skipEmptyLines:!0});if(e.errors?.length&&e.data.length===0)throw new Error(`ingest: CSV parse failed - ${e.errors[0].message}`);let r=e.data;if(r.length<2)throw new Error("ingest: CSV needs a header line plus at least one data row.");let o=r[0].map(a=>(a??"").trim());return g(o.map(a=>({name:a})),r.slice(1),i)}case"grid":{if(!n.header?.length)throw new Error("ingest: 'grid' needs a non-empty header.");return g(n.header.map(e=>({name:(e??"").trim()})),n.rows??[],i)}case"table":{if(!n.columns?.length)throw new Error("ingest: 'table' needs at least one column descriptor.");let e=n.columns.map(r=>r.name);return g(n.columns,p(n.rows??[],e),i)}case"objects":{let e=n.rows??[],r=n.columns?.length?n.columns:A(e,i.columnScanLimit??D).map(o=>({name:o}));if(!r.length)throw new Error("ingest: 'objects' produced no columns - the rows array is empty or holds no object keys.");return g(r,p(e,r.map(o=>o.name)),i)}case"sql":{if(!n.schema?.length)throw new Error("ingest: 'sql' needs at least one schema column.");let e=n.schema.map(r=>{let o=M(r.dataType);return{name:r.name,dataType:o,isMeasure:r.isMeasure,format:r.format,description:r.description}});return g(e,p(n.rows??[],e.map(r=>r.name)),i)}default:{let e=n;throw new Error(`ingest: unknown source kind '${e?.kind}'. Expected one of: csv, grid, table, objects, sql.`)}}}export{M as a,$ as b};