@mdgate/doc 0.1.0 → 0.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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Convert legacy binary Word documents to Markdown. Outputs GitHub-Flavored Markdown. Works in Node, Edge, and
4
4
  browsers. No native addons.
5
5
 
6
- Handles: `.doc` (binary Word)
6
+ Handles: `.doc`, `.dot` (binary Word)
7
7
 
8
8
  ## Usage
9
9
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{detectOleDoc as nK}from"@mdgate/containers";import{ConvertError as dK}from"@mdgate/core";import{documentToMarkdown as iK}from"@mdgate/document";import{asciiStartsWith as bJ,fileExtension as aK}from"@mdgate/utils";import{CompoundFile as VK,getU16 as L,getU32 as F,MAX_ENTRY_BYTES as AK,readOleStream as xJ}from"@mdgate/containers";import{ConvertError as C}from"@mdgate/core";import{inlinesAreEmpty as GJ,inlinesToPlainText as FK,markerIsOrdered as RJ,markerLabel as TK,PLAIN as XJ,stylesEqual as BK}from"@mdgate/document";import{AssetSink as OK,buildEdgeTable as IK,compositeLabel as CK,emptyFieldFrame as PK,fieldResult as UK,firstBlip as EK,flushList as w,rebaseEmphasis as RK,StyledRun as DJ}from"@mdgate/office-common";import{debug as YJ,decode as DK,isControl as LK}from"@mdgate/utils";import{getU16 as l,getU32 as E}from"@mdgate/containers";import{emptyNumberPattern as lJ}from"@mdgate/office-common";import{isControl as tJ}from"@mdgate/utils";var B=9;function VJ(){return{marker:"bullet",start:1,restart:void 0,pattern:lJ()}}function e(J){return{lsid:(4294967295^J)>>>0,levels:Array.from({length:B},()=>VJ()),startOverride:Array.from({length:B},()=>{return})}}class AJ{byIlfo=new Map;get(J){return this.byIlfo.get(J)}set(J,K){this.byIlfo.set(J,K)}}function FJ(J,K){let Q=E(J,738)??0,$=E(J,742)??0,G=E(J,746)??0,W=E(J,750)??0,X=new AJ;if($===0)return X;let Y=eJ(K,Q,$);if(G+W>K.length)return X;return KK(K.subarray(G,G+W),Y,X),X}var r=28;function eJ(J,K,Q){let $=new Map;if(K>=J.length)return $;let G=J.subarray(K),W=l(G,0);if(W===void 0)return $;let X=[],Y=2;for(let j=0;j<W;j+=1){if(Y+r>G.length)return $;let Z=G.subarray(Y,Y+r),H=E(Z,0);if(H===void 0)return $;let N=(Z[26]&1)!==0;X.push([H,N]),Y+=r}Y=Q;for(let[j,Z]of X){let H=Z?1:B,N=Array.from({length:B},()=>VJ()),q=!1;for(let z=0;z<H;z+=1){let _=TJ(G,Y);if(_===void 0){q=!0;break}N[z]=_[0],Y=_[1]}if(q)return $;if(Z){let z=t(N[0]);for(let _=0;_<B;_+=1)N[_]=t(z)}$.set(j,N)}return $}function t(J){return{marker:J.marker,start:J.start,restart:J.restart,pattern:{text:J.pattern.text.map((K)=>K.type==="literal"?{type:"literal",text:K.text}:{type:"level",level:K.level}),legal:J.pattern.legal}}}function TJ(J,K){if(K>=J.length)return;let $=J.subarray(K);if($.length<28)return;let G=$.subarray(0,28),W=E(G,0);if(W===void 0)return;let X=G[4],Y=G[5],j=(Y&4)!==0,Z=(Y&8)!==0,H=[];for(let O=6;O<15;O+=1){let T=G[O];if(T===0)break;H.push(T)}let N=G[26],q=G[25],z=G[24],_=28+q+z,M=l($,_);if(M===void 0)return;_+=2;let V=QK(X),A=[];if(V!==void 0&&V!=="bullet")for(let O=0;O<M;O+=1){let T=O*2+_,I=l($,T);if(I===void 0)return;if(I<=8&&H.includes(O+1))A.push({type:"level",level:I});else{let k=JK(I);if(k===void 0||tJ(k))continue;let b=A[A.length-1];if(b?.type==="literal")b.text+=k;else A.push({type:"literal",text:k})}}return _+=M*2,[{marker:V,start:W,restart:Z?N:void 0,pattern:{text:A,legal:j}},K+_]}function JK(J){if(J>=55296&&J<=57343)return;return String.fromCharCode(J)}var s=16;function KK(J,K,Q){let $=E(J,0);if($===void 0)return;let G=[],W=4;for(let X=0;X<$;X+=1){if(W+s>J.length)return;let Y=J.subarray(W,W+s),j=E(Y,0);if(j===void 0)return;let Z=Y[12];G.push([j,Z]),W+=s}for(let X=0;X<G.length;X+=1){let[Y,j]=G[X],Z=X+1,H=K.get(Y),N=H!==void 0?{lsid:Y,levels:H.map(t),startOverride:Array.from({length:B},()=>{return})}:e(Z);for(let q=0;q<j;q+=1){if(W+8>J.length)break;let z=J.subarray(W,W+8),_=E(z,0);if(_===void 0)break;let M=z[4],V=M&15,A=(M&16)!==0,U=(M&32)!==0;if(W+=8,U){let O=TJ(J,W);if(O===void 0)break;let[T,I]=O;if(V<B){if(A)N.startOverride[V]=T.start;N.levels[V]=T}W=I}else if(A&&V<B)N.levels[V].start=_,N.startOverride[V]=_}Q.set(Z,N)}}function QK(J){switch(J){case 0:return"decimal";case 1:return"upperRoman";case 2:return"lowerRoman";case 3:return"upperAlpha";case 4:return"lowerAlpha";case 23:return"bullet";case 255:return;default:return"decimal"}}import{getU16 as x,getU32 as a}from"@mdgate/containers";function $K(J,K){switch(J>>>13){case 0:case 1:return 1;case 2:case 4:case 5:return 2;case 3:return 4;case 7:return 3;default:if(J===54792){let Q=x(K,0);return Q===void 0?0:Q+1}return K.length===0?0:K[0]+1}}function p(J,K){let Q=0;while(Q+2<=J.length){let $=J[Q]|J[Q+1]<<8;Q+=2;let G=$K($,J.subarray(Q));if(Q+G>J.length)break;K($,J.subarray(Q,Q+G)),Q+=G}}function JJ(J,K){switch(J[0]){case 0:return!1;case 1:return!0;case 128:return K;case 129:return!K;default:return}}function OJ(J){let K;return p(J,(Q,$)=>{if(Q===18992)K=x($,0)}),K}function IJ(J){let K;return p(J,(Q,$)=>{if(Q===27139)K=a($,0)}),K}function o(J,K,Q){if(J.length===0)return K;let $={...K};return p(J,(G,W)=>{switch(G){case 2101:{let X=JJ(W,Q.bold);if(X!==void 0)$.bold=X;break}case 2102:{let X=JJ(W,Q.italic);if(X!==void 0)$.italic=X;break}case 2103:{let X=JJ(W,Q.strike);if(X!==void 0)$.strike=X;break}default:break}}),$}function KJ(){return{boundaries:[],cells:[],header:!1}}function GK(){return{horzFirst:!1,horzCont:!1,vertRestart:!1,vertCont:!1}}function QJ(J){return{boundaries:J.boundaries.slice(),cells:J.cells.map((K)=>({...K})),header:J.header}}function S(){return{inTable:void 0,ttp:void 0,outline:void 0,ilfo:void 0,ilvl:void 0,itap:void 0,innerCell:void 0,innerTtp:void 0,tap:void 0}}function m(J){return{inTable:J.inTable,ttp:J.ttp,outline:J.outline,ilfo:J.ilfo,ilvl:J.ilvl,itap:J.itap,innerCell:J.innerCell,innerTtp:J.innerTtp,tap:J.tap===void 0?void 0:QJ(J.tap)}}function u(J,K){return{inTable:K.inTable??J.inTable,ttp:K.ttp??J.ttp,outline:K.outline!==void 0?K.outline:J.outline,ilfo:K.ilfo??J.ilfo,ilvl:K.ilvl??J.ilvl,itap:K.itap??J.itap,innerCell:K.innerCell??J.innerCell,innerTtp:K.innerTtp??J.innerTtp,tap:K.tap??J.tap}}function WK(J){return J<<16>>16}function BJ(J){return J|0}function XK(J,K){let Q=J+K;if(Q>2147483647)return 2147483647;if(Q<-2147483648)return-2147483648;return Q|0}function v(J,K,Q){p(J,($,G)=>{switch($){case 9238:Q.inTable=G.length>0&&G[0]!==0;break;case 9239:Q.ttp=G.length>0&&G[0]!==0;break;case 26182:{let W=a(G,0);if(W===void 0)break;let X=x(K,W);if(X===void 0)break;if(W+2+X>K.length)break;v(K.subarray(W+2,W+2+X),new Uint8Array,Q);break}case 9792:{let W=G[0];if(W!==void 0)Q.outline=W<9?W+1:null;break}case 9738:Q.ilvl=G[0];break;case 17931:Q.ilfo=x(G,0);break;case 26185:{let W=a(G,0);if(W!==void 0)Q.itap=BJ(W);break}case 26186:{let W=a(G,0);if(W!==void 0)Q.itap=XK(Q.itap??0,BJ(W));break}case 9291:Q.innerCell=G.length>0&&G[0]!==0;break;case 9292:Q.innerTtp=G.length>0&&G[0]!==0;break;case 54792:{let W=jK(G);if(W!==void 0){let X=Q.tap?.header===!0;Q.tap={...W,header:X}}break}case 13316:{let W=G.length>0&&G[0]!==0;if(Q.tap!==void 0)Q.tap.header=W;else if(W)Q.tap={...KJ(),header:!0};break}case 54827:{let W=G[1],X=G[2];if(W===void 0||X===void 0||Q.tap===void 0)break;let Y=Q.tap.cells[W];if(Y===void 0)break;Y.vertCont=X===1,Y.vertRestart=X===3;break}default:break}})}var YK=20;function jK(J){let K=J[2];if(K===void 0||K>63)return;let Q=[];for(let W=0;W<=K;W+=1){let X=x(J,3+W*2);if(X===void 0)return;Q.push(WK(X))}let $=[];for(let W=0;W<K;W+=1)$.push(GK());let G=3+(K+1)*2;for(let W=0;W<$.length;W+=1){let X=x(J,G+W*YK);if(X===void 0)break;let Y=$[W],j=X&3;Y.horzCont=j===1,Y.horzFirst=j>=2;let Z=X>>5&3;Y.vertCont=Z===1,Y.vertRestart=Z===3}return{boundaries:Q,cells:$,header:!1}}function CJ(J,K){return o(J,K,K)}import{getU16 as R,getU32 as PJ}from"@mdgate/containers";import{PLAIN as ZK}from"@mdgate/document";import{fromStyleName as zK}from"@mdgate/office-common";import{warn as HK}from"@mdgate/utils";var NK=4095;function UJ(){return{chp:{...ZK},pap:S(),heading:void 0,block:void 0}}function $J(J){return{chp:{...J.chp},pap:m(J.pap),heading:J.heading,block:J.block}}class g{resolved=new Map;default=UJ();get(J){return this.resolved.get(J)??this.default}set(J,K){this.resolved.set(J,K)}}function EJ(J,K){let Q=PJ(J,162),$=PJ(J,166);if(Q===void 0||$===void 0)return new g;if(Q+$>K.length)return new g;let G=K.subarray(Q,Q+$),W=R(G,0),X=R(G,2),Y=R(G,4);if(W===void 0||X===void 0||Y===void 0)return new g;let j=new Map,Z=2+W;for(let q=0;q<X;q+=1){let z=R(G,Z);if(z===void 0)break;if(Z+=2,z===0)continue;if(Z+z>G.length)break;let _=G.subarray(Z,Z+z);Z+=z;let M=qK(_,Y);if(M!==void 0)j.set(q,M)}let H=new g,N=new Map;for(let q of j.keys())H.set(q,_K(q,j,N));return H}function qK(J,K){let Q=R(J,0);if(Q===void 0)return;let $=Q&4095,G=R(J,2);if(G===void 0)return;let W=G&15,X=G>>4&4095,Y=R(J,4),j=Y===void 0?0:Y&15,Z=Math.max(K,10),H=R(J,Z);if(H===void 0)return;let N=H*2,q=[],z=Z+2;if(z+N<=J.length)for(let T=0;T<N;T+=2)q.push(J[z+T]|J[z+T+1]<<8);let _=MK(q),M=Z+4+N;if(!Number.isSafeInteger(M))return;let V=[];for(let T=0;T<j;T+=1){if(M%2===1)M+=1;let I=R(J,M);if(I===void 0)return;if(M+2+I>J.length)return;V.push(J.subarray(M+2,M+2+I)),M+=2+I}let A=W===1,U=A?V[0]!==void 0?new Uint8Array(V[0]):new Uint8Array:new Uint8Array,O=A?V[1]!==void 0?new Uint8Array(V[1]):new Uint8Array:V[0]!==void 0?new Uint8Array(V[0]):new Uint8Array;return{sti:$,istdBase:X,block:zK(_),upxPapx:U,upxChpx:O,isParagraph:A}}function _K(J,K,Q){let $=Q.get(J);if($!==void 0)return $J($);let G=[],W=new Set,X=UJ(),Y=J;while(Y!==void 0){let j=Q.get(Y);if(j!==void 0){X=$J(j);break}if(W.has(Y)){HK(`style istdBase cycle at istd ${Y}`);break}W.add(Y);let Z=K.get(Y);if(Z===void 0)break;G.push(Y),Y=Z.istdBase!==NK&&Z.istdBase!==Y?Z.istdBase:void 0}for(let j=G.length-1;j>=0;j-=1){let Z=G[j],H=K.get(Z);if(H.isParagraph&&H.upxPapx.length>=2){let N=S();v(H.upxPapx.subarray(2),new Uint8Array,N),X.pap=u(X.pap,N)}if(X.chp=CJ(H.upxChpx,X.chp),H.sti>=1&&H.sti<=9)X.heading=H.sti;X.block=H.block??X.block,Q.set(Z,$J(X))}return X}function MK(J){let K="";for(let Q=0;Q<J.length;Q+=1){let $=J[Q];if($>=55296&&$<=56319&&Q+1<J.length){let G=J[Q+1];if(G>=56320&&G<=57343){K+=String.fromCharCode($,G),Q+=1;continue}}if($>=55296&&$<=57343)K+="�";else K+=String.fromCharCode($)}return K}function vJ(J){let K;try{K=VK.open(J)}catch(P){if(P instanceof C)throw P;let y=P instanceof Error?P.message:String(P);throw C.malformed(`not an OLE2 compound file: ${y}`)}let Q=xJ(K,"WordDocument");if(L(Q,0)!==42476)throw C.malformedPart("WordDocument","invalid FIB magic");let $=L(Q,10)??0;if(($&256)!==0)throw C.encrypted();let[G,W]=($&512)!==0?["1Table","0Table"]:["0Table","1Table"],X=WJ(K,G)??WJ(K,W)??new Uint8Array,Y=F(Q,76)??0,j=F(Q,80)??0,Z=F(Q,84)??0,H=F(Q,88)??0,N=F(Q,92)??0,q=F(Q,96)??0,z=F(Q,418)??0,_=F(Q,422)??0,[M,V]=_>0?wK(X,z,_):[vK(Q),[]],A=Y+j+Z+H+N+q,U=($&16384)!==0?SK(L(Q,60))??L(Q,6):L(Q,6),O=hK(U??0),T=mK(Q,M,A,O),I=WJ(K,"Data")??new Uint8Array,k=wJ(Q,X,250,"chpx",I),b=wJ(Q,X,258,"papx",I),fJ=EJ(Q,X),nJ=FJ(Q,X),qJ=new Map,_J=[],dJ=Y,iJ=Y+j+Z+H+N;for(let[P,y,f,n,d]of[[170,178,dJ,"fn","footnote"],[522,530,iJ,"en","endnote"]]){let[i,cJ]=LJ(Q,X,P,2),[c]=LJ(Q,X,y,0);for(let D=0;D<cJ;D+=1)if(qJ.set(T.indexOfCp(i[D]),`${n}${D}`),D+1<c.length){let rJ=T.indexOfCp(f+c[D]),sJ=T.indexOfCp(f+c[D+1]);_J.push([rJ,sJ,`${n}${D}`,d])}}let aJ=T.indexOfCp(Y),pJ=M.map((P)=>P.prmPrc),h=new gJ(T,new zJ(k),new zJ(b),fJ,nJ,V,pJ,qJ,I),oJ=h.buildBlocks(0,aJ),MJ=[];for(let[P,y,f,n]of _J){let d=Math.min(P,h.text.chars.length),i=Math.min(y,h.text.chars.length);if(d>=i)continue;MJ.push({id:f,kind:n,blocks:h.buildBlocks(d,i)})}return{blocks:oJ,notes:MJ,assets:h.assets.assets}}function SK(J){return J!==void 0&&J!==0?J:void 0}function WJ(J,K){try{return xJ(J,K)}catch(Q){if(Q instanceof C&&Q.code==="resourceLimit")throw Q;return}}function LJ(J,K,Q,$){let G=F(J,Q)??0,W=F(J,Q+4)??0;if(G+W>K.length)return[[],0];let X=K.subarray(G,G+W);if(W<8)return[[],0];let Y=$===0?Math.floor(W/4)-1:Math.floor((W-4)/(4+$)),j=[];for(let Z=0;Z<=Y;Z+=1)j.push(F(X,Z*4)??0);return[j,Y]}function wK(J,K,Q){if(K+Q>J.length)throw C.malformed("Clx out of bounds");let $=J.subarray(K,K+Q),G=[],W=0;for(;;){if(W>=$.length)throw C.malformed("malformed Clx");let X=$.subarray(W),Y=X[0];if(Y===1){let j=L(X,1);if(j===void 0)throw C.malformed("bad Prc");if(3+j<=X.length)G.push(new Uint8Array(X.subarray(3,3+j)));W+=3+j}else if(Y===2){let j=F(X,1);if(j===void 0)throw C.malformed("bad Pcdt");if(5+j>X.length)throw C.malformed("PlcPcd out of bounds");let Z=X.subarray(5,5+j);return[kK(Z,G),G]}else throw C.malformed("malformed Clx")}}function kK(J,K){if(J.length<16)throw C.malformed("empty piece table");let Q=Math.floor((J.length-4)/12),$=[];for(let G=0;G<Q;G+=1){let W=F(J,G*4),X=F(J,(G+1)*4);if(W===void 0||X===void 0)throw C.malformed("bad cp");let Y=(Q+1)*4+G*8,j=F(J,Y+2);if(j===void 0)throw C.malformed("bad pcd");let Z=L(J,Y+6)??0,H=(j&1073741824)!==0,N=j&1073741823;if(H)N=Math.floor(N/2);let q;if((Z&1)!==0){let z=Z>>>1;q=z<K.length?z:void 0}else if(Z!==0){let z=xK(Z);if(z!==void 0)K.push(z),q=K.length-1;else YJ(`Prm0 sprm outside the converted model: 0x${Z.toString(16).padStart(4,"0")}`)}$.push({cpStart:W,cpEnd:X,fc:N,compressed:H,prmPrc:q})}return $}function xK(J){let K=J>>>1&127,Q=J>>>8&255,$;switch(K){case 12:$=9738;break;case 24:$=9238;break;case 25:$=9239;break;case 85:$=2101;break;case 86:$=2102;break;case 87:$=2103;break;case 120:$=9792;break;default:return}return Uint8Array.of($&255,$>>>8,Q)}function vK(J){let K=F(J,24)??0,Q=F(J,28)??0;if(Q<=K)return[];return[{cpStart:0,cpEnd:Q-K,fc:K,compressed:!0,prmPrc:void 0}]}class hJ{chars=[];fcs=[];cps=[];pieceOf=[];n=0;reserve(J){this.chars=Array(J),this.fcs=Array(J),this.cps=Array(J),this.pieceOf=Array(J),this.n=0}push(J,K,Q,$){let G=this.n;this.chars[G]=J,this.fcs[G]=K,this.cps[G]=Q,this.pieceOf[G]=$,this.n=G+1}finish(){this.chars.length=this.n,this.fcs.length=this.n,this.cps.length=this.n,this.pieceOf.length=this.n}indexOfCp(J){let K=0,Q=this.cps.length;while(K<Q){let $=K+Q>>1;if(this.cps[$]<J)K=$+1;else Q=$}return K}}function hK(J){switch(J&1023){case 17:return"cp932";case 18:return"cp949";case 4:return J===1028||J===3076||J===5124||J===31748?"big5":"gbk";case 1:case 32:case 41:return"windows-1256";case 2:case 25:case 34:case 35:return"windows-1251";case 5:case 14:case 21:case 24:case 26:case 27:case 36:return"windows-1250";case 8:return"windows-1253";case 13:return"windows-1255";case 30:return"windows-874";case 31:case 44:return"windows-1254";case 37:case 38:case 39:return"windows-1257";case 42:return"windows-1258";default:return"windows-1252"}}function yJ(J,K){if(J==="cp932")return K>=129&&K<=159||K>=224&&K<=252;if(J==="gbk"||J==="big5"||J==="cp949")return K>=129&&K<=254;return!1}function jJ(J,K){return DK(J,K)}function yK(J){return J==="cp932"||J==="gbk"||J==="big5"||J==="cp949"}function SJ(J,K,Q,$,G,W){let X=W,Y=0;while(Y<K.length){let j=yJ(G,K[Y])&&Y+1<K.length?2:1,Z=jJ(K.subarray(Y,Y+j),G);for(let H of Z)J.push(H,Q+Y,X,$);X+=j,Y+=j}return X}function mK(J,K,Q,$){let G=new hJ;G.reserve(Q);let W=0,X=yK($);for(let Y=0;Y<K.length;Y+=1){if(W>=Q)break;let j=K[Y],Z=Math.min(Math.max(j.cpEnd-j.cpStart,0),Q-W);if(j.compressed){if(j.fc+Z>J.length)continue;let H=J.subarray(j.fc,j.fc+Z);if(!X){let N=jJ(H,$);if(N.length!==H.length){W=SJ(G,H,j.fc,Y,$,W);continue}for(let q=0;q<N.length;q+=1)G.push(N[q],j.fc+q,W,Y),W+=1}else{let N=[],q=[],z=0;while(z<H.length){let M=yJ($,H[z])&&z+1<H.length?2:1;N.push(z),q.push(M),z+=M}let _=jJ(H,$);if(_.length!==N.length){W=SJ(G,H,j.fc,Y,$,W);continue}for(let M=0;M<N.length;M+=1)G.push(_[M],j.fc+N[M],W,Y),W+=q[M]}}else{let H=Z*2;if(H>Number.MAX_SAFE_INTEGER)continue;if(j.fc+H>J.length)continue;let N=J.subarray(j.fc,j.fc+H),q=N.length>>1,z=0;while(z<q){let _=N[z*2]|N[z*2+1]<<8,M,V=1;if(_>=55296&&_<=56319)if(z+1<q){let A=N[(z+1)*2]|N[(z+1)*2+1]<<8;if(A>=56320&&A<=57343)M=String.fromCodePoint(65536+(_-55296<<10)+(A-56320)),V=2;else M="�"}else M="�";else if(_>=56320&&_<=57343)M="�";else M=String.fromCharCode(_);G.push(M,j.fc+z*2,W,Y),z+=V,W+=V}}}return G.finish(),G}var ZJ=new Uint8Array,mJ=4294967296;function uK(){return{chpx:ZJ,istd:0,pap:S(),chpxIstd:void 0}}class zJ{runs;constructor(J){this.runs=J.slice().sort((K,Q)=>K.fcStart-Q.fcStart)}lookup(J){return this.lookupRun(J)?.props}lookupRun(J){let K=0,Q=this.runs.length;while(K<Q){let G=K+Q>>1;if(this.runs[G].fcStart<=J)K=G+1;else Q=G}if(K===0)return;let $=this.runs[K-1];return J<$.fcEnd?$:void 0}nextStart(J){let K=0,Q=this.runs.length;while(K<Q){let $=K+Q>>1;if(this.runs[$].fcStart<=J)K=$+1;else Q=$}return K<this.runs.length?this.runs[K].fcStart:mJ}}function wJ(J,K,Q,$,G){let W=[],X=F(J,Q)??0,Y=F(J,Q+4)??0;if(X+Y>K.length)return W;let j=K.subarray(X,X+Y);if(j.length<8)return W;let Z=Math.floor((j.length-4)/8);for(let H=0;H<Z;H+=1){let N=F(j,(Z+1)*4+H*4);if(N===void 0)continue;let z=(N&4194303)*512;if(z+512>J.length)continue;gK(J.subarray(z,z+512),$,G,W)}return W}function gK(J,K,Q,$){let G=J[511]??0;if(G===0)return;let W=K==="papx"?13:1;for(let X=0;X<G;X+=1){let Y=F(J,X*4),j=F(J,(X+1)*4);if(Y===void 0||j===void 0)continue;let Z=(G+1)*4+X*W,H=J[Z];if(H===void 0)continue;let N=uK();if(H!==0){let q=H*2;if(K==="chpx"){let z=J[q];if(z!==void 0&&q+1+z<=J.length)N.chpx=J.subarray(q+1,q+1+z),N.chpxIstd=OJ(N.chpx)}else{let z=J[q];if(z!==void 0){let _,M;if(z===0){let V=J[q+1]??0;_=q+2,M=V*2}else _=q+1,M=z*2-1;if(_+M<=J.length&&M>=2){let V=J.subarray(_,_+M);N.istd=V[0]|V[1]<<8,v(V.subarray(2),Q,N.pap)}}}}$.push({fcStart:Y,fcEnd:j,props:N})}}class uJ{state=new Map;overridden=new Set;next(J,K,Q){let $=Math.min(Q,B-1),G=K.levels[$]??{marker:"bullet",start:1,restart:void 0,pattern:{text:[],legal:!1}},W=!this.overridden.has(`${J},${$}`);this.overridden.add(`${J},${$}`);let X=this.state.get(K.lsid);if(X===void 0)X={values:Array.from({length:B},()=>0),started:Array.from({length:B},()=>!1)},this.state.set(K.lsid,X);let{values:Y,started:j}=X,Z=K.startOverride[$],H;if(Z!==void 0&&W)H=Z;else if(j[$])H=Y[$]+1;else H=G.start;Y[$]=H,j[$]=!0;for(let N=$+1;N<K.levels.length&&N<B;N+=1){let q=K.levels[N];if(q.restart===void 0||$<q.restart)j[N]=!1}return[H,bK(K,Y,j,$)]}}function bK(J,K,Q,$){let G=J.levels[$];if(G===void 0||G.marker===void 0)return;let W=G.marker;return CK(G.pattern,W,K[$],(X)=>{return J.levels[Math.min(X,B-1)]?.marker??"decimal"},(X)=>{let Y=Math.min(X,B-1);return Q[Y]?K[Y]:J.levels[Y]?.start??1})}class HJ{inlines=[];fields=[];text="";style={...XJ};flushText(){if(this.text.length===0)return;let J=this.text;this.text="";let K={type:"text",text:J,style:{...this.style}},Q=this.fields[this.fields.length-1];if(Q!==void 0&&!Q.inResult)Q.instr+=FK([K]);else if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}pushChar(J,K){if(K!==this.style){if(!BK(K,this.style))this.flushText();this.style=K}this.text+=J}pushInline(J){this.flushText();let K=this.fields[this.fields.length-1];if(K!==void 0&&!K.inResult)return;if(K!==void 0)K.inlines.push(J);else this.inlines.push(J)}fieldBegin(){this.flushText(),this.fields.push(PK())}fieldSeparate(){this.flushText();let J=this.fields[this.fields.length-1];if(J!==void 0)J.inResult=!0}fieldEnd(){this.flushText();let J=this.fields.pop();if(J===void 0)return;for(let K of UK(J.instr,J.inlines)){let Q=this.fields[this.fields.length-1];if(Q!==void 0&&!Q.inResult)continue;if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}}finish(){this.flushText();while(this.fields.length>0)this.fieldEnd();return this.inlines}}class gJ{text;chpx;papx;stylesheet;lists;prcs;piecePrcs;noteRefs;counters=new uJ;data;assets=new OK;lastStyleFcStart=-1;lastStyleFcEnd=-1;lastStylePiece=-2;lastCharStyle={...XJ};constructor(J,K,Q,$,G,W,X,Y,j){this.text=J,this.chpx=K,this.papx=Q,this.stylesheet=$,this.lists=G,this.prcs=W,this.piecePrcs=X,this.noteRefs=Y,this.data=j}buildBlocks(J,K){let Q=[],$=[],G=new DJ,W=[],X=new DJ,Y=[],j=[],Z=new HJ,H=J,N=Math.min(K,this.text.chars.length);while(H<N){let z=this.text.chars[H],_=this.text.fcs[H],M=this.noteRefs.get(H);if(M!==void 0){Z.pushInline({type:"noteRef",id:M}),H+=1;continue}if(z==="\r"||z==="\x07"||z==="\f"||z==="\x0E"){let V=this.effectivePap(_,H),A=Z.finish();Z=new HJ;let U=z==="\x07";if(V.effective.inTable===!0||U)if(G.flush(Q),w(Q,$),(V.effective.itap??1)>1||V.effective.innerCell===!0||V.effective.innerTtp===!0)this.emitCellParagraph(V,A,W,X);else if(U&&V.effective.ttp===!0){if(X.flush(W),Y.length>0)j.push({cells:Y,tap:V.effective.tap===void 0?void 0:QJ(V.effective.tap)}),Y=[]}else if(U)this.emitCellParagraph(V,A,W,X),X.flush(W),Y.push(W),W=[];else this.emitCellParagraph(V,A,W,X);else kJ(Q,j,Y,W),Y=[],W=[],this.emitParagraph(V,A,Q,$,G)}else if(z==="\v")Z.pushInline({type:"lineBreak"});else if(z==="\x13")Z.fieldBegin();else if(z==="\x14")Z.fieldSeparate();else if(z==="\x15")Z.fieldEnd();else if(z==="\t")Z.pushChar(" ",this.charStyle(_,H));else if(z==="\x1E")Z.pushChar("-",this.charStyle(_,H));else if(z==="\x01"){let V=this.pictureAt(_);if(V!==void 0)Z.pushInline(V)}else if(z==="\x02"||z==="\x05"||z==="\b"||z==="\x1F");else if(LK(z));else Z.pushChar(z,this.charStyle(_,H));H+=1}let q=Z.finish();if(X.flush(W),kJ(Q,j,Y,W),!GJ(q))G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:q});return G.flush(Q),w(Q,$),Q}charStyle(J,K){let Q=this.text.pieceOf[K]??-1;if(Q===this.lastStylePiece&&J>=this.lastStyleFcStart&&J<this.lastStyleFcEnd)return this.lastCharStyle;let $=this.papx.lookupRun(J),G=this.chpx.lookupRun(J),W=0,X=mJ;if($!==void 0){if($.fcStart>W)W=$.fcStart;if($.fcEnd<X)X=$.fcEnd}else{let _=this.papx.nextStart(J);if(_<X)X=_}if(G!==void 0){if(G.fcStart>W)W=G.fcStart;if(G.fcEnd<X)X=G.fcEnd}else{let _=this.chpx.nextStart(J);if(_<X)X=_}this.lastStyleFcStart=W,this.lastStyleFcEnd=X>W?X:J+1,this.lastStylePiece=Q;let Y=$?.props.istd??0,j=G?.props,Z=j?.chpx??ZJ,H=j?.chpxIstd??Y,N=this.stylesheet.get(H).chp,q=Q>=0?this.piecePrm(Q):void 0,z=Z.length===0?N:o(Z,N,N);if(q!==void 0)z=o(q,z,N);return this.lastCharStyle=z,z}piecePrm(J){let K=this.piecePrcs[J];if(K===void 0)return;return this.prcs[K]}effectivePap(J,K){let Q=this.papx.lookup(J),$=Q?.istd??0,G=Q===void 0?S():m(Q.pap),W=this.stylesheet.get($),X=u(m(W.pap),G),Y=this.text.pieceOf[K];if(Y!==void 0){let j=this.piecePrm(Y);if(j!==void 0){let Z=S();v(j,ZJ,Z),X=u(X,Z)}}return{istd:$,effective:X}}emitParagraph(J,K,Q,$,G){let W=this.stylesheet.get(J.istd);if(W.block!==void 0){w(Q,$),G.push(W.block,K,Q);return}if(GJ(K)){G.flush(Q),w(Q,$);return}let X=W.heading??J.effective.outline??void 0;if(X!==void 0){G.flush(Q),w(Q,$);let j=K;RK(j,W.chp);let Z=this.headingLabel(J);if(Z!==void 0)j.unshift({type:"text",text:Z,style:{...XJ}});Q.push({type:"heading",level:X,anchor:void 0,content:j});return}let Y=J.effective.ilfo??0;if(Y!==0&&Y!==63489){let j=J.effective.ilvl??0,Z=this.lists.get(Y)??e(Y),N=Z.levels[Math.min(j,B-1)]?.marker;if(N!==void 0){let q=0,z;if(RJ(N))[q,z]=this.counters.next(Y,Z,j);G.flush(Q),$.push({level:j,key:{instance:Z.lsid,marker:N},number:q,label:z,blocks:[{type:"paragraph",inlines:K}]});return}}G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:K})}emitCellParagraph(J,K,Q,$){let G=this.stylesheet.get(J.istd).block;if(G!==void 0)$.push(G,K,Q);else if($.flush(Q),!GJ(K))Q.push({type:"paragraph",inlines:K})}pictureAt(J){let K=this.chpx.lookup(J)!==void 0?IJ(this.chpx.lookup(J).chpx):void 0;if(K===void 0)return;let Q=F(this.data,K);if(Q===void 0)return;let $=L(this.data,K+4);if($===void 0)return;if(K+Q>this.data.length){YJ("picture data out of bounds in the Data stream");return}let G=this.data.subarray(K,K+Q),W=G.subarray(Math.min($,G.length)),X=EK(W,AK);if(X===void 0){YJ("skipping picture with no supported blip payload");return}let Y=`data/pic${K}.${X.extension}`;return{type:"image",alt:"",source:{type:"asset",id:this.assets.add(X.mediaType,Y,X.bytes)}}}headingLabel(J){let K=J.effective.ilfo??0;if(K===0||K===63489)return;let Q=J.effective.ilvl??0,$=this.lists.get(K);if($===void 0)return;let G=$.levels[Math.min(Q,B-1)];if(G===void 0||G.marker===void 0)return;let W=G.marker;if(!RJ(W))return;let[X,Y]=this.counters.next(K,$,Q);return`${Y??TK(W,X)} `}}function kJ(J,K,Q,$){if($.length>0)Q.push($.splice(0,$.length));if(Q.length>0)K.push({cells:Q.splice(0,Q.length),tap:void 0});if(K.length===0)return;let G=K.splice(0,K.length).map(fK),W=IK(G);if(W!==void 0)J.push(W)}function fK(J){let K=J.tap?.header===!0,Q=J.tap??KJ();return{cells:J.cells.map((G,W)=>{let X=Q.cells[W]??{horzFirst:!1,horzCont:!1,vertRestart:!1,vertCont:!1},Y=Q.boundaries[W+1]??(W+1)*1000,j={mergeFirst:X.horzFirst,mergeCont:X.horzCont,vmergeFirst:X.vertRestart,vmergeCont:X.vertCont,right:Y};return[G,j]}),header:K}}function NJ(){return{id:"doc",sniff(J,K){if(bJ(J,"{\\rtf"))return 0;if(nK(J)==="doc")return 2;if(K?.path!==void 0&&aK(K.path)==="doc")return 1;return 0},convert(J){if(bJ(J,"{\\rtf"))throw dK.unsupported("RTF content in a .doc file: use the rtf converter");return{markdown:iK(vJ(J))}}}}import{create as pK}from"@mdgate/core";var oK=pK([NJ()]);function cK(J,K){return oK(J,K)}export{cK as toMarkdown,NJ as doc};
1
+ import{detectOleDoc as nK}from"@mdgate/containers";import{ConvertError as dK}from"@mdgate/core";import{documentToMarkdown as iK}from"@mdgate/document";import{asciiStartsWith as bJ,fileExtension as aK}from"@mdgate/utils";import{CompoundFile as VK,getU16 as L,getU32 as F,MAX_ENTRY_BYTES as AK,readOleStream as xJ}from"@mdgate/containers";import{ConvertError as C}from"@mdgate/core";import{inlinesAreEmpty as GJ,inlinesToPlainText as FK,markerIsOrdered as EJ,markerLabel as TK,PLAIN as YJ,stylesEqual as BK}from"@mdgate/document";import{AssetSink as OK,buildEdgeTable as IK,compositeLabel as CK,emptyFieldFrame as PK,fieldResult as UK,firstBlip as RK,flushList as w,rebaseEmphasis as EK,StyledRun as DJ}from"@mdgate/office-common";import{debug as jJ,decode as DK,isControl as LK}from"@mdgate/utils";import{getU16 as l,getU32 as R}from"@mdgate/containers";import{emptyNumberPattern as lJ}from"@mdgate/office-common";import{isControl as tJ}from"@mdgate/utils";var B=9;function VJ(){return{marker:"bullet",start:1,restart:void 0,pattern:lJ()}}function e(J){return{lsid:(4294967295^J)>>>0,levels:Array.from({length:B},()=>VJ()),startOverride:Array.from({length:B},()=>{return})}}class AJ{byIlfo=new Map;get(J){return this.byIlfo.get(J)}set(J,K){this.byIlfo.set(J,K)}}function FJ(J,K){let Q=R(J,738)??0,$=R(J,742)??0,G=R(J,746)??0,W=R(J,750)??0,Y=new AJ;if($===0)return Y;let j=eJ(K,Q,$);if(G+W>K.length)return Y;return KK(K.subarray(G,G+W),j,Y),Y}var r=28;function eJ(J,K,Q){let $=new Map;if(K>=J.length)return $;let G=J.subarray(K),W=l(G,0);if(W===void 0)return $;let Y=[],j=2;for(let X=0;X<W;X+=1){if(j+r>G.length)return $;let Z=G.subarray(j,j+r),H=R(Z,0);if(H===void 0)return $;let N=(Z[26]&1)!==0;Y.push([H,N]),j+=r}j=Q;for(let[X,Z]of Y){let H=Z?1:B,N=Array.from({length:B},()=>VJ()),q=!1;for(let z=0;z<H;z+=1){let _=TJ(G,j);if(_===void 0){q=!0;break}N[z]=_[0],j=_[1]}if(q)return $;if(Z){let z=t(N[0]);for(let _=0;_<B;_+=1)N[_]=t(z)}$.set(X,N)}return $}function t(J){return{marker:J.marker,start:J.start,restart:J.restart,pattern:{text:J.pattern.text.map((K)=>K.type==="literal"?{type:"literal",text:K.text}:{type:"level",level:K.level}),legal:J.pattern.legal}}}function TJ(J,K){if(K>=J.length)return;let $=J.subarray(K);if($.length<28)return;let G=$.subarray(0,28),W=R(G,0);if(W===void 0)return;let Y=G[4],j=G[5],X=(j&4)!==0,Z=(j&8)!==0,H=[];for(let O=6;O<15;O+=1){let T=G[O];if(T===0)break;H.push(T)}let N=G[26],q=G[25],z=G[24],_=28+q+z,M=l($,_);if(M===void 0)return;_+=2;let V=QK(Y),A=[];if(V!==void 0&&V!=="bullet")for(let O=0;O<M;O+=1){let T=O*2+_,I=l($,T);if(I===void 0)return;if(I<=8&&H.includes(O+1))A.push({type:"level",level:I});else{let k=JK(I);if(k===void 0||tJ(k))continue;let b=A[A.length-1];if(b?.type==="literal")b.text+=k;else A.push({type:"literal",text:k})}}return _+=M*2,[{marker:V,start:W,restart:Z?N:void 0,pattern:{text:A,legal:X}},K+_]}function JK(J){if(J>=55296&&J<=57343)return;return String.fromCharCode(J)}var s=16;function KK(J,K,Q){let $=R(J,0);if($===void 0)return;let G=[],W=4;for(let Y=0;Y<$;Y+=1){if(W+s>J.length)return;let j=J.subarray(W,W+s),X=R(j,0);if(X===void 0)return;let Z=j[12];G.push([X,Z]),W+=s}for(let Y=0;Y<G.length;Y+=1){let[j,X]=G[Y],Z=Y+1,H=K.get(j),N=H!==void 0?{lsid:j,levels:H.map(t),startOverride:Array.from({length:B},()=>{return})}:e(Z);for(let q=0;q<X;q+=1){if(W+8>J.length)break;let z=J.subarray(W,W+8),_=R(z,0);if(_===void 0)break;let M=z[4],V=M&15,A=(M&16)!==0,U=(M&32)!==0;if(W+=8,U){let O=TJ(J,W);if(O===void 0)break;let[T,I]=O;if(V<B){if(A)N.startOverride[V]=T.start;N.levels[V]=T}W=I}else if(A&&V<B)N.levels[V].start=_,N.startOverride[V]=_}Q.set(Z,N)}}function QK(J){switch(J){case 0:return"decimal";case 1:return"upperRoman";case 2:return"lowerRoman";case 3:return"upperAlpha";case 4:return"lowerAlpha";case 23:return"bullet";case 255:return;default:return"decimal"}}import{getU16 as x,getU32 as a}from"@mdgate/containers";function $K(J,K){switch(J>>>13){case 0:case 1:return 1;case 2:case 4:case 5:return 2;case 3:return 4;case 7:return 3;default:if(J===54792){let Q=x(K,0);return Q===void 0?0:Q+1}return K.length===0?0:K[0]+1}}function p(J,K){let Q=0;while(Q+2<=J.length){let $=J[Q]|J[Q+1]<<8;Q+=2;let G=$K($,J.subarray(Q));if(Q+G>J.length)break;K($,J.subarray(Q,Q+G)),Q+=G}}function JJ(J,K){switch(J[0]){case 0:return!1;case 1:return!0;case 128:return K;case 129:return!K;default:return}}function OJ(J){let K;return p(J,(Q,$)=>{if(Q===18992)K=x($,0)}),K}function IJ(J){let K;return p(J,(Q,$)=>{if(Q===27139)K=a($,0)}),K}function o(J,K,Q){if(J.length===0)return K;let $={...K};return p(J,(G,W)=>{switch(G){case 2101:{let Y=JJ(W,Q.bold);if(Y!==void 0)$.bold=Y;break}case 2102:{let Y=JJ(W,Q.italic);if(Y!==void 0)$.italic=Y;break}case 2103:{let Y=JJ(W,Q.strike);if(Y!==void 0)$.strike=Y;break}default:break}}),$}function KJ(){return{boundaries:[],cells:[],header:!1}}function GK(){return{horzFirst:!1,horzCont:!1,vertRestart:!1,vertCont:!1}}function QJ(J){return{boundaries:J.boundaries.slice(),cells:J.cells.map((K)=>({...K})),header:J.header}}function S(){return{inTable:void 0,ttp:void 0,outline:void 0,ilfo:void 0,ilvl:void 0,itap:void 0,innerCell:void 0,innerTtp:void 0,tap:void 0}}function m(J){return{inTable:J.inTable,ttp:J.ttp,outline:J.outline,ilfo:J.ilfo,ilvl:J.ilvl,itap:J.itap,innerCell:J.innerCell,innerTtp:J.innerTtp,tap:J.tap===void 0?void 0:QJ(J.tap)}}function u(J,K){return{inTable:K.inTable??J.inTable,ttp:K.ttp??J.ttp,outline:K.outline!==void 0?K.outline:J.outline,ilfo:K.ilfo??J.ilfo,ilvl:K.ilvl??J.ilvl,itap:K.itap??J.itap,innerCell:K.innerCell??J.innerCell,innerTtp:K.innerTtp??J.innerTtp,tap:K.tap??J.tap}}function WK(J){return J<<16>>16}function BJ(J){return J|0}function YK(J,K){let Q=J+K;if(Q>2147483647)return 2147483647;if(Q<-2147483648)return-2147483648;return Q|0}function v(J,K,Q){p(J,($,G)=>{switch($){case 9238:Q.inTable=G.length>0&&G[0]!==0;break;case 9239:Q.ttp=G.length>0&&G[0]!==0;break;case 26182:{let W=a(G,0);if(W===void 0)break;let Y=x(K,W);if(Y===void 0)break;if(W+2+Y>K.length)break;v(K.subarray(W+2,W+2+Y),new Uint8Array,Q);break}case 9792:{let W=G[0];if(W!==void 0)Q.outline=W<9?W+1:null;break}case 9738:Q.ilvl=G[0];break;case 17931:Q.ilfo=x(G,0);break;case 26185:{let W=a(G,0);if(W!==void 0)Q.itap=BJ(W);break}case 26186:{let W=a(G,0);if(W!==void 0)Q.itap=YK(Q.itap??0,BJ(W));break}case 9291:Q.innerCell=G.length>0&&G[0]!==0;break;case 9292:Q.innerTtp=G.length>0&&G[0]!==0;break;case 54792:{let W=XK(G);if(W!==void 0){let Y=Q.tap?.header===!0;Q.tap={...W,header:Y}}break}case 13316:{let W=G.length>0&&G[0]!==0;if(Q.tap!==void 0)Q.tap.header=W;else if(W)Q.tap={...KJ(),header:!0};break}case 54827:{let W=G[1],Y=G[2];if(W===void 0||Y===void 0||Q.tap===void 0)break;let j=Q.tap.cells[W];if(j===void 0)break;j.vertCont=Y===1,j.vertRestart=Y===3;break}default:break}})}var jK=20;function XK(J){let K=J[2];if(K===void 0||K>63)return;let Q=[];for(let W=0;W<=K;W+=1){let Y=x(J,3+W*2);if(Y===void 0)return;Q.push(WK(Y))}let $=[];for(let W=0;W<K;W+=1)$.push(GK());let G=3+(K+1)*2;for(let W=0;W<$.length;W+=1){let Y=x(J,G+W*jK);if(Y===void 0)break;let j=$[W],X=Y&3;j.horzCont=X===1,j.horzFirst=X>=2;let Z=Y>>5&3;j.vertCont=Z===1,j.vertRestart=Z===3}return{boundaries:Q,cells:$,header:!1}}function CJ(J,K){return o(J,K,K)}import{getU16 as E,getU32 as PJ}from"@mdgate/containers";import{PLAIN as ZK}from"@mdgate/document";import{fromStyleName as zK}from"@mdgate/office-common";import{warn as HK}from"@mdgate/utils";var NK=4095;function UJ(){return{chp:{...ZK},pap:S(),heading:void 0,block:void 0}}function $J(J){return{chp:{...J.chp},pap:m(J.pap),heading:J.heading,block:J.block}}class g{resolved=new Map;default=UJ();get(J){return this.resolved.get(J)??this.default}set(J,K){this.resolved.set(J,K)}}function RJ(J,K){let Q=PJ(J,162),$=PJ(J,166);if(Q===void 0||$===void 0)return new g;if(Q+$>K.length)return new g;let G=K.subarray(Q,Q+$),W=E(G,0),Y=E(G,2),j=E(G,4);if(W===void 0||Y===void 0||j===void 0)return new g;let X=new Map,Z=2+W;for(let q=0;q<Y;q+=1){let z=E(G,Z);if(z===void 0)break;if(Z+=2,z===0)continue;if(Z+z>G.length)break;let _=G.subarray(Z,Z+z);Z+=z;let M=qK(_,j);if(M!==void 0)X.set(q,M)}let H=new g,N=new Map;for(let q of X.keys())H.set(q,_K(q,X,N));return H}function qK(J,K){let Q=E(J,0);if(Q===void 0)return;let $=Q&4095,G=E(J,2);if(G===void 0)return;let W=G&15,Y=G>>4&4095,j=E(J,4),X=j===void 0?0:j&15,Z=Math.max(K,10),H=E(J,Z);if(H===void 0)return;let N=H*2,q=[],z=Z+2;if(z+N<=J.length)for(let T=0;T<N;T+=2)q.push(J[z+T]|J[z+T+1]<<8);let _=MK(q),M=Z+4+N;if(!Number.isSafeInteger(M))return;let V=[];for(let T=0;T<X;T+=1){if(M%2===1)M+=1;let I=E(J,M);if(I===void 0)return;if(M+2+I>J.length)return;V.push(J.subarray(M+2,M+2+I)),M+=2+I}let A=W===1,U=A?V[0]!==void 0?new Uint8Array(V[0]):new Uint8Array:new Uint8Array,O=A?V[1]!==void 0?new Uint8Array(V[1]):new Uint8Array:V[0]!==void 0?new Uint8Array(V[0]):new Uint8Array;return{sti:$,istdBase:Y,block:zK(_),upxPapx:U,upxChpx:O,isParagraph:A}}function _K(J,K,Q){let $=Q.get(J);if($!==void 0)return $J($);let G=[],W=new Set,Y=UJ(),j=J;while(j!==void 0){let X=Q.get(j);if(X!==void 0){Y=$J(X);break}if(W.has(j)){HK(`style istdBase cycle at istd ${j}`);break}W.add(j);let Z=K.get(j);if(Z===void 0)break;G.push(j),j=Z.istdBase!==NK&&Z.istdBase!==j?Z.istdBase:void 0}for(let X=G.length-1;X>=0;X-=1){let Z=G[X],H=K.get(Z);if(H.isParagraph&&H.upxPapx.length>=2){let N=S();v(H.upxPapx.subarray(2),new Uint8Array,N),Y.pap=u(Y.pap,N)}if(Y.chp=CJ(H.upxChpx,Y.chp),H.sti>=1&&H.sti<=9)Y.heading=H.sti;Y.block=H.block??Y.block,Q.set(Z,$J(Y))}return Y}function MK(J){let K="";for(let Q=0;Q<J.length;Q+=1){let $=J[Q];if($>=55296&&$<=56319&&Q+1<J.length){let G=J[Q+1];if(G>=56320&&G<=57343){K+=String.fromCharCode($,G),Q+=1;continue}}if($>=55296&&$<=57343)K+="�";else K+=String.fromCharCode($)}return K}function vJ(J){let K;try{K=VK.open(J)}catch(P){if(P instanceof C)throw P;let y=P instanceof Error?P.message:String(P);throw C.malformed(`not an OLE2 compound file: ${y}`)}let Q=xJ(K,"WordDocument");if(L(Q,0)!==42476)throw C.malformedPart("WordDocument","invalid FIB magic");let $=L(Q,10)??0;if(($&256)!==0)throw C.encrypted();let[G,W]=($&512)!==0?["1Table","0Table"]:["0Table","1Table"],Y=WJ(K,G)??WJ(K,W)??new Uint8Array,j=F(Q,76)??0,X=F(Q,80)??0,Z=F(Q,84)??0,H=F(Q,88)??0,N=F(Q,92)??0,q=F(Q,96)??0,z=F(Q,418)??0,_=F(Q,422)??0,[M,V]=_>0?wK(Y,z,_):[vK(Q),[]],A=j+X+Z+H+N+q,U=($&16384)!==0?SK(L(Q,60))??L(Q,6):L(Q,6),O=hK(U??0),T=mK(Q,M,A,O),I=WJ(K,"Data")??new Uint8Array,k=wJ(Q,Y,250,"chpx",I),b=wJ(Q,Y,258,"papx",I),fJ=RJ(Q,Y),nJ=FJ(Q,Y),qJ=new Map,_J=[],dJ=j,iJ=j+X+Z+H+N;for(let[P,y,f,n,d]of[[170,178,dJ,"fn","footnote"],[522,530,iJ,"en","endnote"]]){let[i,cJ]=LJ(Q,Y,P,2),[c]=LJ(Q,Y,y,0);for(let D=0;D<cJ;D+=1)if(qJ.set(T.indexOfCp(i[D]),`${n}${D}`),D+1<c.length){let rJ=T.indexOfCp(f+c[D]),sJ=T.indexOfCp(f+c[D+1]);_J.push([rJ,sJ,`${n}${D}`,d])}}let aJ=T.indexOfCp(j),pJ=M.map((P)=>P.prmPrc),h=new gJ(T,new zJ(k),new zJ(b),fJ,nJ,V,pJ,qJ,I),oJ=h.buildBlocks(0,aJ),MJ=[];for(let[P,y,f,n]of _J){let d=Math.min(P,h.text.chars.length),i=Math.min(y,h.text.chars.length);if(d>=i)continue;MJ.push({id:f,kind:n,blocks:h.buildBlocks(d,i)})}return{blocks:oJ,notes:MJ,assets:h.assets.assets}}function SK(J){return J!==void 0&&J!==0?J:void 0}function WJ(J,K){try{return xJ(J,K)}catch(Q){if(Q instanceof C&&Q.code==="resourceLimit")throw Q;return}}function LJ(J,K,Q,$){let G=F(J,Q)??0,W=F(J,Q+4)??0;if(G+W>K.length)return[[],0];let Y=K.subarray(G,G+W);if(W<8)return[[],0];let j=$===0?Math.floor(W/4)-1:Math.floor((W-4)/(4+$)),X=[];for(let Z=0;Z<=j;Z+=1)X.push(F(Y,Z*4)??0);return[X,j]}function wK(J,K,Q){if(K+Q>J.length)throw C.malformed("Clx out of bounds");let $=J.subarray(K,K+Q),G=[],W=0;for(;;){if(W>=$.length)throw C.malformed("malformed Clx");let Y=$.subarray(W),j=Y[0];if(j===1){let X=L(Y,1);if(X===void 0)throw C.malformed("bad Prc");if(3+X<=Y.length)G.push(new Uint8Array(Y.subarray(3,3+X)));W+=3+X}else if(j===2){let X=F(Y,1);if(X===void 0)throw C.malformed("bad Pcdt");if(5+X>Y.length)throw C.malformed("PlcPcd out of bounds");let Z=Y.subarray(5,5+X);return[kK(Z,G),G]}else throw C.malformed("malformed Clx")}}function kK(J,K){if(J.length<16)throw C.malformed("empty piece table");let Q=Math.floor((J.length-4)/12),$=[];for(let G=0;G<Q;G+=1){let W=F(J,G*4),Y=F(J,(G+1)*4);if(W===void 0||Y===void 0)throw C.malformed("bad cp");let j=(Q+1)*4+G*8,X=F(J,j+2);if(X===void 0)throw C.malformed("bad pcd");let Z=L(J,j+6)??0,H=(X&1073741824)!==0,N=X&1073741823;if(H)N=Math.floor(N/2);let q;if((Z&1)!==0){let z=Z>>>1;q=z<K.length?z:void 0}else if(Z!==0){let z=xK(Z);if(z!==void 0)K.push(z),q=K.length-1;else jJ(`Prm0 sprm outside the converted model: 0x${Z.toString(16).padStart(4,"0")}`)}$.push({cpStart:W,cpEnd:Y,fc:N,compressed:H,prmPrc:q})}return $}function xK(J){let K=J>>>1&127,Q=J>>>8&255,$;switch(K){case 12:$=9738;break;case 24:$=9238;break;case 25:$=9239;break;case 85:$=2101;break;case 86:$=2102;break;case 87:$=2103;break;case 120:$=9792;break;default:return}return Uint8Array.of($&255,$>>>8,Q)}function vK(J){let K=F(J,24)??0,Q=F(J,28)??0;if(Q<=K)return[];return[{cpStart:0,cpEnd:Q-K,fc:K,compressed:!0,prmPrc:void 0}]}class hJ{chars=[];fcs=[];cps=[];pieceOf=[];n=0;reserve(J){this.chars=Array(J),this.fcs=Array(J),this.cps=Array(J),this.pieceOf=Array(J),this.n=0}push(J,K,Q,$){let G=this.n;this.chars[G]=J,this.fcs[G]=K,this.cps[G]=Q,this.pieceOf[G]=$,this.n=G+1}finish(){this.chars.length=this.n,this.fcs.length=this.n,this.cps.length=this.n,this.pieceOf.length=this.n}indexOfCp(J){let K=0,Q=this.cps.length;while(K<Q){let $=K+Q>>1;if(this.cps[$]<J)K=$+1;else Q=$}return K}}function hK(J){switch(J&1023){case 17:return"cp932";case 18:return"cp949";case 4:return J===1028||J===3076||J===5124||J===31748?"big5":"gbk";case 1:case 32:case 41:return"windows-1256";case 2:case 25:case 34:case 35:return"windows-1251";case 5:case 14:case 21:case 24:case 26:case 27:case 36:return"windows-1250";case 8:return"windows-1253";case 13:return"windows-1255";case 30:return"windows-874";case 31:case 44:return"windows-1254";case 37:case 38:case 39:return"windows-1257";case 42:return"windows-1258";default:return"windows-1252"}}function yJ(J,K){if(J==="cp932")return K>=129&&K<=159||K>=224&&K<=252;if(J==="gbk"||J==="big5"||J==="cp949")return K>=129&&K<=254;return!1}function XJ(J,K){return DK(J,K)}function yK(J){return J==="cp932"||J==="gbk"||J==="big5"||J==="cp949"}function SJ(J,K,Q,$,G,W){let Y=W,j=0;while(j<K.length){let X=yJ(G,K[j])&&j+1<K.length?2:1,Z=XJ(K.subarray(j,j+X),G);for(let H of Z)J.push(H,Q+j,Y,$);Y+=X,j+=X}return Y}function mK(J,K,Q,$){let G=new hJ;G.reserve(Q);let W=0,Y=yK($);for(let j=0;j<K.length;j+=1){if(W>=Q)break;let X=K[j],Z=Math.min(Math.max(X.cpEnd-X.cpStart,0),Q-W);if(X.compressed){if(X.fc+Z>J.length)continue;let H=J.subarray(X.fc,X.fc+Z);if(!Y){let N=XJ(H,$);if(N.length!==H.length){W=SJ(G,H,X.fc,j,$,W);continue}for(let q=0;q<N.length;q+=1)G.push(N[q],X.fc+q,W,j),W+=1}else{let N=[],q=[],z=0;while(z<H.length){let M=yJ($,H[z])&&z+1<H.length?2:1;N.push(z),q.push(M),z+=M}let _=XJ(H,$);if(_.length!==N.length){W=SJ(G,H,X.fc,j,$,W);continue}for(let M=0;M<N.length;M+=1)G.push(_[M],X.fc+N[M],W,j),W+=q[M]}}else{let H=Z*2;if(H>Number.MAX_SAFE_INTEGER)continue;if(X.fc+H>J.length)continue;let N=J.subarray(X.fc,X.fc+H),q=N.length>>1,z=0;while(z<q){let _=N[z*2]|N[z*2+1]<<8,M,V=1;if(_>=55296&&_<=56319)if(z+1<q){let A=N[(z+1)*2]|N[(z+1)*2+1]<<8;if(A>=56320&&A<=57343)M=String.fromCodePoint(65536+(_-55296<<10)+(A-56320)),V=2;else M="�"}else M="�";else if(_>=56320&&_<=57343)M="�";else M=String.fromCharCode(_);G.push(M,X.fc+z*2,W,j),z+=V,W+=V}}}return G.finish(),G}var ZJ=new Uint8Array,mJ=4294967296;function uK(){return{chpx:ZJ,istd:0,pap:S(),chpxIstd:void 0}}class zJ{runs;constructor(J){this.runs=J.slice().sort((K,Q)=>K.fcStart-Q.fcStart)}lookup(J){return this.lookupRun(J)?.props}lookupRun(J){let K=0,Q=this.runs.length;while(K<Q){let G=K+Q>>1;if(this.runs[G].fcStart<=J)K=G+1;else Q=G}if(K===0)return;let $=this.runs[K-1];return J<$.fcEnd?$:void 0}nextStart(J){let K=0,Q=this.runs.length;while(K<Q){let $=K+Q>>1;if(this.runs[$].fcStart<=J)K=$+1;else Q=$}return K<this.runs.length?this.runs[K].fcStart:mJ}}function wJ(J,K,Q,$,G){let W=[],Y=F(J,Q)??0,j=F(J,Q+4)??0;if(Y+j>K.length)return W;let X=K.subarray(Y,Y+j);if(X.length<8)return W;let Z=Math.floor((X.length-4)/8);for(let H=0;H<Z;H+=1){let N=F(X,(Z+1)*4+H*4);if(N===void 0)continue;let z=(N&4194303)*512;if(z+512>J.length)continue;gK(J.subarray(z,z+512),$,G,W)}return W}function gK(J,K,Q,$){let G=J[511]??0;if(G===0)return;let W=K==="papx"?13:1;for(let Y=0;Y<G;Y+=1){let j=F(J,Y*4),X=F(J,(Y+1)*4);if(j===void 0||X===void 0)continue;let Z=(G+1)*4+Y*W,H=J[Z];if(H===void 0)continue;let N=uK();if(H!==0){let q=H*2;if(K==="chpx"){let z=J[q];if(z!==void 0&&q+1+z<=J.length)N.chpx=J.subarray(q+1,q+1+z),N.chpxIstd=OJ(N.chpx)}else{let z=J[q];if(z!==void 0){let _,M;if(z===0){let V=J[q+1]??0;_=q+2,M=V*2}else _=q+1,M=z*2-1;if(_+M<=J.length&&M>=2){let V=J.subarray(_,_+M);N.istd=V[0]|V[1]<<8,v(V.subarray(2),Q,N.pap)}}}}$.push({fcStart:j,fcEnd:X,props:N})}}class uJ{state=new Map;overridden=new Set;next(J,K,Q){let $=Math.min(Q,B-1),G=K.levels[$]??{marker:"bullet",start:1,restart:void 0,pattern:{text:[],legal:!1}},W=!this.overridden.has(`${J},${$}`);this.overridden.add(`${J},${$}`);let Y=this.state.get(K.lsid);if(Y===void 0)Y={values:Array.from({length:B},()=>0),started:Array.from({length:B},()=>!1)},this.state.set(K.lsid,Y);let{values:j,started:X}=Y,Z=K.startOverride[$],H;if(Z!==void 0&&W)H=Z;else if(X[$])H=j[$]+1;else H=G.start;j[$]=H,X[$]=!0;for(let N=$+1;N<K.levels.length&&N<B;N+=1){let q=K.levels[N];if(q.restart===void 0||$<q.restart)X[N]=!1}return[H,bK(K,j,X,$)]}}function bK(J,K,Q,$){let G=J.levels[$];if(G===void 0||G.marker===void 0)return;let W=G.marker;return CK(G.pattern,W,K[$],(Y)=>{return J.levels[Math.min(Y,B-1)]?.marker??"decimal"},(Y)=>{let j=Math.min(Y,B-1);return Q[j]?K[j]:J.levels[j]?.start??1})}class HJ{inlines=[];fields=[];text="";style={...YJ};flushText(){if(this.text.length===0)return;let J=this.text;this.text="";let K={type:"text",text:J,style:{...this.style}},Q=this.fields[this.fields.length-1];if(Q!==void 0&&!Q.inResult)Q.instr+=FK([K]);else if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}pushChar(J,K){if(K!==this.style){if(!BK(K,this.style))this.flushText();this.style=K}this.text+=J}pushInline(J){this.flushText();let K=this.fields[this.fields.length-1];if(K!==void 0&&!K.inResult)return;if(K!==void 0)K.inlines.push(J);else this.inlines.push(J)}fieldBegin(){this.flushText(),this.fields.push(PK())}fieldSeparate(){this.flushText();let J=this.fields[this.fields.length-1];if(J!==void 0)J.inResult=!0}fieldEnd(){this.flushText();let J=this.fields.pop();if(J===void 0)return;for(let K of UK(J.instr,J.inlines)){let Q=this.fields[this.fields.length-1];if(Q!==void 0&&!Q.inResult)continue;if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}}finish(){this.flushText();while(this.fields.length>0)this.fieldEnd();return this.inlines}}class gJ{text;chpx;papx;stylesheet;lists;prcs;piecePrcs;noteRefs;counters=new uJ;data;assets=new OK;lastStyleFcStart=-1;lastStyleFcEnd=-1;lastStylePiece=-2;lastCharStyle={...YJ};constructor(J,K,Q,$,G,W,Y,j,X){this.text=J,this.chpx=K,this.papx=Q,this.stylesheet=$,this.lists=G,this.prcs=W,this.piecePrcs=Y,this.noteRefs=j,this.data=X}buildBlocks(J,K){let Q=[],$=[],G=new DJ,W=[],Y=new DJ,j=[],X=[],Z=new HJ,H=J,N=Math.min(K,this.text.chars.length);while(H<N){let z=this.text.chars[H],_=this.text.fcs[H],M=this.noteRefs.get(H);if(M!==void 0){Z.pushInline({type:"noteRef",id:M}),H+=1;continue}if(z==="\r"||z==="\x07"||z==="\f"||z==="\x0E"){let V=this.effectivePap(_,H),A=Z.finish();Z=new HJ;let U=z==="\x07";if(V.effective.inTable===!0||U)if(G.flush(Q),w(Q,$),(V.effective.itap??1)>1||V.effective.innerCell===!0||V.effective.innerTtp===!0)this.emitCellParagraph(V,A,W,Y);else if(U&&V.effective.ttp===!0){if(Y.flush(W),j.length>0)X.push({cells:j,tap:V.effective.tap===void 0?void 0:QJ(V.effective.tap)}),j=[]}else if(U)this.emitCellParagraph(V,A,W,Y),Y.flush(W),j.push(W),W=[];else this.emitCellParagraph(V,A,W,Y);else kJ(Q,X,j,W),j=[],W=[],this.emitParagraph(V,A,Q,$,G)}else if(z==="\v")Z.pushInline({type:"lineBreak"});else if(z==="\x13")Z.fieldBegin();else if(z==="\x14")Z.fieldSeparate();else if(z==="\x15")Z.fieldEnd();else if(z==="\t")Z.pushChar(" ",this.charStyle(_,H));else if(z==="\x1E")Z.pushChar("-",this.charStyle(_,H));else if(z==="\x01"){let V=this.pictureAt(_);if(V!==void 0)Z.pushInline(V)}else if(z==="\x02"||z==="\x05"||z==="\b"||z==="\x1F");else if(LK(z));else Z.pushChar(z,this.charStyle(_,H));H+=1}let q=Z.finish();if(Y.flush(W),kJ(Q,X,j,W),!GJ(q))G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:q});return G.flush(Q),w(Q,$),Q}charStyle(J,K){let Q=this.text.pieceOf[K]??-1;if(Q===this.lastStylePiece&&J>=this.lastStyleFcStart&&J<this.lastStyleFcEnd)return this.lastCharStyle;let $=this.papx.lookupRun(J),G=this.chpx.lookupRun(J),W=0,Y=mJ;if($!==void 0){if($.fcStart>W)W=$.fcStart;if($.fcEnd<Y)Y=$.fcEnd}else{let _=this.papx.nextStart(J);if(_<Y)Y=_}if(G!==void 0){if(G.fcStart>W)W=G.fcStart;if(G.fcEnd<Y)Y=G.fcEnd}else{let _=this.chpx.nextStart(J);if(_<Y)Y=_}this.lastStyleFcStart=W,this.lastStyleFcEnd=Y>W?Y:J+1,this.lastStylePiece=Q;let j=$?.props.istd??0,X=G?.props,Z=X?.chpx??ZJ,H=X?.chpxIstd??j,N=this.stylesheet.get(H).chp,q=Q>=0?this.piecePrm(Q):void 0,z=Z.length===0?N:o(Z,N,N);if(q!==void 0)z=o(q,z,N);return this.lastCharStyle=z,z}piecePrm(J){let K=this.piecePrcs[J];if(K===void 0)return;return this.prcs[K]}effectivePap(J,K){let Q=this.papx.lookup(J),$=Q?.istd??0,G=Q===void 0?S():m(Q.pap),W=this.stylesheet.get($),Y=u(m(W.pap),G),j=this.text.pieceOf[K];if(j!==void 0){let X=this.piecePrm(j);if(X!==void 0){let Z=S();v(X,ZJ,Z),Y=u(Y,Z)}}return{istd:$,effective:Y}}emitParagraph(J,K,Q,$,G){let W=this.stylesheet.get(J.istd);if(W.block!==void 0){w(Q,$),G.push(W.block,K,Q);return}if(GJ(K)){G.flush(Q),w(Q,$);return}let Y=W.heading??J.effective.outline??void 0;if(Y!==void 0){G.flush(Q),w(Q,$);let X=K;EK(X,W.chp);let Z=this.headingLabel(J);if(Z!==void 0)X.unshift({type:"text",text:Z,style:{...YJ}});Q.push({type:"heading",level:Y,anchor:void 0,content:X});return}let j=J.effective.ilfo??0;if(j!==0&&j!==63489){let X=J.effective.ilvl??0,Z=this.lists.get(j)??e(j),N=Z.levels[Math.min(X,B-1)]?.marker;if(N!==void 0){let q=0,z;if(EJ(N))[q,z]=this.counters.next(j,Z,X);G.flush(Q),$.push({level:X,key:{instance:Z.lsid,marker:N},number:q,label:z,blocks:[{type:"paragraph",inlines:K}]});return}}G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:K})}emitCellParagraph(J,K,Q,$){let G=this.stylesheet.get(J.istd).block;if(G!==void 0)$.push(G,K,Q);else if($.flush(Q),!GJ(K))Q.push({type:"paragraph",inlines:K})}pictureAt(J){let K=this.chpx.lookup(J)!==void 0?IJ(this.chpx.lookup(J).chpx):void 0;if(K===void 0)return;let Q=F(this.data,K);if(Q===void 0)return;let $=L(this.data,K+4);if($===void 0)return;if(K+Q>this.data.length){jJ("picture data out of bounds in the Data stream");return}let G=this.data.subarray(K,K+Q),W=G.subarray(Math.min($,G.length)),Y=RK(W,AK);if(Y===void 0){jJ("skipping picture with no supported blip payload");return}let j=`data/pic${K}.${Y.extension}`;return{type:"image",alt:"",source:{type:"asset",id:this.assets.add(Y.mediaType,j,Y.bytes)}}}headingLabel(J){let K=J.effective.ilfo??0;if(K===0||K===63489)return;let Q=J.effective.ilvl??0,$=this.lists.get(K);if($===void 0)return;let G=$.levels[Math.min(Q,B-1)];if(G===void 0||G.marker===void 0)return;let W=G.marker;if(!EJ(W))return;let[Y,j]=this.counters.next(K,$,Q);return`${j??TK(W,Y)} `}}function kJ(J,K,Q,$){if($.length>0)Q.push($.splice(0,$.length));if(Q.length>0)K.push({cells:Q.splice(0,Q.length),tap:void 0});if(K.length===0)return;let G=K.splice(0,K.length).map(fK),W=IK(G);if(W!==void 0)J.push(W)}function fK(J){let K=J.tap?.header===!0,Q=J.tap??KJ();return{cells:J.cells.map((G,W)=>{let Y=Q.cells[W]??{horzFirst:!1,horzCont:!1,vertRestart:!1,vertCont:!1},j=Q.boundaries[W+1]??(W+1)*1000,X={mergeFirst:Y.horzFirst,mergeCont:Y.horzCont,vmergeFirst:Y.vertRestart,vmergeCont:Y.vertCont,right:j};return[G,X]}),header:K}}var pK=new Set(["doc","dot"]);function NJ(){return{id:"doc",sniff(J,K){if(bJ(J,"{\\rtf"))return 0;if(nK(J)==="doc")return 2;if(K?.path!==void 0&&pK.has(aK(K.path)??""))return 1;return 0},convert(J){if(bJ(J,"{\\rtf"))throw dK.unsupported("RTF content in a .doc file: use the rtf converter");return{markdown:iK(vJ(J))}}}}import{create as oK}from"@mdgate/core";var cK=oK([NJ()]);function rK(J,K){return cK(J,K)}export{rK as toMarkdown,NJ as doc};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdgate/doc",
3
- "version": "0.1.0",
3
+ "version": "0.4.0",
4
4
  "description": "mdgate legacy Word converter (binary .doc)",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -22,11 +22,11 @@
22
22
  "prepublishOnly": "bun run build"
23
23
  },
24
24
  "dependencies": {
25
- "@mdgate/containers": "0.1.0",
26
- "@mdgate/core": "0.1.3",
27
- "@mdgate/document": "0.1.0",
28
- "@mdgate/office-common": "0.1.0",
29
- "@mdgate/utils": "0.1.2"
25
+ "@mdgate/containers": "0.4.0",
26
+ "@mdgate/core": "0.4.0",
27
+ "@mdgate/document": "0.4.0",
28
+ "@mdgate/office-common": "0.4.0",
29
+ "@mdgate/utils": "0.4.0"
30
30
  },
31
31
  "publishConfig": {
32
32
  "access": "public"