tjs-lang 0.6.11 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tjs-vm.js CHANGED
@@ -14,7 +14,7 @@ Defaulting to 2020, but this will stop working in the future.`);Q.ecmaVersion=11
14
14
  `){X=!1,Y+=H,W++;continue}if(K&&H==="*"&&G==="/"){K=!1,Y+="*/",W+=2;continue}if(X||K){Y+=H,W++;continue}if(H==="("||H==="{"||H==="[")J++,Y+=H;else if(H===")"||H==="}"||H==="]")J--,Y+=H;else if(H===","&&J===0)Q.push(Y),Y="";else Y+=H;W++}if(Y.trim())Q.push(Y);return Q}function g1(Z,Q,Y){let J=G1(Z,{originalSource:Z,requiredParams:Q.requiredParams,unsafeFunctions:Q.unsafeFunctions,safeFunctions:Q.safeFunctions}).source,X=_1(J),K=!1,W=new Set,H=(_)=>{if(Y&&/^\w+$/.test(_)){if(W.has(_))throw Error(`Duplicate parameter name '${_}'`);W.add(_)}};return X.map((_)=>{let q=_.trim();if(!q)return _;if(Y&&q.startsWith("{")&&q.endsWith("}")){let O=q.slice(1,-1);return`{ ${x8(O,Q)} }`}if(Y&&q.startsWith("[")&&q.endsWith("]")){let O=q.slice(1,-1);return`[ ${x8(O,Q)} ]`}if(q.startsWith("...")){let O=m8(q);if(O!==-1)return q.slice(0,O).trim();return _}let R=q.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(R){let[,O,U]=R;return H(O),K=!0,`${O} = ${U}`}if(!j6(q)){let O=q.match(/^(\w+)\s*=/);if(O)H(O[1]);return K=!0,_}let $=m8(q);if($!==-1){let O=q.slice(0,$).trim(),U=q.slice($+1).trim();if(H(O),K&&Y&&/^\w+$/.test(O));if(Y&&/^\w+$/.test(O))Q.requiredParams.add(O);return`${O} = ${U}`}return _}).join(",")}function x8(Z,Q){return _1(Z).map((X)=>{let K=X.trim();if(!K)return X;let W=K.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(W){let[,_,q]=W;Q.requiredParams.add(_);let R=H1(q);return`${_} = ${R}`}let H=K.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(H){let[,_,q]=H;Q.requiredParams.add(_);let R=z1(q);return`${_} = ${R}`}let G=K.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(G){let[,_,q]=G;return Q.requiredParams.add(_),`${_} = ${q}`}return X}).join(", ")}function H1(Z){let Q=Z.slice(1,-1).trim();return`{ ${_1(Q).map((X)=>{let K=X.trim();if(!K)return X;let W=K.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(W){let[,R,$]=W;return`${R}: ${H1($)}`}let H=K.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(H){let[,R,$]=H;return`${R}: ${H1($)}`}let G=K.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(G){let[,R,$]=G;return`${R}: ${z1($)}`}let _=K.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(_){let[,R,$]=_;return`${R}: ${z1($)}`}let q=K.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(q){let[,R,$]=q;return`${R}: ${$}`}return X}).join(", ")} }`}function z1(Z){let Q=Z.slice(1,-1).trim();return`[ ${_1(Q).map((X)=>{let K=X.trim();if(!K)return X;if(K.startsWith("{")&&K.endsWith("}"))return H1(K);if(K.startsWith("[")&&K.endsWith("]"))return z1(K);return X}).join(", ")} ]`}function j6(Z){let Q=0,Y=!1,J=!1,X=!1,K="";for(let W=0;W<Z.length;W++){let H=Z[W];if(!X&&(H==="'"||H==='"'||H==="`")){X=!0,K=H;continue}if(X){if(H===K&&Z[W-1]!=="\\")X=!1;continue}if(H==="("||H==="{"||H==="[")Q++;else if(H===")"||H==="}"||H==="]")Q--;else if(Q===0){if(H===":")Y=!0;if(H==="="&&Z[W+1]!==">")J=!0}}return Y&&!J}function m8(Z){let Q=0,Y=!1,J="";for(let X=0;X<Z.length;X++){let K=Z[X];if(!Y&&(K==="'"||K==='"'||K==="`")){Y=!0,J=K;continue}if(Y){if(K===J&&Z[X-1]!=="\\")Y=!1;continue}if(K==="("||K==="{"||K==="[")Q++;else if(K===")"||K==="}"||K==="]")Q--;else if(Q===0&&K===":")return X}return-1}function i8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\btry\s*\{/);if(J){let K=Y+J[0].length-1+1,W=1,H=K;while(H<Z.length&&W>0){let _=Z[H];if(_==="{")W++;else if(_==="}")W--;H++}if(W!==0){Q+=Z[Y],Y++;continue}if(Z.slice(H).match(/^\s*(catch|finally)\b/))Q+=Z.slice(Y,H),Y=H;else{let _=Z.slice(K,H-1);Q+=`try {${_}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,Y=H}}else Q+=Z[Y],Y++}return Q}function c8(Z){let Q=[],Y="",J=0,X=0;while(J<Z.length){let K=Z.slice(J).match(/^\bwasm\s*\{/);if(K){let W=J,H=J+K[0].length,G=1,_=H;while(_<Z.length&&G>0){let P=Z[_];if(P==="{")G++;else if(P==="}")G--;_++}if(G!==0){Y+=Z[J],J++;continue}let q=Z.slice(H,_-1),R,$=_,O=Z.slice(_).match(/^\s*fallback\s*\{/);if(O){let P=_+O[0].length;G=1;let A=P;while(A<Z.length&&G>0){let T=Z[A];if(T==="{")G++;else if(T==="}")G--;A++}if(G===0)R=Z.slice(P,A-1),$=A}let j=w6(q).map((P)=>{let A=A6(Z,W,P);return A?`${P}: ${A}`:P}),B={id:`__tjs_wasm_${X}`,body:q,fallback:R,captures:j,start:W,end:$};Q.push(B);let M=R??q,w=j.map((P)=>P.split(":")[0].trim()),L=w.length>0?w.join(", "):"",N=w.length>0?`globalThis.${B.id}(${L})`:`globalThis.${B.id}()`,E=`(globalThis.${B.id} ? ${N} : (() => {${M}})())`;Y+=E,J=$,X++}else Y+=Z[J],J++}return{source:Y,blocks:Q}}function N6(Z){return Z.startsWith("f32x4_")||Z.startsWith("v128_")}function w6(Z){let Q=Z.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),Y=new Set,J=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,X;while((X=J.exec(Q))!==null)Y.add(X[1]);let K=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,W=new Set;while((X=K.exec(Q))!==null)W.add(X[1]);for(let $ of Y){if(!W.has($))continue;let O=new RegExp(`(?<!\\.)\\b${$}\\b`,"g"),U=new RegExp(`\\.${$}\\b`,"g"),j=Q.match(O)?.length||0,B=Q.match(U)?.length||0;if(j<=B)W.delete($)}let H=new Set,G=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((X=G.exec(Q))!==null)H.add(X[1]);let _=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((X=_.exec(Q))!==null)H.add(X[1]);let q=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"]),R=[];for(let $ of W)if(!H.has($)&&!q.has($)&&!N6($))R.push($);return R.sort()}function A6(Z,Q,Y){let J=Z.slice(0,Q),X=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,K=J.match(X);if(!K){let W=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,H=J.match(W);if(!H)return;return d8(H[1],Y)}return d8(K[1],Y)}function d8(Z,Q){let Y=Z.split(",").map((J)=>J.trim());for(let J of Y){let X=J.match(new RegExp(`^${Q}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(X)return X[1];let K=J.match(new RegExp(`^${Q}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(K)return K[1]}return}function n8(Z){let Y=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+IsNot\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");Z=Z.replace(Y,"IsNot($1, $2)");let J=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+Is\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");return Z=Z.replace(J,"Is($1, $2)"),Z}function o8(Z){let Q=/^[\s]*[([/+\-`]/,Y=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,J=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,X=Z.split(`
15
15
  `),K=[];for(let W=0;W<X.length;W++){let H=X[W],G=W>0?X[W-1]:"";if(W>0&&Q.test(H)){let _=G.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!Y.test(_)&&!J.test(_)){let q=H.match(/^(\s*)/),R=q?q[1]:"",$=H.slice(R.length);K.push(R+";"+$);continue}}K.push(H)}return K.join(`
16
16
  `)}function a8(Z){let Q=[],Y=0,J="normal",X=[];while(Y<Z.length){let W=Z[Y],H=Z[Y+1];switch(J){case"single-string":if(W==="\\"&&Y+1<Z.length){Y+=2;continue}if(W==="'")J="normal";Y++;continue;case"double-string":if(W==="\\"&&Y+1<Z.length){Y+=2;continue}if(W==='"')J="normal";Y++;continue;case"template-string":if(W==="\\"&&Y+1<Z.length){Y+=2;continue}if(W==="$"&&H==="{"){Y+=2,X.push(1),J="normal";continue}if(W==="`")J="normal";Y++;continue;case"line-comment":if(W===`
17
- `)J="normal";Y++;continue;case"block-comment":if(W==="*"&&H==="/"){Y+=2,J="normal";continue}Y++;continue;case"regex":if(W==="\\"&&Y+1<Z.length){Y+=2;continue}if(W==="["){Y++;while(Y<Z.length&&Z[Y]!=="]")if(Z[Y]==="\\"&&Y+1<Z.length)Y+=2;else Y++;if(Y<Z.length)Y++;continue}if(W==="/"){Y++;while(Y<Z.length&&/[gimsuy]/.test(Z[Y]))Y++;J="normal";continue}Y++;continue;case"normal":if(X.length>0){if(W==="{")X[X.length-1]++;else if(W==="}"){if(X[X.length-1]--,X[X.length-1]===0){X.pop(),Y++,J="template-string";continue}}}if(W==="'"){Y++,J="single-string";continue}if(W==='"'){Y++,J="double-string";continue}if(W==="`"){Y++,J="template-string";continue}if(W==="/"&&H==="/"){Y+=2,J="line-comment";continue}if(W==="/"&&H==="*"){Y+=2,J="block-comment";continue}if(W==="/"){let G=Y-1;while(G>=0&&/\s/.test(Z[G]))G--;let _=G>=0?Z[G]:"";if(!_||/[=(!,;:{[&|?+\-*%<>~^]/.test(_)||G>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,G-10),G+1))){Y++,J="regex";continue}}if(W==="="&&H==="="&&Z[Y+2]!=="="&&Z[Y-1]!=="!"){Q.push({pos:Y,op:"=="}),Y+=2;continue}if(W==="!"&&H==="="&&Z[Y+2]!=="="){Q.push({pos:Y,op:"!="}),Y+=2;continue}break}Y++}if(Q.length===0)return Z;let K=Z;for(let W=Q.length-1;W>=0;W--){let{pos:H,op:G}=Q[W],_=G==="=="?"Is":"IsNot",q=V6(K,H),R=D6(K,H+2),$=K.slice(q,H).trim(),O=K.slice(H+2,R).trim();if($&&O){let U=K.slice(0,q),j=K.slice(R),M=/[a-zA-Z0-9_$]$/.test(U)?" ":"";K=`${U}${M}${_}(${$}, ${O})${j}`}}return K}function V6(Z,Q){let Y=Q-1;while(Y>=0&&/\s/.test(Z[Y]))Y--;if(Y<0)return 0;let J=0,X=!1,K="";while(Y>=0){let W=Z[Y],H=Y>0?Z[Y-1]:"";if(X){if(W===K&&H!=="\\")X=!1;Y--;continue}if((W==='"'||W==="'"||W==="`")&&H!=="\\"){X=!0,K=W,Y--;continue}if(W===")"||W==="]"){J++,Y--;continue}if(W==="("||W==="["){if(J>0){J--,Y--;continue}return Y+1}if(J>0){Y--;continue}if(W===";"||W==="{"||W==="}")return Y+1;if(/[a-z]/.test(W)){let G=Y+1,_=Y;while(_>0&&/[a-z]/i.test(Z[_-1]))_--;let q=Z.slice(_,G),R=_>0?Z[_-1]:"";if(!/[a-zA-Z0-9_$]/.test(R)){if(["return","throw","case","typeof","void","delete","await","yield","new"].includes(q))return G}}if(W===">"&&H==="=")return Y+1;if(W==="="&&H!=="="&&H!=="!"&&H!=="<"&&H!==">")return Y+1;if(W==="&"&&H==="&")return Y+1;if(W==="|"&&H==="|")return Y+1;if(W==="?"||W===":")return Y+1;if(W===",")return Y+1;Y--}return 0}function D6(Z,Q){let Y=Q;while(Y<Z.length&&/\s/.test(Z[Y]))Y++;if(Y>=Z.length)return Z.length;let J=0,X=!1,K="";while(Y<Z.length){let W=Z[Y],H=Y+1<Z.length?Z[Y+1]:"";if(X){if(W===K&&Z[Y-1]!=="\\")X=!1;Y++;continue}if((W==='"'||W==="'"||W==="`")&&Z[Y-1]!=="\\"){X=!0,K=W,Y++;continue}if(W==="("||W==="["||W==="{"){J++,Y++;continue}if(W===")"||W==="]"||W==="}"){if(J>0){J--,Y++;continue}return Y}if(J>0){Y++;continue}if(W===";")return Y;if(W==="&"&&H==="&")return Y;if(W==="|"&&H==="|")return Y;if(W==="?")return Y;if(W===":")return Y;if(W===",")return Y;if((W==="="||W==="!")&&H==="="&&Z[Y+2]!=="=")return Y;Y++}return Z.length}function s8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bType\s+([A-Z][a-zA-Z0-9_]*)\s*/);if(J){let X=J[1],K=Y+J[0].length,W=X,H=!1,G=Z.slice(K).match(/^(['"`])([^]*?)\1\s*/);if(G){let $=K+G[0].length,O=Z[$],U=O===void 0||$>=Z.length||O!=="="&&O!=="{";if(O==="="||O==="{")W=G[2],H=!0,K=$;else if(U){let j=G[0].trim(),B=G[0].slice(j.length);Q+=`const ${X} = Type('${X}', ${j})${B}`,Y=$;continue}}let _,q=K,R=Z.slice(K).match(/^=\s*/);if(R){K+=R[0].length;let $=Z.slice(K).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if($){_=$[0],K+=$[0].length,q=K;let O=Z.slice(K).match(/^\s*/);if(O)K+=O[0].length}}if(Z[K]==="{"){let $=K+1,O=1,U=$;while(U<Z.length&&O>0){let E=Z[U];if(E==="{")O++;else if(E==="}")O--;U++}if(O!==0){Q+=Z[Y],Y++;continue}let j=Z.slice($,U-1).trim(),B=U,M=j.match(/description\s*:\s*(['"`])([^]*?)\1/);if(M&&!H)W=M[2];let w,L=j.match(/example\s*:\s*/);if(L){let E=L.index+L[0].length,P=u8(j,E);if(P)w=P.value.trim()}let N=j.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(N&&w){let E=N[1].trim(),P=N[2].trim(),A=_?`, ${_}`:"";Q+=`const ${X} = Type('${W}', (${E}) => { if (!globalThis.__tjs?.validate(${E}, globalThis.__tjs?.infer(${w}))) return false; ${P} }, ${w}${A})`}else if(N){let E=N[1].trim(),P=N[2].trim(),A=_?`, undefined, ${_}`:"";Q+=`const ${X} = Type('${W}', (${E}) => { ${P} }${A})`}else if(w){let E=_?`, ${_}`:"";Q+=`const ${X} = Type('${W}', undefined, ${w}${E})`}else if(_)Q+=`const ${X} = Type('${W}', ${_})`;else Q+=`const ${X} = Type('${W}')`;Y=B;continue}else if(_){Q+=`const ${X} = Type('${W}', ${_})`,Y=q;continue}else if(!G){let $=Z.slice(K).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if($){let O=$[0];Q+=`const ${X} = Type('${X}', ${O})`,Y=K+$[0].length;continue}}}Q+=Z[Y],Y++}return Q}function r8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(J){let X=J[1],K=J[2],H=Y+J[0].length-1+1,G=1,_=H;while(_<Z.length&&G>0){let w=Z[_];if(w==="{")G++;else if(w==="}")G--;_++}if(G!==0){Q+=Z[Y],Y++;continue}let q=Z.slice(H,_-1).trim(),R=_,$=K.split(",").map((w)=>{let L=w.trim().split("=").map((N)=>N.trim());if(L.length===2)return`['${L[0]}', ${L[1]}]`;return`'${L[0]}'`}),O=q,U=O.search(/\bdeclaration\s*\{/);if(U!==-1){let w=O.indexOf("{",U),L=1,N=w+1;while(N<O.length&&L>0){if(O[N]==="{")L++;else if(O[N]==="}")L--;N++}O=O.slice(0,U)+O.slice(N)}let j=O.match(/description\s*:\s*(['"`])([^]*?)\1/),B=O.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),M=j?j[2]:X;if(B){let w=B[1].trim().split(",").map((A)=>A.trim()),L=B[2].trim(),N=w[0]||"x",E=w.slice(1),P=E.map((A)=>`check${A}`);E.forEach((A,T)=>{L=L.replace(new RegExp(`\\b${A}\\s*\\(`,"g"),`${P[T]}(`)}),Q+=`const ${X} = Generic([${$.join(", ")}], (${N}, ${P.join(", ")}) => { ${L} }, '${M}')`}else Q+=`const ${X} = Generic([${$.join(", ")}], () => true, '${M}')`;Y=R;continue}Q+=Z[Y],Y++}return Q}function t8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(J){let X=J[1],K=J[3],W=Y+J[0].length;if(Z[W]==="{"){let H=W+1,G=1,_=H;while(_<Z.length&&G>0){let O=Z[_];if(O==="{")G++;else if(O==="}")G--;_++}if(G!==0){Q+=Z[Y],Y++;continue}let q=Z.slice(H,_-1).trim(),R=_,$=l8(q);Q+=`const ${X} = Union('${K}', [${$.join(", ")}])`,Y=R;continue}else{let H=Z.indexOf(`
17
+ `)J="normal";Y++;continue;case"block-comment":if(W==="*"&&H==="/"){Y+=2,J="normal";continue}Y++;continue;case"regex":if(W==="\\"&&Y+1<Z.length){Y+=2;continue}if(W==="["){Y++;while(Y<Z.length&&Z[Y]!=="]")if(Z[Y]==="\\"&&Y+1<Z.length)Y+=2;else Y++;if(Y<Z.length)Y++;continue}if(W==="/"){Y++;while(Y<Z.length&&/[gimsuy]/.test(Z[Y]))Y++;J="normal";continue}Y++;continue;case"normal":if(X.length>0){if(W==="{")X[X.length-1]++;else if(W==="}"){if(X[X.length-1]--,X[X.length-1]===0){X.pop(),Y++,J="template-string";continue}}}if(W==="'"){Y++,J="single-string";continue}if(W==='"'){Y++,J="double-string";continue}if(W==="`"){Y++,J="template-string";continue}if(W==="/"&&H==="/"){Y+=2,J="line-comment";continue}if(W==="/"&&H==="*"){Y+=2,J="block-comment";continue}if(W==="/"){let G=Y-1;while(G>=0&&/\s/.test(Z[G]))G--;let _=G>=0?Z[G]:"";if(!_||/[=(!,;:{[&|?+\-*%<>~^]/.test(_)||G>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,G-10),G+1))){Y++,J="regex";continue}}if(W==="="&&H==="="&&Z[Y+2]!=="="&&Z[Y-1]!=="!"){Q.push({pos:Y,op:"=="}),Y+=2;continue}if(W==="!"&&H==="="&&Z[Y+2]!=="="){Q.push({pos:Y,op:"!="}),Y+=2;continue}break}Y++}if(Q.length===0)return Z;let K=Z;for(let W=Q.length-1;W>=0;W--){let{pos:H,op:G}=Q[W],_=G==="=="?"Is":"IsNot",q=V6(K,H),R=D6(K,H+2),$=K.slice(q,H).trim(),O=K.slice(H+2,R).trim();if($&&O){let U=K.slice(0,q),j=K.slice(R),M=/[a-zA-Z0-9_$]$/.test(U)?" ":"";K=`${U}${M}${_}(${$}, ${O})${j}`}}return K}function V6(Z,Q){let Y=Q-1;while(Y>=0&&/\s/.test(Z[Y]))Y--;if(Y<0)return 0;let J=0,X=!1,K="";while(Y>=0){let W=Z[Y],H=Y>0?Z[Y-1]:"";if(X){if(W===K&&H!=="\\")X=!1;Y--;continue}if((W==='"'||W==="'"||W==="`")&&H!=="\\"){X=!0,K=W,Y--;continue}if(W===")"||W==="]"){J++,Y--;continue}if(W==="("||W==="["){if(J>0){J--,Y--;continue}return Y+1}if(J>0){Y--;continue}if(W===";"||W==="{"||W==="}")return Y+1;if(/[a-z]/.test(W)){let G=Y+1,_=Y;while(_>0&&/[a-z]/i.test(Z[_-1]))_--;let q=Z.slice(_,G),R=_>0?Z[_-1]:"";if(!/[a-zA-Z0-9_$]/.test(R)){if(["return","throw","case","typeof","void","delete","await","yield","new"].includes(q))return G}}if(W===">"&&H==="=")return Y+1;if(W==="="&&H!=="="&&H!=="!"&&H!=="<"&&H!==">")return Y+1;if(W==="&"&&H==="&")return Y+1;if(W==="|"&&H==="|")return Y+1;if(W==="?"||W===":")return Y+1;if(W===",")return Y+1;Y--}return 0}function D6(Z,Q){let Y=Q;while(Y<Z.length&&/\s/.test(Z[Y]))Y++;if(Y>=Z.length)return Z.length;let J=0,X=!1,K="";while(Y<Z.length){let W=Z[Y],H=Y+1<Z.length?Z[Y+1]:"";if(X){if(W===K&&Z[Y-1]!=="\\")X=!1;Y++;continue}if((W==='"'||W==="'"||W==="`")&&Z[Y-1]!=="\\"){X=!0,K=W,Y++;continue}if(W==="("||W==="["||W==="{"){J++,Y++;continue}if(W===")"||W==="]"||W==="}"){if(J>0){J--,Y++;continue}return Y}if(J>0){Y++;continue}if(W===";")return Y;if(W==="&"&&H==="&")return Y;if(W==="|"&&H==="|")return Y;if(W==="?")return Y;if(W===":")return Y;if(W===",")return Y;if((W==="="||W==="!")&&H==="="&&Z[Y+2]!=="=")return Y;Y++}return Z.length}function s8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(J){let X=J[1],K=Y+J[0].length,W=X,H=!1,G=Z.slice(K).match(/^(['"`])([^]*?)\1\s*/);if(G){let $=K+G[0].length,O=Z[$],U=O===void 0||$>=Z.length||O!=="="&&O!=="{";if(O==="="||O==="{")W=G[2],H=!0,K=$;else if(U){let j=G[0].trim(),B=G[0].slice(j.length);Q+=`const ${X} = Type('${X}', ${j})${B}`,Y=$;continue}}let _,q=K,R=Z.slice(K).match(/^=\s*/);if(R){K+=R[0].length;let $=Z.slice(K).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if($){_=$[0],K+=$[0].length,q=K;let O=Z.slice(K).match(/^\s*/);if(O)K+=O[0].length}}if(Z[K]==="{"){let $=K+1,O=1,U=$;while(U<Z.length&&O>0){let E=Z[U];if(E==="{")O++;else if(E==="}")O--;U++}if(O!==0){Q+=Z[Y],Y++;continue}let j=Z.slice($,U-1).trim(),B=U,M=j.match(/description\s*:\s*(['"`])([^]*?)\1/);if(M&&!H)W=M[2];let w,L=j.match(/example\s*:\s*/);if(L){let E=L.index+L[0].length,P=u8(j,E);if(P)w=P.value.trim()}let N=j.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(N&&w){let E=N[1].trim(),P=N[2].trim(),A=_?`, ${_}`:"";Q+=`const ${X} = Type('${W}', (${E}) => { if (!globalThis.__tjs?.validate(${E}, globalThis.__tjs?.infer(${w}))) return false; ${P} }, ${w}${A})`}else if(N){let E=N[1].trim(),P=N[2].trim(),A=_?`, undefined, ${_}`:"";Q+=`const ${X} = Type('${W}', (${E}) => { ${P} }${A})`}else if(w){let E=_?`, ${_}`:"";Q+=`const ${X} = Type('${W}', undefined, ${w}${E})`}else if(_)Q+=`const ${X} = Type('${W}', ${_})`;else Q+=`const ${X} = Type('${W}')`;Y=B;continue}else if(_){Q+=`const ${X} = Type('${W}', ${_})`,Y=q;continue}else if(!G){let $=Z.slice(K).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if($){let O=$[0];Q+=`const ${X} = Type('${X}', ${O})`,Y=K+$[0].length;continue}}}Q+=Z[Y],Y++}return Q}function r8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(J){let X=J[1],K=J[2],H=Y+J[0].length-1+1,G=1,_=H;while(_<Z.length&&G>0){let w=Z[_];if(w==="{")G++;else if(w==="}")G--;_++}if(G!==0){Q+=Z[Y],Y++;continue}let q=Z.slice(H,_-1).trim(),R=_,$=K.split(",").map((w)=>{let L=w.trim().split("=").map((N)=>N.trim());if(L.length===2){let N=L[1]==="any"||L[1]==="undefined"?"null":L[1];return`['${L[0]}', ${N}]`}return`'${L[0]}'`}),O=q,U=O.search(/\bdeclaration\s*\{/);if(U!==-1){let w=O.indexOf("{",U),L=1,N=w+1;while(N<O.length&&L>0){if(O[N]==="{")L++;else if(O[N]==="}")L--;N++}O=O.slice(0,U)+O.slice(N)}let j=O.match(/description\s*:\s*(['"`])([^]*?)\1/),B=O.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),M=j?j[2]:X;if(B){let w=B[1].trim().split(",").map((A)=>A.trim()),L=B[2].trim(),N=w[0]||"x",E=w.slice(1),P=E.map((A)=>`check${A}`);E.forEach((A,T)=>{L=L.replace(new RegExp(`\\b${A}\\s*\\(`,"g"),`${P[T]}(`)}),Q+=`const ${X} = Generic([${$.join(", ")}], (${N}, ${P.join(", ")}) => { ${L} }, '${M}')`}else Q+=`const ${X} = Generic([${$.join(", ")}], () => true, '${M}')`;Y=R;continue}Q+=Z[Y],Y++}return Q}function t8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(J){let X=J[1],K=J[3],W=Y+J[0].length;if(Z[W]==="{"){let H=W+1,G=1,_=H;while(_<Z.length&&G>0){let O=Z[_];if(O==="{")G++;else if(O==="}")G--;_++}if(G!==0){Q+=Z[Y],Y++;continue}let q=Z.slice(H,_-1).trim(),R=_,$=l8(q);Q+=`const ${X} = Union('${K}', [${$.join(", ")}])`,Y=R;continue}else{let H=Z.indexOf(`
18
18
  `,W);if(H===-1)H=Z.length;let G=Z.slice(W,H).trim();if(G){let _=l8(G);Q+=`const ${X} = Union('${K}', [${_.join(", ")}])`,Y=H;continue}}}Q+=Z[Y],Y++}return Q}function l8(Z){let Q=[],Y=Z.split("|").map((J)=>J.trim());for(let J of Y){if(!J)continue;Q.push(J)}return Q}function e8(Z){let Q="",Y=0;while(Y<Z.length){let J=Z.slice(Y).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(J){let X=J[1],K=J[3],H=Y+J[0].length-1+1,G=1,_=H;while(_<Z.length&&G>0){let U=Z[_];if(U==="{")G++;else if(U==="}")G--;_++}if(G!==0){Q+=Z[Y],Y++;continue}let q=Z.slice(H,_-1).trim(),R=_,O=T6(q).map(([U,j])=>`${U}: ${j}`).join(", ");Q+=`const ${X} = Enum('${K}', { ${O} })`,Y=R;continue}Q+=Z[Y],Y++}return Q}function T6(Z){let Q=[],Y=0,J=Z.split(/[\n,]/).map((X)=>X.trim()).filter((X)=>X&&!X.startsWith("//"));for(let X of J){let K=X.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(K){let W=K[1],H=K[2]?.trim();if(H!==void 0){Q.push([W,H]);let G=Number(H);if(!isNaN(G))Y=G+1}else Q.push([W,String(Y)]),Y++}}return Q}function Z9(Z){let Q=new Map,Y="",J=0;while(J<Z.length){let X=Z.slice(J),K=X.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!K){if(J===0||Z[J-1]===`
19
19
  `||Z[J-1]===";"||Z[J-1]==="}"){let L=X.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}Y+=Z[J],J++;continue}let W=K[1],H=K[2],G=J+K[0].length-1,_=u0(Z,G),q=Z.slice(G+1,_-1).trim(),R=[],$=0,O=Z.slice(G+1,_-1);while($<O.length){let L=O.slice($).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!L){$++;continue}let N=L[1],E=!!L[2],P=L[3],A=$+L[0].length-1,T=1,S=A+1;while(S<O.length&&T>0){if(O[S]==="(")T++;if(O[S]===")")T--;S++}let h=O.slice(A+1,S-1),f=S;while(f<O.length&&/\s/.test(O[f]))f++;if(O[f]==="="&&O[f+1]===">"){let M0=m0(Z,G+1+$);throw new t(`Arrow functions are not allowed in extend blocks (method '${P}' in extend ${H}). Use regular function syntax instead, as extension methods need 'this' binding.`,M0)}if(O[f]!=="{"){$++;continue}let Z0=u0(O,f),e=O.slice($,Z0).trim(),D0=h.split(",").map((M0)=>M0.trim()).filter((M0)=>M0.length>0).map((M0)=>{let R1=M0.match(/^(\w+)\s*:\s*(.+)$/);if(R1)return`${R1[1]} = ${R1[2]}`;return M0}).join(", "),$1=E?"async ":"",V9=O.slice(f+1,Z0-1);R.push({name:P,isAsync:E,fullText:`${P}: ${$1}function(${D0}) {${V9}}`}),$=Z0}let U=!Q.has(H);if(U)Q.set(H,new Set);let j=Q.get(H);for(let w of R)j.add(w.name);let B=R.map((w)=>` ${w.fullText}`).join(`,
20
20
  `),M;if(U)M=`${W}const __ext_${H} = {
@@ -51,4 +51,4 @@ function ${G}$dispatch(t, a) {
51
51
  `),U=O.filter((j)=>j.trim().length>0).reduce((j,B)=>{let M=B.match(/^(\s*)/)?.[1].length||0;return Math.min(j,M)},1/0);if(U>0&&U<1/0)$=O.map((j)=>j.slice(U)).join(`
52
52
  `);return Y.description=$.trim(),Y}}let K=J.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!K)return Y;let W=K[0],H=W.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(H)Y.description=H[1].trim();let G=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,_;while((_=G.exec(W))!==null)Y.params[_[1]]=_[2].trim();return Y}function z0(Z){switch(Z.type){case"Literal":{let Q=Z.value;if(Q===null)return{kind:"null"};if(typeof Q==="string")return{kind:"string"};if(typeof Q==="number"){let Y=Z.raw;if(Y&&Y.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof Q==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let Q=Z.elements;if(Q.length===0)return{kind:"array",items:{kind:"any"}};let Y=Q.filter((W)=>W!=null).map((W)=>z0(W));if(Y.length===0)return{kind:"array",items:{kind:"any"}};let J=new Map;for(let W of Y){let H=JSON.stringify(W);if(!J.has(H))J.set(H,W)}let X=[...J.values()];return{kind:"array",items:X.length===1?X[0]:{kind:"union",members:X}}}case"ObjectExpression":{let Q=Z.properties,Y={};for(let J of Q)if(J.type==="Property"&&J.key.type==="Identifier"){let X=J.key.name;Y[X]=z0(J.value)}return{kind:"object",shape:Y}}case"LogicalExpression":{let{operator:Q,left:Y,right:J}=Z;if(Q==="||")return z0(Y);if(Q==="&&")return z0(J);if(Q==="??")return z0(J);return{kind:"any"}}case"BinaryExpression":{let{operator:Q,left:Y,right:J}=Z;if(Q==="|"){let X=z0(Y),K=z0(J);if(K.kind==="null")return{...X,nullable:!0};if(X.kind==="null")return{...K,nullable:!0};return{kind:"union",members:[X,K]}}return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:Q,argument:Y}=Z;if(Q==="+"&&Y.type==="Literal"){if(typeof Y.value==="number")return{kind:"non-negative-integer"}}if(Q==="-"&&Y.type==="Literal"){if(typeof Y.value==="number"){let X=Y.raw;if(X&&X.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function f1(Z,Q){if(Z.type==="Identifier")return{name:Z.name,type:{kind:"any"},required:!0};if(Z.type==="AssignmentPattern"){let{left:Y,right:J}=Z;if(Y.type!=="Identifier")throw new u("Only simple parameter names are supported",d(Z));let X=Y.name,K=Q?.has(X)??!1,W=z0(J),H=F0(J);return{name:X,type:W,required:K,default:K?null:H,example:H,loc:{start:Z.start,end:Z.end}}}if(Z.type==="ObjectPattern"){let Y=Z.properties,J={},X={};for(let K of Y)if(K.type==="Property"){let W=K.key.type==="Identifier"?K.key.name:String(K.key.value);if(K.value.type==="Identifier")J[W]={kind:"any"},X[W]={name:W,type:{kind:"any"},required:!0};else if(K.value.type==="AssignmentPattern"){let H=f1(K.value,Q),G=Q?.has(W)??!1;J[W]=H.type,X[W]={name:W,type:H.type,required:G,default:G?null:H.example,example:H.example}}}return{name:"__destructured__",type:{kind:"object",shape:J,destructuredParams:X},required:!0}}throw new u(`Unsupported parameter pattern: ${Z.type}`,d(Z))}function F0(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map((Q)=>Q?F0(Q):null);case"ObjectExpression":{let Q={};for(let Y of Z.properties)if(Y.type==="Property"&&Y.key.type==="Identifier")Q[Y.key.name]=F0(Y.value);return Q}case"UnaryExpression":if(Z.operator==="-"){let Q=F0(Z.argument);return typeof Q==="number"?-Q:void 0}if(Z.operator==="+"){let Q=F0(Z.argument);return typeof Q==="number"?+Q:void 0}return;case"BinaryExpression":{let{operator:Q,left:Y}=Z;if(Q==="|")return F0(Y);return}case"LogicalExpression":{let{operator:Q,left:Y,right:J}=Z;if(Q==="&&"){if(Y.type==="Literal"&&Y.value===null)return null}if(Q==="||")return F0(Y)??F0(J);if(Q==="??")return F0(Y)??F0(J);return}default:return}}function $9(Z){try{let Q=h8(Z,0,{ecmaVersion:2022});return z0(Q)}catch{return{kind:"any"}}}function F1(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{};case"undefined":return{};case"any":return{};case"array":return{type:"array",items:Z.items?F1(Z.items):{}};case"object":if(Z.shape){let Q={};for(let[Y,J]of Object.entries(Z.shape))Q[Y]=F1(J);return{type:"object",properties:Q,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(F1)};return{};default:return{}}}function P6(Z){let Q={},Y=[];for(let[J,X]of Object.entries(Z))if(Q[J]=F1(X.type),X.required)Y.push(J);return{type:"object",properties:Q,required:Y.length>0?Y:void 0,additionalProperties:!1}}function O9(Z,Q,Y,J={},X){let K=F9(Q,Z),W=new Map;for(let B of Z.params){let M=f1(B,X);if(M.name==="__destructured__"&&M.type.kind==="object"&&M.type.destructuredParams)for(let[w,L]of Object.entries(M.type.destructuredParams))W.set(w,{...L,description:K.params[w]});else M.description=K.params[M.name],W.set(M.name,M)}let H;if(Y)H=$9(Y);let G={depth:0,locals:new Map,parameters:W,atoms:new Set(Object.keys(J.atoms||{})),warnings:[],source:Q,filename:J.filename||"<source>",options:J},_=$0(Z.body,G),q=[],R=[],$=[];for(let[B,M]of W.entries())if(M.required)R.push(B);else if(M.default!==void 0)$.push({name:B,defaultValue:M.default});else R.push(B);if(R.length>0)q.push({op:"varsImport",keys:R});for(let{name:B,defaultValue:M}of $)q.push({op:"varsImport",keys:[B]}),q.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:B},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:B,value:M}]});q.push(..._);let O=Object.fromEntries(W),U={name:Z.id?.name||"anonymous",description:K.description,parameters:O,returns:H},j=P6(O);return{ast:{op:"seq",steps:q,inputSchema:j},signature:U,warnings:G.warnings}}function $0(Z,Q){let Y=[];for(let J of Z.body){let X=d0(J,Q);if(X)if(Array.isArray(X))Y.push(...X);else Y.push(X)}return Y}function d0(Z,Q){switch(Z.type){case"VariableDeclaration":return S6(Z,Q);case"ExpressionStatement":return b6(Z,Q);case"IfStatement":return k6(Z,Q);case"WhileStatement":return v6(Z,Q);case"ForOfStatement":return g6(Z,Q);case"TryStatement":return y6(Z,Q);case"ReturnStatement":return f6(Z,Q);case"ThrowStatement":throw new u("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",d(Z),Q.source,Q.filename);case"BlockStatement":return{op:"scope",steps:$0(Z,K0(Q))};case"EmptyStatement":return null;default:throw new u(`Unsupported statement type: ${Z.type}`,d(Z),Q.source,Q.filename)}}function S6(Z,Q){let Y=[],J=Z.kind==="const",X=J?"constSet":"varSet";for(let K of Z.declarations){if(K.id.type!=="Identifier")throw new u("Only simple variable names are supported",d(K),Q.source,Q.filename);let W=K.id.name;if(K.init){let{step:H,resultVar:G}=V0(K.init,Q,W,J);if(H)Y.push(H);else if(G!==W)Y.push({op:X,key:W,value:G});let _=z0(K.init);Q.locals.set(W,_)}else{if(J)throw new u("const declarations must be initialized",d(K),Q.source,Q.filename);Y.push({op:"varSet",key:W,value:null}),Q.locals.set(W,{kind:"any",nullable:!0})}}return Y}function b6(Z,Q){let Y=Z.expression;if(Y.type==="AssignmentExpression")return E6(Y,Q);if(Y.type==="CallExpression"){let{step:J,resultVar:X}=V0(Y,Q);if(J)return J;if(X)return{op:"varSet",key:"_",value:X};return null}return Q.warnings.push({message:"Expression statement has no effect",line:d(Z).line,column:d(Z).column}),null}function E6(Z,Q){if(Z.left.type!=="Identifier")throw new u("Only simple variable assignment is supported",d(Z),Q.source,Q.filename);let Y=Z.left.name,{step:J,resultVar:X}=V0(Z.right,Q,Y);if(J)return J;return{op:"varSet",key:Y,value:X}}function k6(Z,Q){let Y=x(Z.test,Q),J=Z.consequent.type==="BlockStatement"?$0(Z.consequent,K0(Q)):[d0(Z.consequent,Q)].filter(Boolean),X;if(Z.alternate)X=Z.alternate.type==="BlockStatement"?$0(Z.alternate,K0(Q)):[d0(Z.alternate,Q)].filter(Boolean);return{op:"if",condition:Y,then:J,...X&&{else:X}}}function v6(Z,Q){let Y=x(Z.test,Q),J=Z.body.type==="BlockStatement"?$0(Z.body,K0(Q)):[d0(Z.body,Q)].filter(Boolean);return{op:"while",condition:Y,body:J}}function g6(Z,Q){let Y;if(Z.left.type==="VariableDeclaration"){let W=Z.left.declarations[0];if(W.id.type!=="Identifier")throw new u("Only simple variable names are supported in for...of",d(Z.left),Q.source,Q.filename);Y=W.id.name}else if(Z.left.type==="Identifier")Y=Z.left.name;else throw new u("Unsupported for...of left-hand side",d(Z.left),Q.source,Q.filename);let J=i(Z.right,Q),X=K0(Q);X.locals.set(Y,{kind:"any"});let K=Z.body.type==="BlockStatement"?$0(Z.body,X):[d0(Z.body,X)].filter(Boolean);return{op:"map",items:J,as:Y,steps:K}}function y6(Z,Q){let Y=$0(Z.block,K0(Q)),J,X;if(Z.handler){let K=K0(Q);if(Z.handler.param?.type==="Identifier")X=Z.handler.param.name,K.locals.set(X,{kind:"any"});J=$0(Z.handler.body,K)}return{op:"try",try:Y,...J&&{catch:J},...X&&{catchParam:X}}}function f6(Z,Q){if(!Z.argument)return{op:"return",value:{}};let{step:Y,resultVar:J}=V0(Z.argument,Q,"__returnVal__");if(Y)return[Y,{op:"return",value:J}];return{op:"return",value:i(Z.argument,Q)}}var U9=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),h6=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),l0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),x6=new Set(["toUpperCase","toLowerCase","trim","trimStart","trimEnd","charAt","charCodeAt","codePointAt","concat","includes","indexOf","lastIndexOf","startsWith","endsWith","slice","substring","substr","replace","replaceAll","match","search","padStart","padEnd","repeat","normalize","localeCompare","toString","valueOf","at","reverse","sort","fill","copyWithin","flat","flatMap","every","some","forEach","add","remove","has","clear","toArray","union","intersection","diff","format","isBefore","isAfter"]);function m6(Z){if(Z.callee.type==="Identifier"){let Q=Z.callee.name;return h6.has(Q)||l0.has(Q)}if(Z.callee.type==="MemberExpression"){let Q=Z.callee;if(Q.object.type==="Identifier"){let Y=Q.object.name;if(U9.has(Y)||l0.has(Y))return!0}if(Q.property.type==="Identifier"){let Y=Q.property.name;if(x6.has(Y))return!0}}return!1}function u6(Z){if(Z.object.type==="Identifier"){let Q=Z.object.name;return U9.has(Q)||l0.has(Q)}return!1}var R9={RegExp:"RegExp is not available. Use string methods or the regexMatch atom.",Promise:"Promise is not needed. All operations are implicitly async.",Map:"Map is not available. Use plain objects instead.",WeakSet:"WeakSet is not available.",WeakMap:"WeakMap is not available.",Symbol:"Symbol is not available.",Proxy:"Proxy is not available.",Reflect:"Reflect is not available.",Function:"Function constructor is not available. Define functions normally.",eval:"eval is not available. Code is compiled, not evaluated.",setTimeout:"setTimeout is not available. Use the delay atom.",setInterval:"setInterval is not available. Use while loops with delay.",fetch:"fetch is not available. Use the httpFetch atom.",require:"require is not available. Atoms must be registered with the VM.",import:"import is not available. Atoms must be registered with the VM.",process:"process is not available. AsyncJS runs in a sandboxed environment.",window:"window is not available. AsyncJS runs in a sandboxed environment.",document:"document is not available. AsyncJS runs in a sandboxed environment.",global:"global is not available. AsyncJS runs in a sandboxed environment.",globalThis:"globalThis is not available. Use builtins directly."};function d6(Z){if(Z.callee.type==="Identifier"){let Q=Z.callee.name;if(l0.has(Q))return R9[Q]||`${Q} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let Q=Z.callee;if(Q.object.type==="Identifier"){let Y=Q.object.name;if(l0.has(Y))return R9[Y]||`${Y} is not available in AsyncJS.`}}return null}function I9(Z){return{Date:" Use Date() or Date('2024-01-15') instead - no 'new' needed.",Set:" Use Set([items]) instead - no 'new' needed.",Map:" Use plain objects instead of Map.",Array:" Use array literals like [1, 2, 3] instead.",Object:" Use object literals like { key: value } instead.",Error:" Return an error object like { error: 'message' } instead.",RegExp:" Use string methods or the regexMatch atom.",Promise:" Not needed - all operations are implicitly async.",WeakSet:" WeakSet is not available.",WeakMap:" WeakMap is not available."}[Z]||" Use factory functions or object literals instead."}function V0(Z,Q,Y,J){let X=J?"constSet":"varSet";if(Z.type==="ChainExpression")return V0(Z.expression,Q,Y,J);if(Z.type==="NewExpression"){let W=Z,H="constructor";if(W.callee.type==="Identifier")H=W.callee.name;let G=I9(H);throw new u(`The 'new' keyword is not supported in AsyncJS.${G}`,d(Z),Q.source,Q.filename)}if(Z.type==="CallExpression"){let W=d6(Z);if(W)throw new u(W,d(Z),Q.source,Q.filename)}if(Z.type==="CallExpression"&&m6(Z)){let W=x(Z,Q);if(Y)return{step:{op:X,key:Y,value:W},resultVar:Y};return{step:null,resultVar:W}}if(Z.type==="MemberExpression"&&u6(Z)){let W=x(Z,Q);if(Y)return{step:{op:X,key:Y,value:W},resultVar:Y};return{step:null,resultVar:W}}if(Z.type==="CallExpression")return l6(Z,Q,Y,J);if(Z.type==="TemplateLiteral")return i6(Z,Q,Y,J);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let W=x(Z,Q);if(Y)return{step:{op:X,key:Y,value:W},resultVar:Y};return{step:null,resultVar:W}}return{step:null,resultVar:i(Z,Q)}}function l6(Z,Q,Y,J){let X,K=!1,W;if(Z.callee.type==="Identifier")X=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let G=Z.callee;if(G.property.type==="Identifier")X=G.property.name,K=!0,W=i(G.object,Q);else throw new u("Computed method names are not supported",d(Z),Q.source,Q.filename)}else throw new u("Only named function calls are supported",d(Z),Q.source,Q.filename);if(K)return p6(X,W,Z.arguments,Q,Y,J);if(X==="console"&&Z.callee.type==="MemberExpression");let H=c6(Z,Q);return{step:{op:X,...H,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}function p6(Z,Q,Y,J,X,K){switch(Z){case"map":if(Y.length>0&&(Y[0].type==="ArrowFunctionExpression"||Y[0].type==="FunctionExpression")){let W=Y[0],H=W.params[0],G=H?.type==="Identifier"?H.name:"item",_=K0(J);_.locals.set(G,{kind:"any"});let q;if(W.body.type==="BlockStatement")q=$0(W.body,_);else{let{step:R,resultVar:$}=V0(W.body,_,"result");q=R?[R]:[{op:"varSet",key:"result",value:$}]}return{step:{op:"map",items:Q,as:G,steps:q,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}break;case"filter":if(Y.length>0&&(Y[0].type==="ArrowFunctionExpression"||Y[0].type==="FunctionExpression")){let W=Y[0],H=W.params[0],G=H?.type==="Identifier"?H.name:"item",_=K0(J);_.locals.set(G,{kind:"any"});let q;if(W.body.type==="BlockStatement")throw new u("filter callback must be an expression, not a block",d(Y[0]),J.source,J.filename);else q=x(W.body,_);return{step:{op:"filter",items:Q,as:G,condition:q,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}break;case"find":if(Y.length>0&&(Y[0].type==="ArrowFunctionExpression"||Y[0].type==="FunctionExpression")){let W=Y[0],H=W.params[0],G=H?.type==="Identifier"?H.name:"item",_=K0(J);_.locals.set(G,{kind:"any"});let q;if(W.body.type==="BlockStatement")throw new u("find callback must be an expression, not a block",d(Y[0]),J.source,J.filename);else q=x(W.body,_);return{step:{op:"find",items:Q,as:G,condition:q,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}break;case"reduce":if(Y.length>=2&&(Y[0].type==="ArrowFunctionExpression"||Y[0].type==="FunctionExpression")){let W=Y[0],H=W.params[0],G=W.params[1],_=H?.type==="Identifier"?H.name:"acc",q=G?.type==="Identifier"?G.name:"item",R=K0(J);R.locals.set(_,{kind:"any"}),R.locals.set(q,{kind:"any"});let $;if(W.body.type==="BlockStatement")$=$0(W.body,R);else{let{step:U,resultVar:j}=V0(W.body,R,"result");$=U?[U]:[{op:"varSet",key:"result",value:j}]}let O=i(Y[1],J);return{step:{op:"reduce",items:Q,as:q,accumulator:_,initial:O,steps:$,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}break;case"slice":break;case"push":return{step:{op:"push",list:Q,item:i(Y[0],J),...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X};case"join":return{step:{op:"join",list:Q,sep:Y.length>0?i(Y[0],J):"",...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X};case"split":return{step:{op:"split",str:Q,sep:Y.length>0?i(Y[0],J):"",...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}return J.warnings.push({message:`Unknown method '${Z}' - treating as atom call`,line:0,column:0}),{step:{op:Z,receiver:Q,args:Y.map((W)=>i(W,J)),...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}function i6(Z,Q,Y,J){let X="",K={};for(let W=0;W<Z.quasis.length;W++)if(X+=Z.quasis[W].value.cooked||Z.quasis[W].value.raw,W<Z.expressions.length){let H=Z.expressions[W],G=`_${W}`;K[G]=i(H,Q),X+=`{{${G}}}`}return{step:{op:"template",tmpl:X,vars:K,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}function x(Z,Q){switch(Z.type){case"Literal":return{$expr:"literal",value:Z.value};case"Identifier":return{$expr:"ident",name:Z.name};case"MemberExpression":{let Y=Z,J=x(Y.object,Q),X=Y.optional===!0;if(Y.computed){let W=Y.property;if(W.type==="Literal")return{$expr:"member",object:J,property:String(W.value),computed:!0,...X&&{optional:!0}};throw new u("Computed member access with variables not yet supported",d(Z),Q.source,Q.filename)}let K=Y.property.name;return{$expr:"member",object:J,property:K,...X&&{optional:!0}}}case"ChainExpression":return x(Z.expression,Q);case"BinaryExpression":{let Y=Z;return{$expr:"binary",op:Y.operator,left:x(Y.left,Q),right:x(Y.right,Q)}}case"LogicalExpression":{let Y=Z;return{$expr:"logical",op:Y.operator,left:x(Y.left,Q),right:x(Y.right,Q)}}case"UnaryExpression":{let Y=Z;return{$expr:"unary",op:Y.operator,argument:x(Y.argument,Q)}}case"ConditionalExpression":{let Y=Z;return{$expr:"conditional",test:x(Y.test,Q),consequent:x(Y.consequent,Q),alternate:x(Y.alternate,Q)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((J)=>J!==null).map((J)=>x(J,Q))};case"ObjectExpression":{let Y=Z,J=[];for(let X of Y.properties)if(X.type==="Property"){let K=X.key.type==="Identifier"?X.key.name:String(X.key.value);J.push({key:K,value:x(X.value,Q)})}return{$expr:"object",properties:J}}case"CallExpression":{let Y=Z;if(Y.callee.type==="MemberExpression"){let J=Y.callee,X=J.property.type==="Identifier"?J.property.name:String(J.property.value),K=J.optional===!0||Y.optional===!0;return{$expr:"methodCall",object:x(J.object,Q),method:X,arguments:Y.arguments.map((W)=>x(W,Q)),...K&&{optional:!0}}}if(Y.callee.type==="Identifier")return{$expr:"call",callee:Y.callee.name,arguments:Y.arguments.map((X)=>x(X,Q))};throw new u("Complex function calls in expressions should be lifted to statements",d(Z),Q.source,Q.filename)}case"NewExpression":{let Y=Z,J="constructor";if(Y.callee.type==="Identifier")J=Y.callee.name;let X=I9(J);throw new u(`The 'new' keyword is not supported in AsyncJS.${X}`,d(Z),Q.source,Q.filename)}case"TemplateLiteral":throw new u("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",d(Z),Q.source,Q.filename);default:throw new u(`Unsupported expression type in condition: ${Z.type}`,d(Z),Q.source,Q.filename)}}function i(Z,Q){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let Y=Z;if(Y.optional===!0)return x(Z,Q);let X=i(Y.object,Q);if(X&&typeof X==="object"&&X.$expr){let W=Y.computed?String(Y.property.value):Y.property.name;return{$expr:"member",object:X,property:W,...Y.computed&&{computed:!0}}}if(Y.computed)return`${X}[${i(Y.property,Q)}]`;let K=Y.property.name;if(typeof X==="string")return`${X}.${K}`;if(X&&X.$kind==="arg")return{$kind:"arg",path:`${X.path}.${K}`};return`${X}.${K}`}case"ChainExpression":return i(Z.expression,Q);case"ArrayExpression":return Z.elements.map((Y)=>Y?i(Y,Q):null);case"ObjectExpression":{let Y={};for(let J of Z.properties)if(J.type==="Property"){let X=J.key.type==="Identifier"?J.key.name:String(J.key.value);Y[X]=i(J.value,Q)}return Y}case"TemplateLiteral":return x(Z,Q);case"CallExpression":return x(Z,Q);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return x(Z,Q);default:return null}}function c6(Z,Q){if(Z.arguments.length===1&&Z.arguments[0].type==="ObjectExpression"){let Y=Z.arguments[0],J={};for(let X of Y.properties)if(X.type==="Property"){let K=X.key.type==="Identifier"?X.key.name:String(X.key.value);J[K]=i(X.value,Q)}return J}return{args:Z.arguments.map((Y)=>i(Y,Q))}}function M9(Z,Q={}){let{ast:Y,returnType:J,originalSource:X,requiredParams:K}=_9(Z,{filename:Q.filename,colonShorthand:!0,vmTarget:!0}),W=q9(Y,Q.filename),{ast:H,signature:G,warnings:_}=O9(W,X,J,Q,K);return{ast:H,signature:G,warnings:_}}var o6=10;class a6{atoms;constructor(Z={}){this.atoms={...c1,...Z}}get builder(){return new a(this.atoms)}get Agent(){return new a(this.atoms)}get A99(){return this.Agent}resolve(Z){return this.atoms[Z]}getTools(Z="all"){let Q=Object.values(this.atoms);if(Array.isArray(Z))Q=Q.filter((Y)=>Z.includes(Y.op));else if(Z==="flow"){let Y=["seq","if","while","return","try","varSet","varGet","scope"];Q=Q.filter((J)=>Y.includes(J.op))}return Q.map((Y)=>({type:"function",function:{name:Y.op,description:Y.docs,parameters:Y.inputSchema?.schema??{}}}))}async run(Z,Q={},Y={}){let J;if(typeof Z==="string")if(I1(Z))J=M1(Z);else try{J=M9(Z).ast}catch(O){throw Error(`AJS transpilation failed: ${O.message}`)}else J=Z;let X=Y.fuel??1000,K=Y.timeoutMs??X*o6,W=Y.capabilities??{},H=[];if(!W.store){let O=new Map,U=!1;W.store={get:async(j)=>{if(!U)U=!0,H.push("Using default in-memory store (not suitable for production)");return O.get(j)},set:async(j,B)=>{if(!U)U=!0,H.push("Using default in-memory store (not suitable for production)");O.set(j,B)}}}let G=new AbortController,_=setTimeout(()=>G.abort(),K);if(Y.signal)Y.signal.addEventListener("abort",()=>G.abort());let q={fuel:{current:X},args:Q,state:{},consts:new Set,capabilities:W,resolver:(O)=>this.resolve(O),output:void 0,signal:G.signal,costOverrides:Y.costOverrides,context:Y.context,warnings:H};if(Y.trace)q.trace=[];if(J.op!=="seq")throw Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let R=J.inputSchema;if(R&&!n6(Q,R)){let O=new o("Input validation failed: args do not match expected schema","vm.run");return{result:O,error:O,fuelUsed:0,trace:q.trace,warnings:H.length>0?H:void 0}}try{await Promise.race([this.resolve("seq")?.exec(J,q),new Promise((O,U)=>{if(G.signal.addEventListener("abort",()=>{U(Error(`Execution timeout after ${K}ms (fuel: ${X}). Consider increasing fuel or optimizing your agent.`))}),G.signal.aborted)U(Error(`Execution timeout after ${K}ms (fuel: ${X}). Consider increasing fuel or optimizing your agent.`))})])}catch(O){if(O.message?.includes("timeout")||O.message?.includes("aborted")||G.signal.aborted)q.error=new o(`Execution timeout after ${K}ms (fuel: ${X}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw O}finally{clearTimeout(_)}if(q.error&&q.output===void 0)q.output=q.error;let $=[...H,...q.warnings??[]];return{result:q.output,error:q.error,fuelUsed:X-q.fuel.current,trace:q.trace,warnings:$.length>0?$:void 0}}}import{s as k}from"tosijs-schema";var B9=C("storeVectorize",k.object({text:k.string,model:k.string.optional}),k.array(k.number),async({text:Z},Q)=>{let Y=Q.capabilities.vector;if(!Y)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let J=I(Z,Q);return Y.embed(J)},{docs:"Generate embeddings using vector battery",cost:20}),L9=C("storeCreateCollection",k.object({collection:k.string,dimension:k.number.optional}),void 0,async({collection:Z,dimension:Q},Y)=>{let J=Y.capabilities.store;if(!J?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let X=I(Z,Y),K=I(Q,Y);return J.createCollection(X,void 0,K)},{docs:"Create a vector store collection",cost:5}),j9=C("storeVectorAdd",k.object({collection:k.string,doc:k.any}),void 0,async({collection:Z,doc:Q},Y)=>{let J=Y.capabilities.store;if(!J?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let X=I(Z,Y),K=I(Q,Y);return J.vectorAdd(X,K)},{docs:"Add a document to a vector store collection",cost:5}),N9=C("storeSearch",k.object({collection:k.string,queryVector:k.array(k.number),k:k.number.optional,filter:k.record(k.any).optional}),k.array(k.any),async({collection:Z,queryVector:Q,k:Y,filter:J},X)=>{let K=X.capabilities.store;if(!K?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let W=I(Z,X),H=I(Q,X),G=I(Y,X)??5,_=I(J,X);return K.vectorSearch(W,H,G,_)},{docs:"Search vector store",cost:(Z,Q)=>5+(I(Z.k,Q)??5)}),w9=C("llmPredictBattery",k.object({system:k.string.optional,user:k.string,tools:k.array(k.any).optional,responseFormat:k.any.optional}),k.object({role:k.string.optional,content:k.string.optional,tool_calls:k.array(k.any).optional}),async({system:Z,user:Q,tools:Y,responseFormat:J},X)=>{let K=X.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let W=I(Z,X)??"You are a helpful agent.",H=I(Q,X),G=I(Y,X),_=I(J,X);return K.predict(W,H,G,_)},{docs:"Generate completion using LLM battery",cost:100}),A9=C("llmVision",k.object({system:k.string.optional,prompt:k.string,images:k.array(k.string),responseFormat:k.any.optional}),k.object({role:k.string.optional,content:k.string.optional,tool_calls:k.array(k.any).optional}),async({system:Z,prompt:Q,images:Y,responseFormat:J},X)=>{let K=X.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let W=I(Z,X)??"You analyze images accurately and concisely.",H=I(Q,X),G=I(Y,X)??[],_=I(J,X);return K.predict(W,{text:H,images:G},void 0,_)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var C7={storeCreateCollection:L9,storeSearch:N9,storeVectorAdd:j9,storeVectorize:B9,llmPredictBattery:w9,llmVision:A9};export{LZ as xmlParse,f9 as whileLoop,$Z as vectorSearch,i9 as varsLet,p9 as varsImport,c9 as varsExport,u9 as varSet,l9 as varGet,AZ as uuid,x9 as tryCatch,UZ as transpileCode,YZ as template,qZ as storeSet,FZ as storeQuery,CZ as storeProcedure,_Z as storeGet,ZZ as split,Q0 as seq,n9 as scope,IZ as runCode,h9 as ret,I as resolveValue,M1 as resolveProcedureToken,PZ as releaseProcedure,JZ as regexMatch,s9 as reduce,wZ as random,t9 as push,C0 as procedureStore,XZ as pick,WZ as omit,KZ as merge,jZ as memoize,o9 as map,RZ as llmPredict,e9 as len,HZ as keys,BZ as jsonStringify,MZ as jsonParse,QZ as join,I1 as isProcedureToken,D9 as isAgentError,y9 as iff,B1 as hash,r9 as find,a9 as filter,GZ as fetch,l as evaluateExpr,m9 as errorAtom,C as defineAtom,B0 as createChildScope,c1 as coreAtoms,d9 as constSet,DZ as consoleWarn,VZ as consoleLog,TZ as consoleError,SZ as clearExpiredProcedures,NZ as cache,R0 as builtins,C7 as batteryAtoms,OZ as agentRun,U1 as PROCEDURE_TOKEN_PREFIX,T9 as DEFAULT_PROCEDURE_TTL,C9 as DEFAULT_MAX_AST_SIZE,a6 as AgentVM,o as AgentError};
53
53
 
54
- //# debugId=C99917731E16423264756E2164756E21
54
+ //# debugId=467AA94AC08035C964756E2164756E21