@mdgate/doc 0.6.10 → 0.6.12
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/dist/index.js +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{detectOleDoc as fK}from"@mdgate/containers";import{ConvertError as nK}from"@mdgate/core";import{documentToMarkdown as dK}from"@mdgate/document";import{asciiStartsWith as bJ,fileExtension as iK}from"@mdgate/utils";import{CompoundFile as VK,getU16 as L,getU32 as F,readOleStream as xJ}from"@mdgate/containers";import{ConvertError as C}from"@mdgate/core";import{inlinesAreEmpty as GJ,inlinesToPlainText as AK,markerIsOrdered as RJ,markerLabel as FK,PLAIN as YJ,stylesEqual as TK}from"@mdgate/document";import{AssetSink as BK,buildEdgeTable as OK,compositeLabel as IK,emptyFieldFrame as CK,fieldResult as PK,firstBlip as UK,flushList as w,rebaseEmphasis as EK,StyledRun as DJ}from"@mdgate/office-common";import{debug as XJ,decode as RK,isControl as DK}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,Y=new AJ;if($===0)return Y;let X=eJ(K,Q,$);if(G+W>K.length)return Y;return KK(K.subarray(G,G+W),X,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=[],X=2;for(let j=0;j<W;j+=1){if(X+r>G.length)return $;let Z=G.subarray(X,X+r),H=E(Z,0);if(H===void 0)return $;let N=(Z[26]&1)!==0;Y.push([H,N]),X+=r}X=Q;for(let[j,Z]of Y){let H=Z?1:B,N=Array.from({length:B},()=>VJ()),_=!1;for(let z=0;z<H;z+=1){let q=TJ(G,X);if(q===void 0){_=!0;break}N[z]=q[0],X=q[1]}if(_)return $;if(Z){let z=t(N[0]);for(let q=0;q<B;q+=1)N[q]=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 Y=G[4],X=G[5],j=(X&4)!==0,Z=(X&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],_=G[25],z=G[24],q=28+_+z,M=l($,q);if(M===void 0)return;q+=2;let V=QK(Y),A=[];if(V!==void 0&&V!=="bullet")for(let O=0;O<M;O+=1){let T=O*2+q,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 q+=M*2,[{marker:V,start:W,restart:Z?N:void 0,pattern:{text:A,legal:j}},K+q]}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 Y=0;Y<$;Y+=1){if(W+s>J.length)return;let X=J.subarray(W,W+s),j=E(X,0);if(j===void 0)return;let Z=X[12];G.push([j,Z]),W+=s}for(let Y=0;Y<G.length;Y+=1){let[X,j]=G[Y],Z=Y+1,H=K.get(X),N=H!==void 0?{lsid:X,levels:H.map(t),startOverride:Array.from({length:B},()=>{return})}:e(Z);for(let _=0;_<j;_+=1){if(W+8>J.length)break;let z=J.subarray(W,W+8),q=E(z,0);if(q===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=q,N.startOverride[V]=q}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=jK(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 X=Q.tap.cells[W];if(X===void 0)break;X.vertCont=Y===1,X.vertRestart=Y===3;break}default:break}})}var XK=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 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*XK);if(Y===void 0)break;let X=$[W],j=Y&3;X.horzCont=j===1,X.horzFirst=j>=2;let Z=Y>>5&3;X.vertCont=Z===1,X.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),Y=R(G,2),X=R(G,4);if(W===void 0||Y===void 0||X===void 0)return new g;let j=new Map,Z=2+W;for(let _=0;_<Y;_+=1){let z=R(G,Z);if(z===void 0)break;if(Z+=2,z===0)continue;if(Z+z>G.length)break;let q=G.subarray(Z,Z+z);Z+=z;let M=_K(q,X);if(M!==void 0)j.set(_,M)}let H=new g,N=new Map;for(let _ of j.keys())H.set(_,qK(_,j,N));return H}function _K(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,Y=G>>4&4095,X=R(J,4),j=X===void 0?0:X&15,Z=Math.max(K,10),H=R(J,Z);if(H===void 0)return;let N=H*2,_=[],z=Z+2;if(z+N<=J.length)for(let T=0;T<N;T+=2)_.push(J[z+T]|J[z+T+1]<<8);let q=MK(_),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:Y,block:zK(q),upxPapx:U,upxChpx:O,isParagraph:A}}function qK(J,K,Q){let $=Q.get(J);if($!==void 0)return $J($);let G=[],W=new Set,Y=UJ(),X=J;while(X!==void 0){let j=Q.get(X);if(j!==void 0){Y=$J(j);break}if(W.has(X)){HK(`style istdBase cycle at istd ${X}`);break}W.add(X);let Z=K.get(X);if(Z===void 0)break;G.push(X),X=Z.istdBase!==NK&&Z.istdBase!==X?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),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,X=F(Q,76)??0,j=F(Q,80)??0,Z=F(Q,84)??0,H=F(Q,88)??0,N=F(Q,92)??0,_=F(Q,96)??0,z=F(Q,418)??0,q=F(Q,422)??0,[M,V]=q>0?SK(Y,z,q):[xK(Q),[]],A=X+j+Z+H+N+_,U=($&16384)!==0?LK(L(Q,60))??L(Q,6):L(Q,6),O=vK(U??0),T=yK(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=EJ(Q,Y),nJ=FJ(Q,Y),_J=new Map,qJ=[],dJ=X,iJ=X+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,Y,P,2),[c]=LJ(Q,Y,y,0);for(let D=0;D<cJ;D+=1)if(_J.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]);qJ.push([rJ,sJ,`${n}${D}`,d])}}let aJ=T.indexOfCp(X),pJ=M.map((P)=>P.prmPrc),h=new gJ(T,new zJ(k),new zJ(b),fJ,nJ,V,pJ,_J,I),oJ=h.buildBlocks(0,aJ),MJ=[];for(let[P,y,f,n]of qJ){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 LK(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.isFatal())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 X=$===0?Math.floor(W/4)-1:Math.floor((W-4)/(4+$)),j=[];for(let Z=0;Z<=X;Z+=1)j.push(F(Y,Z*4)??0);return[j,X]}function SK(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),X=Y[0];if(X===1){let j=L(Y,1);if(j===void 0)throw C.malformed("bad Prc");if(3+j<=Y.length)G.push(new Uint8Array(Y.subarray(3,3+j)));W+=3+j}else if(X===2){let j=F(Y,1);if(j===void 0)throw C.malformed("bad Pcdt");if(5+j>Y.length)throw C.malformed("PlcPcd out of bounds");let Z=Y.subarray(5,5+j);return[wK(Z,G),G]}else throw C.malformed("malformed Clx")}}function wK(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 X=(Q+1)*4+G*8,j=F(J,X+2);if(j===void 0)throw C.malformed("bad pcd");let Z=L(J,X+6)??0,H=(j&1073741824)!==0,N=j&1073741823;if(H)N=Math.floor(N/2);let _;if((Z&1)!==0){let z=Z>>>1;_=z<K.length?z:void 0}else if(Z!==0){let z=kK(Z);if(z!==void 0)K.push(z),_=K.length-1;else XJ(`Prm0 sprm outside the converted model: 0x${Z.toString(16).padStart(4,"0")}`)}$.push({cpStart:W,cpEnd:Y,fc:N,compressed:H,prmPrc:_})}return $}function kK(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 xK(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 vK(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 RK(J,K)}function hK(J){return J==="cp932"||J==="gbk"||J==="big5"||J==="cp949"}function SJ(J,K,Q,$,G,W){let Y=W,X=0;while(X<K.length){let j=yJ(G,K[X])&&X+1<K.length?2:1,Z=jJ(K.subarray(X,X+j),G);for(let H of Z)J.push(H,Q+X,Y,$);Y+=j,X+=j}return Y}function yK(J,K,Q,$){let G=new hJ;G.reserve(Q);let W=0,Y=hK($);for(let X=0;X<K.length;X+=1){if(W>=Q)break;let j=K[X],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(!Y){let N=jJ(H,$);if(N.length!==H.length){W=SJ(G,H,j.fc,X,$,W);continue}for(let _=0;_<N.length;_+=1)G.push(N[_],j.fc+_,W,X),W+=1}else{let N=[],_=[],z=0;while(z<H.length){let M=yJ($,H[z])&&z+1<H.length?2:1;N.push(z),_.push(M),z+=M}let q=jJ(H,$);if(q.length!==N.length){W=SJ(G,H,j.fc,X,$,W);continue}for(let M=0;M<N.length;M+=1)G.push(q[M],j.fc+N[M],W,X),W+=_[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),_=N.length>>1,z=0;while(z<_){let q=N[z*2]|N[z*2+1]<<8,M,V=1;if(q>=55296&&q<=56319)if(z+1<_){let A=N[(z+1)*2]|N[(z+1)*2+1]<<8;if(A>=56320&&A<=57343)M=String.fromCodePoint(65536+(q-55296<<10)+(A-56320)),V=2;else M="�"}else M="�";else if(q>=56320&&q<=57343)M="�";else M=String.fromCharCode(q);G.push(M,j.fc+z*2,W,X),z+=V,W+=V}}}return G.finish(),G}var ZJ=new Uint8Array,mJ=4294967296;function mK(){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,X=F(J,Q+4)??0;if(Y+X>K.length)return W;let j=K.subarray(Y,Y+X);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;uK(J.subarray(z,z+512),$,G,W)}return W}function uK(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 X=F(J,Y*4),j=F(J,(Y+1)*4);if(X===void 0||j===void 0)continue;let Z=(G+1)*4+Y*W,H=J[Z];if(H===void 0)continue;let N=mK();if(H!==0){let _=H*2;if(K==="chpx"){let z=J[_];if(z!==void 0&&_+1+z<=J.length)N.chpx=J.subarray(_+1,_+1+z),N.chpxIstd=OJ(N.chpx)}else{let z=J[_];if(z!==void 0){let q,M;if(z===0){let V=J[_+1]??0;q=_+2,M=V*2}else q=_+1,M=z*2-1;if(q+M<=J.length&&M>=2){let V=J.subarray(q,q+M);N.istd=V[0]|V[1]<<8,v(V.subarray(2),Q,N.pap)}}}}$.push({fcStart:X,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 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:X,started:j}=Y,Z=K.startOverride[$],H;if(Z!==void 0&&W)H=Z;else if(j[$])H=X[$]+1;else H=G.start;X[$]=H,j[$]=!0;for(let N=$+1;N<K.levels.length&&N<B;N+=1){let _=K.levels[N];if(_.restart===void 0||$<_.restart)j[N]=!1}return[H,gK(K,X,j,$)]}}function gK(J,K,Q,$){let G=J.levels[$];if(G===void 0||G.marker===void 0)return;let W=G.marker;return IK(G.pattern,W,K[$],(Y)=>{return J.levels[Math.min(Y,B-1)]?.marker??"decimal"},(Y)=>{let X=Math.min(Y,B-1);return Q[X]?K[X]:J.levels[X]?.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+=AK([K]);else if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}pushChar(J,K){if(K!==this.style){if(!TK(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(CK())}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 PK(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 BK;lastStyleFcStart=-1;lastStyleFcEnd=-1;lastStylePiece=-2;lastCharStyle={...YJ};constructor(J,K,Q,$,G,W,Y,X,j){this.text=J,this.chpx=K,this.papx=Q,this.stylesheet=$,this.lists=G,this.prcs=W,this.piecePrcs=Y,this.noteRefs=X,this.data=j}buildBlocks(J,K){let Q=[],$=[],G=new DJ,W=[],Y=new DJ,X=[],j=[],Z=new HJ,H=J,N=Math.min(K,this.text.chars.length);while(H<N){let z=this.text.chars[H],q=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(q,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),X.length>0)j.push({cells:X,tap:V.effective.tap===void 0?void 0:QJ(V.effective.tap)}),X=[]}else if(U)this.emitCellParagraph(V,A,W,Y),Y.flush(W),X.push(W),W=[];else this.emitCellParagraph(V,A,W,Y);else kJ(Q,j,X,W),X=[],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(q,H));else if(z==="\x1E")Z.pushChar("-",this.charStyle(q,H));else if(z==="\x01"){let V=this.pictureAt(q);if(V!==void 0)Z.pushInline(V)}else if(z==="\x02"||z==="\x05"||z==="\b"||z==="\x1F");else if(DK(z));else Z.pushChar(z,this.charStyle(q,H));H+=1}let _=Z.finish();if(Y.flush(W),kJ(Q,j,X,W),!GJ(_))G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:_});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 q=this.papx.nextStart(J);if(q<Y)Y=q}if(G!==void 0){if(G.fcStart>W)W=G.fcStart;if(G.fcEnd<Y)Y=G.fcEnd}else{let q=this.chpx.nextStart(J);if(q<Y)Y=q}this.lastStyleFcStart=W,this.lastStyleFcEnd=Y>W?Y:J+1,this.lastStylePiece=Q;let X=$?.props.istd??0,j=G?.props,Z=j?.chpx??ZJ,H=j?.chpxIstd??X,N=this.stylesheet.get(H).chp,_=Q>=0?this.piecePrm(Q):void 0,z=Z.length===0?N:o(Z,N,N);if(_!==void 0)z=o(_,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),X=this.text.pieceOf[K];if(X!==void 0){let j=this.piecePrm(X);if(j!==void 0){let Z=S();v(j,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 j=K;EK(j,W.chp);let Z=this.headingLabel(J);if(Z!==void 0)j.unshift({type:"text",text:Z,style:{...YJ}});Q.push({type:"heading",level:Y,anchor:void 0,content:j});return}let X=J.effective.ilfo??0;if(X!==0&&X!==63489){let j=J.effective.ilvl??0,Z=this.lists.get(X)??e(X),N=Z.levels[Math.min(j,B-1)]?.marker;if(N!==void 0){let _=0,z;if(RJ(N))[_,z]=this.counters.next(X,Z,j);G.flush(Q),$.push({level:j,key:{instance:Z.lsid,marker:N},number:_,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){XJ("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=UK(W);if(Y===void 0){XJ("skipping picture with no supported blip payload");return}let X=`data/pic${K}.${Y.extension}`;return{type:"image",alt:"",source:{type:"asset",id:this.assets.add(Y.mediaType,X,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(!RJ(W))return;let[Y,X]=this.counters.next(K,$,Q);return`${X??FK(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(bK),W=OK(G);if(W!==void 0)J.push(W)}function bK(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},X=Q.boundaries[W+1]??(W+1)*1000,j={mergeFirst:Y.horzFirst,mergeCont:Y.horzCont,vmergeFirst:Y.vertRestart,vmergeCont:Y.vertCont,right:X};return[G,j]}),header:K}}var aK=new Set(["doc","dot"]);function NJ(){return{id:"doc",sniff(J,K){if(bJ(J,"{\\rtf"))return 0;if(fK(J)==="doc")return 2;if(K?.path!==void 0&&aK.has(iK(K.path)??""))return 1;return 0},convert(J){if(bJ(J,"{\\rtf"))throw nK.unsupported("RTF content in a .doc file: use the rtf converter");return{markdown:dK(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 fK}from"@mdgate/containers";import{ConvertError as nK}from"@mdgate/core";import{documentToMarkdown as dK}from"@mdgate/document";import{asciiStartsWith as bJ,fileExtension as iK}from"@mdgate/utils";import{CompoundFile as VK,getU16 as L,getU32 as F,readOleStream as xJ}from"@mdgate/containers";import{ConvertError as C}from"@mdgate/core";import{inlinesAreEmpty as GJ,inlinesToPlainText as AK,markerIsOrdered as RJ,markerLabel as FK,PLAIN as YJ,stylesEqual as TK}from"@mdgate/document";import{AssetSink as BK,buildEdgeTable as OK,compositeLabel as IK,emptyFieldFrame as CK,fieldResult as PK,firstBlip as UK,flushList as w,rebaseEmphasis as EK,StyledRun as DJ}from"@mdgate/office-common";import{debug as XJ,decode as RK,isControl as DK}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,Y=new AJ;if($===0)return Y;let X=eJ(K,Q,$);if(G+W>K.length)return Y;return KK(K.subarray(G,G+W),X,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=[],X=2;for(let j=0;j<W;j+=1){if(X+r>G.length)return $;let Z=G.subarray(X,X+r),H=E(Z,0);if(H===void 0)return $;let N=(Z[26]&1)!==0;Y.push([H,N]),X+=r}X=Q;for(let[j,Z]of Y){let H=Z?1:B,N=Array.from({length:B},()=>VJ()),_=!1;for(let z=0;z<H;z+=1){let q=TJ(G,X);if(q===void 0){_=!0;break}N[z]=q[0],X=q[1]}if(_)return $;if(Z){let z=t(N[0]);for(let q=0;q<B;q+=1)N[q]=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 Y=G[4],X=G[5],j=(X&4)!==0,Z=(X&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],_=G[25],z=G[24],q=28+_+z,M=l($,q);if(M===void 0)return;q+=2;let V=QK(Y),A=[];if(V!==void 0&&V!=="bullet")for(let O=0;O<M;O+=1){let T=O*2+q,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 q+=M*2,[{marker:V,start:W,restart:Z?N:void 0,pattern:{text:A,legal:j}},K+q]}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 Y=0;Y<$;Y+=1){if(W+s>J.length)return;let X=J.subarray(W,W+s),j=E(X,0);if(j===void 0)return;let Z=X[12];G.push([j,Z]),W+=s}for(let Y=0;Y<G.length;Y+=1){let[X,j]=G[Y],Z=Y+1,H=K.get(X),N=H!==void 0?{lsid:X,levels:H.map(t),startOverride:Array.from({length:B},()=>{return})}:e(Z);for(let _=0;_<j;_+=1){if(W+8>J.length)break;let z=J.subarray(W,W+8),q=E(z,0);if(q===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=q,N.startOverride[V]=q}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=jK(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 X=Q.tap.cells[W];if(X===void 0)break;X.vertCont=Y===1,X.vertRestart=Y===3;break}default:break}})}var XK=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 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*XK);if(Y===void 0)break;let X=$[W],j=Y&3;X.horzCont=j===1,X.horzFirst=j>=2;let Z=Y>>5&3;X.vertCont=Z===1,X.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),Y=R(G,2),X=R(G,4);if(W===void 0||Y===void 0||X===void 0)return new g;let j=new Map,Z=2+W;for(let _=0;_<Y;_+=1){let z=R(G,Z);if(z===void 0)break;if(Z+=2,z===0)continue;if(Z+z>G.length)break;let q=G.subarray(Z,Z+z);Z+=z;let M=_K(q,X);if(M!==void 0)j.set(_,M)}let H=new g,N=new Map;for(let _ of j.keys())H.set(_,qK(_,j,N));return H}function _K(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,Y=G>>4&4095,X=R(J,4),j=X===void 0?0:X&15,Z=Math.max(K,10),H=R(J,Z);if(H===void 0)return;let N=H*2,_=[],z=Z+2;if(z+N<=J.length)for(let T=0;T<N;T+=2)_.push(J[z+T]|J[z+T+1]<<8);let q=MK(_),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:Y,block:zK(q),upxPapx:U,upxChpx:O,isParagraph:A}}function qK(J,K,Q){let $=Q.get(J);if($!==void 0)return $J($);let G=[],W=new Set,Y=UJ(),X=J;while(X!==void 0){let j=Q.get(X);if(j!==void 0){Y=$J(j);break}if(W.has(X)){HK(`style istdBase cycle at istd ${X}`);break}W.add(X);let Z=K.get(X);if(Z===void 0)break;G.push(X),X=Z.istdBase!==NK&&Z.istdBase!==X?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),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,X=F(Q,76)??0,j=F(Q,80)??0,Z=F(Q,84)??0,H=F(Q,88)??0,N=F(Q,92)??0,_=F(Q,96)??0,z=F(Q,418)??0,q=F(Q,422)??0,[M,V]=q>0?SK(Y,z,q):[xK(Q),[]],A=X+j+Z+H+N+_,U=($&16384)!==0?LK(L(Q,60))??L(Q,6):L(Q,6),O=vK(U??0),T=yK(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=EJ(Q,Y),nJ=FJ(Q,Y),_J=new Map,qJ=[],dJ=X,iJ=X+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,Y,P,2),[c]=LJ(Q,Y,y,0);for(let D=0;D<cJ;D+=1)if(_J.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]);qJ.push([rJ,sJ,`${n}${D}`,d])}}let aJ=T.indexOfCp(X),pJ=M.map((P)=>P.prmPrc),h=new gJ(T,new zJ(k),new zJ(b),fJ,nJ,V,pJ,_J,I),oJ=h.buildBlocks(0,aJ),MJ=[];for(let[P,y,f,n]of qJ){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 LK(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.isFatal())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 X=$===0?Math.floor(W/4)-1:Math.floor((W-4)/(4+$)),j=[];for(let Z=0;Z<=X;Z+=1)j.push(F(Y,Z*4)??0);return[j,X]}function SK(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),X=Y[0];if(X===1){let j=L(Y,1);if(j===void 0)throw C.malformed("bad Prc");if(3+j<=Y.length)G.push(new Uint8Array(Y.subarray(3,3+j)));W+=3+j}else if(X===2){let j=F(Y,1);if(j===void 0)throw C.malformed("bad Pcdt");if(5+j>Y.length)throw C.malformed("PlcPcd out of bounds");let Z=Y.subarray(5,5+j);return[wK(Z,G),G]}else throw C.malformed("malformed Clx")}}function wK(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 X=(Q+1)*4+G*8,j=F(J,X+2);if(j===void 0)throw C.malformed("bad pcd");let Z=L(J,X+6)??0,H=(j&1073741824)!==0,N=j&1073741823;if(H)N=Math.floor(N/2);let _;if((Z&1)!==0){let z=Z>>>1;_=z<K.length?z:void 0}else if(Z!==0){let z=kK(Z);if(z!==void 0)K.push(z),_=K.length-1;else XJ(`Prm0 sprm outside the converted model: 0x${Z.toString(16).padStart(4,"0")}`)}$.push({cpStart:W,cpEnd:Y,fc:N,compressed:H,prmPrc:_})}return $}function kK(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 xK(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 vK(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 RK(J,K)}function hK(J){return J==="cp932"||J==="gbk"||J==="big5"||J==="cp949"}function SJ(J,K,Q,$,G,W){let Y=W,X=0;while(X<K.length){let j=yJ(G,K[X])&&X+1<K.length?2:1,Z=jJ(K.subarray(X,X+j),G);for(let H of Z)J.push(H,Q+X,Y,$);Y+=j,X+=j}return Y}function yK(J,K,Q,$){let G=new hJ;G.reserve(Q);let W=0,Y=hK($);for(let X=0;X<K.length;X+=1){if(W>=Q)break;let j=K[X],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(!Y){let N=jJ(H,$);if(N.length!==H.length){W=SJ(G,H,j.fc,X,$,W);continue}for(let _=0;_<N.length;_+=1)G.push(N[_],j.fc+_,W,X),W+=1}else{let N=[],_=[],z=0;while(z<H.length){let M=yJ($,H[z])&&z+1<H.length?2:1;N.push(z),_.push(M),z+=M}let q=jJ(H,$);if(q.length!==N.length){W=SJ(G,H,j.fc,X,$,W);continue}for(let M=0;M<N.length;M+=1)G.push(q[M],j.fc+N[M],W,X),W+=_[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),_=N.length>>1,z=0;while(z<_){let q=N[z*2]|N[z*2+1]<<8,M,V=1;if(q>=55296&&q<=56319)if(z+1<_){let A=N[(z+1)*2]|N[(z+1)*2+1]<<8;if(A>=56320&&A<=57343)M=String.fromCodePoint(65536+(q-55296<<10)+(A-56320)),V=2;else M="�"}else M="�";else if(q>=56320&&q<=57343)M="�";else M=String.fromCharCode(q);G.push(M,j.fc+z*2,W,X),z+=V,W+=V}}}return G.finish(),G}var ZJ=new Uint8Array,mJ=4294967296;function mK(){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,X=F(J,Q+4)??0;if(Y+X>K.length)return W;let j=K.subarray(Y,Y+X);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;uK(J.subarray(z,z+512),$,G,W)}return W}function uK(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 X=F(J,Y*4),j=F(J,(Y+1)*4);if(X===void 0||j===void 0)continue;let Z=(G+1)*4+Y*W,H=J[Z];if(H===void 0)continue;let N=mK();if(H!==0){let _=H*2;if(K==="chpx"){let z=J[_];if(z!==void 0&&_+1+z<=J.length)N.chpx=J.subarray(_+1,_+1+z),N.chpxIstd=OJ(N.chpx)}else{let z=J[_];if(z!==void 0){let q,M;if(z===0){let V=J[_+1]??0;q=_+2,M=V*2}else q=_+1,M=z*2-1;if(q+M<=J.length&&M>=2){let V=J.subarray(q,q+M);N.istd=V[0]|V[1]<<8,v(V.subarray(2),Q,N.pap)}}}}$.push({fcStart:X,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 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:X,started:j}=Y,Z=K.startOverride[$],H;if(Z!==void 0&&W)H=Z;else if(j[$])H=X[$]+1;else H=G.start;X[$]=H,j[$]=!0;for(let N=$+1;N<K.levels.length&&N<B;N+=1){let _=K.levels[N];if(_.restart===void 0||$<_.restart)j[N]=!1}return[H,gK(K,X,j,$)]}}function gK(J,K,Q,$){let G=J.levels[$];if(G===void 0||G.marker===void 0)return;let W=G.marker;return IK(G.pattern,W,K[$],(Y)=>{return J.levels[Math.min(Y,B-1)]?.marker??"decimal"},(Y)=>{let X=Math.min(Y,B-1);return Q[X]?K[X]:J.levels[X]?.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+=AK([K]);else if(Q!==void 0)Q.inlines.push(K);else this.inlines.push(K)}pushChar(J,K){if(K!==this.style){if(!TK(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(CK())}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 PK(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 BK;lastStyleFcStart=-1;lastStyleFcEnd=-1;lastStylePiece=-2;lastCharStyle={...YJ};constructor(J,K,Q,$,G,W,Y,X,j){this.text=J,this.chpx=K,this.papx=Q,this.stylesheet=$,this.lists=G,this.prcs=W,this.piecePrcs=Y,this.noteRefs=X,this.data=j}buildBlocks(J,K){let Q=[],$=[],G=new DJ,W=[],Y=new DJ,X=[],j=[],Z=new HJ,H=J,N=Math.min(K,this.text.chars.length);while(H<N){let z=this.text.chars[H],q=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(q,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),X.length>0)j.push({cells:X,tap:V.effective.tap===void 0?void 0:QJ(V.effective.tap)}),X=[]}else if(U)this.emitCellParagraph(V,A,W,Y),Y.flush(W),X.push(W),W=[];else this.emitCellParagraph(V,A,W,Y);else kJ(Q,j,X,W),X=[],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(q,H));else if(z==="\x1E")Z.pushChar("-",this.charStyle(q,H));else if(z==="\x01"){let V=this.pictureAt(q);if(V!==void 0)Z.pushInline(V)}else if(z==="\x02"||z==="\x05"||z==="\b"||z==="\x1F");else if(DK(z));else Z.pushChar(z,this.charStyle(q,H));H+=1}let _=Z.finish();if(Y.flush(W),kJ(Q,j,X,W),!GJ(_))G.flush(Q),w(Q,$),Q.push({type:"paragraph",inlines:_});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 q=this.papx.nextStart(J);if(q<Y)Y=q}if(G!==void 0){if(G.fcStart>W)W=G.fcStart;if(G.fcEnd<Y)Y=G.fcEnd}else{let q=this.chpx.nextStart(J);if(q<Y)Y=q}this.lastStyleFcStart=W,this.lastStyleFcEnd=Y>W?Y:J+1,this.lastStylePiece=Q;let X=$?.props.istd??0,j=G?.props,Z=j?.chpx??ZJ,H=j?.chpxIstd??X,N=this.stylesheet.get(H).chp,_=Q>=0?this.piecePrm(Q):void 0,z=Z.length===0?N:o(Z,N,N);if(_!==void 0)z=o(_,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),X=this.text.pieceOf[K];if(X!==void 0){let j=this.piecePrm(X);if(j!==void 0){let Z=S();v(j,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 j=K;EK(j,W.chp);let Z=this.headingLabel(J);if(Z!==void 0)j.unshift({type:"text",text:Z,style:{...YJ}});Q.push({type:"heading",level:Y,anchor:void 0,content:j});return}let X=J.effective.ilfo??0;if(X!==0&&X!==63489){let j=J.effective.ilvl??0,Z=this.lists.get(X)??e(X),N=Z.levels[Math.min(j,B-1)]?.marker;if(N!==void 0){let _=0,z;if(RJ(N))[_,z]=this.counters.next(X,Z,j);G.flush(Q),$.push({level:j,key:{instance:Z.lsid,marker:N},number:_,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){XJ("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=UK(W);if(Y===void 0){XJ("skipping picture with no supported blip payload");return}let X=`data/pic${K}.${Y.extension}`;return{type:"image",alt:"",source:{type:"asset",id:this.assets.add(Y.mediaType,X,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(!RJ(W))return;let[Y,X]=this.counters.next(K,$,Q);return`${X??FK(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(bK),W=OK(G);if(W!==void 0)J.push(W)}function bK(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},X=Q.boundaries[W+1]??(W+1)*1000,j={mergeFirst:Y.horzFirst,mergeCont:Y.horzCont,vmergeFirst:Y.vertRestart,vmergeCont:Y.vertCont,right:X};return[G,j]}),header:K}}function NJ(){return{id:"doc",sniff(J,K){if(bJ(J,"{\\rtf"))return 0;if(fK(J)==="doc")return 2;if(K?.path!==void 0&&iK(K.path)==="doc")return 1;return 0},convert(J){if(bJ(J,"{\\rtf"))throw nK.unsupported("RTF content in a .doc file: use the rtf converter");return{markdown:dK(vJ(J))}}}}import{create as aK}from"@mdgate/core";var pK=aK([NJ()]);function oK(J,K){return pK(J,K)}export{oK as toMarkdown,NJ as doc};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mdgate/doc",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.12",
|
|
4
4
|
"description": "mdgate legacy Word converter (binary .doc)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"prepublishOnly": "bun run build"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@mdgate/containers": "0.6.
|
|
32
|
-
"@mdgate/core": "0.6.
|
|
33
|
-
"@mdgate/document": "0.6.
|
|
34
|
-
"@mdgate/office-common": "0.6.
|
|
35
|
-
"@mdgate/utils": "0.6.
|
|
31
|
+
"@mdgate/containers": "0.6.12",
|
|
32
|
+
"@mdgate/core": "0.6.12",
|
|
33
|
+
"@mdgate/document": "0.6.12",
|
|
34
|
+
"@mdgate/office-common": "0.6.12",
|
|
35
|
+
"@mdgate/utils": "0.6.12"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|