forked from sheetjs/docs.sheetjs.com
3 lines
7.9 KiB
JavaScript
3 lines
7.9 KiB
JavaScript
var DTA=(()=>{var O=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var j=r=>O(r,"__esModule",{value:!0});var q=(r,t)=>{for(var s in t)O(r,s,{get:t[s],enumerable:!0})},z=(r,t,s,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of K(t))!J.call(r,c)&&(s||c!=="default")&&O(r,c,{get:()=>t[c],enumerable:!(e=I(t,c))||e.enumerable});return r};var H=(r=>(t,s)=>r&&r.get(t)||(s=z(j({}),t,1),r&&r.set(t,s),s))(typeof WeakMap!="undefined"?new WeakMap:0);var re={};q(re,{parse:()=>te,set_utils:()=>Q});var x;function Q(r){x=r}function W(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function i(r,t){return r.str.slice(r.ptr,r.ptr+t.length)!=t?!1:(r.ptr+=t.length,!0)}function X(r,t){let s=r.str.indexOf(t,r.ptr);if(s==-1)throw new Error(`Expected ${t} after offset ${r.ptr}`);r.ptr=s+t.length}function u(r,t){let s=r.str.indexOf(t,r.ptr);if(s==-1)throw new Error(`Expected ${t} after offset ${r.ptr}`);let e=r.raw.slice(r.ptr,s),c={ptr:0,raw:e,str:r.str.slice(r.ptr,s),dv:W(e)};return r.ptr=s+t.length,c}function L(r,t){r.ptr+=8;let s=r.dv.getFloat64(r.ptr-8,t);return s>8988e304?null:s}function R(r,t){r.ptr+=4;let s=r.dv.getFloat32(r.ptr-4,t);return s>1701e35?null:s}function _(r,t){return r.ptr+=4,r.dv.getUint32(r.ptr-4,t)}function V(r,t){r.ptr+=4;let s=r.dv.getInt32(r.ptr-4,t);return s>2147483620?null:s}function P(r,t){return r.ptr+=2,r.dv.getUint16(r.ptr-2,t)}function C(r,t){r.ptr+=2;let s=r.dv.getInt16(r.ptr-2,t);return s>32740?null:s}function $(r){return r.raw[r.ptr++]}function G(r){let t=r.raw[r.ptr++];return t=t<128?t:t-256,t>100?null:t}var Y=["117","118","119","120","121"];function Z(r){let t="Not a DTA file",s=new TextDecoder("latin1").decode(r),e={ptr:0,raw:r,str:s,dv:W(r)},c=118,n=!0,g=0,U=0,D=0,S=0,M="",A="",T=[],f=[],w=[];if(!i(e,"<stata_dta>"))throw t;{if(!i(e,"<header>"))throw t;{if(!i(e,"<release>"))throw t;let o=u(e,"</release>");if(Y.indexOf(o.str)==-1)throw`Unsupported DTA ${o.str} file`;c=+o.str}{if(!i(e,"<byteorder>"))throw t;let o=u(e,"</byteorder>");switch(o.str){case"MSF":n=!1;break;case"LSF":n=!0;break;default:throw`Unsupported byteorder ${o.str}`}}{if(!i(e,"<K>"))throw t;let o=u(e,"</K>");g=P(o,n)}{if(!i(e,"<N>"))throw t;let o=u(e,"</N>");if(c==117)U=D=_(o,n);else{let a=_(o,n),l=_(o,n);U=n?(D=a)+(S=l)*Math.pow(2,32):(D=l)+(S=a)*Math.pow(2,32)}U>1e6&&console.error("More than 1 million observations -- extra rows will be dropped")}{if(!i(e,"<label>"))throw t;let o=u(e,"</label>"),a=c>=118?2:1,l=a==1?$(o):P(o,n);if(l+a!=o.str.length)throw`Expected string length ${l} but actual length was ${o.str.length-a}`;l>0&&(M=new TextDecoder().decode(o.raw.slice(a)))}{if(!i(e,"<timestamp>"))throw t;let o=u(e,"</timestamp>"),a=$(o);if(a+1!=o.str.length)throw`Expected string length ${a} but actual length was ${o.str.length-1}`;a>0&&(A=o.str.slice(1))}if(!i(e,"</header>"))throw t}{if(!i(e,"<map>"))throw t;X(e,"</map>")}let d=0;{if(!i(e,"<variable_types>"))throw t;let o=u(e,"</variable_types>");if(o.raw.length!=2*g)throw`Expected variable_types length ${g*2}, found ${o.raw.length}`;for(;o.ptr<o.raw.length;){let a=P(o,n);if(T.push(a),a>=1&&a<=2045)d+=a;else switch(a){case 32768:d+=8;break;case 65525:d+=0;break;case 65526:d+=8;break;case 65527:d+=4;break;case 65528:d+=4;break;case 65529:d+=2;break;case 65530:d+=1;break;default:throw`Unsupported field type ${a}`}}}{if(!i(e,"<varnames>"))throw t;let o=u(e,"</varnames>"),a=c>=118?129:33;if(o.raw.length!=a*g)throw`Expected variable_types length ${g*a}, found ${o.raw.length}`;for(;o.ptr<o.raw.length;){let l=new TextDecoder().decode(o.raw.slice(o.ptr,o.ptr+a));o.ptr+=a,f.push(l.replace(/\x00[\s\S]*/,""))}}{if(!i(e,"<sortlist>"))throw t;let o=u(e,"</sortlist>");if(o.raw.length!=(2*g+2)*(c==119||c==121?2:1))throw`Expected sortlist length ${g*2+2}, found ${o.raw.length}`}{if(!i(e,"<formats>"))throw t;let o=u(e,"</formats>"),a=c>=118?57:49;if(o.raw.length!=a*g)throw`Expected formats length ${g*a}, found ${o.raw.length}`;for(;o.ptr<o.raw.length;){let l=new TextDecoder().decode(o.raw.slice(o.ptr,o.ptr+a));o.ptr+=a,w.push(l.replace(/\x00[\s\S]*/,""))}}{if(!i(e,"<value_label_names>"))throw t;let o=c>=118?129:33,a=u(e,"</value_label_names>")}{if(!i(e,"<variable_labels>"))throw t;let o=c>=118?321:81,a=u(e,"</variable_labels>")}{if(!i(e,"<characteristics>"))throw t;for(;e.str.slice(e.ptr,e.ptr+4)=="<ch>";){e.ptr+=4;let o=_(e,n);if(e.ptr+=o,!i(e,"</ch>"))throw t}if(!i(e,"</characteristics>"))throw t}let p=x.aoa_to_sheet([f],{dense:!0});var k=[];{if(!i(e,"<data>"))throw t;for(let o=0;o<U;++o){let a=[];for(let l=0;l<g;++l){let b=T[l];if(b>=1&&b<=2045){let h=new TextDecoder().decode(e.raw.slice(e.ptr,e.ptr+b));h=h.replace(/\x00[\s\S]*/,""),a[l]=h,e.ptr+=b}else switch(b){case 65525:e.ptr+=0;break;case 65526:a[l]=L(e,n);break;case 65527:a[l]=R(e,n);break;case 65528:a[l]=V(e,n);break;case 65529:a[l]=C(e,n);break;case 65530:a[l]=G(e);break;case 32768:a[l]="##SheetJStrL##",k.push([o+1,l,e.raw.slice(e.ptr,e.ptr+8)]),e.ptr+=8;break;default:throw`Unsupported field type ${b} for ${f[l]}`}}x.sheet_add_aoa(p,[a],{origin:-1,sheetStubs:!0})}if(!i(e,"</data>"))throw t}{if(!i(e,"<strls>"))throw t;let o=[];for(;e.raw[e.ptr]==71;){if(!i(e,"GSO"))throw t;let a=_(e,n),l=0;if(c==117)l=_(e,n);else{let v=_(e,n),m=_(e,n);l=n?v+m*Math.pow(2,32):m+v*Math.pow(2,32),l>1e6&&console.error("More than 1 million observations -- data will be dropped")}let b=$(e),h=_(e,n);o[l]||(o[l]=[]);let y="";b==129?(y=new TextDecoder("latin1").decode(e.raw.slice(e.ptr,e.ptr+h)),e.ptr+=h):(y=new TextDecoder("latin1").decode(e.raw.slice(e.ptr,e.ptr+h)).replace(/\x00$/,""),e.ptr+=h),o[l][a]=y}if(!i(e,"</strls>"))throw t;k.forEach(([a,l,b])=>{let h=W(b),y=0,v=0;switch(c){case 117:y=h.getUint32(0,n),v=h.getUint32(4,n);break;case 118:case 120:{y=h.getUint16(0,n);let m=h.getUint16(2,n),E=h.getUint32(4,n);v=n?m+E*65536:E+m*2**32}break;case 119:case 121:{let m=h.getUint16(0,n),E=b[2];y=n?m+(E<<16):E+(m<<8);let N=b[3],B=h.getUint32(4,n);v=n?N+B*256:B+N*2**32}}p["!data"][a][l].v=o[v][y]})}{if(!i(e,"<value_labels>"))throw t;let o=u(e,"</value_labels>")}if(!i(e,"</stata_dta>"))throw t;let F=x.book_new();return x.book_append_sheet(F,p,"Sheet1"),F}function ee(r){let t=r[0];switch(t){case 102:case 103:case 104:case 105:case 108:case 110:case 111:case 112:case 113:case 114:case 115:break;default:throw new Error("Not a DTA file")}let s={ptr:1,raw:r,str:"",dv:W(r)},e=!0,c=0,n=0,g="",U="",D=[],S=[],M=[];{let f=$(s);switch(f){case 1:e=!1;break;case 2:e=!0;break;default:throw`DTA ${t} Unexpected byteorder ${f}`}let w=$(s);if(w!=1)throw`DTA ${t} Unexpected filetype ${w}`;s.ptr++,c=P(s,e),n=_(s,e),s.ptr+=t>=108?81:t>=103?32:30,t>=105&&(s.ptr+=18)}{let f=0;for(f=0;f<c;++f)D.push($(s));let w=t>=110?33:9;for(f=0;f<c;++f)S.push(new TextDecoder().decode(s.raw.slice(s.ptr,s.ptr+w)).replace(/\x00[\s\S]*$/,"")),s.ptr+=w;s.ptr+=2*(c+1);let d=t>=114?49:t>=105?12:7;for(f=0;f<c;++f)M.push(new TextDecoder().decode(s.raw.slice(s.ptr,s.ptr+d)).replace(/\x00[\s\S]*$/,"")),s.ptr+=d;s.ptr+=(t>=110?33:9)*c}if(s.ptr+=(t>=106?81:32)*c,t>=105)for(;s.ptr<s.raw.length;){let f=$(s),w=(t>=111?_:P)(s,e);if(f==0&&w==0)break;s.ptr+=w}let A=x.aoa_to_sheet([S],{dense:!0});for(let f=0;f<n;++f){let w=[];for(let d=0;d<c;++d){let p=D[d];if(t>=111&&p>=1&&p<=244){let k=new TextDecoder().decode(s.raw.slice(s.ptr,s.ptr+p));k=k.replace(/\x00[\s\S]*/,""),w[d]=k,s.ptr+=p}else if(t<=110&&p>=128){let k=new TextDecoder().decode(s.raw.slice(s.ptr,s.ptr+p-127));k=k.replace(/\x00[\s\S]*/,""),w[d]=k,s.ptr+=p-127}else switch(p){case 251:case 98:w[d]=G(s);break;case 252:case 105:w[d]=C(s,e);break;case 253:case 108:w[d]=V(s,e);break;case 254:case 102:w[d]=R(s,e);break;case 255:case 100:w[d]=L(s,e);break;default:throw`Unsupported field type ${p} for ${S[d]}`}}x.sheet_add_aoa(A,[w],{origin:-1,sheetStubs:!0})}let T=x.book_new();return x.book_append_sheet(T,A,"Sheet1"),T}function te(r){if(r[0]>=102&&r[0]<=115)return ee(r);if(r[0]===60)return Z(r);throw new Error("Not a DTA file")}return H(re);})();
|
|
//# sourceMappingURL=dta.min.js.map
|