@helfy/helfy 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,14 @@
1
- var H=Object.defineProperty,N=Object.defineProperties;var ee=Object.getOwnPropertyDescriptors;var D=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var z=(t,i,e)=>i in t?H(t,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[i]=e,A=(t,i)=>{for(var e in i||(i={}))te.call(i,e)&&z(t,e,i[e]);if(D)for(var e of D(i))ne.call(i,e)&&z(t,e,i[e]);return t},P=(t,i)=>N(t,ee(i));var W=/@[A-Za-z_$][\w$]*/,re=/^\s*@(if|for)\b/,se=/^\s*@(elseif|else|empty)\b/,q=/^\s*@slot(?::|\.)[A-Za-z_$][\w$]*/,y=".__helfy__.ts",E=new Map;function ie(t,i){var n,l;if(!t||t.__helfyHostWrapped||!i)return;t.__helfyHostWrapped=!0,t.__helfyOriginalCache=E;let e=(n=t.getScriptSnapshot)==null?void 0:n.bind(t),s=(l=t.readFile)==null?void 0:l.bind(t);e&&(t.getScriptSnapshot=c=>{let o=e(c);if(!o||typeof c!="string"||!c.endsWith(".tsx"))return o;let d=o.getText(0,o.getLength());if(!d.includes("@bind")&&!d.includes("@ref(")&&!d.includes("@field("))return o;let u=Z(d);return E.set(c,{original:d,transformed:u}),i.ScriptSnapshot.fromString(u)}),s&&(t.readFile=(c,o)=>{let d=s(c,o);if(!d||typeof c!="string"||!c.endsWith(".tsx")||!d.includes("@bind")&&!d.includes("@ref(")&&!d.includes("@field("))return d;let u=Z(d);return E.set(c,{original:d,transformed:u}),u})}function F(t,i){let e=E.get(t);return e?Q(e.original).origToTrans(i):i}function k(t,i,e){let s=E.get(t);if(!s)return{start:i,length:e};let n=Q(s.original),l=n.transToOrig(i),c=n.transToOrig(i+e);return{start:l,length:Math.max(0,c-l)}}function Q(t){let i=[],e=0,s=/@ref\s*\(\s*this\s*\.\s*([A-Za-z_$][\w$]*)\s*\)/g,n;for(;(n=s.exec(t))!==null;){let f=n[1],r=n[0],a=`ref={(el: typeof this.${f})=>this.${f}=el}`;i.push({start:n.index,end:n.index+r.length,newLen:a.length,exprStart:n.index+5,exprEnd:n.index+r.length-1,newExprStart:14})}let l=/@bind:([A-Za-z_$][\w$]*)\s*\(/g;for(;(n=l.exec(t))!==null;){let f=1,r=n.index+n[0].length;for(;r<t.length&&f>0;){let $=t[r];if($==="(")f++;else if($===")"){if(f--,f===0){r++;break}}else if($==="'"||$==='"'||$==="`"){let S=$;for(r++;r<t.length&&t[r]!==S;)t[r]==="\\"&&r++,r++;r++;continue}r++}let a=n.index+n[0].length,h=r-1,x=t.slice(a,h).trim(),p=`$_bind_${n[1]}={${x}}`,g=7+n[1].length+2;i.push({start:n.index,end:r,newLen:p.length,exprStart:a,exprEnd:h,newExprStart:g})}let c=/@bind\s*\(/g;for(;(n=c.exec(t))!==null;){let f=n.index,r=1,a=n.index+n[0].length;for(;a<t.length&&r>0;){let w=t[a];if(w==="(")r++;else if(w===")"){if(r--,r===0){a++;break}}else if(w==="'"||w==='"'||w==="`"){let v=w;for(a++;a<t.length&&t[a]!==v;)t[a]==="\\"&&a++,a++;a++;continue}a++}let h=n.index+n[0].length,x=a-1,p=t.slice(h,x).trim(),$=G(t,f)?"onInput":"oninput",S=`value={${p}} ${$}={(e: Event & { target: { value: string } })=>${p}=e.target.value as typeof ${p}}`;i.push({start:f,end:a,newLen:S.length,exprStart:h,exprEnd:x,newExprStart:7})}let o=/@field\s*\(/g;for(;(n=o.exec(t))!==null;){let f=n.index,r=1,a=n.index+n[0].length;for(;a<t.length&&r>0;){let T=t[a];if(T==="(")r++;else if(T===")"){if(r--,r===0){a++;break}}else if(T==="'"||T==='"'||T==="`"){let Y=T;for(a++;a<t.length&&t[a]!==Y;)t[a]==="\\"&&a++,a++;a++;continue}a++}let h=n.index+n[0].length,x=a-1,p=t.slice(h,x).trim();if(!M(p))continue;let g=R(t,f);if(!g)continue;let $=U(t,f),S=$?K($.content,t,$.start):null,w=S?`[${S.expr}, ${p}?.isTouched && ${p}?.error && 'input-error'].filter(Boolean).join(' ')`:`${p}?.isTouched && ${p}?.error ? 'input-error' : undefined`;S&&i.push({start:S.start,end:S.end,newLen:0,exprStart:S.start,exprEnd:S.end,newExprStart:0});let v=p+".value",C=p+".value",m=`() => { ${p}.isTouched = true; }`,b=`${p}?.isTouched && ${p}?.error ? "true" : "false"`,L;if(g.isComponent)L=`value={${v}} onInput={(e: Event & { target: HTMLInputElement })=>${C}=e.target.value} onBlur={${m}} class={${w}} aria-invalid={${b}}`;else if(g.tag==="input"&&(g.type==="checkbox"||g.type==="radio"))L=`checked={${v}} onchange={(e: Event & { target: HTMLInputElement })=>${C}=e.target.checked} onblur={${m}} class={${w}} aria-invalid={${b}}`;else if(g.tag==="select")L=`value={${v}} onchange={(e: Event & { target: HTMLSelectElement })=>${C}=e.target.value} onblur={${m}} class={${w}} aria-invalid={${b}}`;else{let T=g.tag==="textarea"?"HTMLTextAreaElement":"HTMLInputElement";L=`value={${v}} oninput={(e: Event & { target: ${T} })=>${C}=e.target.value} onblur={${m}} class={${w}} aria-invalid={${b}}`}i.push({start:f,end:a,newLen:L.length,exprStart:h,exprEnd:x,newExprStart:7})}return i.sort((f,r)=>f.start-r.start),{origToTrans:f=>{let r=0,a=0;for(let h of i){let x=h.start-a;if(a+x>f)return r+(f-a);r+=x,a=h.start;let p=h.end-h.start;if(f<h.end)return f>=h.exprStart&&f<h.exprEnd?r+h.newExprStart+(f-h.exprStart):r;r+=h.newLen,a=h.end}return r+(f-a)},transToOrig:f=>{let r=0,a=0;for(let h of i){let x=h.start-a;if(r+x>f)return a+(f-r);r+=x,a=h.start;let p=h.newLen;if(r+p>f){let g=f-r,$=h.exprEnd-h.exprStart;return g>=h.newExprStart&&g<h.newExprStart+$?h.exprStart+(g-h.newExprStart):h.start}r+=p,a=h.end}return a+(f-r)}}}function Z(t){let i=le(t);return i=O(i),i=oe(i),i}function le(t){let i=t,e=/@ref\s*\(\s*this\s*\.\s*([A-Za-z_$][\w$]*)\s*\)/g,s,n=[];for(;(s=e.exec(t))!==null;){let l=s[0],c=s[1];n.push({start:s.index,end:s.index+l.length,code:`ref={(el: typeof this.${c})=>this.${c}=el}`})}for(let l=n.length-1;l>=0;l--){let{start:c,end:o,code:d}=n[l];i=i.slice(0,c)+d+i.slice(o)}return i}function O(t){let i=t,e=/@bind:([A-Za-z_$][\w$]*)\s*\(/g,s,n=[];for(;(s=e.exec(i))!==null;){let o=s[1],d=1,u=s.index+s[0].length;for(;u<i.length&&d>0;){let a=i[u];if(a==="(")d++;else if(a===")"){if(d--,d===0){u++;break}}else if(a==="'"||a==='"'||a==="`"){let h=a;for(u++;u<i.length&&i[u]!==h;)i[u]==="\\"&&u++,u++;u++;continue}u++}let f=i.slice(s.index+s[0].length,u-1).trim(),r=`$_bind_${o}={${f}}`;n.push({start:s.index,end:u,code:r})}for(let o=n.length-1;o>=0;o--){let{start:d,end:u,code:f}=n[o];i=i.slice(0,d)+f+i.slice(u)}let l=/@bind\s*\(/g,c=[];for(;(s=l.exec(i))!==null;){let o=s.index,d=1,u=s.index+s[0].length;for(;u<i.length&&d>0;){let g=i[u];if(g==="(")d++;else if(g===")"){if(d--,d===0){u++;break}}else if(g==="'"||g==='"'||g==="`"){let $=g;for(u++;u<i.length&&i[u]!==$;)i[u]==="\\"&&u++,u++;u++;continue}u++}let f=i.slice(s.index+s[0].length,u-1).trim(),r=R(i,o),a=M(f),h=a?f+".value":f,x=a?f+".value":f,p;if(r&&r.tag==="input"&&(r.type==="checkbox"||r.type==="radio"))p=`checked={${h}} onchange={(e)=>${x}=e.target.checked}`;else{let $=G(i,o)?"onInput":"oninput";p=`value={${h}} ${$}={(e: Event & { target: { value: string } })=>${x}=e.target.value}`}c.push({start:o,end:u,code:p})}for(let o=c.length-1;o>=0;o--){let{start:d,end:u,code:f}=c[o];i=i.slice(0,d)+f+i.slice(u)}return i}function ce(t,i){if(t[i]!=="{")return-1;let e=1,s=i+1;for(;s<t.length&&e>0;){let n=t[s];if(n==="{")e++;else if(n==="}")e--;else if(n==="'"||n==='"'||n==="`"){let l=n;for(s++;s<t.length&&t[s]!==l;)t[s]==="\\"&&s++,s++;s++;continue}e>0&&s++}return e===0?s:-1}function U(t,i){let e=i-1;for(;e>=0;){let s=t[e];if(s==="'"||s==='"'||s==="`"){for(e--;e>=0&&t[e]!==s;)e--;e--;continue}if(s==="<"){let n=e,l=e+1;for(;l<t.length;){let c=t[l];if(c==="'"||c==='"'||c==="`"){for(l++;l<t.length&&t[l]!==c;)t[l]==="\\"&&l++,l++;l++;continue}if(c===">")return{start:n,end:l+1,content:t.slice(n,l+1)};if(c==="/"&&t[l+1]===">")return{start:n,end:l+2,content:t.slice(n,l+2)};l++}return null}e--}return null}function K(t,i,e){let n=/\bclass\s*=\s*(\{|"[^"]*"|'[^']*')/g.exec(t);if(!n)return null;let l=e+n.index,c,o;if(n[1]==="{"){let d=l+n[0].length-1,u=ce(i,d);if(u<0)return null;c=i.slice(d+1,u).trim(),o=u+1}else c=n[1],o=l+n[0].length;return{expr:c,start:l,end:o}}function oe(t){let i=t,e=/@field\s*\(/g,s,n=[];for(;(s=e.exec(t))!==null;){let l=s.index,c=1,o=s.index+s[0].length;for(;o<t.length&&c>0;){let S=t[o];if(S==="(")c++;else if(S===")"){if(c--,c===0){o++;break}}else if(S==="'"||S==='"'||S==="`"){let w=S;for(o++;o<t.length&&t[o]!==w;)t[o]==="\\"&&o++,o++;o++;continue}o++}let d=t.slice(s.index+s[0].length,o-1).trim();if(!M(d))continue;let u=R(t,l);if(!u)continue;let f=U(t,l),r=f?K(f.content,t,f.start):null,a=r?`[${r.expr}, ${d}?.isTouched && ${d}?.error && 'input-error'].filter(Boolean).join(' ')`:`${d}?.isTouched && ${d}?.error ? 'input-error' : undefined`;r&&n.push({start:r.start,end:r.end,code:""});let h=d+".value",x=d+".value",p=`() => { ${d}.isTouched = true; }`,g=`${d}?.isTouched && ${d}?.error ? "true" : "false"`,$;if(u.isComponent)$=`value={${h}} onInput={(e: Event & { target: HTMLInputElement })=>${x}=e.target.value} onBlur={${p}} class={${a}} aria-invalid={${g}}`;else if(u.tag==="input"&&(u.type==="checkbox"||u.type==="radio"))$=`checked={${h}} onchange={(e: Event & { target: HTMLInputElement })=>${x}=e.target.checked} onblur={${p}} class={${a}} aria-invalid={${g}}`;else if(u.tag==="select")$=`value={${h}} onchange={(e: Event & { target: HTMLSelectElement })=>${x}=e.target.value} onblur={${p}} class={${a}} aria-invalid={${g}}`;else{let S=u.tag==="textarea"?"HTMLTextAreaElement":"HTMLInputElement";$=`value={${h}} oninput={(e: Event & { target: ${S} })=>${x}=e.target.value} onblur={${p}} class={${a}} aria-invalid={${g}}`}n.push({start:l,end:o,code:$})}n.sort((l,c)=>c.start-l.start);for(let l of n)i=i.slice(0,l.start)+l.code+i.slice(l.end);return i}function G(t,i){let s=t.slice(Math.max(0,i-200),i).match(new RegExp("<([A-Za-z][A-Za-z0-9]*)\\s[^>]*$","s"));return s?s[1][0]===s[1][0].toUpperCase()&&s[1].length>1:!1}function M(t){return/^this\.([A-Za-z_$][\w$]*\.)+[A-Za-z_$][\w$]*$/.test(t.trim())}function R(t,i){let e=i-1;for(;e>=0;){let s=t[e];if(s==="'"||s==='"'||s==="`"){for(e--;e>=0&&t[e]!==s;)e--;e--;continue}if(s==="<"){for(e++;e<t.length&&/\s/.test(t[e]);)e++;let n=t.slice(e).match(/^([A-Za-z][A-Za-z0-9]*)/);if(!n)return null;let l=n[1],c=l.toLowerCase(),d=t.slice(e,i+200).match(/type\s*=\s*["'](checkbox|radio|text|email|password|search|tel|url)["']/);return{tag:c,type:d?d[1].toLowerCase():c==="input"?"text":void 0,isComponent:l[0]===l[0].toUpperCase()&&l.length>1}}e--}return null}function ae(t){let i=t.match(/^\s*/)[0],e=t.slice(i.length),s="",n=0;for(;n<e.length;)if(e[n]==="<")for(s+=" ",n++;n<e.length;)if(e[n]==="{"){let l=0,c=n;for(;c<e.length;){if(e[c]==="{")l++;else if(e[c]==="}"&&(l--,l===0)){c++;break}c++}s+=e.slice(n,c),n=c}else if(e[n]===">"){s+=" ",n++;break}else if(e.startsWith("@bind:",n)){let l=e.slice(n).match(/^@bind:([A-Za-z_$][\w$]*)\s*\(/);if(l){let c=l[1],o=n+l[0].length,d=1;for(;o<e.length&&d>0;){if(e[o]==="(")d++;else if(e[o]===")"){if(d--,d===0){o++;break}}else if(e[o]==="'"||e[o]==='"'||e[o]==="`"){let f=e[o];for(o++;o<e.length&&e[o]!==f;)e[o]==="\\"&&o++,o++;o++;continue}o++}let u=e.slice(n+l[0].length,o-1).trim();s+="$_bind_"+c+"={"+u+"}",n=o}else s+=" ",n++}else if(e.slice(n).match(/^@bind\s*\(/)){let l=e.slice(n).match(/^@bind\s*\(/);if(l){let c=n+l[0].length,o=1;for(;c<e.length&&o>0;){if(e[c]==="(")o++;else if(e[c]===")"){if(o--,o===0){c++;break}}else if(e[c]==="'"||e[c]==='"'||e[c]==="`"){let u=e[c];for(c++;c<e.length&&e[c]!==u;)e[c]==="\\"&&c++,c++;c++;continue}c++}let d=e.slice(n+l[0].length,c-1);s+="value={"+d+"}",n=c}else s+=" ",n++}else if(e.slice(n).match(/^@field\s*\(/)){let l=e.slice(n).match(/^@field\s*\(/);if(l){let c=n+l[0].length,o=1;for(;c<e.length&&o>0;){if(e[c]==="(")o++;else if(e[c]===")"){if(o--,o===0){c++;break}}else if(e[c]==="'"||e[c]==='"'||e[c]==="`"){let u=e[c];for(c++;c<e.length&&e[c]!==u;)e[c]==="\\"&&c++,c++;c++;continue}c++}let d=e.slice(n+l[0].length,c-1).trim();s+="value={"+d+".value}",n=c}else s+=" ",n++}else if(e.startsWith("@ref(",n)){let l=n+5,c=l,o=1;for(;l<e.length&&o>0;){if(e[l]==="(")o++;else if(e[l]===")"){if(o--,o===0){l++;break}}else if(e[l]==="'"||e[l]==='"'||e[l]==="`"){let d=e[l];for(l++;l<e.length&&e[l]!==d;)e[l]==="\\"&&l++,l++;l++;continue}l++}s+=" ",s+=e.slice(c,l-1),s+=" ",n=l}else s+=" ",n++;else if(e[n]==="{"){let l=0,c=n;for(;c<e.length;){if(e[c]==="{")l++;else if(e[c]==="}"&&(l--,l===0)){c++;break}c++}s+=e.slice(n,c),n=c}else s+=" ",n++;return i+s}function V(t){let i=t.split(`
2
- `),e=[],s=!1,n=0,l=!1;for(let c=0;c<i.length;c++){let o=i[c];if(!s){/\brender\s*\(\s*\)\s*\{/.test(o)&&(s=!0,n=1),e.push(o.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(n+=X(o),n<=0){s=!1,l=!1,e.push(o);continue}if(!l){if(/^\s*return\s*\(\s*$/.test(o)){l=!0,e.push(o.replace(/return\s*\(/,d=>"{"+" ".repeat(d.length-1)));continue}e.push(o.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(/^\s*\)\s*$/.test(o)){l=!1,e.push(o.replace(")","}"));continue}if(q.test(o)){e.push(fe(o));continue}if(/@(if|elseif|else|for|empty)\b/.test(o)){e.push(/@for\b/.test(o)?ue(o):o.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(/^\s*</.test(o)){e.push(ae(o));continue}e.push(o)}return e.join(`
3
- `)}function ue(t){let i=t.match(/^(\s*)@for\s*\((.+)\)\s*\{\s*$/);if(!i)return t.replace("@for"," for");let[,e,s]=i,n=s.indexOf(";"),c=(n>=0?s.slice(0,n):s).trim().match(/^(\w+)(?:\s*,\s*(\w+))?\s+of\s+(.+)$/);if(!c)return t.replace("@for"," for");let[,o,d,u]=c,f=t.length-e.length,r;if(d)r=`for (const ${o} of ${u.trim()}) {let ${d}=0;`;else{let a=`for (const ${o} of ${u.trim()})`;r=a+" ".repeat(Math.max(1,f-a.length-1))+"{"}return r.length<f?r+=" ".repeat(f-r.length):r.length>f&&(r=r.slice(0,f)),e+r}function fe(t){let i=t.match(/^(\s*)(.+)$/);if(!i)return t;let[,e,s]=i,n=s.length,o=/^@[A-Za-z_$][\w$]*\s*\([^)]*\)\s*\{\s*$/.test(s)||/^@slot(?::|\.)[A-Za-z_$][\w$]*\s*\([^)]*\)\s*(?:fallback\s*)?\{\s*$/.test(s)?"{":";";return o.length<n?o+=" ".repeat(n-o.length):o.length>n&&(o=o.slice(0,n)),e+o}function he(t){let i=t.match(/^(\s*)@for\s*\((.+)\)\s*\{\s*$/);if(!i)return null;let[,e,s]=i,n=s.indexOf(";"),c=(n>=0?s.slice(0,n):s).trim().match(/^(\w+)(?:\s*,\s*(\w+))?\s+of\s+(.+)$/);if(!c)return null;let[,o,d,u]=c,f=u.trim(),r=e.length,a=6,h=d?a+o.length+2:-1,x=a+o.length+(d?2+d.length+4:4),p=-1;if(n>=0){let w=s.slice(n),v=w.match(/;\s*track\s+(\w+)/);v&&(p=6+n+w.indexOf(v[1]))}let g=11,$=g+o.length+4,S=d?g+o.length+4+f.length+7:-1;return{indentLen:r,el:o,idx:d,iterTrimmed:f,elOrig:a,idxOrig:h,iterOrig:x,trackElOrig:p,elVirt:g,iterVirt:$,idxVirt:S}}function _(t,i){let{line:e,character:s}=t.getLineAndCharacterOfPosition(i),n=t.getFullText().split(`
4
- `);if(!/@for\b/.test(n[e]))return null;let l=he(n[e]);if(!l)return null;let{indentLen:c,el:o,idx:d,iterTrimmed:u,elOrig:f,idxOrig:r,iterOrig:a,trackElOrig:h,elVirt:x,iterVirt:p,idxVirt:g}=l,$=s-c,S;if($>=f&&$<f+o.length)S=x+($-f);else if(d&&r>=0&&$>=r&&$<r+d.length)S=g+($-r);else if($>=a&&$<a+u.length)S=p+($-a);else if(h>=0&&$>=h&&$<h+o.length)S=x+($-h);else return null;return t.getPositionOfLineAndCharacter(e,c+S)}function de(t,i){var n,l,c,o,d;function e(u){return typeof u=="string"&&u.endsWith(y)}function s(u){return e(u)?u.slice(0,-y.length):u}return{getCompilationSettings(){let u=t.getCompilationSettings();return P(A({},u),{plugins:[]})},getNewLine:()=>{var u;return((u=t.getNewLine)==null?void 0:u.call(t))||`
5
- `},getProjectVersion:()=>{var u;return((u=t.getProjectVersion)==null?void 0:u.call(t))||"0"},getScriptFileNames(){let u=t.getScriptFileNames(),f=u.filter(r=>r.endsWith(".tsx")).map(r=>r+y);return[...u,...f]},getScriptKind(u){var f,r;return e(u)?i.ScriptKind.TS:(r=(f=t.getScriptKind)==null?void 0:f.call(t,u))!=null?r:i.ScriptKind.Unknown},getScriptVersion(u){let f=t.getScriptVersion(s(u));return e(u)?f+"-v":f},getScriptSnapshot(u){let f=t.getScriptSnapshot(s(u));if(!f)return f;if(e(u)){let r=f.getText(0,f.getLength());return i.ScriptSnapshot.fromString(V(r))}if(typeof u=="string"&&u.endsWith(".tsx")){let r=f.getText(0,f.getLength());if(r.includes("@bind"))return i.ScriptSnapshot.fromString(O(r))}return f},getCurrentDirectory:()=>t.getCurrentDirectory(),getDefaultLibFileName:u=>t.getDefaultLibFileName(u),fileExists(u){var f,r,a,h;if(e(u)){let x=s(u);return(r=(f=t.fileExists)==null?void 0:f.call(t,x))!=null?r:!!t.getScriptSnapshot(x)}return(h=(a=t.fileExists)==null?void 0:a.call(t,u))!=null?h:!1},readFile(u,f){var a;let r=(a=t.readFile)==null?void 0:a.call(t,s(u),f);return e(u)&&r!=null?V(r):typeof u=="string"&&u.endsWith(".tsx")&&r!=null&&r.includes("@bind")?O(r):r},resolveModuleNames:t.resolveModuleNames?(u,f,...r)=>t.resolveModuleNames(u,s(f),...r):void 0,resolveTypeReferenceDirectives:(n=t.resolveTypeReferenceDirectives)==null?void 0:n.bind(t),getResolvedModuleWithFailedLookupLocationsFromCache:(l=t.getResolvedModuleWithFailedLookupLocationsFromCache)==null?void 0:l.bind(t),readDirectory:(c=t.readDirectory)==null?void 0:c.bind(t),directoryExists:(o=t.directoryExists)==null?void 0:o.bind(t),getDirectories:(d=t.getDirectories)==null?void 0:d.bind(t),useCaseSensitiveFileNames:()=>{var u,f;return(f=(u=t.useCaseSensitiveFileNames)==null?void 0:u.call(t))!=null?f:!1}}}function ge(t){let i=t==null?void 0:t.typescript;function e(s){s.project.projectService.logger.info("[helfy-ts-plugin] Loaded"),ie(s.languageServiceHost,i);let n=s.languageService,l=Object.create(null);for(let r of Object.keys(n)){let a=n[r];l[r]=typeof a=="function"?(...h)=>a.apply(n,h):a}l.getSyntacticDiagnostics=r=>I(r,j(n,r,n.getSyntacticDiagnostics(r))),l.getSemanticDiagnostics=r=>I(r,j(n,r,n.getSemanticDiagnostics(r))),l.getSuggestionDiagnostics=r=>I(r,j(n,r,n.getSuggestionDiagnostics(r)));let c=null;if(i)try{let r=de(s.languageServiceHost,i);c=i.createLanguageService(r),s.project.projectService.logger.info("[helfy-ts-plugin] Virtual LS created")}catch(r){s.project.projectService.logger.info("[helfy-ts-plugin] Virtual LS error: "+r)}let o=null;function d(r,a){var x;let h=(x=r.version)!=null?x:r.fileName;if(!o||o.version!==h){let p=r.getFullText().split(`
6
- `);o={version:h,set:J(p)}}return o.set.has(a)}function u(r,a){var p;if(!c||!r.endsWith(".tsx"))return!1;let h=(p=n.getProgram())==null?void 0:p.getSourceFile(r);if(!h||!W.test(h.getFullText()))return!1;let{line:x}=h.getLineAndCharacterOfPosition(a);return d(h,x)}function f(r,a){var x,p;let h=(x=n.getProgram())==null?void 0:x.getSourceFile(r);return h&&(p=_(h,a))!=null?p:a}return l.getCompletionsAtPosition=(r,a,h)=>{var w,v,C;let x=E.has(r),p=x?F(r,a):a;if(!u(r,a)){let m=n.getCompletionsAtPosition(r,p,h);return x&&(m!=null&&m.entries)&&(m.entries=m.entries.map(b=>{if(b.replacementSpan){let L=k(r,b.replacementSpan.start,b.replacementSpan.length);return P(A({},b),{replacementSpan:L})}return b})),m}let g=(w=n.getProgram())==null?void 0:w.getSourceFile(r),$=(v=g==null?void 0:g.getFullText().split(`
7
- `))!=null?v:[],{line:S}=g?g.getLineAndCharacterOfPosition(a):{line:-1};if(/@for\b/.test((C=$[S])!=null?C:"")){let m=g?_(g,a):null;if(m===null)return n.getCompletionsAtPosition(r,a,h);try{return c.getCompletionsAtPosition(r+y,m,h)||n.getCompletionsAtPosition(r,a,h)}catch(b){return n.getCompletionsAtPosition(r,a,h)}}try{return c.getCompletionsAtPosition(r+y,a,h)||n.getCompletionsAtPosition(r,a,h)}catch(m){return n.getCompletionsAtPosition(r,a,h)}},l.getSignatureHelpItems=(r,a,h)=>{let x=E.has(r),p=x?F(r,a):a;if(!u(r,a)){let g=n.getSignatureHelpItems(r,p,h);if(x&&(g!=null&&g.applicableSpan)){let $=k(r,g.applicableSpan.start,g.applicableSpan.length);g.applicableSpan=$}return g}try{return c.getSignatureHelpItems(r+y,f(r,a),h)||n.getSignatureHelpItems(r,a,h)}catch(g){return n.getSignatureHelpItems(r,a,h)}},l.getQuickInfoAtPosition=(r,a)=>{var w,v,C;let h=E.has(r),x=h?F(r,a):a,p=h?x:a;if(!u(r,a)){let m=n.getQuickInfoAtPosition(r,p);if(h&&(m!=null&&m.textSpan)){let b=k(r,m.textSpan.start,m.textSpan.length);return P(A({},m),{textSpan:b})}return m}let g=(w=n.getProgram())==null?void 0:w.getSourceFile(r),$=(v=g==null?void 0:g.getFullText().split(`
8
- `))!=null?v:[],{line:S}=g?g.getLineAndCharacterOfPosition(a):{line:-1};if(/@for\b/.test((C=$[S])!=null?C:"")){let m=g?_(g,a):null;if(m===null)return n.getQuickInfoAtPosition(r,a);try{return c.getQuickInfoAtPosition(r+y,m)||n.getQuickInfoAtPosition(r,a)}catch(b){return n.getQuickInfoAtPosition(r,a)}}try{return c.getQuickInfoAtPosition(r+y,a)||n.getQuickInfoAtPosition(r,a)}catch(m){return n.getQuickInfoAtPosition(r,a)}},l}return{create:e}}function I(t,i){return!E.has(t)||!i.length?i:i.map(e=>{var n;if(e.start==null)return e;let s=k(t,e.start,(n=e.length)!=null?n:0);return P(A({},e),{start:s.start,length:s.length})})}function j(t,i,e){if(!e.length||!i.endsWith(".tsx"))return e;let s=t.getProgram(),n=s&&s.getSourceFile(i);if(!n)return e;let l=n.getFullText();if(!W.test(l))return e;let c=l.split(`
9
- `),o=J(c);if(!o.size)return e;let d=c.map((u,f)=>o.has(f)?u:"").join(`
10
- `);return e.filter(u=>{if(u.start==null)return!0;let f=n.getLineAndCharacterOfPosition(u.start).line;if(o.has(f))return!1;if(u.code===6198||u.code===6133){let r=l.slice(u.start,u.start+(u.length||0)).trim(),a=(r.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/)||[r])[0];if(a&&new RegExp("\\b"+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b").test(d))return!1}return!0})}function J(t){let i=new Set,e=0;for(;e<t.length;)if(re.test(t[e])){let s=B(t,e);for(let n=e;n<=s;n++)i.add(n);e=s+1}else if(pe(t[e]))if(/\{\s*$/.test(t[e])){let n=B(t,e);for(let l=e;l<=n;l++)i.add(l);e=n+1}else i.add(e),e++;else if(/@ref\s*\(/.test(t[e])){e>0&&/<\s*[A-Za-z_]/.test(t[e-1])&&!/>\s*$/.test(t[e-1].trim())&&i.add(e-1),i.add(e);let s=e+1;for(;s<t.length&&!/\/>/.test(t[s]);)i.add(s),s++;s<t.length&&i.add(s),s+1<t.length&&/^\s*\)\s*;?\s*$/.test(t[s+1])?(i.add(s+1),e=s+2):e=s+1}else if(/@bind\s*\(/.test(t[e])||/@bind:[A-Za-z_$][\w$]*\s*\(/.test(t[e])||/@field\s*\(/.test(t[e])){e>0&&/<\s*[A-Za-z_]/.test(t[e-1])&&!/>\s*$/.test(t[e-1].trim())&&i.add(e-1),i.add(e);let s=e+1;for(;s<t.length&&!/\/>/.test(t[s]);)i.add(s),s++;s<t.length&&i.add(s),s+1<t.length&&/^\s*\)\s*;?\s*$/.test(t[s+1])?(i.add(s+1),e=s+2):e=s+1}else e++;return i}function pe(t){return q.test(t)}function B(t,i){let e=0;for(let s=i;s<t.length;s++)if(e+=X(t[s]),e<=0){let n=xe(t,s+1);if(n!==-1&&se.test(t[n])){e=0,s=n-1;continue}return s}return t.length-1}function X(t){let i=0,e=!1,s="";for(let n=0;n<t.length;n++){let l=t[n];if(e){if(l==="\\"){n++;continue}l===s&&(e=!1);continue}if(l==="'"||l==='"'||l==="`"){e=!0,s=l;continue}l==="{"&&i++,l==="}"&&i--}return i}function xe(t,i){for(let e=i;e<t.length;e++)if(t[e].trim())return e;return-1}module.exports=ge;
1
+ var se=Object.defineProperty,ie=Object.defineProperties;var le=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var ce=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var W=(e,s,t)=>s in e?se(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,P=(e,s)=>{for(var t in s||(s={}))ce.call(s,t)&&W(e,t,s[t]);if(V)for(var t of V(s))oe.call(s,t)&&W(e,t,s[t]);return e},k=(e,s)=>ie(e,le(s));var K=/@[A-Za-z_$][\w$]*/,ae=/^\s*@(if|for)\b/,ue=/^\s*@(elseif|else|empty)\b/,G=/^\s*@slot(?::|\.)[A-Za-z_$][\w$]*/,A=".__helfy__.ts",L=new Map;function B(e,s){var i,c;if(!e||e.__helfyHostWrapped||!s)return;e.__helfyHostWrapped=!0,e.__helfyOriginalCache=L;let t=(i=e.getScriptSnapshot)==null?void 0:i.bind(e),n=(c=e.readFile)==null?void 0:c.bind(e),r=(l,d)=>{if(!d||typeof l!="string"||!l.endsWith(".tsx"))return d;let o=d.getText(0,d.getLength());if(!o.includes("@bind")&&!o.includes("@ref(")&&!o.includes("@field(")&&!o.includes("@slot."))return d;let f=q(o);return L.set(l,{original:o,transformed:f}),s.ScriptSnapshot.fromString(f)};if(t){let l=d=>r(d,t(d));try{Object.defineProperty(e,"getScriptSnapshot",{value:l,configurable:!0,writable:!0})}catch(d){e.getScriptSnapshot=l}}n&&(e.readFile=(l,d)=>{let o=n(l,d);if(!o||typeof l!="string"||!l.endsWith(".tsx")||!o.includes("@bind")&&!o.includes("@ref(")&&!o.includes("@field(")&&!o.includes("@slot."))return o;let f=q(o);return L.set(l,{original:o,transformed:f}),f})}function j(e,s){let t=L.get(e);return t?J(t.original).origToTrans(s):s}function F(e,s,t){let n=L.get(e);if(!n)return{start:s,length:t};let r=J(n.original),i=r.transToOrig(s),c=r.transToOrig(s+t);return{start:i,length:Math.max(0,c-i)}}function J(e){let s=[],t=0,n=/@ref\s*\(\s*this\s*\.\s*([A-Za-z_$][\w$]*)\s*\)/g,r;for(;(r=n.exec(e))!==null;){let u=r[1],h=r[0],p=`ref={(el: typeof this.${u})=>this.${u}=el}`;s.push({start:r.index,end:r.index+h.length,newLen:p.length,exprStart:r.index+5,exprEnd:r.index+h.length-1,newExprStart:14})}let i=/@bind:([A-Za-z_$][\w$]*)\s*\(/g;for(;(r=i.exec(e))!==null;){let u=1,h=r.index+r[0].length;for(;h<e.length&&u>0;){let m=e[h];if(m==="(")u++;else if(m===")"){if(u--,u===0){h++;break}}else if(m==="'"||m==='"'||m==="`"){let S=m;for(h++;h<e.length&&e[h]!==S;)e[h]==="\\"&&h++,h++;h++;continue}h++}let p=r.index+r[0].length,a=h-1,g=e.slice(p,a).trim(),$=`$_bind_${r[1]}={${g}}`,x=7+r[1].length+2;s.push({start:r.index,end:h,newLen:$.length,exprStart:p,exprEnd:a,newExprStart:x})}let c=/@bind\s*\(/g;for(;(r=c.exec(e))!==null;){let u=r.index,h=1,p=r.index+r[0].length;for(;p<e.length&&h>0;){let b=e[p];if(b==="(")h++;else if(b===")"){if(h--,h===0){p++;break}}else if(b==="'"||b==='"'||b==="`"){let E=b;for(p++;p<e.length&&e[p]!==E;)e[p]==="\\"&&p++,p++;p++;continue}p++}let a=r.index+r[0].length,g=p-1,$=e.slice(a,g).trim(),m=te(e,u)?"onInput":"oninput",S=`value={${$}} ${m}={(e: Event & { target: { value: string } })=>${$}=e.target.value as typeof ${$}}`;s.push({start:u,end:p,newLen:S.length,exprStart:a,exprEnd:g,newExprStart:7})}let l=/@field\s*\(/g;for(;(r=l.exec(e))!==null;){let u=r.index,h=1,p=r.index+r[0].length;for(;p<e.length&&h>0;){let v=e[p];if(v==="(")h++;else if(v===")"){if(h--,h===0){p++;break}}else if(v==="'"||v==='"'||v==="`"){let I=v;for(p++;p<e.length&&e[p]!==I;)e[p]==="\\"&&p++,p++;p++;continue}p++}let a=r.index+r[0].length,g=p-1,$=e.slice(a,g).trim();if(!D($))continue;let x=Z(e,u);if(!x)continue;let m=N(e,u),S=m?ee(m.content,e,m.start):null,b=S?`[${S.expr}, ${$}?.isTouched && ${$}?.error && 'input-error'].filter(Boolean).join(' ')`:`${$}?.isTouched && ${$}?.error ? 'input-error' : undefined`;S&&s.push({start:S.start,end:S.end,newLen:0,exprStart:S.start,exprEnd:S.end,newExprStart:0});let E=$+".value",C=$+".value",y=`() => { ${$}.isTouched = true; }`,T=`${$}?.isTouched && ${$}?.error ? "true" : "false"`,w;if(x.isComponent)w=`value={${E}} onInput={(e: Event & { target: HTMLInputElement })=>${C}=e.target.value} onBlur={${y}} class={${b}} aria-invalid={${T}}`;else if(x.tag==="input"&&(x.type==="checkbox"||x.type==="radio"))w=`checked={${E}} onchange={(e: Event & { target: HTMLInputElement })=>${C}=e.target.checked} onblur={${y}} class={${b}} aria-invalid={${T}}`;else if(x.tag==="select")w=`value={${E}} onchange={(e: Event & { target: HTMLSelectElement })=>${C}=e.target.value} onblur={${y}} class={${b}} aria-invalid={${T}}`;else{let v=x.tag==="textarea"?"HTMLTextAreaElement":"HTMLInputElement";w=`value={${E}} oninput={(e: Event & { target: ${v} })=>${C}=e.target.value} onblur={${y}} class={${b}} aria-invalid={${T}}`}s.push({start:u,end:p,newLen:w.length,exprStart:a,exprEnd:g,newExprStart:7})}let d=/@slot\.([A-Za-z_$][\w$]*)\s*\(/g;for(;(r=d.exec(e))!==null;){let u=r.index,h=u+6+r[1].length;if(h=_(e,h),e[h]!=="(")continue;let p=X(e,h);if(p<0)continue;let a=e.slice(h+1,p).trim()||"{}",g=p+1;if(g=_(e,g),e[g]!=="{")continue;let $=Y(e,g);if($<0)continue;let x=(e.slice(0,u).match(/([ \t]*)$/)||["",""])[1],m=e.slice(g+1,$),S=`${x}{$._slot("${r[1]}", (${a}) => (
2
+ ${m}
3
+ ${x}))}`,b=x.length+10+r[1].length+6+a.length+8;s.push({start:u,end:$+1,newLen:S.length,exprStart:g+1,exprEnd:$,newExprStart:b})}return s.sort((u,h)=>u.start-h.start),{origToTrans:u=>{let h=0,p=0;for(let a of s){let g=a.start-p;if(p+g>u)return h+(u-p);h+=g,p=a.start;let $=a.end-a.start;if(u<a.end)return u>=a.exprStart&&u<a.exprEnd?h+a.newExprStart+(u-a.exprStart):h;h+=a.newLen,p=a.end}return h+(u-p)},transToOrig:u=>{let h=0,p=0;for(let a of s){let g=a.start-p;if(h+g>u)return p+(u-h);h+=g,p=a.start;let $=a.newLen;if(h+$>u){let x=u-h,m=a.exprEnd-a.exprStart;return x>=a.newExprStart&&x<a.newExprStart+m?a.exprStart+(x-a.newExprStart):a.start}h+=$,p=a.end}return p+(u-h)}}}function q(e){let s=he(e);return s=z(s),s=pe(s),s=fe(s),s}function fe(e){let s="",t=0,n=/@slot\.([A-Za-z_$][\w$]*)\s*\(/g,r;for(;(r=n.exec(e))!==null;){s+=e.slice(t,r.index),t=r.index;let i=r.index,c=(e.slice(0,i).match(/([ \t]*)$/)||["",""])[1],l=i+6+r[1].length;if(l=_(e,l),e[l]!=="("){s+=e[t],t++,n.lastIndex=t;continue}let d=X(e,l);if(d<0){s+=e[t],t++,n.lastIndex=t;continue}let o=e.slice(l+1,d).trim()||"{}",f=d+1;if(f=_(e,f),e[f]!=="{"){s+=e[t],t++,n.lastIndex=t;continue}let u=Y(e,f);if(u<0){s+=e[t],t++,n.lastIndex=t;continue}let h=e.slice(f+1,u),p=`${c}{$._slot("${r[1]}", (${o}) => (
4
+ ${h}
5
+ ${c}))}`;s+=p,t=u+1}return s+=e.slice(t),s}function _(e,s){for(;s<e.length&&/\s/.test(e[s]);)s++;return s}function X(e,s){let t=1,n=s+1;for(;n<e.length&&t>0;){let r=e[n];if(r==="(")t++;else if(r===")"){if(t--,t===0)return n}else if(r==="'"||r==='"'||r==="`"){n=H(e,n);continue}n++}return-1}function Y(e,s){let t=1,n=s+1;for(;n<e.length&&t>0;){let r=e[n];if(r==="{")t++;else if(r==="}"){if(t--,t===0)return n}else if(r==="'"||r==='"'||r==="`"){n=H(e,n);continue}n++}return-1}function H(e,s){let t=e[s],n=s+1;for(;n<e.length;){if(e[n]==="\\"){n+=2;continue}if(e[n]===t)return n+1;if(t==="`"&&e[n]==="$"&&e[n+1]==="{"){n+=2;let r=1;for(;n<e.length&&r>0;)e[n]==="{"?r++:e[n]==="}"&&r--,n++;continue}n++}return n}function he(e){let s=e,t=/@ref\s*\(\s*this\s*\.\s*([A-Za-z_$][\w$]*)\s*\)/g,n,r=[];for(;(n=t.exec(e))!==null;){let i=n[0],c=n[1];r.push({start:n.index,end:n.index+i.length,code:`ref={(el: typeof this.${c})=>this.${c}=el}`})}for(let i=r.length-1;i>=0;i--){let{start:c,end:l,code:d}=r[i];s=s.slice(0,c)+d+s.slice(l)}return s}function z(e){let s=e,t=/@bind:([A-Za-z_$][\w$]*)\s*\(/g,n,r=[];for(;(n=t.exec(s))!==null;){let l=n[1],d=1,o=n.index+n[0].length;for(;o<s.length&&d>0;){let h=s[o];if(h==="(")d++;else if(h===")"){if(d--,d===0){o++;break}}else if(h==="'"||h==='"'||h==="`"){let p=h;for(o++;o<s.length&&s[o]!==p;)s[o]==="\\"&&o++,o++;o++;continue}o++}let f=s.slice(n.index+n[0].length,o-1).trim(),u=`$_bind_${l}={${f}}`;r.push({start:n.index,end:o,code:u})}for(let l=r.length-1;l>=0;l--){let{start:d,end:o,code:f}=r[l];s=s.slice(0,d)+f+s.slice(o)}let i=/@bind\s*\(/g,c=[];for(;(n=i.exec(s))!==null;){let l=n.index,d=1,o=n.index+n[0].length;for(;o<s.length&&d>0;){let $=s[o];if($==="(")d++;else if($===")"){if(d--,d===0){o++;break}}else if($==="'"||$==='"'||$==="`"){let x=$;for(o++;o<s.length&&s[o]!==x;)s[o]==="\\"&&o++,o++;o++;continue}o++}let f=s.slice(n.index+n[0].length,o-1).trim(),u=Z(s,l),h=D(f),p=h?f+".value":f,a=h?f+".value":f,g;if(u&&u.tag==="input"&&(u.type==="checkbox"||u.type==="radio"))g=`checked={${p}} onchange={(e)=>${a}=e.target.checked}`;else{let x=te(s,l)?"onInput":"oninput";g=`value={${p}} ${x}={(e: Event & { target: { value: string } })=>${a}=e.target.value}`}c.push({start:l,end:o,code:g})}for(let l=c.length-1;l>=0;l--){let{start:d,end:o,code:f}=c[l];s=s.slice(0,d)+f+s.slice(o)}return s}function de(e,s){if(e[s]!=="{")return-1;let t=1,n=s+1;for(;n<e.length&&t>0;){let r=e[n];if(r==="{")t++;else if(r==="}")t--;else if(r==="'"||r==='"'||r==="`"){let i=r;for(n++;n<e.length&&e[n]!==i;)e[n]==="\\"&&n++,n++;n++;continue}t>0&&n++}return t===0?n:-1}function N(e,s){let t=s-1;for(;t>=0;){let n=e[t];if(n==="'"||n==='"'||n==="`"){for(t--;t>=0&&e[t]!==n;)t--;t--;continue}if(n==="<"){let r=t,i=t+1;for(;i<e.length;){let c=e[i];if(c==="'"||c==='"'||c==="`"){for(i++;i<e.length&&e[i]!==c;)e[i]==="\\"&&i++,i++;i++;continue}if(c===">")return{start:r,end:i+1,content:e.slice(r,i+1)};if(c==="/"&&e[i+1]===">")return{start:r,end:i+2,content:e.slice(r,i+2)};i++}return null}t--}return null}function ee(e,s,t){let r=/\bclass\s*=\s*(\{|"[^"]*"|'[^']*')/g.exec(e);if(!r)return null;let i=t+r.index,c,l;if(r[1]==="{"){let d=i+r[0].length-1,o=de(s,d);if(o<0)return null;c=s.slice(d+1,o).trim(),l=o+1}else c=r[1],l=i+r[0].length;return{expr:c,start:i,end:l}}function pe(e){let s=e,t=/@field\s*\(/g,n,r=[];for(;(n=t.exec(e))!==null;){let i=n.index,c=1,l=n.index+n[0].length;for(;l<e.length&&c>0;){let m=e[l];if(m==="(")c++;else if(m===")"){if(c--,c===0){l++;break}}else if(m==="'"||m==='"'||m==="`"){let S=m;for(l++;l<e.length&&e[l]!==S;)e[l]==="\\"&&l++,l++;l++;continue}l++}let d=e.slice(n.index+n[0].length,l-1).trim();if(!D(d))continue;let o=Z(e,i);if(!o)continue;let f=N(e,i),u=f?ee(f.content,e,f.start):null,h=u?`[${u.expr}, ${d}?.isTouched && ${d}?.error && 'input-error'].filter(Boolean).join(' ')`:`${d}?.isTouched && ${d}?.error ? 'input-error' : undefined`;u&&r.push({start:u.start,end:u.end,code:""});let p=d+".value",a=d+".value",g=`() => { ${d}.isTouched = true; }`,$=`${d}?.isTouched && ${d}?.error ? "true" : "false"`,x;if(o.isComponent)x=`value={${p}} onInput={(e: Event & { target: HTMLInputElement })=>${a}=e.target.value} onBlur={${g}} class={${h}} aria-invalid={${$}}`;else if(o.tag==="input"&&(o.type==="checkbox"||o.type==="radio"))x=`checked={${p}} onchange={(e: Event & { target: HTMLInputElement })=>${a}=e.target.checked} onblur={${g}} class={${h}} aria-invalid={${$}}`;else if(o.tag==="select")x=`value={${p}} onchange={(e: Event & { target: HTMLSelectElement })=>${a}=e.target.value} onblur={${g}} class={${h}} aria-invalid={${$}}`;else{let m=o.tag==="textarea"?"HTMLTextAreaElement":"HTMLInputElement";x=`value={${p}} oninput={(e: Event & { target: ${m} })=>${a}=e.target.value} onblur={${g}} class={${h}} aria-invalid={${$}}`}r.push({start:i,end:l,code:x})}r.sort((i,c)=>c.start-i.start);for(let i of r)s=s.slice(0,i.start)+i.code+s.slice(i.end);return s}function te(e,s){let n=e.slice(Math.max(0,s-200),s).match(new RegExp("<([A-Za-z][A-Za-z0-9]*)\\s[^>]*$","s"));return n?n[1][0]===n[1][0].toUpperCase()&&n[1].length>1:!1}function D(e){return/^this\.([A-Za-z_$][\w$]*\.)+[A-Za-z_$][\w$]*$/.test(e.trim())}function Z(e,s){let t=s-1;for(;t>=0;){let n=e[t];if(n==="'"||n==='"'||n==="`"){for(t--;t>=0&&e[t]!==n;)t--;t--;continue}if(n==="<"){for(t++;t<e.length&&/\s/.test(e[t]);)t++;let r=e.slice(t).match(/^([A-Za-z][A-Za-z0-9]*)/);if(!r)return null;let i=r[1],c=i.toLowerCase(),d=e.slice(t,s+200).match(/type\s*=\s*["'](checkbox|radio|text|email|password|search|tel|url)["']/);return{tag:c,type:d?d[1].toLowerCase():c==="input"?"text":void 0,isComponent:i[0]===i[0].toUpperCase()&&i.length>1}}t--}return null}function ge(e){let s=e.match(/^\s*/)[0],t=e.slice(s.length),n="",r=0;for(;r<t.length;)if(t[r]==="<")for(n+=" ",r++;r<t.length;)if(t[r]==="{"){let i=0,c=r;for(;c<t.length;){if(t[c]==="{")i++;else if(t[c]==="}"&&(i--,i===0)){c++;break}c++}n+=t.slice(r,c),r=c}else if(t[r]===">"){n+=" ",r++;break}else if(t.startsWith("@bind:",r)){let i=t.slice(r).match(/^@bind:([A-Za-z_$][\w$]*)\s*\(/);if(i){let c=i[1],l=r+i[0].length,d=1;for(;l<t.length&&d>0;){if(t[l]==="(")d++;else if(t[l]===")"){if(d--,d===0){l++;break}}else if(t[l]==="'"||t[l]==='"'||t[l]==="`"){let f=t[l];for(l++;l<t.length&&t[l]!==f;)t[l]==="\\"&&l++,l++;l++;continue}l++}let o=t.slice(r+i[0].length,l-1).trim();n+="$_bind_"+c+"={"+o+"}",r=l}else n+=" ",r++}else if(t.slice(r).match(/^@bind\s*\(/)){let i=t.slice(r).match(/^@bind\s*\(/);if(i){let c=r+i[0].length,l=1;for(;c<t.length&&l>0;){if(t[c]==="(")l++;else if(t[c]===")"){if(l--,l===0){c++;break}}else if(t[c]==="'"||t[c]==='"'||t[c]==="`"){let o=t[c];for(c++;c<t.length&&t[c]!==o;)t[c]==="\\"&&c++,c++;c++;continue}c++}let d=t.slice(r+i[0].length,c-1);n+="value={"+d+"}",r=c}else n+=" ",r++}else if(t.slice(r).match(/^@field\s*\(/)){let i=t.slice(r).match(/^@field\s*\(/);if(i){let c=r+i[0].length,l=1;for(;c<t.length&&l>0;){if(t[c]==="(")l++;else if(t[c]===")"){if(l--,l===0){c++;break}}else if(t[c]==="'"||t[c]==='"'||t[c]==="`"){let o=t[c];for(c++;c<t.length&&t[c]!==o;)t[c]==="\\"&&c++,c++;c++;continue}c++}let d=t.slice(r+i[0].length,c-1).trim();n+="value={"+d+".value}",r=c}else n+=" ",r++}else if(t.startsWith("@ref(",r)){let i=r+5,c=i,l=1;for(;i<t.length&&l>0;){if(t[i]==="(")l++;else if(t[i]===")"){if(l--,l===0){i++;break}}else if(t[i]==="'"||t[i]==='"'||t[i]==="`"){let d=t[i];for(i++;i<t.length&&t[i]!==d;)t[i]==="\\"&&i++,i++;i++;continue}i++}n+=" ",n+=t.slice(c,i-1),n+=" ",r=i}else n+=" ",r++;else if(t[r]==="{"){let i=0,c=r;for(;c<t.length;){if(t[c]==="{")i++;else if(t[c]==="}"&&(i--,i===0)){c++;break}c++}n+=t.slice(r,c),r=c}else n+=" ",r++;return s+n}function Q(e){let s=e.split(`
6
+ `),t=[],n=!1,r=0,i=!1;for(let c=0;c<s.length;c++){let l=s[c];if(!n){/\brender\s*\(\s*\)\s*\{/.test(l)&&(n=!0,r=1),t.push(l.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(r+=re(l),r<=0){n=!1,i=!1,t.push(l);continue}if(!i){if(/^\s*return\s*\(\s*$/.test(l)){i=!0,t.push(l.replace(/return\s*\(/,d=>"{"+" ".repeat(d.length-1)));continue}t.push(l.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(/^\s*\)\s*$/.test(l)){i=!1,t.push(l.replace(")","}"));continue}if(G.test(l)){t.push(xe(l));continue}if(/@(if|elseif|else|for|empty)\b/.test(l)){t.push(/@for\b/.test(l)?$e(l):l.replace(/@(if|elseif|else|for|empty)\b/g," $1"));continue}if(/^\s*</.test(l)){t.push(ge(l));continue}t.push(l)}return t.join(`
7
+ `)}function $e(e){let s=e.match(/^(\s*)@for\s*\((.+)\)\s*\{\s*$/);if(!s)return e.replace("@for"," for");let[,t,n]=s,r=n.indexOf(";"),c=(r>=0?n.slice(0,r):n).trim().match(/^(\w+)(?:\s*,\s*(\w+))?\s+of\s+(.+)$/);if(!c)return e.replace("@for"," for");let[,l,d,o]=c,f=e.length-t.length,u;if(d)u=`for (const ${l} of ${o.trim()}) {let ${d}=0;`;else{let h=`for (const ${l} of ${o.trim()})`;u=h+" ".repeat(Math.max(1,f-h.length-1))+"{"}return u.length<f?u+=" ".repeat(f-u.length):u.length>f&&(u=u.slice(0,f)),t+u}function xe(e){let s=e.match(/^(\s*)(.+)$/);if(!s)return e;let[,t,n]=s,r=n.length,l=/^@[A-Za-z_$][\w$]*\s*\([^)]*\)\s*\{\s*$/.test(n)||/^@slot(?::|\.)[A-Za-z_$][\w$]*\s*\([^)]*\)\s*(?:fallback\s*)?\{\s*$/.test(n)?"{":";";return l.length<r?l+=" ".repeat(r-l.length):l.length>r&&(l=l.slice(0,r)),t+l}function me(e){let s=e.match(/^(\s*)@for\s*\((.+)\)\s*\{\s*$/);if(!s)return null;let[,t,n]=s,r=n.indexOf(";"),c=(r>=0?n.slice(0,r):n).trim().match(/^(\w+)(?:\s*,\s*(\w+))?\s+of\s+(.+)$/);if(!c)return null;let[,l,d,o]=c,f=o.trim(),u=t.length,h=6,p=d?h+l.length+2:-1,a=h+l.length+(d?2+d.length+4:4),g=-1;if(r>=0){let S=n.slice(r),b=S.match(/;\s*track\s+(\w+)/);b&&(g=6+r+S.indexOf(b[1]))}let $=11,x=$+l.length+4,m=d?$+l.length+4+f.length+7:-1;return{indentLen:u,el:l,idx:d,iterTrimmed:f,elOrig:h,idxOrig:p,iterOrig:a,trackElOrig:g,elVirt:$,iterVirt:x,idxVirt:m}}function O(e,s){let{line:t,character:n}=e.getLineAndCharacterOfPosition(s),r=e.getFullText().split(`
8
+ `);if(!/@for\b/.test(r[t]))return null;let i=me(r[t]);if(!i)return null;let{indentLen:c,el:l,idx:d,iterTrimmed:o,elOrig:f,idxOrig:u,iterOrig:h,trackElOrig:p,elVirt:a,iterVirt:g,idxVirt:$}=i,x=n-c,m;if(x>=f&&x<f+l.length)m=a+(x-f);else if(d&&u>=0&&x>=u&&x<u+d.length)m=$+(x-u);else if(x>=h&&x<h+o.length)m=g+(x-h);else if(p>=0&&x>=p&&x<p+l.length)m=a+(x-p);else return null;return e.getPositionOfLineAndCharacter(t,c+m)}function Se(e,s){var r,i,c,l,d;function t(o){return typeof o=="string"&&o.endsWith(A)}function n(o){return t(o)?o.slice(0,-A.length):o}return{getCompilationSettings(){let o=e.getCompilationSettings();return k(P({},o),{plugins:[]})},getNewLine:()=>{var o;return((o=e.getNewLine)==null?void 0:o.call(e))||`
9
+ `},getProjectVersion:()=>{var o;return((o=e.getProjectVersion)==null?void 0:o.call(e))||"0"},getScriptFileNames(){let o=e.getScriptFileNames(),f=o.filter(u=>u.endsWith(".tsx")).map(u=>u+A);return[...o,...f]},getScriptKind(o){var f,u;return t(o)?s.ScriptKind.TS:(u=(f=e.getScriptKind)==null?void 0:f.call(e,o))!=null?u:s.ScriptKind.Unknown},getScriptVersion(o){let f=e.getScriptVersion(n(o));return t(o)?f+"-v":f},getScriptSnapshot(o){let f=e.getScriptSnapshot(n(o));if(!f)return f;if(t(o)){let u=f.getText(0,f.getLength());return s.ScriptSnapshot.fromString(Q(u))}if(typeof o=="string"&&o.endsWith(".tsx")){let u=f.getText(0,f.getLength());if(u.includes("@bind"))return s.ScriptSnapshot.fromString(z(u))}return f},getCurrentDirectory:()=>e.getCurrentDirectory(),getDefaultLibFileName:o=>e.getDefaultLibFileName(o),fileExists(o){var f,u,h,p;if(t(o)){let a=n(o);return(u=(f=e.fileExists)==null?void 0:f.call(e,a))!=null?u:!!e.getScriptSnapshot(a)}return(p=(h=e.fileExists)==null?void 0:h.call(e,o))!=null?p:!1},readFile(o,f){var h;let u=(h=e.readFile)==null?void 0:h.call(e,n(o),f);return t(o)&&u!=null?Q(u):typeof o=="string"&&o.endsWith(".tsx")&&u!=null&&u.includes("@bind")?z(u):u},resolveModuleNames:e.resolveModuleNames?(o,f,...u)=>e.resolveModuleNames(o,n(f),...u):void 0,resolveTypeReferenceDirectives:(r=e.resolveTypeReferenceDirectives)==null?void 0:r.bind(e),getResolvedModuleWithFailedLookupLocationsFromCache:(i=e.getResolvedModuleWithFailedLookupLocationsFromCache)==null?void 0:i.bind(e),readDirectory:(c=e.readDirectory)==null?void 0:c.bind(e),directoryExists:(l=e.directoryExists)==null?void 0:l.bind(e),getDirectories:(d=e.getDirectories)==null?void 0:d.bind(e),useCaseSensitiveFileNames:()=>{var o,f;return(f=(o=e.useCaseSensitiveFileNames)==null?void 0:o.call(e))!=null?f:!1}}}function we(e){let s=e==null?void 0:e.typescript;function t(n){var h,p;n.project.projectService.logger.info("[helfy-ts-plugin] Loaded"),B(n.languageServiceHost,s);let r=(p=(h=n.project).getCompilerHost)==null?void 0:p.call(h);r&&r!==n.languageServiceHost&&B(r,s);let i=n.languageService,c=Object.create(null);for(let a of Object.keys(i)){let g=i[a];c[a]=typeof g=="function"?(...$)=>g.apply(i,$):g}c.getSyntacticDiagnostics=a=>R(a,M(i,a,i.getSyntacticDiagnostics(a))),c.getSemanticDiagnostics=a=>R(a,M(i,a,i.getSemanticDiagnostics(a))),c.getSuggestionDiagnostics=a=>R(a,M(i,a,i.getSuggestionDiagnostics(a)));let l=null;if(s)try{let a=Se(n.languageServiceHost,s);l=s.createLanguageService(a),n.project.projectService.logger.info("[helfy-ts-plugin] Virtual LS created")}catch(a){n.project.projectService.logger.info("[helfy-ts-plugin] Virtual LS error: "+a)}let d=null;function o(a,g){var x;let $=(x=a.version)!=null?x:a.fileName;if(!d||d.version!==$){let m=a.getFullText().split(`
10
+ `);d={version:$,set:ne(m)}}return d.set.has(g)}function f(a,g){var m;if(!l||!a.endsWith(".tsx"))return!1;let $=(m=i.getProgram())==null?void 0:m.getSourceFile(a);if(!$||!K.test($.getFullText()))return!1;let{line:x}=$.getLineAndCharacterOfPosition(g);return o($,x)}function u(a,g){var x,m;let $=(x=i.getProgram())==null?void 0:x.getSourceFile(a);return $&&(m=O($,g))!=null?m:g}return c.getCompletionsAtPosition=(a,g,$)=>{var C,y,T;let x=L.has(a),m=x?j(a,g):g;if(!f(a,g)){let w=i.getCompletionsAtPosition(a,m,$);return x&&(w!=null&&w.entries)&&(w.entries=w.entries.map(v=>{if(v.replacementSpan){let I=F(a,v.replacementSpan.start,v.replacementSpan.length);return k(P({},v),{replacementSpan:I})}return v})),w}let S=(C=i.getProgram())==null?void 0:C.getSourceFile(a),b=(y=S==null?void 0:S.getFullText().split(`
11
+ `))!=null?y:[],{line:E}=S?S.getLineAndCharacterOfPosition(g):{line:-1};if(/@for\b/.test((T=b[E])!=null?T:"")){let w=S?O(S,g):null;if(w===null)return i.getCompletionsAtPosition(a,g,$);try{return l.getCompletionsAtPosition(a+A,w,$)||i.getCompletionsAtPosition(a,g,$)}catch(v){return i.getCompletionsAtPosition(a,g,$)}}try{return l.getCompletionsAtPosition(a+A,g,$)||i.getCompletionsAtPosition(a,g,$)}catch(w){return i.getCompletionsAtPosition(a,g,$)}},c.getSignatureHelpItems=(a,g,$)=>{let x=L.has(a),m=x?j(a,g):g;if(!f(a,g)){let S=i.getSignatureHelpItems(a,m,$);if(x&&(S!=null&&S.applicableSpan)){let b=F(a,S.applicableSpan.start,S.applicableSpan.length);S.applicableSpan=b}return S}try{return l.getSignatureHelpItems(a+A,u(a,g),$)||i.getSignatureHelpItems(a,g,$)}catch(S){return i.getSignatureHelpItems(a,g,$)}},c.getQuickInfoAtPosition=(a,g)=>{var C,y,T;let $=L.has(a),x=$?j(a,g):g,m=$?x:g;if(!f(a,g)){let w=i.getQuickInfoAtPosition(a,m);if($&&(w!=null&&w.textSpan)){let v=F(a,w.textSpan.start,w.textSpan.length);return k(P({},w),{textSpan:v})}return w}let S=(C=i.getProgram())==null?void 0:C.getSourceFile(a),b=(y=S==null?void 0:S.getFullText().split(`
12
+ `))!=null?y:[],{line:E}=S?S.getLineAndCharacterOfPosition(g):{line:-1};if(/@for\b/.test((T=b[E])!=null?T:"")){let w=S?O(S,g):null;if(w===null)return i.getQuickInfoAtPosition(a,g);try{return l.getQuickInfoAtPosition(a+A,w)||i.getQuickInfoAtPosition(a,g)}catch(v){return i.getQuickInfoAtPosition(a,g)}}try{return l.getQuickInfoAtPosition(a+A,g)||i.getQuickInfoAtPosition(a,g)}catch(w){return i.getQuickInfoAtPosition(a,g)}},c}return{create:t}}function R(e,s){return!L.has(e)||!s.length?s:s.map(t=>{var r;if(t.start==null)return t;let n=F(e,t.start,(r=t.length)!=null?r:0);return k(P({},t),{start:n.start,length:n.length})})}function be(e){let s=new Set;for(let t of e){let n=t.match(/@slot\.\w+\s*\(\s*\{([^}]*)\}\s*\)\s*\{/);if(n)for(let r of n[1].split(",")){let i=r.split(":")[0].trim();/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(i)&&s.add(i)}}return s}function M(e,s,t){if(!t.length||!s.endsWith(".tsx"))return t;let n=e.getProgram();if(!n)return t;let r=n.getSourceFile(s);if(!r){let f=s.replace(/\\/g,"/");for(let u of n.getSourceFiles())if(u.fileName.replace(/\\/g,"/")===f||u.fileName.endsWith(s)||f.endsWith(u.fileName.replace(/\\/g,"/"))){r=u;break}}if(!r)return t;let i=r.getFullText();if(!K.test(i))return t;let c=i.split(`
13
+ `),l=ne(c),d=be(c),o=c.map((f,u)=>l.has(u)?f:"").join(`
14
+ `);return t.filter(f=>{if(f.start==null)return!0;let u=r.getLineAndCharacterOfPosition(f.start).line;if(l.has(u)||f.code===1109&&d.size>0)return!1;if(f.code===6198||f.code===6133||f.code===2304){let h=i.slice(f.start,f.start+(f.length||0)).trim(),p=(h.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*/)||[h])[0];if(p&&(new RegExp("\\b"+p.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b").test(o)||d.has(p))||f.code===2304&&i.includes("@slot.")&&new RegExp("@slot\\.\\w+\\s*\\(\\s*\\{[^}]*\\b"+p.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\b").test(i))return!1}return!0})}function ne(e){let s=new Set,t=0;for(;t<e.length;)if(ae.test(e[t])){let n=U(e,t);for(let r=t;r<=n;r++)s.add(r);t=n+1}else if(ve(e[t]))if(/\{\s*$/.test(e[t])){let r=U(e,t);for(let i=t;i<=r;i++)s.add(i);t=r+1}else s.add(t),t++;else if(/@ref\s*\(/.test(e[t])){t>0&&/<\s*[A-Za-z_]/.test(e[t-1])&&!/>\s*$/.test(e[t-1].trim())&&s.add(t-1),s.add(t);let n=t+1;for(;n<e.length&&!/\/>/.test(e[n]);)s.add(n),n++;n<e.length&&s.add(n),n+1<e.length&&/^\s*\)\s*;?\s*$/.test(e[n+1])?(s.add(n+1),t=n+2):t=n+1}else if(/@bind\s*\(/.test(e[t])||/@bind:[A-Za-z_$][\w$]*\s*\(/.test(e[t])||/@field\s*\(/.test(e[t])){t>0&&/<\s*[A-Za-z_]/.test(e[t-1])&&!/>\s*$/.test(e[t-1].trim())&&s.add(t-1),s.add(t);let n=t+1;for(;n<e.length&&!/\/>/.test(e[n]);)s.add(n),n++;n<e.length&&s.add(n),n+1<e.length&&/^\s*\)\s*;?\s*$/.test(e[n+1])?(s.add(n+1),t=n+2):t=n+1}else t++;return s}function ve(e){return G.test(e)}function U(e,s){let t=0;for(let n=s;n<e.length;n++)if(t+=re(e[n]),t<=0){let r=Ee(e,n+1);if(r!==-1&&ue.test(e[r])){t=0,n=r-1;continue}return n}return e.length-1}function re(e){let s=0,t=!1,n="";for(let r=0;r<e.length;r++){let i=e[r];if(t){if(i==="\\"){r++;continue}i===n&&(t=!1);continue}if(i==="'"||i==='"'||i==="`"){t=!0,n=i;continue}i==="{"&&s++,i==="}"&&s--}return s}function Ee(e,s){for(let t=s;t<e.length;t++)if(e[t].trim())return t;return-1}module.exports=we;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helfy/helfy",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "TypeScript UI framework with decorator API, custom JSX and reactive state management",
5
5
  "author": "ikrymsaev",
6
6
  "license": "MIT",