tjs-lang 0.7.5 → 0.7.6
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/demo/docs.json +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/tjs-eval.js +1 -1
- package/dist/tjs-eval.js.map +2 -2
- package/dist/tjs-lang.js +1 -1
- package/dist/tjs-lang.js.map +2 -2
- package/dist/tjs-vm.js +1 -1
- package/dist/tjs-vm.js.map +2 -2
- package/package.json +1 -1
- package/src/lang/parser-transforms.ts +3 -1
package/dist/tjs-vm.js
CHANGED
|
@@ -12,7 +12,7 @@ Defaulting to 2020, but this will stop working in the future.`)),t.ecmaVersion=1
|
|
|
12
12
|
`)}};function ie(e){return{depth:e.depth+1,locals:new Map,parent:e,parameters:e.parameters,atoms:e.atoms,warnings:e.warnings,source:e.source,filename:e.filename,options:e.options}}function q(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function ut(e,t){let n="",r=0,s,i,a="normal",o=[],u=[{type:"top-level",braceDepth:0}],l=0,p=()=>u[u.length-1]?.type||"top-level",d=()=>{let f=u[u.length-1];return f?.type==="class-body"&&l===f.braceDepth+1};for(;r<e.length;){let f=e[r],m=e[r+1];switch(a){case"single-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==="'"&&(a="normal"),r++;continue;case"double-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==='"'&&(a="normal"),r++;continue;case"template-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="$"&&m==="{"){n+=m,r+=2,o.push(1),a="normal";continue}f==="`"&&(a="normal"),r++;continue;case"line-comment":n+=f,f===`
|
|
13
13
|
`&&(a="normal"),r++;continue;case"block-comment":if(n+=f,f==="*"&&m==="/"){n+=m,r+=2,a="normal";continue}r++;continue;case"regex":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="["){for(r++;r<e.length&&e[r]!=="]";)n+=e[r],e[r]==="\\"&&r+1<e.length?(n+=e[r+1],r+=2):r++;r<e.length&&(n+=e[r],r++);continue}if(f==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)n+=e[r],r++;a="normal";continue}r++;continue;case"normal":if(o.length>0){if(f==="{")o[o.length-1]++;else if(f==="}"&&(o[o.length-1]--,o[o.length-1]===0)){o.pop(),n+=f,r++,a="template-string";continue}}if(f==="'"){n+=f,r++,a="single-string";continue}if(f==='"'){n+=f,r++,a="double-string";continue}if(f==="`"){n+=f,r++,a="template-string";continue}if(f==="/"&&m==="/"){n+=f+m,r+=2,a="line-comment";continue}if(f==="/"&&m==="*"){n+=f+m,r+=2,a="block-comment";continue}if(f==="/"){let y=n.trimEnd();if(!y[y.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(y)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(y)){n+=f,r++,a="regex";continue}}break}if(f==="{"){l++,n+=f,r++;continue}if(f==="}"){l--;let y=u[u.length-1];y&&l===y.braceDepth&&u.pop(),n+=f,r++;continue}let g=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(g){let y=g[0].slice(0,-1);n+=y,r+=y.length,u.push({type:"class-body",braceDepth:l});continue}let v=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(v){let y=v[1],S=v[0].length,T=e[r+S],E=null,_=r+S;(T==="?"||T==="!")&&(E=T,_++,E==="!"?t.unsafeFunctions.add(y):t.safeFunctions.add(y)),n+=`function ${y}(`,r=_;let P=it(e,r,"(",")");if(!P){n+=e[r],r++;continue}let{content:N,endPos:j}=P;r=j;let V=$t(N,t,!0);n+=V+")";let L=r;for(;L<e.length&&/\s/.test(e[L]);)L++;if(e[L]===":"){let J=e.slice(L,L+2),ye;for(J===":?"||J===":!"?(L+=2,ye=J===":?"?"safe":"unsafe"):L+=1;L<e.length&&/\s/.test(e[L]);)L++;let Ee=Mt(e,L);Ee&&(s===void 0&&(s=Ee.type,ye&&(i=ye)),r=Ee.endPos)}continue}let b=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),w=(()=>{for(let y=n.length-1;y>=0;y--)if(!/\s/.test(n[y]))return n[y];return`
|
|
14
14
|
`})(),C=w!=="="&&w!==","&&w!=="("&&w!=="["&&w!==">";if(b&&d()&&!C){let y=b[1].length;n+=e.slice(r,r+y),r+=y;continue}if(b&&d()&&C){let y=b[1],S=b[0].length,T=r+S;n+=y+"(",r=T;let E=it(e,r,"(",")");if(!E){n+=e[r],r++;continue}let{content:_,endPos:P}=E;r=P;let N=$t(_,t,!0);n+=N+")";let j=r;for(;j<e.length&&/\s/.test(e[j]);)j++;if(e[j]===":"){let V=e.slice(j,j+2);for(V===":?"||V===":!"?j+=2:j++;j<e.length&&/\s/.test(e[j]);)j++;let L=Mt(e,j);L&&(r=L.endPos)}continue}if(e[r]==="("){let y=it(e,r+1,"(",")");if(!y){n+=e[r],r++;continue}let S=y.content,T=y.endPos,E=T;for(;E<e.length&&/\s/.test(e[E]);)E++;let _;if(e[E]===":"){let P=e.slice(E,E+2);for(P===":?"||P===":!"?E+=2:E++;E<e.length&&/\s/.test(e[E]);)E++;let N=Mt(e,E);if(N)for(_=N.type,E=N.endPos;E<e.length&&/\s/.test(e[E]);)E++}if(e.slice(E,E+2)==="=>"){let P=null,N=S,j=S.trimStart();j.startsWith("?")&&(j.length===1||/\s/.test(j[1]))?(P="?",N=j.slice(1)):j.startsWith("!")&&(j.length===1||/\s/.test(j[1]))&&(P="!",N=j.slice(1));let V=$t(N,t,!1);for(n+=`(${P==="?"?"/* safe */ ":P==="!"?"/* unsafe */ ":""}${V})`,r=T;r<E&&/\s/.test(e[r]);)n+=e[r],r++;_&&(r=E)}else{let P=ut(S,t);n+=`(${P.source})`,r=T}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function it(e,t,n,r){let s=1,i=t,a=!1,o="";for(;i<e.length&&s>0;){let u=e[i];!a&&(u==="'"||u==='"'||u==="`")?(a=!0,o=u):a&&u===o&&e[i-1]!=="\\"?a=!1:a||(u===n?s++:u===r&&s--),i++}return s!==0?null:{content:e.slice(t,i-1),endPos:i}}function Un(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return null;let r=n,s=e[n];if(s==="{"||s==="["){let a=s==="{"?"}":"]",o=it(e,n+1,s,a);return o?{value:e.slice(r,o.endPos),endPos:o.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(n++;n<e.length;){if(e[n]===s&&e[n-1]!=="\\")return n++,{value:e.slice(r,n),endPos:n};n++}return null}if(/[-+\d]/.test(s)){for(;n<e.length&&/[\d.eE+-]/.test(e[n]);)n++;return{value:e.slice(r,n),endPos:n}}let i=e.slice(n).match(/^(true|false|null|undefined)\b/);return i?{value:i[1],endPos:n+i[1].length}:null}function Le(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Mt(e,t){let n=t,r=0,s=!1,i="",a=!1,o=u=>({type:Le(e.slice(t,u).trim()),endPos:u});for(;n<e.length;){let u=e[n];if(!s&&(u==="'"||u==='"'||u==="`")){s=!0,i=u,a=!0,n++;continue}if(s){if(u===i&&e[n-1]!=="\\"){if(s=!1,n++,r===0){let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="{"&&!e.slice(l+1).match(/^\s*(\w+)\s*:/)||e[l]!=="|"&&e[l]!=="&")return o(n)}continue}n++;continue}if(u==="{"||u==="["||u==="("){r++,a=!0,n++;continue}if(u==="}"||u==="]"||u===")"){if(r--,r===0){n++;let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return o(n)}n++;continue}if(r===0&&u==="{"){if(a)return o(n);if(e.slice(n+1).match(/^\s*(\w+)\s*:/)){r++,a=!0,n++;continue}return o(n)}if(r===0&&(u==="|"||u==="&")){for(n++,n<e.length&&e[n]==="|"&&n++;n<e.length&&/\s/.test(e[n]);)n++;continue}if(r===0&&(/\d/.test(u)||u==="-"&&/\d/.test(e[n+1]))){let l=n;for(e[l]==="-"&&l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&e[l]==="."&&/\d/.test(e[l+1]))for(l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&(e[l]==="e"||e[l]==="E"))for(l++,l<e.length&&(e[l]==="+"||e[l]==="-")&&l++;l<e.length&&/\d/.test(e[l]);)l++;for(a=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="{")return{type:Le(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:Le(e.slice(t,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(u)){let l=n;for(;l<e.length&&/\w/.test(e[l]);)l++;for(a=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="("){r++,n++;continue}if(n<e.length&&e[n]==="{"&&!e.slice(n+1).match(/^\s*(\w+)\s*:/)){let d=l;for(;d>t&&/\s/.test(e[d-1]);)d--;return{type:Le(e.slice(t,d).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:Le(e.slice(t,l).trim()),endPos:l};continue}n++}return a?o(n):null}function lt(e){let t=[],n="",r=0,s=!1,i=!1,a=0;for(;a<e.length;){let o=e[a],u=e[a+1];if(!i&&o==="/"&&u==="/"){s=!0,n+="//",a+=2;continue}if(!s&&o==="/"&&u==="*"){i=!0,n+="/*",a+=2;continue}if(s&&o===`
|
|
15
|
-
`){s=!1,n+=o,a++;continue}if(i&&o==="*"&&u==="/"){i=!1,n+="*/",a+=2;continue}if(s||i){n+=o,a++;continue}o==="("||o==="{"||o==="["?(r++,n+=o):o===")"||o==="}"||o==="]"?(r--,n+=o):o===","&&r===0?(t.push(n),n=""):n+=o,a++}return n.trim()&&t.push(n),t}function $t(e,t,n){let r=ut(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=lt(r),i=!1,a=new Set,o=l=>{if(n&&/^\w+$/.test(l)){if(a.has(l))throw new Error(`Duplicate parameter name '${l}'`);a.add(l)}};return s.map(l=>{let p=l.trim();if(!p)return l;if(n&&p.startsWith("{")&&p.endsWith("}")){let m=p.slice(1,-1);return`{ ${Dn(m,t)} }`}if(n&&p.startsWith("[")&&p.endsWith("]")){let m=p.slice(1,-1);return`[ ${Dn(m,t)} ]`}if(p.startsWith("...")){let m=Fn(p);return m!==-1?p.slice(0,m).trim():l}let d=p.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(d){let[,m,g]=d;return o(m),i=!0,`${m} = ${g}`}if(!Ti(p)){let m=p.match(/^(\w+)\s*=/);return m&&o(m[1]),i=!0,l}let f=Fn(p);if(f!==-1){let m=p.slice(0,f).trim(),g=p.slice(f+1).trim();return o(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${g}`}return l}).join(",")}function Dn(e,t){return lt(e).map(s=>{let i=s.trim();if(!i)return s;let a=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,l,p]=a;t.requiredParams.add(l);let d=at(p);return`${l} = ${d}`}let o=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(o){let[,l,p]=o;t.requiredParams.add(l);let d=ot(p);return`${l} = ${d}`}let u=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(u){let[,l,p]=u;return t.requiredParams.add(l),`${l} = ${p}`}return s}).join(", ")}function at(e){let t=e.slice(1,-1).trim();return`{ ${lt(t).map(s=>{let i=s.trim();if(!i)return s;let a=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,d,f]=a;return`${d}: ${at(f)}`}let o=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(o){let[,d,f]=o;return`${d}: ${at(f)}`}let u=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(u){let[,d,f]=u;return`${d}: ${ot(f)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,d,f]=l;return`${d}: ${ot(f)}`}let p=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(p){let[,d,f]=p;return`${d}: ${f}`}return s}).join(", ")} }`}function ot(e){let t=e.slice(1,-1).trim();return`[ ${lt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?at(i):i.startsWith("[")&&i.endsWith("]")?ot(i):s:s}).join(", ")} ]`}function Ti(e){let t=0,n=!1,r=!1,s=!1,i="";for(let a=0;a<e.length;a++){let o=e[a];if(!s&&(o==="'"||o==='"'||o==="`")){s=!0,i=o;continue}if(s){o===i&&e[a-1]!=="\\"&&(s=!1);continue}o==="("||o==="{"||o==="["?t++:o===")"||o==="}"||o==="]"?t--:t===0&&(o===":"&&(n=!0),o==="="&&e[a+1]!==">"&&(r=!0))}return n&&!r}function Fn(e){let t=0,n=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!n&&(i==="'"||i==='"'||i==="`")){n=!0,r=i;continue}if(n){i===r&&e[s-1]!=="\\"&&(n=!1);continue}if(i==="("||i==="{"||i==="[")t++;else if(i===")"||i==="}"||i==="]")t--;else if(t===0&&i===":")return s}return-1}function Ii(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,s=1,i=r+1;for(;i<e.length&&s>0;)e[i]==="{"?s++:e[i]==="}"&&s--,i++;if(s!==0)return null;let a=e.slice(r,i),o=[n[0].slice(0,-1)+a,a];return o.index=n.index,o}function Hn(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let i=n+r[0].length-1+1,a=1,o=i;for(;o<e.length&&a>0;){let l=e[o];l==="{"?a++:l==="}"&&a--,o++}if(a!==0){t+=e[n],n++;continue}if(e.slice(o).match(/^\s*(catch|finally)\b/))t+=e.slice(n,o),n=o;else{let l=e.slice(i,o-1);t+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=o}}else t+=e[n],n++}return t}function Jn(e){let t=[],n="",r=0,s=0;for(;r<e.length;){let i=e.slice(r).match(/^\bwasm\s*\{/);if(i){let a=r,o=r+i[0].length,u=1,l=o;for(;l<e.length&&u>0;){let E=e[l];E==="{"?u++:E==="}"&&u--,l++}if(u!==0){n+=e[r],r++;continue}let p=e.slice(o,l-1),d,f=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let E=l+m[0].length;u=1;let _=E;for(;_<e.length&&u>0;){let P=e[_];P==="{"?u++:P==="}"&&u--,_++}u===0&&(d=e.slice(E,_-1),f=_)}let v=Ni(p).map(E=>{let _=Ri(e,a,E);return _?`${E}: ${_}`:E}),b={id:`__tjs_wasm_${s}`,body:p,fallback:d,captures:v,start:a,end:f};t.push(b);let w=d??p,C=v.map(E=>E.split(":")[0].trim()),y=C.length>0?C.join(", "):"",S=C.length>0?`globalThis.${b.id}(${y})`:`globalThis.${b.id}()`,T=`(globalThis.${b.id} ? ${S} : (() => {${w}})())`;n+=T,r=f,s++}else n+=e[r],r++}return{source:n,blocks:t}}function Pi(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Ni(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(t))!==null;)n.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,a=new Set;for(;(s=i.exec(t))!==null;)a.add(s[1]);for(let f of n){if(!a.has(f))continue;let m=new RegExp(`(?<!\\.)\\b${f}\\b`,"g"),g=new RegExp(`\\.${f}\\b`,"g"),v=t.match(m)?.length||0,b=t.match(g)?.length||0;v<=b&&a.delete(f)}let o=new Set,u=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=u.exec(t))!==null;)o.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(t))!==null;)o.add(s[1]);let p=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),d=[];for(let f of a)!o.has(f)&&!p.has(f)&&!Pi(f)&&d.push(f);return d.sort()}function Ri(e,t,n){let r=e.slice(0,t),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,i=r.match(s);if(!i){let a=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,o=r.match(a);return o?qn(o[1],n):void 0}return qn(i[1],n)}function qn(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let s=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function Kn(e){let t=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,n=new RegExp(t+"\\s+IsNot\\s+"+t,"g");e=e.replace(n,"IsNot($1, $2)");let r=new RegExp(t+"\\s+Is\\s+"+t,"g");return e=e.replace(r,"Is($1, $2)"),e}function Zn(e){let t=/^[\s]*[([
|
|
15
|
+
`){s=!1,n+=o,a++;continue}if(i&&o==="*"&&u==="/"){i=!1,n+="*/",a+=2;continue}if(s||i){n+=o,a++;continue}o==="("||o==="{"||o==="["?(r++,n+=o):o===")"||o==="}"||o==="]"?(r--,n+=o):o===","&&r===0?(t.push(n),n=""):n+=o,a++}return n.trim()&&t.push(n),t}function $t(e,t,n){let r=ut(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=lt(r),i=!1,a=new Set,o=l=>{if(n&&/^\w+$/.test(l)){if(a.has(l))throw new Error(`Duplicate parameter name '${l}'`);a.add(l)}};return s.map(l=>{let p=l.trim();if(!p)return l;if(n&&p.startsWith("{")&&p.endsWith("}")){let m=p.slice(1,-1);return`{ ${Dn(m,t)} }`}if(n&&p.startsWith("[")&&p.endsWith("]")){let m=p.slice(1,-1);return`[ ${Dn(m,t)} ]`}if(p.startsWith("...")){let m=Fn(p);return m!==-1?p.slice(0,m).trim():l}let d=p.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(d){let[,m,g]=d;return o(m),i=!0,`${m} = ${g}`}if(!Ti(p)){let m=p.match(/^(\w+)\s*=/);return m&&o(m[1]),i=!0,l}let f=Fn(p);if(f!==-1){let m=p.slice(0,f).trim(),g=p.slice(f+1).trim();return o(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${g}`}return l}).join(",")}function Dn(e,t){return lt(e).map(s=>{let i=s.trim();if(!i)return s;let a=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,l,p]=a;t.requiredParams.add(l);let d=at(p);return`${l} = ${d}`}let o=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(o){let[,l,p]=o;t.requiredParams.add(l);let d=ot(p);return`${l} = ${d}`}let u=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(u){let[,l,p]=u;return t.requiredParams.add(l),`${l} = ${p}`}return s}).join(", ")}function at(e){let t=e.slice(1,-1).trim();return`{ ${lt(t).map(s=>{let i=s.trim();if(!i)return s;let a=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,d,f]=a;return`${d}: ${at(f)}`}let o=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(o){let[,d,f]=o;return`${d}: ${at(f)}`}let u=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(u){let[,d,f]=u;return`${d}: ${ot(f)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,d,f]=l;return`${d}: ${ot(f)}`}let p=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(p){let[,d,f]=p;return`${d}: ${f}`}return s}).join(", ")} }`}function ot(e){let t=e.slice(1,-1).trim();return`[ ${lt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?at(i):i.startsWith("[")&&i.endsWith("]")?ot(i):s:s}).join(", ")} ]`}function Ti(e){let t=0,n=!1,r=!1,s=!1,i="";for(let a=0;a<e.length;a++){let o=e[a];if(!s&&(o==="'"||o==='"'||o==="`")){s=!0,i=o;continue}if(s){o===i&&e[a-1]!=="\\"&&(s=!1);continue}o==="("||o==="{"||o==="["?t++:o===")"||o==="}"||o==="]"?t--:t===0&&(o===":"&&(n=!0),o==="="&&e[a+1]!==">"&&(r=!0))}return n&&!r}function Fn(e){let t=0,n=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!n&&(i==="'"||i==='"'||i==="`")){n=!0,r=i;continue}if(n){i===r&&e[s-1]!=="\\"&&(n=!1);continue}if(i==="("||i==="{"||i==="[")t++;else if(i===")"||i==="}"||i==="]")t--;else if(t===0&&i===":")return s}return-1}function Ii(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,s=1,i=r+1;for(;i<e.length&&s>0;)e[i]==="{"?s++:e[i]==="}"&&s--,i++;if(s!==0)return null;let a=e.slice(r,i),o=[n[0].slice(0,-1)+a,a];return o.index=n.index,o}function Hn(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let i=n+r[0].length-1+1,a=1,o=i;for(;o<e.length&&a>0;){let l=e[o];l==="{"?a++:l==="}"&&a--,o++}if(a!==0){t+=e[n],n++;continue}if(e.slice(o).match(/^\s*(catch|finally)\b/))t+=e.slice(n,o),n=o;else{let l=e.slice(i,o-1);t+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=o}}else t+=e[n],n++}return t}function Jn(e){let t=[],n="",r=0,s=0;for(;r<e.length;){let i=e.slice(r).match(/^\bwasm\s*\{/);if(i){let a=r,o=r+i[0].length,u=1,l=o;for(;l<e.length&&u>0;){let E=e[l];E==="{"?u++:E==="}"&&u--,l++}if(u!==0){n+=e[r],r++;continue}let p=e.slice(o,l-1),d,f=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let E=l+m[0].length;u=1;let _=E;for(;_<e.length&&u>0;){let P=e[_];P==="{"?u++:P==="}"&&u--,_++}u===0&&(d=e.slice(E,_-1),f=_)}let v=Ni(p).map(E=>{let _=Ri(e,a,E);return _?`${E}: ${_}`:E}),b={id:`__tjs_wasm_${s}`,body:p,fallback:d,captures:v,start:a,end:f};t.push(b);let w=d??p,C=v.map(E=>E.split(":")[0].trim()),y=C.length>0?C.join(", "):"",S=C.length>0?`globalThis.${b.id}(${y})`:`globalThis.${b.id}()`,T=`(globalThis.${b.id} ? ${S} : (() => {${w}})())`;n+=T,r=f,s++}else n+=e[r],r++}return{source:n,blocks:t}}function Pi(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Ni(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(t))!==null;)n.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,a=new Set;for(;(s=i.exec(t))!==null;)a.add(s[1]);for(let f of n){if(!a.has(f))continue;let m=new RegExp(`(?<!\\.)\\b${f}\\b`,"g"),g=new RegExp(`\\.${f}\\b`,"g"),v=t.match(m)?.length||0,b=t.match(g)?.length||0;v<=b&&a.delete(f)}let o=new Set,u=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=u.exec(t))!==null;)o.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(t))!==null;)o.add(s[1]);let p=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),d=[];for(let f of a)!o.has(f)&&!p.has(f)&&!Pi(f)&&d.push(f);return d.sort()}function Ri(e,t,n){let r=e.slice(0,t),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,i=r.match(s);if(!i){let a=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,o=r.match(a);return o?qn(o[1],n):void 0}return qn(i[1],n)}function qn(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let s=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function Kn(e){let t=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,n=new RegExp(t+"\\s+IsNot\\s+"+t,"g");e=e.replace(n,"IsNot($1, $2)");let r=new RegExp(t+"\\s+Is\\s+"+t,"g");return e=e.replace(r,"Is($1, $2)"),e}function Zn(e){let t=/^[\s]*[([`]/,n=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
|
|
16
16
|
`),i=[],a=!1;for(let o=0;o<s.length;o++){let u=s[o],l=o>0?s[o-1]:"";if(a){i.push(u),u.includes("*/")&&(a=!1);continue}let p=u.indexOf("/*"),d=u.indexOf("*/");if(p!==-1&&(d===-1||d<p)){a=!0,i.push(u);continue}if(o>0&&t.test(u)){let f=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(f)&&!r.test(f)){let m=u.match(/^(\s*)/),g=m?m[1]:"",v=u.slice(g.length);i.push(g+";"+v);continue}}i.push(u)}return i.join(`
|
|
17
17
|
`)}function Qn(e){e=e.replace(/\btypeof\s+([a-zA-Z_$][\w$.]*(?:\?\.[\w$]+)*)/g,"TypeOf($1)");let t=[],n=0,r="normal",s=[];for(;n<e.length;){let a=e[n],o=e[n+1];switch(r){case"single-string":if(a==="\\"&&n+1<e.length){n+=2;continue}a==="'"&&(r="normal"),n++;continue;case"double-string":if(a==="\\"&&n+1<e.length){n+=2;continue}a==='"'&&(r="normal"),n++;continue;case"template-string":if(a==="\\"&&n+1<e.length){n+=2;continue}if(a==="$"&&o==="{"){n+=2,s.push(1),r="normal";continue}a==="`"&&(r="normal"),n++;continue;case"line-comment":a===`
|
|
18
18
|
`&&(r="normal"),n++;continue;case"block-comment":if(a==="*"&&o==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(a==="\\"&&n+1<e.length){n+=2;continue}if(a==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(a==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(a==="{")s[s.length-1]++;else if(a==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(a==="'"){n++,r="single-string";continue}if(a==='"'){n++,r="double-string";continue}if(a==="`"){n++,r="template-string";continue}if(a==="/"&&o==="/"){n+=2,r="line-comment";continue}if(a==="/"&&o==="*"){n+=2,r="block-comment";continue}if(a==="/"){let u=n-1;for(;u>=0&&/\s/.test(e[u]);)u--;let l=u>=0?e[u]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||u>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,u-10),u+1))){n++,r="regex";continue}}if(a==="="&&o==="="&&e[n+2]!=="="&&e[n-1]!=="!"){t.push({pos:n,op:"=="}),n+=2;continue}if(a==="!"&&o==="="&&e[n+2]!=="="){t.push({pos:n,op:"!="}),n+=2;continue}break}n++}if(t.length===0)return e;let i=e;for(let a=t.length-1;a>=0;a--){let{pos:o,op:u}=t[a],l=u==="=="?"Eq":"NotEq",p=Mi(i,o),d=$i(i,o+2),f=i.slice(p,o).trim(),m=i.slice(o+2,d).trim();if(f&&m){let g=i.slice(0,p),v=i.slice(d),w=/[a-zA-Z0-9_$]$/.test(g)?" ":"";i=`${g}${w}${l}(${f}, ${m})${v}`}}return i}function Mi(e,t){let n=t-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return 0;let r=0,s=!1,i="";for(;n>=0;){let a=e[n],o=n>0?e[n-1]:"";if(s){a===i&&o!=="\\"&&(s=!1),n--;continue}if((a==='"'||a==="'"||a==="`")&&o!=="\\"){s=!0,i=a,n--;continue}if(a===")"||a==="]"||a==="}"){r++,n--;continue}if(a==="("||a==="["){if(r>0){r--,n--;continue}return n+1}if(a==="{"){if(r>0){r--,n--;continue}return n+1}if(r>0){n--;continue}if(a===";")return n+1;if(/[a-z]/.test(a)){let u=n+1,l=n;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let p=e.slice(l,u),d=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(d)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(p))return u;if(p==="new")return l}}if(a===">"&&o==="="||a==="="&&o!=="="&&o!=="!"&&o!=="<"&&o!==">"||a==="&"&&o==="&"||a==="|"&&o==="|"||a==="?"||a===":"||a===",")return n+1;n--}return 0}function $i(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return e.length;let r=0,s=!1,i="";for(;n<e.length;){let a=e[n],o=n+1<e.length?e[n+1]:"";if(s){a===i&&e[n-1]!=="\\"&&(s=!1),n++;continue}if((a==='"'||a==="'"||a==="`")&&e[n-1]!=="\\"){s=!0,i=a,n++;continue}if(a==="("||a==="["||a==="{"){r++,n++;continue}if(a===")"||a==="]"||a==="}"){if(r>0){r--,n++;continue}return n}if(r>0){n++;continue}if(a===";"||a==="&"&&o==="&"||a==="|"&&o==="|"||a==="?"||a===":"||a===","||(a==="="||a==="!")&&o==="="&&e[n+2]!=="=")return n;n++}return e.length}function Yn(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],i=n+r[0].length,a=s,o=!1,u=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(u){let f=i+u[0].length,m=e[f],g=m===void 0||f>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")a=u[2],o=!0,i=f;else if(g){let v=u[0].trim(),b=u[0].slice(v.length);t+=`const ${s} = Type('${s}', ${v})${b}`,n=f;continue}}let l,p=i,d=e.slice(i).match(/^=\s*/);if(d){i+=d[0].length;let f=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(f){l=f[0],i+=f[0].length,p=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let f=i+1,m=1,g=f;for(;g<e.length&&m>0;){let T=e[g];T==="{"?m++:T==="}"&&m--,g++}if(m!==0){t+=e[n],n++;continue}let v=e.slice(f,g-1).trim(),b=g,w=v.match(/description\s*:\s*(['"`])([^]*?)\1/);w&&!o&&(a=w[2]);let C,y=v.match(/example\s*:\s*/);if(y){let T=y.index+y[0].length,E=Un(v,T);E&&(C=E.value.trim())}let S=v.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(S&&C){let T=S[1].trim(),E=S[2].trim(),_=l?`, ${l}`:"";t+=`const ${s} = Type('${a}', (${T}) => { if (!globalThis.__tjs?.validate(${T}, globalThis.__tjs?.infer(${C}))) return false; ${E} }, ${C}${_})`}else if(S){let T=S[1].trim(),E=S[2].trim(),_=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${a}', (${T}) => { ${E} }${_})`}else if(C){let T=l?`, ${l}`:"";t+=`const ${s} = Type('${a}', undefined, ${C}${T})`}else l?t+=`const ${s} = Type('${a}', ${l})`:t+=`const ${s} = Type('${a}')`;n=b;continue}else if(l){t+=`const ${s} = Type('${a}', ${l})`,n=p;continue}else if(!u){let f=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(f){let m=f[0];t+=`const ${s} = Type('${s}', ${m})`,n=i+f[0].length;continue}}}t+=e[n],n++}return t}function Xn(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],i=r[2],a=n+r[0].length;if(e[a]==="{"){let o=1,u=a+1;for(;u<e.length&&o>0;)e[u]==="{"?o++:e[u]==="}"&&o--,u++;if(o===0){let l=e.slice(a+1,u-1).trim(),p=Ii(l,/params\s*:\s*\{/),d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),f=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),g=[];p&&g.push(`params: ${p[1]}`),d&&g.push(`returns: ${d[1].trim()}`),f&&g.push(`returnContract: '${f[1]}'`);let v=m?m[2]:s;if(i){let b=i.split(",").map(C=>{let y=C.trim().split("=").map(S=>S.trim());if(y.length===2){let S=y[1]==="any"||y[1]==="undefined"?"null":y[1];return`['${y[0]}', ${S}]`}return`'${y[0]}'`}),w=i.split(",").map(C=>C.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${v}', [${b.join(", ")}], (${w.join(", ")}) => ({ ${g.join(", ")} }))`}else t+=`const ${s} = FunctionPredicate('${v}', { ${g.join(", ")} })`;n=u;continue}}if(e[a]==="("){let o=1,u=a+1;for(;u<e.length&&o>0;)e[u]==="("?o++:e[u]===")"&&o--,u++;if(o===0){let l=e.slice(a+1,u-1).trim(),p=l.indexOf(",");if(p!==-1){let d=l.slice(0,p).trim(),f=l.slice(p+1).trim();t+=`const ${s} = FunctionPredicate(${f}, ${d})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=u;continue}}}t+=e[n],n++}return t}function er(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(r){let s=r[1],i=r[2],o=n+r[0].length-1+1,u=1,l=o;for(;l<e.length&&u>0;){let C=e[l];C==="{"?u++:C==="}"&&u--,l++}if(u!==0){t+=e[n],n++;continue}let p=e.slice(o,l-1).trim(),d=l,f=i.split(",").map(C=>{let y=C.trim().split("=").map(S=>S.trim());if(y.length===2){let S=y[1]==="any"||y[1]==="undefined"?"null":y[1];return`['${y[0]}', ${S}]`}return`'${y[0]}'`}),m=p,g=m.search(/\bdeclaration\s*\{/);if(g!==-1){let C=m.indexOf("{",g),y=1,S=C+1;for(;S<m.length&&y>0;)m[S]==="{"?y++:m[S]==="}"&&y--,S++;m=m.slice(0,g)+m.slice(S)}let v=m.match(/description\s*:\s*(['"`])([^]*?)\1/),b=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),w=v?v[2]:s;if(b){let C=b[1].trim().split(",").map(_=>_.trim()),y=b[2].trim(),S=C[0]||"x",T=C.slice(1),E=T.map(_=>`check${_}`);T.forEach((_,P)=>{y=y.replace(new RegExp(`\\b${_}\\s*\\(`,"g"),`${E[P]}(`)}),t+=`const ${s} = Generic([${f.join(", ")}], (${S}, ${E.join(", ")}) => { ${y} }, '${w}')`}else t+=`const ${s} = Generic([${f.join(", ")}], () => true, '${w}')`;n=d;continue}t+=e[n],n++}return t}function tr(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],i=r[3],a=n+r[0].length;if(e[a]==="{"){let o=a+1,u=1,l=o;for(;l<e.length&&u>0;){let m=e[l];m==="{"?u++:m==="}"&&u--,l++}if(u!==0){t+=e[n],n++;continue}let p=e.slice(o,l-1).trim(),d=l,f=Wn(p);t+=`const ${s} = Union('${i}', [${f.join(", ")}])`,n=d;continue}else{let o=e.indexOf(`
|