diff --git a/bundle/bundle.min.js b/bundle/bundle.min.js index 8b13641a..47851ea5 100644 --- a/bundle/bundle.min.js +++ b/bundle/bundle.min.js @@ -7,7 +7,7 @@ `})}}});var Wt,mt,gr,ft,Xr=T(()=>{"use strict";q();K();be();F();R();dt();ft=class extends y{constructor(e,t,n=x.getConfig(),i=[]){super(void 0,n,i);k(this,mt);k(this,Wt);v(this,Wt,e);let s=new y(t[0],n,i);s.type="heading-title",s.setAttribute("stage",2);let o=new ce(t[1],/^[^\S\n]*$/u,"heading-trail",n,i,{});this.append(s,o)}get type(){return"heading"}get level(){return c(this,Wt)}toString(e){let t=c(this,mt,gr);return t+this.firstChild.toString(e)+t+this.lastChild.toString(e)}text(){let e=c(this,mt,gr);return e+this.firstChild.text()+e}getAttribute(e){return e==="padding"?this.level:super.getAttribute(e)}getGaps(){return this.level}lint(e=this.getAbsoluteIndex(),t){let n=super.lint(e,t),{firstChild:i,level:s}=this,o=i.toString(),l=i.childNodes.filter(xt("quote")),g=l.filter(({bold:u})=>u),p=l.filter(({italic:u})=>u),d=new L(this,e);return this.level===1&&n.push(S(i,d,"h1","

")),(o.startsWith("=")||o.endsWith("="))&&n.push(S(i,d,"unbalanced-header",x.msg("unbalanced $1 in a section header",'"="'))),this.closest("html-attrs, table-attrs")&&n.push($(this,d,"parsing-order","section header in a HTML tag")),g.length%2&&n.push(S(g[g.length-1],{...d,start:e+s,left:d.left+s},"format-leakage",x.msg("unbalanced $1 in a section header","bold apostrophes"))),p.length%2&&n.push(S(p[p.length-1],{start:e+s},"format-leakage",x.msg("unbalanced $1 in a section header","italic apostrophes"))),n}print(){let e=c(this,mt,gr);return super.print({pre:e,sep:e})}json(){let e=super.json();return e.level=this.level,e}};Wt=new WeakMap,mt=new WeakSet,gr=function(){return"=".repeat(this.level)}});var xo,pr,fi=T(()=>{"use strict";Z();q();F();R();xo=new RegExp(`https?://${Ae}${we}$`,"iu"),pr=class extends y{get type(){return"parameter"}get anon(){return this.firstChild.length===0}constructor(r,e,t=x.getConfig(),n=[]){super(void 0,t,n);let i=new y(typeof r=="number"?void 0:r,t,n,{}),s=new y(e,t,n);i.type="parameter-key",i.setAttribute("stage",2),s.type="parameter-value",s.setAttribute("stage",2),this.append(i,s)}trimName(r,e=!0){let t=qn(typeof r=="string"?r:r.toString(!0));return this.setAttribute("name",t),t}afterBuild(){if(!this.anon){let{parentNode:r,firstChild:e}=this,t=this.trimName(e);r&&r.getArgs(t,!1,!1).add(this)}super.afterBuild()}toString(r){return this.anon?this.lastChild.toString(r):super.toString(r,"=")}text(){return this.anon?this.lastChild.text():super.text("=")}getGaps(){return this.anon?0:1}lint(r=this.getAbsoluteIndex(),e){var s;let t=super.lint(r,e),{firstChild:n}=this,i=(s=xo.exec(n.text()))==null?void 0:s[0];if(i&&new URL(i).search){let o=S(n,{start:r},"unescaped","unescaped query string in an anonymous parameter");o.startIndex=o.endIndex,o.startLine=o.endLine,o.startCol=o.endCol,o.endIndex++,o.endCol++,o.fix={range:[o.startIndex,o.endIndex],text:"{{=}}"},t.push(o)}return t}print(){return super.print({sep:this.anon?"":"="})}json(){let r=super.json();return r.anon=this.anon,r}}});var bo,Dt,Ze,Ke,bt,xi,bi,Ut,Ti=T(()=>{"use strict";Z();q();K();be();Se();F();R();fi();Ee();dt();bo=new Set(["pageid","articlepath","server","servername","scriptpath","stylepath"]),Ut=class extends y{constructor(e,t,n=x.getConfig(),i=[]){var u,h;super(void 0,n,i,{});k(this,bt);H(this,"modifier","");k(this,Dt,"template");k(this,Ze,!1);k(this,Ke,new Map);let{parserFunction:[s,o]}=n,l=(u=/^(?:\s|\0\d+c\x7F)*\0\d+s\x7F/u.exec(e))==null?void 0:u[0];if(l)this.setAttribute("modifier",l),e=e.slice(l.length);else if(e.includes(":")){let[m,...f]=e.split(":"),[b]=/^(?:\s|\0\d+c\x7F)*/u.exec((h=f[0])!=null?h:"");this.setModifier(`${m}:${b}`)&&(e=f.join(":").slice(b.length))}let g=e.includes(":");if(g||t.length===0&&!c(this,Ze)){let[m,...f]=e.split(":"),b=ee(m),I=b[f.length>0?"trimStart":"trim"](),A=I.toLowerCase(),C=Object.prototype.hasOwnProperty.call(s,A)&&s[A],w=o.includes(I);if(w||bo.has(C)||g&&C){this.setAttribute("name",C||A),v(this,Dt,"magic-word");let P=new RegExp(String.raw`^\s*${I}\s*$`,w?"u":"iu"),z=new ce(m,P,"magic-word-name",n,i,{});if(super.insertAt(z),f.length>0&&t.unshift([f.join(":")]),this.name==="invoke")for(let N=0;N<2;N++){let U=t.shift();if(!U)break;let Q=new M(U.join("="),`invoke-${N?"function":"module"}`,n,i);super.insertAt(Q)}}}if(this.type==="template"){let m=ee(e).trim();if(!this.normalizeTitle(m,10,!0).valid)throw i.pop(),new SyntaxError("Invalid template name");let f=new M(e,"template-name",n,i,{});super.insertAt(f)}let p=this.isTemplate(),d=1;for(let m=0;m0)&&(f[0]=f.join("="),f.length=1),f.length===1&&(f.unshift(d),d++),this.insertAt(new pr(...f,n,i))}this.seal("modifier")}get type(){return c(this,Dt)}setModifier(e){let{parserFunction:[,,t,n]}=this.getAttribute("config"),i=ee(e).trim();if(e&&!i.endsWith(":"))return!1;let s=i.slice(0,-1).toLowerCase(),o=t.includes(s),l=n.includes(s);return c(this,Ze)&&o||!c(this,Ze)&&(l||e==="")||(ye.running||this.length>1)&&(o||l||e==="")?(this.setAttribute("modifier",e),v(this,Ze,o),!!e):!1}isTemplate(){return this.type==="template"||this.name==="invoke"}afterBuild(){this.modifier.includes("\0")&&this.setAttribute("modifier",this.buildFromStr(this.modifier,0)),super.afterBuild()}toString(e){return`{{${this.modifier}${this.type==="magic-word"?`${this.firstChild.toString(e)}${this.length===1?"":":"}${this.childNodes.slice(1).map(t=>t.toString(e)).join("|")}`:super.toString(e,"|")}}}`}text(){let{childNodes:e,length:t,firstChild:n,modifier:i,type:s,name:o}=this;return s==="magic-word"&&o==="vardefine"?"":`{{${i}${s==="magic-word"?n.text()+(t===1?"":":")+pe(e.slice(1),"|"):super.text("|")}}}`}getAttribute(e){switch(e){case"padding":return this.modifier.length+2;default:return super.getAttribute(e)}}getGaps(){return 1}lint(e=this.getAbsoluteIndex(),t){let n=super.lint(e,t);if(!this.isTemplate())return n;let{type:i,childNodes:s,length:o}=this,l=new L(this,e),g=i==="magic-word";if(g&&!B(this,bt,xi).call(this).valid)n.push(S(s[1],l,"invalid-invoke","illegal module name"));else{let d=s[g?1:0],u=d.childNodes.find(h=>h.type==="text"&&h.data.includes("#"));if(u){let h=S(d,l,"no-ignored","useless fragment");h.fix={range:[h.startIndex+u.getRelativeIndex()+u.data.indexOf("#"),h.endIndex],text:""},n.push(h)}}if(g&&o===2)return n.push($(this,l,"invalid-invoke","missing module function")),n;let p=this.getDuplicatedArgs().filter(([,d])=>!d[0].querySelector("ext"));return p.length>0&&n.push(...p.flatMap(([,d])=>d).map(d=>S(d,l,"no-duplicate","duplicated parameter"))),n}insertAt(e,t=this.length){return super.insertAt(e,t),e.anon?B(this,bt,bi).call(this,e):e.name&&this.getArgs(e.name,!1,!1).add(e),e}getAllArgs(){return this.childNodes.filter(xt("parameter"))}getAnonArgs(){return this.getAllArgs().filter(({anon:e})=>e)}getArgs(e,t,n=!0){let i=String(e).replace(/^[ \t\n\0\v]+|([^ \t\n\0\v])[ \t\n\0\v]+$/gu,"$1"),s;return c(this,Ke).has(i)?s=c(this,Ke).get(i):(s=new Set(this.getAllArgs().filter(({name:o})=>i===o)),c(this,Ke).set(i,s)),s}getDuplicatedArgs(){return[...c(this,Ke)].filter(([,{size:e}])=>e>1).map(([e,t])=>[e,[...t]])}getPossibleValues(){let{type:e,name:t,childNodes:n}=this;if(e==="template")throw new Error("TranscludeToken.getPossibleValues method is only for specific magic words!");let i;switch(t){case"if":case"ifexist":case"ifexpr":case"iferror":i=2;break;case"ifeq":i=3;break;default:throw new Error("TranscludeToken.getPossibleValues method is only for specific magic words!")}let s=n.slice(i,i+2).map(({childNodes:[,o]})=>o);for(let o=0;op.text().trim());if(l===0)s.splice(o,1);else if(l>1||g.type!=="magic-word")o++;else try{let p=g.getPossibleValues();s.splice(o,1,...p),o+=p.length}catch(p){o++}}return s}print(){let{childNodes:e,length:t,firstChild:n,modifier:i,type:s}=this;return`{{${at(i)}${s==="magic-word"?n.print()+(t===1?"":":")+Ne(e.slice(1),{sep:"|"}):Ne(e,{sep:"|"})}}}`}};Dt=new WeakMap,Ze=new WeakMap,Ke=new WeakMap,bt=new WeakSet,xi=function(){let e=this.type==="template",t=this.childNodes[e?0:1];return this.normalizeTitle(t.toString(!0),e?10:828)},bi=function(e){let t=this.getAnonArgs(),n=typeof e!="number";for(let i=n?t.indexOf(e):e-1;i{"use strict";He();R();yi=[ue()];Je=class extends(To=y){get type(){return"hidden"}};Qr=le(To),Je=ge(Qr,0,"HiddenToken",yi,Je),de(Qr,1,Je)});var ur,vi=T(()=>{"use strict";Z();q();K();F();R();Ee();ki();ur=class extends y{get type(){return"arg"}get default(){var r,e;return(e=(r=this.childNodes[1])==null?void 0:r.text())!=null?e:!1}constructor(r,e=x.getConfig(),t=[]){super(void 0,e,t,{});for(let n=0;n1){let i=new Je(r[n],e,t);super.insertAt(i)}else{let i=new y(r[n],e,t);i.type="arg-default",i.setAttribute("stage",2),super.insertAt(i)}}toString(r){return`{{{${super.toString(r,"|")}}}}`}text(){return`{{{${pe(this.childNodes.slice(0,2),"|")}}}}`}getAttribute(r){return r==="padding"?3:super.getAttribute(r)}getGaps(){return 1}lint(r=this.getAbsoluteIndex(),e){let{childNodes:[t,n,...i]}=this;if(!this.getAttribute("include")){let o=$(this,{start:r},"no-arg","unexpected template argument");return n&&(o.fix={range:[r,o.endIndex],text:n.text()}),[o]}let s=t.lint(r+3,e);if(n&&s.push(...n.lint(r+4+t.toString().length,e)),i.length>0){let o=new L(this,r);s.push(...i.map(l=>{let g=S(l,o,"no-ignored","invisible content inside triple braces");return g.startIndex--,g.startCol--,g.suggestions=[{desc:"remove",range:[g.startIndex,g.endIndex],text:""},{desc:"escape",range:[g.startIndex,g.startIndex+1],text:"{{!}}"}],g}))}return s}print(){return super.print({pre:"{{{",post:"}}}",sep:"|"})}json(){let r=super.json();return r.default=this.default,r}}});var Ai={};X(Ai,{parseBraces:()=>Zr});var yo,cr,ko,Zr,Kr=T(()=>{"use strict";Z();Xr();Ti();vi();yo={"=":` `,"{":String.raw`\}{2,}|\|`,"-":String.raw`\}-`,"[":String.raw`\]\]`},cr=new Map([["!","!"],["!!","+"],["(!","{"],["!)","}"],["!-","-"],["=","~"]]),ko=new RegExp(String.raw`\{\{\s*(${[...cr.keys()].map(tr).join("|")})\s*\}\}(?!\})`,"gu"),Zr=(a,r,e)=>{var u,h,m,f,b,I;let t=String.raw`${(u=r.excludes)!=null&&u.includes("heading")?"":String.raw`^(\0\d+c\x7F)*={1,6}|`}\[\[|-\{(?!\{)`,n=String.raw`|\{{2,}`,{parserFunction:[,,,i]}=r,s=[];a=a.replace(ko,(A,C)=>(new Ut(A.slice(2,-2),[],r,e),`\0${e.length-2}${cr.get(C)}\x7F`));let o=a.lastIndexOf("}}")-a.length,l=o+a.length!==-1,g=new RegExp(t+(l?n:""),"gmu"),p=g.exec(a),d;for(;p||d!==void 0&&d<=a.length&&((m=(h=s[s.length-1])==null?void 0:h[0])!=null&&m.startsWith("="));){if(p!=null&&p[1]){let[,{length:D}]=p;p[0]=p[0].slice(D),p.index+=D}let{0:A,index:C}=p!=null?p:{0:` `,index:a.length},w=(f=s.pop())!=null?f:{},{0:j,index:P,parts:z,findEqual:N,pos:U}=w,Q=A==="="&&N,ae=D=>{z[z.length-1].push(D.slice(U,C))};if(A==="]]"||A==="}-")d=C+2;else if(A===` -`){d=C+1;let{pos:D,findEqual:E}=(b=s[s.length-1])!=null?b:{};if(D===void 0||E||ee(a.slice(D,P))!==""){let xe=/^(={1,6})(.+)\1((?:\s|\0\d+c\x7F)*)$/u.exec(a.slice(P,C));xe&&(a=`${a.slice(0,P)}\0${e.length}h\x7F${a.slice(C)}`,d=P+4+String(e.length).length,new ft(xe[1].length,xe.slice(2),r,e))}}else if(A==="|"||Q)d=C+1,ae(a),A==="|"&&z.push([]),w.pos=d,w.findEqual=A==="|",s.push(w);else if(A.startsWith("}}")){let D=A.slice(0,Math.min(j.length,3)),E=j.length-D.length,{length:xe}=e;d=C+D.length,ae(a);let ke=!1,Pe="t";if(D.length===3){let ne=z.map(it=>it.join("=")),ve=ne.length>1&&ee(ne[1]).trim();new ur(ne,r,e),ve&&ve.endsWith(":")&&i.includes(ve.slice(0,-1).toLowerCase())&&(Pe="s")}else try{new Ut(z[0][0],z.slice(1),r,e);let ne=ee(z[0][0]).trim();cr.has(ne)?Pe=cr.get(ne):/^(?:filepath|(?:full|canonical)urle?):.|^server$/iu.test(ne)?Pe="m":/^#vardefine:./iu.test(ne)&&(Pe="c")}catch(ne){if(ne instanceof SyntaxError&&ne.message==="Invalid template name")ke=!0;else throw ne}ke||(a=`${a.slice(0,P+E)}\0${xe}${Pe}\x7F${a.slice(d)}`,d=P+E+3+String(xe).length,E>1?s.push({0:j.slice(0,E),index:P,pos:P+E,parts:[[]]}):E===1&&a[P-1]==="-"&&s.push({0:"-{",index:P-1,pos:P+1,parts:[[]]}))}else d=C+A.length,A.startsWith("{")&&(p.pos=d,p.parts=[[]]),s.push(..."0"in w?[w]:[],p);let ie=s[s.length-1];if(l&&o+a.lengthJr});var Jr,Si=T(()=>{"use strict";Kr();F();Vr();Jr=class extends zt{constructor(r,e=x.getConfig(),t=[]){let n=Symbol("InputboxToken"),{length:i}=t;t.push(n),r&&(r=Zr(r,e,t)),t.splice(i,1),super(r,e,t,{})}}});var Ci,Yr,vo,Ie,en=T(()=>{"use strict";q();He();F();qe();Ci=[ue(!1)];Ie=class extends(vo=re){constructor(e,t=!0,n,i){super(e,n,i);H(this,"closed");this.closed=t}get type(){return"comment"}getAttribute(e){return e==="padding"?4:super.getAttribute(e)}lint(e=this.getAbsoluteIndex()){if(this.closed)return[];let t=$(this,{start:e},"unclosed-comment",x.msg("unclosed $1","HTML comment"));return t.fix={range:[t.endIndex,t.endIndex],text:"-->"},[t]}toString(e){return e?"":`":""}`}print(){return super.print({pre:"<!--",post:this.closed?"-->":""})}};Yr=le(vo),Ie=ge(Yr,0,"CommentToken",Ci,Ie),de(Yr,1,Ie)});var hr={};X(hr,{NestedToken:()=>tn});var tn,mr=T(()=>{"use strict";q();K();F();R();rn();Oe();en();tn=class extends y{get type(){return"ext-inner"}constructor(r,e,t,n=x.getConfig(),i=[]){r=r==null?void 0:r.replace(e,(s,o,l,g,p)=>{let d=`\0${i.length+1}${o?"e":"c"}\x7F`;if(o)new Tt(o,l,g,p,n,i);else{let u=s.endsWith("-->");new Ie(s.slice(4,u?-3:void 0),u,n,i)}return d}).replace(/(^|\0\d+[ce]\x7F)([^\0]+)(?=$|\0\d+[ce]\x7F)/gu,(s,o,l)=>(new V(l,n,i),`${o}\0${i.length}c\x7F`)),super(r,n,i,{})}lint(r=this.getAbsoluteIndex(),e){let t=new L(this,r);return[...super.lint(r,e),...this.childNodes.filter(n=>{if(n.type==="ext"||n.type==="comment")return!1;let i=n.toString().trim();return i&&!/^$/su.test(i)}).map(n=>{let i=S(n,t,"no-ignored",x.msg("invalid content in <$1>",this.name));return i.suggestions=[{desc:"remove",range:[i.startIndex,i.endIndex],text:""},{desc:"comment",range:[i.startIndex,i.endIndex],text:``}],i})]}}});function $i(a,r,e,t,n){r=r.trim();let i=r.replace(a==="link"?/\0\d+[tq]\x7F/gu:/\0\d+t\x7F/gu,"").trim();switch(a){case"width":return!i||/^(?:\d+x?|\d*x\d+)(?:\s*px)?$/u.test(i);case"link":{if(!i)return r;let s=new RegExp(String.raw`^(?:${e.protocol}|//|\0\d+m\x7F)`,"iu"),o=new RegExp(String.raw`^(?:(?:${e.protocol}|//)${Ae}|\0\d+m\x7F)${we}$`,"iu");if(s.test(i))return o.test(i)&&r;i.startsWith("[[")&&i.endsWith("]]")&&(i=i.slice(2,-2));let l=x.normalizeTitle(i,0,!1,e,t,!0,!0);return l.valid&&l}case"lang":return(n==="svg"||n==="svgz")&&!/[^a-z\d-]/u.test(i);case"alt":case"class":case"manualthumb":return!0;case"page":return(n==="djvu"||n==="djv"||n==="pdf")&&Number(i)>0;default:return!!i&&!isNaN(i)}}var Ao,se,xr,Ni,fr,Ei=T(()=>{"use strict";Z();q();F();R();Ao=new Set(["alt","link","lang","page","caption"]);fr=class extends y{constructor(e,t,n=x.getConfig(),i){var r=(..._d)=>(super(..._d),k(this,xr),k(this,se,""),this);var g;let s,o=Object.entries(n.img).map(([p,d])=>[p,d,new RegExp(String.raw`^(\s*(?!\s))${p.replace("$1","(.*)")}${p.endsWith("$1")?`(?=$| +`){d=C+1;let{pos:D,findEqual:E}=(b=s[s.length-1])!=null?b:{};if(D===void 0||E||ee(a.slice(D,P))!==""){let xe=/^(={1,6})(.+)\1((?:\s|\0\d+c\x7F)*)$/u.exec(a.slice(P,C));xe&&(a=`${a.slice(0,P)}\0${e.length}h\x7F${a.slice(C)}`,d=P+4+String(e.length).length,new ft(xe[1].length,xe.slice(2),r,e))}}else if(A==="|"||Q)d=C+1,ae(a),A==="|"&&z.push([]),w.pos=d,w.findEqual=A==="|",s.push(w);else if(A.startsWith("}}")){let D=A.slice(0,Math.min(j.length,3)),E=j.length-D.length,{length:xe}=e;d=C+D.length,ae(a);let ke=!1,Pe="t";if(D.length===3){let ne=z.map(it=>it.join("=")),ve=ne.length>1&&ee(ne[1]).trim();new ur(ne,r,e),ve&&ve.endsWith(":")&&i.includes(ve.slice(0,-1).toLowerCase())&&(Pe="s")}else try{new Ut(z[0][0],z.slice(1),r,e);let ne=ee(z[0][0]).trim();cr.has(ne)?Pe=cr.get(ne):/^(?:filepath|(?:full|canonical)urle?):.|^server$/iu.test(ne)?Pe="m":/^#vardefine:./iu.test(ne)&&(Pe="c")}catch(ne){if(ne instanceof SyntaxError&&ne.message==="Invalid template name")ke=!0;else throw ne}ke||(a=`${a.slice(0,P+E)}\0${xe}${Pe}\x7F${a.slice(d)}`,d=P+E+3+String(xe).length,E>1?s.push({0:j.slice(0,E),index:P,pos:P+E,parts:[[]]}):E===1&&a[P-1]==="-"&&s.push({0:"-{",index:P-1,pos:P+1,parts:[[]]}))}else d=C+A.length,A.startsWith("{")&&(p.pos=d,p.parts=[[]]),s.push(..."0"in w?[w]:[],p);let ie=s[s.length-1];if(l&&o+a.lengthJr});var Jr,Si=T(()=>{"use strict";Kr();F();Vr();Jr=class extends zt{constructor(r,e=x.getConfig(),t=[]){let n=Symbol("InputboxToken"),{length:i}=t;t.push(n),r&&(r=Zr(r,e,t)),t.splice(i,1),super(r,e,t,{})}}});var Ci,Yr,vo,Ie,en=T(()=>{"use strict";q();He();F();qe();Ci=[ue(!1)];Ie=class extends(vo=re){constructor(e,t=!0,n,i){super(e,n,i);H(this,"closed");this.closed=t}get type(){return"comment"}getAttribute(e){return e==="padding"?4:super.getAttribute(e)}lint(e=this.getAbsoluteIndex()){if(this.closed)return[];let t=$(this,{start:e},"unclosed-comment",x.msg("unclosed $1","HTML comment"));return t.fix={range:[t.endIndex,t.endIndex],text:"-->"},[t]}toString(e){return e?"":`":""}`}print(){return super.print({pre:"<!--",post:this.closed?"-->":""})}};Yr=le(vo),Ie=ge(Yr,0,"CommentToken",Ci,Ie),de(Yr,1,Ie)});var hr={};X(hr,{NestedToken:()=>tn});var tn,mr=T(()=>{"use strict";q();K();F();R();rn();Oe();en();tn=class extends y{get type(){return"ext-inner"}constructor(r,e,t,n=x.getConfig(),i=[]){r=r==null?void 0:r.replace(e,(s,o,l,g,p)=>{let d=`\0${i.length+1}${o?"e":"c"}\x7F`;if(o)new Tt(o,l,g,p,n,i);else{let u=s.endsWith("-->");new Ie(s.slice(4,u?-3:void 0),u,n,i)}return d}).replace(/(^|\0\d+[ce]\x7F)([^\0]+)(?=$|\0\d+[ce]\x7F)/gu,(s,o,l)=>(new V(l,n,i),`${o}\0${i.length}c\x7F`)),super(r,n,i,{})}lint(r=this.getAbsoluteIndex(),e){let t=new L(this,r);return[...super.lint(r,e),...this.childNodes.filter(n=>{if(n.type==="ext"||n.type==="comment")return!1;let i=n.toString().trim();return i&&!/^$/su.test(i)}).map(n=>{let i=S(n,t,"no-ignored",x.msg("invalid content in <$1>",this.name));return i.suggestions=[{desc:"remove",range:[i.startIndex,i.endIndex],text:""},{desc:"comment",range:[i.startIndex,i.endIndex],text:``}],i})]}}});function $i(a,r,e,t,n){r=r.trim();let i=r.replace(a==="link"?/\0\d+[tq]\x7F/gu:/\0\d+t\x7F/gu,"").trim();switch(a){case"width":return!i&&!!r||/^(?:\d+x?|\d*x\d+)(?:\s*px)?$/u.test(i);case"link":{if(!i)return r;let s=new RegExp(String.raw`^(?:${e.protocol}|//|\0\d+m\x7F)`,"iu"),o=new RegExp(String.raw`^(?:(?:${e.protocol}|//)${Ae}|\0\d+m\x7F)${we}$`,"iu");if(s.test(i))return o.test(i)&&r;i.startsWith("[[")&&i.endsWith("]]")&&(i=i.slice(2,-2));let l=x.normalizeTitle(i,0,!1,e,t,!0,!0);return l.valid&&l}case"lang":return(n==="svg"||n==="svgz")&&!/[^a-z\d-]/u.test(i);case"alt":case"class":case"manualthumb":return!0;case"page":return(n==="djvu"||n==="djv"||n==="pdf")&&Number(i)>0;default:return!!i&&!isNaN(i)}}var Ao,se,xr,Ni,fr,Ei=T(()=>{"use strict";Z();q();F();R();Ao=new Set(["alt","link","lang","page","caption"]);fr=class extends y{constructor(e,t,n=x.getConfig(),i){var r=(..._d)=>(super(..._d),k(this,xr),k(this,se,""),this);var g;let s,o=Object.entries(n.img).map(([p,d])=>[p,d,new RegExp(String.raw`^(\s*(?!\s))${p.replace("$1","(.*)")}${p.endsWith("$1")?`(?=$| )`:""}(\s*)$`,"u")]),l=o.find(([,p,d])=>(s=d.exec(e),s&&(s.length!==4||$i(p,s[2],n,!0,t)!==!1)));if(l&&s){s.length===3?(r(void 0,n,i),v(this,se,e)):(r(s[2],n,i,{}),v(this,se,s[1]+l[0]+s[3])),this.setAttribute("name",l[1]);return}r(e,{...n,excludes:[...(g=n.excludes)!=null?g:[],"list"]},i),this.setAttribute("name","caption"),this.setAttribute("stage",7)}get type(){return"image-parameter"}get link(){return this.name==="link"?$i("link",super.text(),this.getAttribute("config")):void 0}afterBuild(){var e;((e=this.parentNode)==null?void 0:e.type)==="gallery-image"&&!Ao.has(this.name)&&this.setAttribute("name","invalid"),super.afterBuild()}toString(e){return c(this,se)?c(this,se).replace("$1",super.toString(e)):super.toString(e)}text(){return c(this,se)?c(this,se).replace("$1",super.text()).trim():super.text().trim()}getAttribute(e){return e==="plain"?this.name==="caption":e==="padding"?Math.max(0,c(this,se).indexOf("$1")):super.getAttribute(e)}lint(e=this.getAbsoluteIndex(),t){let n=super.lint(e,t),{link:i,name:s}=this;if(s==="invalid"){let o=$(this,{start:e},"invalid-gallery","invalid image parameter");o.fix={range:[e-1,o.endIndex],text:""},n.push(o)}else typeof i=="object"&&i.encoded&&n.push($(this,{start:e},"url-encoding","unnecessary URL encoding in an internal link"));return n}getValue(){return this.name==="invalid"?this.text():B(this,xr,Ni).call(this)||super.text()}print(){return c(this,se)?`${c(this,se).replace("$1",`${Ne(this.childNodes)}`)}`:super.print({class:"image-caption"})}};se=new WeakMap,xr=new WeakSet,Ni=function(){return c(this,se)&&!c(this,se).includes("$1")}});var Ii,Li,Fi,wo,yt,nn=T(()=>{"use strict";Z();q();K();F();Ot();Ei();Ii=new Map([["manualthumb","Thumb"],["frameless","Frameless"],["framed","Frame"],["thumbnail","Thumb"]]),Li=new Set(["left","right","center","none"]),Fi=new Set(["baseline","sub","super","top","text-top","middle","bottom","text-bottom"]),wo=(a,r,e,t)=>{if(t===void 0)return[];let n=new RegExp(`${[a,r,e].map(tr).join("|")}`,"gu"),i=[],s=n.exec(t),o=0,l=0;for(;s;){let{0:g,index:p}=s;g!==e?o+=g===a?1:-1:o===0&&(i.push(t.slice(l,p)),{lastIndex:l}=n),s=n.exec(t)}return i.push(t.slice(l)),i},yt=class extends Ce{get type(){return"file"}get extension(){return this.getTitle().extension}constructor(r,e,t=x.getConfig(),n=[],i="|"){super(r,void 0,t,n,i);let{extension:s}=this.getTitle(!0);this.append(...wo("-{","}-","|",e).map(o=>new fr(o,s,t,n)))}lint(r=this.getAbsoluteIndex(),e){var h;let t=super.lint(r,e),n=this.getAllArgs().filter(({childNodes:m})=>{let f=m.filter(b=>b.text().trim());return f.length!==1||f[0].type!=="arg"}),i=[...new Set(n.map(({name:m})=>m))],s=i.filter(m=>Ii.has(m)),o=i.filter(m=>Li.has(m)),l=i.filter(m=>Fi.has(m)),[g]=s,p=g==="framed"||g==="manualthumb",d=new L(this,r);if(this.closest("ext-link-text")&&((h=this.getValue("link"))==null?void 0:h.trim())!==""&&t.push($(this,d,"nested-link","internal link in an external link")),p)for(let m of n.filter(({name:f})=>f==="width")){let f=S(m,d,"invalid-gallery","invalid image parameter");f.fix={range:[f.startIndex-1,f.endIndex],text:""},t.push(f)}if(n.length===i.length&&s.length<2&&o.length<2&&l.length<2)return t;let u=(m,f)=>b=>S(b,d,"no-duplicate",x.msg(`${m} image $1 parameter`,f));for(let m of i){if(m==="invalid"||m==="width"&&p)continue;let f=n.filter(({name:b})=>b===m);m==="caption"&&(f=[...f.slice(0,-1).filter(b=>b.text()),...f.slice(-1)]),f.length>1&&t.push(...f.map(u("duplicated",m)))}return s.length>1&&t.push(...n.filter(({name:m})=>Ii.has(m)).map(u("conflicting","frame"))),o.length>1&&t.push(...n.filter(({name:m})=>Li.has(m)).map(u("conflicting","horizontal-alignment"))),l.length>1&&t.push(...n.filter(({name:m})=>Fi.has(m)).map(u("conflicting","vertical-alignment"))),t}getAllArgs(){return this.childNodes.slice(1)}getArgs(r){return this.getAllArgs().filter(({name:e})=>r===e)}getArg(r){let e=this.getArgs(r);return e[r==="manualthumb"?0:e.length-1]}getValue(r){var e;return(e=this.getArg(r))==null?void 0:e.getValue()}}});var kt,sn=T(()=>{"use strict";q();Se();F();R();nn();kt=class extends yt{constructor(e,t,n,i=x.getConfig(),s=[]){let o;if(n!==void 0){let{length:l}=s;o=new y(n,i,s);for(let g=1;g<11;g++)o.parseOnce();s.splice(l,1)}super(t,o==null?void 0:o.toString(),i,s);H(this,"privateType","imagemap-image");this.setAttribute("bracket",!1),this.privateType=`${e}-image`,this.seal("privateType",!0)}get type(){return this.privateType}getTitle(){let e=this.type==="imagemap-image";return this.normalizeTitle(this.firstChild.toString(),e?0:6,!0,!e)}getAttribute(e){return e==="padding"?0:super.getAttribute(e)}lint(e=this.getAbsoluteIndex(),t){let n=super.lint(e,t),{ns:i,interwiki:s}=this.getAttribute("title");return(s||i!==6)&&n.push($(this,{start:e},"invalid-gallery","invalid gallery image")),n}}});var Pi={};X(Pi,{GalleryToken:()=>on});var br,Ri,on,Bi=T(()=>{"use strict";F();R();sn();Oe();on=class extends y{constructor(e,t=x.getConfig(),n=[]){var i;super(void 0,t,n,{});k(this,br);for(let s of(i=e==null?void 0:e.split(` `))!=null?i:[]){let o=/^([^|]+)(?:\|(.*))?/u.exec(s);if(!o){super.insertAt(s.trim()?new V(s,t,n):s);continue}let[,l,g]=o;B(this,br,Ri).call(this,l)?super.insertAt(new kt("gallery",l,g,t,n)):super.insertAt(new V(s,t,n))}}get type(){return"ext-inner"}toString(e){return super.toString(e,` `)}text(){return super.text(` diff --git a/extensions/base.ts b/extensions/base.ts index 40a9ef17..dcc9fb9b 100644 --- a/extensions/base.ts +++ b/extensions/base.ts @@ -4,7 +4,7 @@ declare type WorkerListener = (e: {data: [number, T, string]}) => void; /** web worker */ const workerJS = (): void => { - importScripts('https://testingcf.jsdelivr.net/npm/wikiparser-node@1.11.0-b/bundle/bundle.min.js'); + importScripts('https://testingcf.jsdelivr.net/gh/bhsd-harry/wikiparser-node@1.11.1-b/bundle/bundle.min.js'); const entities = {'&': 'amp', '<': 'lt', '>': 'gt'}; /** @implements */ diff --git a/extensions/dist/base.js b/extensions/dist/base.js index 81ae3d34..de6e6786 100644 --- a/extensions/dist/base.js +++ b/extensions/dist/base.js @@ -1,6 +1,6 @@ (() => { const workerJS = () => { - importScripts('https://testingcf.jsdelivr.net/npm/wikiparser-node@1.11.0-b/bundle/bundle.min.js'); + importScripts('https://testingcf.jsdelivr.net/gh/bhsd-harry/wikiparser-node@1.11.1-b/bundle/bundle.min.js'); const entities = { '&': 'amp', '<': 'lt', '>': 'gt' }; self.onmessage = ({ data }) => { const [command, qid, wikitext, include, stage] = data;